我正试图找到一种方法,使我的帖子根据其类别具有不同的外观。
我首先尝试使用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\'];
希望这足够清楚,
感谢您的任何意见!
马特。