Wordpress 为自定义分类创建动态重写规则

Wordpress 为自定义分类创建动态重写规则,wordpress,Wordpress,我创建了一个名为food items的自定义分类法。我是使用WordPress的CPT UI插件完成的。我想更改重写URL以根据分类术语而不是分类本身工作 例如: 我有一个名为Food的自定义分类法附加到自定义post-type Food 正在为归档文件生成的URL为 example.com/food_item/bread 我希望它是这样的 example.com/bread 我可以使用 add_rewrite_rule( '^bread/?$', // the rule regex

我创建了一个名为food items的自定义分类法。我是使用WordPress的CPT UI插件完成的。我想更改重写URL以根据分类术语而不是分类本身工作

例如:

我有一个名为Food的自定义分类法附加到自定义post-type Food

正在为归档文件生成的URL为

example.com/food_item/bread
我希望它是这样的

example.com/bread
我可以使用

add_rewrite_rule(
    '^bread/?$', // the rule regex
    'index.php?taxonomy=food_item&term=bread', // where you want the rule to go
    'top' // the priority. Make this one go first
);
但这不是一个动态的解决方案。将来除了面包之外,还会有更多的值,我不想手动为所有这些值定义规则。是否有任何解决方案可以在任何分类法上使用任何术语?两者都可以是动态的

    function na_remove_slug( $post_link, $post, $leavename ) {

    if ( 'food_item' != $post->post_type || 'publish' != $post->post_status ) {
        return $post_link;
    }

    $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link );

    return $post_link; }

    add_filter( 'post_type_link', 'na_remove_slug', 10, 3 );
function na_parse_request( $query ) {

    if ( ! $query->is_main_query() || 2 != count( $query->query ) || ! isset( $query->query['page'] ) ) {
        return;
    }

    if ( ! empty( $query->query['name'] ) ) {
        $query->set( 'post_type', array( 'food_item', 'events', 'page' ) );
    }
}add_action( 'pre_get_posts', 'na_parse_request' );

您可以尝试这种方法。添加代码后需要更新permalink一次吗?

有相关帮助吗?您可以使用category baseOkay的permalink选项对此进行更改。但这难道不适用于所有其他永久链接吗?我想要它只是为了分类,你是否用这种方式创建了自定义的文章类型,在这里你可以通过重写规则寄存器Texonomy我看到了这个链接。我使用自定义的POST类型UI插件来创建它。我相信这是正确的方法。谢谢你的回答。我确实试过这个。但它不起作用。当我写example.com/bread时,它应该已经工作了。你需要从设置中更新permalinks,然后它就会工作了。我试过了。但即使在那之后,它还是不起作用,打开了主页。我想肯定还有其他问题,我已经检查了本地的代码,它在这里工作很好。我用过的食品是post类型,不是术语。你检查过了吗