显示从页面的自定义字段(WP)中选择的自定义帖子类型分类
I've created a custom post type and taxonomy for it. I want admin to be able to chose a taxonomy they want to show on the page when creating a new one (page). I've created a custom page template, and there is a conditional custom field that shows available taxonomies, when that template is selected. Used custom post type UI and advanced custom fields plugins for that.
<?php
// this one gets taxonomy custom field
$taxo = get_field('top_to_show');
// and from here on, it outputs the custom post type
$args = array(
'post_type' => 'top_item',
'post_status' => 'publish',
'tops' => $taxo
);
$lineblocks = new WP_Query( $args );
if( $lineblocks->have_posts() ) {
while( $lineblocks->have_posts() ) {
$lineblocks->the_post();
?>
<div>Custom post type layout html</div>
<?php
}
}
else {
echo '';
}
wp_reset_query(); ?>
Now, when I select "Term ID" for taxonomy custom field for the page, it doesn't show anything at all. And when I select "Term Object", it shows all posts from all taxonomies, and not the specifically selected one.
How do I make it show that specifically chosen taxonomy posts?
我为它创建了一个自定义的帖子类型和分类。 我希望管理员能够在创建新的(页面)时选择他们想要在页面上显示的分类。 我已经创建了一个自定义页面模板,并且在选择该模板时,有一个条件自定义字段显示可用的分类。 使用自定义帖子类型UI和高级自定义字段插件。 p>
&lt;?php
//这个获得分类自定义字段
$ taxo = get_field('top_to_show');
//从这里开始,它 输出自定义帖子类型
$ args = array(
'post_type'=&gt;'top_item',
'post_status'=&gt;'publish',
'tops'=&gt; $ taxo
);
$ lineblocks = new WP_Query($ args);
if($ lineblocks-&gt; have_posts()){
while($ lineblocks-&gt; have_posts()){
$ lineblocks-&gt; the_post() ;
?&gt;
&lt; div&gt;自定义帖子类型布局html&lt; / div&gt;
&lt;?php
}
}
其他{
echo'';
}
wp_reset_query(); ?&gt;
code> pre>
现在,当我为页面的分类自定义字段选择“术语ID”时,它根本不显示任何内容。 当我选择“术语对象”时,它会显示所有分类中的所有帖子,而不是具体选择的帖子。 p>
如何让它显示特定选择的分类标准帖? p>
div>
That method of retrieving posts by taxonomy, with the tax
parameter, is deprecated: https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters
You should use tax_query
instead. Assuming 'tops' is the name of the taxonomy, and your custom field returns the Term ID only:
$args = array(
'post_type' => 'top_item',
'post_status' => 'publish',
'tax_query' => array(
array(
'taxonomy' => 'tops',
'field' => 'term_id',
'terms' => $taxo,
),
),
);