自定义帖子类型Slug /页面Slug冲突-是否在页面保存时使用保留的Slug?


13

我的主题中有一个自定义帖子类型的投资组合(“ slug投资组合”),除一件事外,其他所有功能都运行良好。当人们创建带有大量投资组合的页面时,例如:example.com/portfolio,主题认为我要使用自定义帖子类型存档页面,而不是我在编辑器中创建的页面。

保存页面时,我可以以某种方式“保留”子词组合,以确保它永远不会被使用,也许重命名为“组合页面”吗?

我的项目使用了本教程中概述的方法,这是我所指的冲突:

“除了修补代码之外,这里还有另外一个问题,那就是您不能将Page slug称为自定义帖子类型slug。可以将您的自定义帖子类型slug用作保留关键字;但是,您可以页面标题与自定义帖子类型标题相同,只要您的页面标题有所不同即可。” - http://wp.tutsplus.com/tutorials/custom-post-type-pagination-chaining-method/

感谢您的任何建议!


我看到的一个选项是从register_post_type()初始化中删除它:'rewrite'=> array('slug'=>'portfolio','with_front'=> true),只需设置'rewrite'=> false和只能使用丑陋的“单个”投资组合项目。
hhins 2011年

为我的问题投票,甚至我也想知道答案!我已经处理过几次自定义帖子,但是我从来没有注意到这一点,现在在阅读了您的问题之后,我尝试了一下。没错,WordPress在这里确实很困惑!
Rutwick Gangurde 2011年

Answers:


13

以下2个过滤器可让您在WordPress检查段塞时将其插入,并在wp-includes / post.php文件的wp_unique_post_slug()函数中找到它们。

有2个过滤器,一个用于分层帖子,一个用于非分层帖子。分层过滤器提供了父帖子的ID,因此,如果$ post_parent为0,则说明这是一个“基本”帖子。

如果要向逻辑中添加特定的帖子类型,则过滤器还会传递$ post_type。

通过返回“ true”,您是在告诉WordPress此段代码不好,因此WordPress会添加一个后缀,就像您尝试向我们发送已使用的帖子名称/段代码一样。

add_filter( 'wp_unique_post_slug_is_bad_hierarchical_slug', 'portfolio_is_bad_hierarchical_slug', 10, 4 );
function portfolio_is_bad_hierarchical_slug( $is_bad_hierarchical_slug, $slug, $post_type, $post_parent ) {
    if ( !$post_parent && $slug == 'portfolio' )
        return true;
    return $is_bad_hierarchical_slug;
}

add_filter( 'wp_unique_post_slug_is_bad_flat_slug', 'portfolio_is_bad_flat_slug', 10, 3 );
function portfolio_is_bad_flat_slug( $is_bad_flat_slug, $slug, $post_type ) {
    if ( $slug == 'portfolio' )
        return true;
    return $is_bad_flat_slug;
}

由于某些原因,我仍然面临着同样的问题
Tan-007,19年

1

创建一个带有“投资组合”标签的页面并将其设置为“私人”。当保留块以免进一步使用时,它将对公众隐藏。


1

在调查分页问题时,恰好遇到了此问题。我们有一个新闻首页(错误的“新闻”),并且分页失败...试图访问/ news / page / 2 /总是导致“ 404-Not Found”。

问题出在,我们的News自定义类型也被赋予了“新闻”的标签。通过更改后者(例如更改为“ news_archive”),此问题已解决。这使原始新闻URL引用保持不变。更改“新闻”首页信息也可以,但是所有URL都将包含已更改的信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.