wake-up-neo.net

Fügen Sie der Permalink-Struktur eine Umschreiberegel hinzu

Ich habe ein benutzerdefiniertes Struktur-Setup für Posts unter Einstellungen> Permalinks als:

/%category%/%post_id%-%postname%

Dies funktioniert für die meisten meiner Posts hervorragend, aber es gibt eine Kategorie, aus der ich die post_id entfernen möchte, sodass sie so aussieht:

/%category%/%postname%

Wenn also die Kategorie MOUSE lautet und die Post-ID 123 lautet und der Postname (Slug) my-great-mouse-post lautet, sieht der Permalink wie folgt aus:

mydomain.com/mouse/123-my-great-mouse-post

Wenn die Kategorie DOG ist, möchte ich die Post-ID nicht, daher sollte sie so aussehen:

mydomain.com/dog/my-great-dog-post

Ich verstehe, wie man Aktionen und Filter in meiner functions.php und in einem Plugin verwendet und ich denke, ich möchte add_rewrite_rule verwenden, bin aber ehrlich verwirrt, wie man die Regel schreibt, da Regex kompliziert ist und ich es nicht verstehe.

3
jsherk

1. Fügen Sie eine neue Umschreiberegel hinzu:

add_action('init', function()
{
    add_rewrite_rule('^dog/([^/]+)/?$', 'index.php?cat=dog&name=$matches[1]', 'top');
}, 10, 0);

2. Filtern Sie den Beitragslink:

add_filter('post_link', function($post_link, $post, $leave_name = false, $sample = false)
{
    if ( is_object_in_term($post->ID, 'category', 'DOG') ) {
        $post_link = str_replace($post->ID . '-', '', $post_link);
    }

    return $post_link;

}, 10, 4);

Versuchen Sie es in Ihrem functions.php. Hoffe es funktioniert für dich!

3
Jane Brye