$args = array(
'post_type' => 'adverts',
'advert_tag' => 'politics' // Doesn't seem to work.
);
query_posts($args);
while ( have_posts() ) : the_post();
//Show Posts
endwhile;
分类声明:
add_action( 'init', 'add_custom_taxonomy', 0 );
function add_custom_taxonomy() {
register_taxonomy('advert_tag', 'Adverts', array(
'hierarchical' => true,
'labels' => array(
'name' => _x( 'Advert Tags', 'taxonomy general name' ),
'singular_name' => _x( 'Advert Tag', 'taxonomy singular name' ),
'search_items' => __( 'Search Advert Tags' ),
'all_items' => __( 'All Advert Tags' ),
'parent_item' => __( 'Parent Advert Tag' ),
'parent_item_colon' => __( 'Parent Advert Tag:' ),
'edit_item' => __( 'Edit Advert Tag' ),
'update_item' => __( 'Update Advert Tag' ),
'add_new_item' => __( 'Add New Advert Tag' ),
'new_item_name' => __( 'New Advert Tag Name' ),
'menu_name' => __( 'Advert Tags' ),
),
'rewrite' => array(
'slug' => 'advert-tags',
'with_front' => false,
'hierarchical' => true
),
));
}
自定义帖子类型声明:
add_action( 'init', 'create_post_type' );
function create_post_type() {
register_post_type( 'Adverts',
array(
'labels' => array(
'name' => __( 'Adverts' ),
'singular_name' => __( 'Advert'),
'add_new' => __( 'Add New' ),
'add_new_item' => __( 'Add a New Advert' ),
'edit' => __( 'Edit' ),
'edit_item' => __( 'Edit Advert' ),
'new_item' => __( 'New Advert' ),
'view' => __( 'View' ),
'view_item' => __( 'View Advert' ),
'search_items' => __( 'Search Adverts' ),
'not_found' => __( 'No Adverts found' ),
'not_found_in_trash' => __( 'No Adverts found in Trash' ),
),
'supports' => array(
'title',
'thumbnail',
),
'has_archive' => true,
'menu_position' => 10,
'public' => true,
'rewrite' => array( 'slug' => 'adverts' ),
'taxonomies' => array('advert_tag')
)
);
}
#1 楼
所有人都不使用query_posts()
,请在此处详细了解:何时应该使用WP_Query vs query_posts()vs get_posts()?。 您必须使用
WP_Query
来获取所需的帖子。阅读文档。在您的情况下,查询可能是这样的:$the_query = new WP_Query( array(
'post_type' => 'Adverts',
'tax_query' => array(
array (
'taxonomy' => 'advert_tag',
'field' => 'slug',
'terms' => 'politics',
)
),
) );
while ( $the_query->have_posts() ) :
$the_query->the_post();
// Show Posts ...
endwhile;
/* Restore original Post Data
* NB: Because we are using new WP_Query we aren't stomping on the
* original $wp_query and it does not need to be reset.
*/
wp_reset_postdata();
#2 楼
我正在使用此查询来获取具有其自定义分类法(faq_category)的自定义帖子(常见问题解答帖子)。因为自v.3.1起不推荐使用WP_Query args中的{taxonomy}参数,并引入了{tax_query}。下面是完美工作的代码。$query = new WP_Query( array(
'post_type' => 'faqs', // name of post type.
'tax_query' => array(
array(
'taxonomy' => 'faq_category', // taxonomy name
'field' => 'term_id', // term_id, slug or name
'terms' => 48, // term id, term slug or term name
)
)
) );
while ( $query->have_posts() ) : $query->the_post();
// do stuff here....
endwhile;
/**
* reset the orignal query
* we should use this to reset wp_query
*/
wp_reset_query();
评论
这是正确的答案-接受的答案将不会按分类法进行过滤,因为tax_query需要数组数组。此嵌套方法对于使其正常工作至关重要。感谢您的回答 )
–汤姆·代尔(Tom Dyer)
16年7月28日在21:36
是的,你是对的,欢迎汤姆·代尔
– Aamer Shahzad
16年8月18日在21:11
是的,这也帮助我使分类模板工作。谢谢!
–user3135691
18年2月16日在10:34
嘿@AamerShahzad我有完全相同的问题,我用了您的答案,但是页面没有任何文章。你能帮我吗? stackoverflow.com/questions/55783769/…
– Desi
19年4月21日在21:34
#3 楼
这里的代码就像魔术一样工作。我正在获取具有自定义分类法“ unit_type”和多个分类法术语(如“主管”和“办公室”)的自定义post_type“ university_unit”的所有帖子。希望对您有所帮助。
<?php
$args = array(
'post_type' => 'university_unit',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'tax_query' => array(
array(
'taxonomy' => 'unit_type',
'field' => 'slug',
'terms' => array('directorate', 'office')
)
)
);
$Query = new WP_Query($args);
if($Query -> have_posts()):
while($Query -> have_posts()):
$Query -> the_post();
?>
<div class="cm-post-list-item">
<article>
<div class="cm-post-head">
<h3 class="cm-text-blue">
<a href="<?php the_permalink(); ?>"><?php the_title();?></a>
</h3>
</div>
<div class="cm-post-body"><?php the_excerpt();?></div>
</article>
</div>
<?php
endwhile;
else:
"No Administrative Offices Found. Try again later";
endif;
wp_reset_postdata();
?>
#4 楼
这有助于我获得每个术语下针对CPT的自定义分类法列出的所有帖子 <?php
// Get list of all taxonomy terms -- In simple categories title
$args = array(
'taxonomy' => 'project_category',
'orderby' => 'name',
'order' => 'ASC'
);
$cats = get_categories($args);
// For every Terms of custom taxonomy get their posts by term_id
foreach($cats as $cat) {
?>
<a href="<?php echo get_category_link( $cat->term_id ) ?>">
<?php echo $cat->name; ?> <br>
<?php // echo $cat->term_id; ?> <br>
</a>
<?php
// Query Arguments
$args = array(
'post_type' => 'portfolio', // the post type
'tax_query' => array(
array(
'taxonomy' => 'project_category', // the custom vocabulary
'field' => 'term_id', // term_id, slug or name (Define by what you want to search the below term)
'terms' => $cat->term_id, // provide the term slugs
),
),
);
// The query
$the_query = new WP_Query( $args );
// The Loop
if ( $the_query->have_posts() ) {
echo '<h2> List of posts tagged with this tag </h2>';
echo '<ul>';
$html_list_items = '';
while ( $the_query->have_posts() ) {
$the_query->the_post();
$html_list_items .= '<li>';
$html_list_items .= '<a href="' . get_permalink() . '">';
$html_list_items .= get_the_title();
$html_list_items .= '</a>';
$html_list_items .= '</li>';
}
echo $html_list_items;
echo '</ul>';
} else {
// no posts found
}
wp_reset_postdata(); // reset global $post;
?>
<?php } ?>
#5 楼
由于wordpress更改了其分类参数信息,因此该答案现在不再有效。请使用这种方式。会的。这个对我有用。 “ tax_query”替换为“ tax”。希望它能工作。$the_query = new WP_Query( array(
'post_type' => 'Adverts',
'tax' => array(
array (
'taxonomy' => 'advert_tag',
'field' => 'slug',
'terms' => 'politics',
)
),
) );
while ( $the_query->have_posts() ) :
$the_query->the_post();
// Show Posts ...
endwhile;
/* Restore original Post Data
* NB: Because we are using new WP_Query we aren't stomping on the
* original $wp_query and it does not need to be reset.
*/
wp_reset_postdata();
评论
恰恰相反-税收是旧方法,tax_query是当前(v3.1 +)方法。
– WebElaine
19年1月3日,22:50
好吧,我正在使用v4.5,它可以与我一起使用
– mamunuzaman
19年1月5日,12:22
WP以向后兼容而闻名。旧的方法仍然有效,但是已经过时了,因此最终可能会删除它,使用新方法更安全。
– WebElaine
19年1月7日在13:40
是,现在从税收更改为tay_query。
– mamunuzaman
19/12/11在10:58
评论
只是注意到,它似乎拉出了所有自定义帖子类型为“广告”的帖子。但这似乎可以完成工作:$ the_query = new WP_Query(array('post_type'=>'Adverts','advert_tag'=>'politics'));
–斯蒂芬
13年2月7日在14:21
@Stephen {tax}从3.1版开始被弃用,而引入了{tax_query}和{tax_query}。这仍然有效,但我们不应该使用不推荐使用的功能。 tax_query与一组分类学查询一起使用。我正在研究FAQs Custom Post类型,它对我的作用与WP_Query中的{tax}分类标准子句参数几乎相同。
– Aamer Shahzad
15年11月19日在20:56