我的团队类型中有以下代码。我用来为成员信息创建自定义分类法的php文件:
function create_team_taxonomies() {
$labels = array(
\'name\' => _x( \'Kategooriad\', \'taxonomy general name\' ),
\'singular_name\' => _x( \'Kategooria\', \'taxonomy singular name\' ),
\'search_items\' => __( \'Otsi kategooriatest\' ),
\'all_items\' => __( \'Kõik kategooriad\' ),
\'parent_item\' => __( \'Vanem kategooria\' ),
\'parent_item_colon\' => __( \'Vanem kategooria:\' ),
\'edit_item\' => __( \'Muuda kategooriat\' ),
\'update_item\' => __( \'Uuenda kategooriat\' ),
\'add_new_item\' => __( \'Lisa uus kategooria\' ),
\'new_item_name\' => __( \'Uus kategooria nimi\' ),
\'menu_name\' => __( \'Kategooriad\' ),
);
$args = array(
\'hierarchical\' => true, // Set this to \'false\' for non-hierarchical taxonomy (like tags)
\'labels\' => $labels,
\'show_ui\' => true,
\'show_admin_column\' => true,
\'query_var\' => true,
\'rewrite\' => array( \'slug\' => \'categories\' ),
);
register_taxonomy( \'team_categories\', array( \'team\' ), $args );
}
add_action( \'init\', \'create_team_taxonomies\', 0 );
但当我调用page team中的查询时。php使用以下方式:
<?php query_posts( \'post_type=team&cat=noukogu&showposts=15\' ); if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php $title=s tr_ireplace( \'"\', \'\', trim(get_the_title())); $desc=s tr_ireplace( \'"\', \'\', trim(get_the_content())); ?>
<div class="member">
<img class="image" src="<?php print team_thumbnail_url($post->ID) ?>" alt="liikme pilt">
<h3 class="title"><?php echo $title; ?></h3>
<p class="description">
<?php echo $desc; ?>
</p>
</div>
<!-- End member -->
<?php endwhile; endif; ?>
所有成员帖子都会显示出来。不是
noukogu 类别职位。
你知道是什么导致了这个问题吗?
UPDATE: 我现在明白了cat 用于类别ID,但当我将其更改为category_name(使用类别slug)根本没有帖子显示。
最合适的回答,由SO网友:cybmeta 整理而成
第一:不要使用query_post
用于二次回路。它改变了主查询,您最终可以得到wire结果。而是使用new WP_Query实例。See this question for detail info.
现在来谈谈你的问题。您使用的是“cat”参数,它用于“category”分类法,而不是自定义分类法。您应该使用tax_query
改为参数:
<?php
$tax_query = array(
\'taxonomy\' => \'team_categories\',
\'field\' => \'slug\',
\'terms\' => \'noukogu\'
);
$args = array(
\'post_type\' => \'team\',
\'tax_query\' => array( $tax_query ),
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
$title = str_ireplace( \'"\', \'\', trim(get_the_title())); $desc=str_ireplace( \'"\', \'\', trim(get_the_content()));
?>
<div class="member">
<img class="image" src="<?php print team_thumbnail_url($post->ID) ?>" alt="liikme pilt">
<h3 class="title"><?php echo $title; ?></h3>
<p class="description">
<?php echo $desc; ?>
</p>
</div>
<!-- End member -->
<?php
}
}
wp_reset_postdata();
?>
SO网友:Pieter Goosen
您的代码中有一些导致此失败的缺陷
首先,也是最重要的,never (我的重点)使用query_posts
构造自定义查询。
Note: 此功能不适用于插件或主题。如后文所述,有更好、性能更好的选项来更改主查询。query\\u posts()是一种过于简单且有问题的方法,通过将页面的主查询替换为新的查询实例来修改它。它效率低下(重新运行SQL查询),并且在某些情况下会彻底失败(尤其是在处理POST分页时)
而是使用如下类WP_Query
构造自定义查询的步骤
至于使用category参数时查询失败的原因,很明显,您没有使用categories,或者实际上没有使用categories术语:-)。您正在对术语使用自定义分类法,该分类法不适用于中的类别参数WP_Query
. 您应该使用税务参数(tax_query
) 你可以去看看this link.
实例
$args = array(
\'post_type\' => \'team\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'team_categories\',
\'field\' => \'slug\',
\'terms\' => \'SLUG FOR PARTICULAR TERM\',
),
),
);
$query = new WP_Query( $args );
此链接还将提供有关如何使用
WP_Query
要了解类别和自定义分类法之间的区别,请阅读我的answer here