将重写规则添加到固定链接结构

时间:2016-06-01 作者:jsherk

我在设置>永久链接中为帖子设置了自定义结构,如下所示:

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

这对我的大多数帖子都很有用,但有一个类别我想从中删除post\\u id,所以看起来像这样:

/%category%/%postname%

因此,如果类别是MOUSE,帖子id是123,postname(slug)是我最棒的鼠标帖子,那么永久链接正确地如下所示:

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

但是,如果类别是DOG,那么我不需要post id,因此应该如下所示:

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

我了解如何在函数中使用动作和过滤器。在一个插件中,我想我想使用add\\u rewrite\\u规则,但我真的很困惑,因为如何编写规则,因为regex很复杂,我不理解它。

1 个回复
最合适的回答,由SO网友:Jane Brye 整理而成

1。添加新的重写规则:

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

2。过滤帖子链接:

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);
在你的functions.php. 希望它对你有用!