it-swarm.com.de

Wie kann man steuern, welche Kategorie für den Slug eines Posts ausgewählt wird?

Ich verwende die Permalink-Struktur "/% category% /% postname% /".

Was mich stört ist, dass ich Posts habe, die zu zwei Kategorien gehören. Und natürlich wählt Wordpress leider immer das falsche für die Slug-Generation aus.

Gibt es eine nette und saubere Möglichkeit, zu kontrollieren, welche Kategorie für die Pfostenschnecken ausgewählt wird?

Danke vielmals!

3
TigrouMeow

WordPress wählt die niedrigste ID als Hauptpermalink. Allerdings enthalten ALLE Kategorien Ihren Beitrag automatisch. Beides bedeutet:

... gibt Ihren Beitrag (vorausgesetzt, Post-A gehört sowohl zur Kategorie A als auch zur Kategorie B) über eine Umleitung zurück. Es können nicht alle auf der Seite Bearbeiten aufgelistet werden. Es wird jedoch sichergestellt, dass sie in allen Kategorien verfügbar sind.

Natürlich wird mit get_permalink der falsche Code für Sie zurückgegeben.

http://codex.wordpress.org/Using_Permalinks#Using_.25category.25_with_multiple_categories_on_a_post

Um das Verhalten zu überschreiben, schauen Sie sich Folgendes an:

http://core.trac.wordpress.org/browser/tags/3.3.1/wp-includes/link-template.php#L71 , Insbesondere etwas weiter unten in Zeile 121. Nach dem Sortieren nach ID wird $cats[0]->slug verwendet. Was dort drinnen in keiner Weise einhakbar zu sein scheint, also entweder höher oder tiefer.

Dies ist ein Ticket, das die Funktionsweise ändern sollte http://core.trac.wordpress.org/ticket/18752 , für das es markiert ist Zukünftiges Release . Abonnieren Sie das Ticket, um Ihr Interesse zu bekunden. Vielleicht schafft es das später in diesem Jahr in WordPress 3.5.

Mit dem Filter pre_post_link können Sie den Permalink überschreiben. post_link auch.

Alternativ sollte get_the_category Ihnen erlauben, die IDs für einen Beitrag zu hacken (oder die anderen zu entfernen, um nur einen zu hinterlassen), aber dies sollte tritt nur auf, wenn der Permalink angefordert wird.

add_filter( 'pre_post_link', function( $permalink, $post ) {

     if ( strpos($permalink, '%category%') === false )
         return; /* not interested */
     add_filter( 'get_the_categories', 'wpse46860_Prune_categories' );
     return $permalink;

}, null, 2 );

function wpse46860_Prune_categories( $categories ) {

    /* run once */
    remove_filter( 'get_the_categories', 'wpse46860_Prune_categories' );

    /* .. Prune the categories to leave the one you need .. */
    global $_Hijack_post_id;

    return $categories;

}

Das ist ein Hack.

Eine weitere Schwierigkeit besteht darin, die post_ID zum Beschneiden der Kategorien zu verwenden. Der get_the_categories-Filter gibt die post_ID nicht an uns weiter. Verwenden Sie eine globale (Dirty) oder eine Klasseneigenschaft (Clean).

Sie können verschiedene Permalink-Plugins ausprobieren:

4
soulseekah

Sie können immer mit einem Plugin gehen. Hikari Category Permalink macht genau das, wonach Sie suchen ... ohne Ärger.

1
Travis Pflanz

WENN Sie die gewünschte Kategorie als Standard-Permalink speichern können, können Sie sich mit dem Filter "pre_post_link" in die Funktion get_permalink einbinden.

Dies könnte auch helfen, werfen Sie einen Blick darauf. http://shibashake.com/wordpress-theme/wordpress-permalink-add

0
Rajeev Vyas