it-swarm.com.de

Wie kann ich beim Veröffentlichen eines Beitrags automatisch einen Beitrags-Slug basierend auf dem Beitragstitel festlegen?

Wenn Sie einen Beitrag in WP erstellen und keinen Titel schnell angeben, generiert WP beim automatischen Speichern einen Standard-Slug basierend auf der Beitrags-ID. Wenn Sie den Titel später hinzufügen, bleibt er unverändert (basierend auf der Beitrags-ID), es sei denn, Sie ändern den Slug durch Bearbeiten.

Was ich versuche, ist das Hinzufügen einer Aktion für die Veröffentlichung nach dem Posten, die den Posten-Slug basierend auf dem Posten-Titel generiert und speichert.

1
mike23

Solange Sie den Slug nicht berührt haben, generiert WordPress einen neuen Slug, nachdem Sie einen Titel eingegeben haben.

Aktualisieren

Um die Schnecken anderer Leute zu wechseln, benutze einen Filter (nicht getestet!):

add_filter( 'wp_insert_post_data', 'prevent_numeric_slugs', 10, 1 );

function prevent_numeric_slugs( $post_data )
{
    if ( ! isset ( $post_data['post_title'] ) 
        or ! is_numeric( $post_data['post_name'] ) 
    )
    {   // exit early
        return $post_data;
    }

    // post_name is the slug
    $post_data['post_name'] = sanitize_title( $post_data['post_title'] );

    return $post_data;
}
5
fuxia