我创建了一个自定义帖子类型(学校)和附加到它的自定义分类(区域)。 一切都很好,除了我想创建一个短代码,只能获得属于该自定义分类中特定条目的学校。 这意味着当您编写短代码时,您将传递区域名称,并且只有属于该区域的学校才会从数据库返回。 我设法使用短代码,但不根据区域进行过滤。
这是我的定训分类:
$taxonomies['regions'] = array(
'hierarchical' => true,
'query_var' => 'school_region',
'rewrite' => array(
'slug' => 'schools/region'
),
'labels' => array(
'name' => __('Region'),
'singular_name' => __('Region'),
'add_new' => __('Add New Region'),
'add_new_item' => __('Add New Region'),
'edit_item' => __('Edit Region'),
'new_item' => __('Add New Region'),
'view_item' => __('View Region'),
'search_items' => __('Search Regions'),
'not_found' => __('No Region Found'),
'not_found_in_trash' => __('No Regions Found In Trash'),
),
);
这是我的短代码:
add_shortcode('rs_school',function($atts, $content=null){
$loop = new WP_Query( array(
'post_type' => 'rs-school',
'posts_per_page' => -1,
'orderby' => 'date',
'order' => 'DESC',
) );
//var_dump($loop);
if($loop->have_posts() ){ ?>
<ul class="related">
<?php
while ($loop->have_posts()) {
$loop->the_post();
//$meta = get_post_meta(get_the_ID(), '');
$terms = get_the_terms( $post->ID , 'regions' );
var_dump($terms);
if (in_array($theregion, $terms)){
?>
<li>
<a href="<?php the_permalink() ?>"><?php echo get_the_title() ?></a>
</li>
<?php
}
} ?>
</ul>
<div class="clearfix"></div>
<?php
}
});
我该怎么做?
最好的问候
答案 0 :(得分:0)
所以设法解决了这个问题。所以希望能帮助别人:
我将术语id发送到短代码,然后使用它来填充它:
$atts = shortcode_atts(
array(
'region' => 15,
), $atts, 'rs_school' );
然后像这样过滤它:
$loop = new WP_Query( array(
'post_type' => 'rs-school',
'posts_per_page' => -1,
'orderby' => 'date', // Purely optional - just for some ordering
'order' => 'DESC', // Ditto
'tax_query' => array(
array(
'taxonomy' => 'regions', //or tag or custom taxonomy
'field' => 'id',
'terms' => $atts['region']
)
)
) );
希望它能帮助别人。