为帖子或定制帖子动态生成子URL

时间:2015-02-25 作者:user3791460

如何让帖子(或自定义帖子)具有明确的URL:

www.test.com/category/post-name
以及引用该帖子特定部分的子URL

www.test.com/category/post-name/sub-url
没有义务创建与该子URL相关的特定帖子?

我有一篇带有URL的帖子

www.test.com/category/post-name
由文件发起content-product.php 我想有一个像这样的子URL

www.test.com/category/post-name/details
由文件发起content-product-details.php仅引用/回忆文章的一节/部分。

简而言之,有没有办法创建所示的结构?或者我必须为每个帖子手动创建我想要的子帖子URL吗?

2 个回复
最合适的回答,由SO网友:Brian Miksic 整理而成

我刚刚完成了这样的工作(在这个网站上的人们的大力帮助下)。

首先,需要将重写端点添加到函数中:

function wpa_read_endpoint(){
    add_rewrite_endpoint( \'sub-url\', EP_PERMALINK);
}

add_action( \'init\', \'wpa_read_endpoint\' );
然后确保转到admin的permalinks部分并保存以刷新permalink设置。

然后添加一些代码,根据查询变量进行模板切换:

function wpa_read_template( $template = \'\' ) {
    global $wp_query;
    if( ! array_key_exists( \'sub-url\', $wp_query->query_vars ) ) return $template;

    $template = locate_template( \'templateFile.php\' );
    return $template;
}
add_filter( \'single_template\', \'wpa_read_template\' );
几点注意事项:

请参阅add\\u rewrite\\u endpoint info for different“places”(在本例中为“EP\\u Permalink”),我正在制作页面,因此需要更改。(http://codex.wordpress.org/Rewrite_API/add_rewrite_endpoint)添加模板过滤器(add\\u filter)时,请确保注意正确的模板“类型”,在本例中为single\\u template。我再次使用了page,所以它是page\\u模板

SO网友:Nicolai Grossherr

我想说,您需要更深入地了解重写API和端点,初学者请参见:

另外使用search 在这里,因为已经有类似的Q&;A的,这肯定会对你有帮助。

最后一点,手动完成这些事情可能会耗费大量时间,因此我会选择自动化,当然,最终可能是在现在投入时间/金钱和以后的收益之间进行评估——在这里,你只需要做出决定。

结束

相关推荐

如果使用PRE_GET_POSTS的orderby参数对于多个POST是相同的,则查询使用什么后备?

因此,我有3种自定义帖子类型,我想按menu\\u order&;订购;将“date”作为回退参数,因为大多数帖子的默认菜单顺序为“0”。如果pre\\u get\\u posts可以相对简单地做到这一点(而不是像这样-Multiple orderby parameters in pre_get_posts() action), 但看起来不太可能。这适用于菜单顺序设置为特定值的帖子,如果菜单顺序为0,则顺序似乎大多是随机的:function order_cpt( $query ) { &#x