[英]Wordpress WP_Query inside get_categories not working with CPT
编辑:将tax_query更改为“ slug”后,它现在在第一个循环(第一个猫)中输出帖子,但在下一个选项卡/猫中不输出,我知道它已分配了许多已发布的帖子。
我创建了一个短代码,旨在获取CPT中的所有类别并将其放入引导程序选项卡,每个选项卡中包含一定数量的帖子。
为此,我对导航选项卡进行get_categories(工作正常)。 然后,我再次执行get_categories来输出选项卡的内容(也可以正常工作),并且在每一个我抓住帖子的地方都带有一个wp_query。 这是行不通的。 无输出。
如果我回显类别名称或可以从get_categories中获取的任何数据,则回显为它。 所以看来问题出在WP_Query。
这是代码:
add_shortcode( 'tabbed_grid_articles', 'tabbed_grid_articles' );
function tabbed_grid_articles($args = array()){
global $post;
$current_id = $post->ID;
$defaults = apply_filters( 'dy_tabbed_grid_default_args', array(
'posts_per_page' => 1,
'orderby' => 'date',
'order' => 'DESC',
'echo' => true,
'post_type' => 'playbooks',
'category' => 0,
'hide_empty' => true,
'exclude' => '',
'include' => '',
'taxonomy' => 'playbooks_category',
));
$args = wp_parse_args( $args, $defaults );
$cat_args = array(
'taxonomy' => $args['taxonomy'],
'orderby' => 'menu_order',
'order' => 'ASC',
'hierarchical' => true,
'parent' => $args['category'],
'hide_empty' => $args['hide_empty'],
'child_of' => $args['category'],
'exclude' => $args['exclude'],
'include' => $args['include']
);
$categories = get_categories($cat_args);
?> <ul class="nav nav-tabs" role="tablist"> <?php
$count = 0;
foreach($categories as $category){
$targetID = str_replace(' ', '-', $category->cat_name);
?> <!-- Nav tabs -->
<li role="presentation" class="<?php if($count == 0){echo 'active'; $count ++;} ?>"><a href="#tab-<?php echo $targetID ?>" aria-controls="tab-<?php echo $targetID ?>" role="tab" data-toggle="tab"><?php echo $category->cat_name ?></a></li>
<?php
}
// wp_reset_postdata();
?> </ul>
<!-- Tab panes -->
<div class="tab-content">
<?php
$count = 0;
foreach($categories as $category) {
$targetID = str_replace(' ', '-', $category->cat_name);
$args['tax_query'] = array(array(
'taxonomy' => $args['taxonomy'],
'field' => 'slug',
'terms' => $category->cat_name,
),
);
// $args['cat'] = $category->cat_ID;
$grid_query = new WP_Query($args);
?>
<div role="tabpanel" class="tab-pane <?php if($count == 0){echo 'active'; $count ++;} ?>" id="tab-<?php echo $targetID ?>">
<?php
if($grid_query->have_posts()) {
while ($grid_query->have_posts()) {
$grid_query->the_post();
echo get_the_title();
//echo '1<br>';
//echo $args['cat'];
//echo $category->cat_name;
//echo get_the_excerpt();
echo '<br>';
//the_excerpt();
}
wp_reset_postdata();
}
?></div>
<?php
}
?>
</div>
<?php
}
我尝试了$ args ['cat'] = $ category-> cat_ID; 而不是tax_query,但均无效。 如果我将它们都注释掉,那么我将从cpt获得所有帖子。 目前只是呼应摘录...
有任何想法吗?
解决了。 我理所当然地认为,与名字相同,但事实并非如此。 我想我只是在第一次调试不起作用时才错误地将子弹更改为名称。 无论如何,将'terms'=> $ category-> cat_name更改为'terms'=> $ category-> slug,并成功了。
希望这对以后的人有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.