it-swarm.com.de

Regeneriere Schnecken aus dem Titel der Beiträge

ist es möglich, die Slugs nach dem Ändern der Titel des Posts programmgesteuert zu regenerieren? Zahlreiche Post-Titel wurden aktualisiert und der Slug wurde nicht mit dem Titel aktualisiert, sodass ich all diese Slugs neu generieren muss.

11

Ja, es ist möglich.

Beispielcode, muss getestet und verfeinert werden:

// get all posts
$posts = get_posts( array (  'numberposts' => -1 ) );

foreach ( $posts as $post )
{
    // check the slug and run an update if necessary 
    $new_slug = sanitize_title( $post->post_title );
    if ( $post->post_name != $new_slug )
    {
        wp_update_post(
            array (
                'ID'        => $post->ID,
                'post_name' => $new_slug
            )
        );
    }
}

Ich habe das gerade erfunden, es gibt wahrscheinlich einige Fehler und Fehlerfälle, aber es sollte dir eine Idee geben. Dies kann auch eine Weile dauern, so dass es nützlich sein kann, das Update in kleinere Teile aufzuteilen.

15
fuxia

Dieses Plugin erledigt auch die Aufgabe: http://www.jerrytravis.com/598/wordpress-plugin-to-generate-post-slugs

Da dies jedoch nur für Posts gilt, die noch keinen Slug haben, können Sie die folgende Zeile im Plugin bearbeiten, wenn Sie Slugs neu generieren müssen:

if ($post->post_name == "") {

sie können es beispielsweise ändern in:

if (true) {

2
Lessan Vaezi

Ich habe die von Toscho vorgeschlagene Methode ausprobiert, die "instinktiv" ist, aber in vielen Fällen funktioniert sie nicht (siehe den Kerncode, um zu verstehen, was ich unter "vielen Fällen" verstehe).

Beim Durchsuchen des Codes habe ich den Filter-Hook wp_insert_post_data gefunden, der von der Funktion wp_update_post aufgerufen wird, bevor der Beitrag in die Datenbank eingefügt wurde.

Durch Aufrufen dieses Filters und Ändern des Werts von $data['post_name'] konnte ich dafür sorgen, dass dies ordnungsgemäß funktioniert. Wordpress ist cool, aber so schlecht dokumentiert ...

Ich habe die Dokumentation bearbeitet , damit bei Bedarf mehr Personen diese Problemumgehung finden.

1