一个帖子使用两个固定链接

时间:2014-12-29 作者:Naveed Abbas

我正在为一个客户开发一个wordpress网站,客户希望为一篇文章的详细信息显示两个单独的模板。

用户点击帖子和我们的默认单曲。php将加载,有一个播放按钮,当用户点击播放按钮,然后在permalink中,我想添加/播放/发布名称,而不是发布名称,需要加载第二个模板。

在网上搜索并找到了一些建议,比如Maintaining two permalink structureshttps://wordpress.org/support/topic/multiple-posts-in-1-permalink但是这些都不起作用,而且这些都试图添加在链接的结尾,但我需要它之前的职位名称

任何帮助都将不胜感激。

谢谢

实际上,这是一个游戏网站,当用户点击游戏图片时,从帖子列表页面,他将看到一个带有游戏描述的页面和一个播放按钮。当用户点击播放按钮时,他可以移动到实际的游戏,所以帖子是一样的,但我们需要单独的链接来获取详细信息和播放页面。

谢谢

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

首先我要说,我认为play 附加到permalink的末尾,您可以使用add_rewrite_endpoint, 但为了回答人们提出的问题。。。

首先,您需要添加一个查询变量,稍后检查该变量以了解何时加载其他模板:

function wpd_query_var( $query_vars ){
    $query_vars[] = \'is_play\';
    return $query_vars;
}
add_filter(\'query_vars\', \'wpd_query_var\');
接下来,您将需要一个重写规则来处理传入的请求,并为单个帖子设置适当的查询,还需要设置上面的查询var标志以便稍后加载模板。

function wpd_post_rewrite(){
    add_rewrite_rule(
        \'play/([^/]+)/?$\',
        \'index.php?name=$matches[1]&is_play=1\',
        \'top\'
    );
}
add_action( \'init\', \'wpd_post_rewrite\' );
最后,检查是否设置了查询变量的过滤器,并在这种情况下加载其他模板:

function wpd_play_template( $single_template ){
    global $wp_query;
    if ( isset( $wp_query->query_vars[\'is_play\'] ) ) {
        $single_template = locate_template( \'play_template.php\', false );
    }
    return $single_template;
}
add_filter( \'single_template\', \'wpd_play_template\' );
记住flush your rewrite rules 在更改它们之后,新规则就会被接受。

结束

相关推荐

Custom permalinks structure

我希望有这样的结构:www.mysite.com/2013 (必须显示2013年的所有职位)www.mysite.com/my-category/2013 (必须显示2013年和“我的类别”类别的所有帖子)www.mysite.com/my-category/my-tag/ (必须显示所有类别为“我的类别”和标记为“我的标记”的帖子)www.mysite.com/my-category/ (必须显示“我的类别”类别的所有帖子)www.mysite.com/my-