正在从自定义帖子类型的URL中删除父插件

时间:2013-05-28 作者:NW Tech

正如标题所述,我想从URL中删除特定帖子类型的父段塞:服务。

一些可以改变这一点的东西:

http://demo.com/parent-service/child-service-1
http://demo.com/grand-parent-service/parent-service/child-service-2
http://demo.com/great-grand-parent-service/grand-parent-service/parent-service/child-service-3
etc
对这样的事情:

http://demo.com/child-service-1
http://demo.com/child-service-2
http://demo.com/child-service-3
etc
我宁愿不使用额外的插件来实现这一点。我目前正在通过一个插件交付CPT,该插件还注册了一个自定义分类法。

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

在一次快速测试中,我惊讶地发现这是开箱即用的。也就是说,子帖子的规范URI在路径中仍然有父帖子,但子帖子在没有父帖子的情况下也能正常工作(不会404,不会重定向)。因此,这应该只是一个过滤问题post_type_link 按你的要求去做!下面的代码应该可以做到这一点:

function wpse_101072_flatten_hierarchies( $post_link, $post ) {
    if ( \'service\' != $post->post_type )
        return $post_link;

    $uri = \'\';
    foreach ( $post->ancestors as $parent ) {
        $uri = get_post( $parent )->post_name . "/" . $uri;
    }

    return str_replace( $uri, \'\', $post_link );
}
add_filter( \'post_type_link\', \'wpse_101072_flatten_hierarchies\', 10, 2 );

结束

相关推荐

Taxonomy based permalinks

在我的网站上,我使用自己的分类法。我希望分类学与permalink相结合。因此,如果一个新闻页面有分类法,permalink就会改变。像这样:mysite。com/%custom\\u tax%/blog/%postname%,如果是一个页面,请点击:mysite。com/%custom\\u tax%/%postname%但如果没有我想要的分类法:mysite。com/blog/%postname%,如果它是一个页面:mysite。com/%postname%我怎样才能轻松地做到这一点?我已经设置了%c