WordPress自定义POST类型插件重写

时间:2017-09-14 作者:Mohammad Shahnewaz Sarker

我想重写自定义post类型slug。我使用了这个片段。但不起作用。

add_filter( \'register_post_type_args\', \'wpse247328_register_post_type_args\', 10, 2 );
function wpse247328_register_post_type_args( $args ) {

    if ( \'stores\' === $post_type ) {
        $args[\'rewrite\'][\'slug\'] = \'location\';
    }

    return $args;
}

3 个回复
SO网友:Mach

不久前,我不得不面对一个类似的问题,并通过以下方式解决了它guide.

基本上你需要做的是两个功能1)自定义WordPress重写规则和2)自定义帖子类型链接。

重写规则功能将确保在整个站点中正确处理CPT的自定义slug。第二个函数将确保以您想要的方式显示URL——如果您愿意,还可以包括分类变量。无论如何,看看这篇文章,因为它对我帮助很大,我希望它也能帮助你。

SO网友:Dionoh

就在自定义post类型代码中的重写slug操作时?

$rewrite = array(
        \'slug\'                  => \'Your-new-slug\',
        \'with_front\'            => true,
        \'pages\'                 => true,
        \'feeds\'                 => true,
    );

SO网友:Trac Nguyen

根据源代码,这显然是因为缺少参数https://developer.wordpress.org/reference/hooks/register_post_type_args/只需添加$post_type 作为函数的第二个参数

add_filter( \'register_post_type_args\', \'wpse247328_register_post_type_args\', 10, 2 );
function wpse247328_register_post_type_args( $args, $post_type ) {
    if ( \'stores\' === $post_type ) {
        $args[\'rewrite\'][\'slug\'] = \'location\';
    }
    return $args;
}
还有一件事,请安排WP_DEBUG 在本地工作以查看所有警告时设置为true。

结束

相关推荐

Custom Feed URLs

我正在为我的一个帖子类型创建一个自定义提要,并允许用户设置该提要的名称。http://www.mysite.com/feed/userdefinedname现在,我还想让用户不仅可以显示该CPT中的所有帖子,还可以按类别过滤它们。目前情况是这样的:http://www.mysite.com/feed/testcategory然而,如果我能将其结构如下,我会非常喜欢它:http://www.mysite.com/feed/userdefinedname/testcategory这可能吗?下面是生成这些基于类