根据情况使用不同的Single.php文件

时间:2013-04-11 作者:Umesh Awasthi

我正在自定义WordPress网站的主题,我需要使用不同的主题。基于条件的php文件。

这是我的用户案例,我需要设计一个竞赛页面,在那里我需要显示人们提交的参赛作品。条目可以属于不同的类别,因此不可能基于类别对其进行跟踪。

我已经创建了一个标签(竞赛),每个属于竞赛的参赛作品都会被贴上这个标签,我可以根据这个标签轻松挑选所有参赛作品。

在主导航栏上,我放置了一个链接"Contest" 这将把用户带到竞赛页面,在此页面上,我显示所有提交的条目,并提供简短描述和链接,以转到故事页面。

这是我在自定义竞赛页面上显示数据的方式

$ppp = get_option(\'posts_per_page\');
$args = array(
    "tag" => getContestPageData(\'tag_name\'),
    \'posts_per_page\' => 10,
    \'post_type\' => \'post\',
    \'orderby\'=> \'date\',
    \'paged\' => ( get_query_var(\'paged\') ? get_query_var(\'paged\') : 1)
           );
 $posts=query_posts($args);
 foreach( $posts as $post ) : setup_postdata($post); ?>
    <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>">
       <img src="<?php echo $random_image[0]; ?>" alt="<?php the_title(); ?>" class="left"/>
 </a>
当用户单击锚定链接时,它会将用户重定向到single.php 页码(如果我的理解正确)

我需要调整主故事页,以便可以设计它与竞争的主题铭记在心,我可以做它与以下选项

放入一些条件逻辑single.phpcompition-single.php

1 个回复
SO网友:Tom J Nowell

在以前使用的编辑中:

if (in_category(\'21\')) {
    include (TEMPLATEPATH . \'/single-21.php\');
} else {
    include (TEMPLATEPATH . \'/single-29.php\');
}
这是您解决方案的一部分,但在我继续之前,请注意以下几点:

不要像那样使用includeget_template_part(\'single-21\'); 效果更好,正确缩进这与ID在模板继承权中的工作方式冲突。E、 g.ID为21的帖子将始终使用single-21.php 作为竞赛问题的模板,您需要的是:

if ( post has the tag \'contest\' ) {
    get_template_part();
}
要确定帖子是否有“竞赛”标签,请使用:

$terms = get_the_terms( get_the_ID(), \'tag\' );
$is_contest = false;
foreach ( $terms as &$term ) {
    if ( $term->name == \'contest\' ) {
        // Yes, this post has the contest tag
        $is_contest = true;
        break;
    }
}
我建议您仔细阅读以下内容:

我还强烈建议不要硬编码代码中的标签类别和编号,并且要有一个自动缩进代码的编辑器,例如Sublime Text、PHPStorm、Netbeans、Komodo Edit等

最后一点,我strongly 敦促您不要使用query\\u posts功能。而是使用WP\\u查询。

结束