是否将页面与特定的单一帖子模板相关联?

时间:2017-07-20 作者:nickpish

我在一个网站上工作,该网站使用两个不同的页面来过滤与相同自定义帖子类型(“媒体”)相关联的帖子列表,这两个页面都有自己的模板——一个更通用的页面,名为page-media.php 还有一个通过分类学更加狭隘的关注点,page-music-library.php. 虽然这两个页面都会过滤“媒体”自定义帖子类型的帖子列表,但我希望每个页面都以不同的方式呈现帖子single- 单击文章标题时查看。对于主要page-media.php 模板,我创建了single-media.php 与该页面关联的单个帖子视图的模板。然而,我不太确定如何定义备用single- 与关联的视图page-music-library.php 样板

我在看this post 另外,在WP 4.7中,“帖子类型模板”可以以这种方式提供更大的灵活性,但我不清楚该功能是否适用于我的情况。感谢您在这里提供的任何见解,如果我的目标有任何不明确之处,请告诉我。

2 个回复
SO网友:Digvijayad

一种方法是创建一个single-media.php 文件,并在其中放置一个条件,以检查特定的分类法。然后,您可以根据条件包括其他两个。

因此,创建主模板-single-media.php 还有另外两个模板page-media.phppage-music-library.php. 然后,您可以检查该文件中的特定分类法,并根据条件包括相应的文件。

一个简单的示例single-media.php 可能是

<?php
/*
Template Name: Single Media
Template Post Type: post, media 
*/


//header and stuff


if ( has_term( $term, $taxonomy, $post ) ) {

    include \'{path}/page-music-library.php\';
else {
    include \'{path}/page-media.php\' ;
}

SO网友:Milo

您可以添加一个重写端点,该端点可以附加到单介质永久链接的末尾,以确定哪些请求应该获得备用模板。

步骤1,添加端点:

function wpd_rewrite_endpoint() {
    add_rewrite_endpoint( \'music-library\', EP_PERMALINK );
}
add_action( \'init\', \'wpd_rewrite_endpoint\' );
将上述代码添加到插件或主题后functions.php 文件,请访问设置>永久链接页面以刷新重写规则。

假设您的媒体帖子永久链接为:

http:example.com/media/my-media-post/
现在,您还应该能够访问带有端点的URL,并看到相同的视图:

http:example.com/media/my-media-post/music-library/
步骤2,添加single_template 过滤器:
function wpd_single_template( $template ) {
    global $wp_query;
    // if this is a media post
    // AND the media-library endpoint is present,
    // load the alternate template
    if( \'media\' == get_post_type( get_queried_object() )
        && isset( $wp_query->query_vars[\'music-library\'] ) ){
            $template = locate_template( \'single-music-library.php\' );
    }
    return $template;
}
add_filter( \'single_template\', \'wpd_single_template\' );
将上述代码添加到插件或主题后functions.php, 原始URL将继续加载您的single-media.php 模板,而包含端点的任何URL都将加载single-music-library.php 样板

在这两种情况下,规范URL都将指向原始URL,因此搜索引擎只会为单个版本编制索引,从而避免重复的内容问题。

最后一步是修改page-music-library.php 要添加的模板music-library/ 在每个媒体帖子的永久链接之后。

结束

相关推荐

Add JavaScript to single post

我想在wordpress帖子中添加小javascript程序,请告诉我如何在WP帖子中添加/执行?编辑是的,我试过了,但运气不好。首先,我添加了HTML代码;在Post Text Editor中使用JavaScript,运气不好,然后我创建了单独的JS文件;仅发布HTML代码(&P);使用调用js文件<Script src=<Path of the JS File>> - 没有运气。