具有不同类别外观的Single.php

时间:2017-03-17 作者:Matthieu Ducorps

我正试图找到一种方法,使我的帖子根据其类别具有不同的外观。

我首先尝试使用template hierarchy 但这类职位似乎没有模式。(即单猫mycategory.php)

因此,在单一的范围内。php我尝试了使用is_category() 但据我所知,这只对archive 第页。

最后,我现在尝试使用is_single() 条件标记,首先我要查找与我的类别对应的所有帖子,并将其作为参数传递给is_single()

In functions.php

function get_post_id_by_cat(){

 $args = [
        \'post_type\'     => \'post\',
        \'post_status\'   => \'publish\',
        \'category_name\' => \'my_category\',
        ];
$cat_query = new WP_Query( $args );
if ($cat_query -> have_posts()){
        while ($cat_query -> have_posts()){
                $cat_query -> the_post();
                $post_ids[] = get_the_ID();

        }    
        wp_reset_postdata();
}

In single.php

$my_cat_posts = get_post_id_by_cat();

if (is_single($my_cat_posts)) {

                        while ( have_posts() ) : the_post();
      //do my stuff here
                        endwhile;
}
My first question 就Wordpress设计而言,这是一种很好的方法吗?还是有更好的方法,因为我主要关心的是性能,使用这种方法。

If it\'s ok,我的问题是$post_ids 是以php对象格式而不是数组存储数据,所以is_single() 无法正确获取posts ID作为参数。我不知道如何将其转换为数组。

$post_ids[] = to_array(get_the_ID()); 回来

未捕获错误:调用\\u array()的未定义函数

$post_ids[] = (array)get_the_ID(); 返回每个post id stil has object,但在如下数组中:

array(8) {
  [0]=>
  array(1) {
    [0]=>
    int(5415)
  }…
$post_ids[] = get_object_vars(get_the_ID()); 回来

get\\u object\\u vars()要求参数1为object,给定整数

但如果通过此数组,它会正常工作:

$array = [\'5415\',\'5413\',\'5411\',\'5401\'];
希望这足够清楚,

感谢您的任何意见!

马特。

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

谢谢@Anoop D我一开始就找到了解决方案[single_template][1] !

这是我以前养的一只猫mycat的模型。每个类别的php!

<?php
function get_custom_post_type_template($single_template) {
     global $post;

     if ($post->post_type == \'my_post_type\') {
          $single_template = dirname( __FILE__ ) . \'/post-type-template.php\';
     }
     return $single_template;
}
add_filter( \'single_template\', \'get_custom_post_type_template\' );
?>
此问题已修复!现在让我们进入下一个挑战:D

好心的

马特

SO网友:Anoop D

你需要的是in_category 作用请通过

https://developer.wordpress.org/reference/functions/in_category/

并检查它是否适合您的需要。。。。。。

还有一个过滤器single_template 有什么可以检查的吗。

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请