Wordpress:WP_Query 循环中带有分类术语 ID 的输出列表
Wordpress: Output list with taxonomy term IDs in WP_Query loop
我想在 WP_Query 循环中输出一个列表,其中包含相应 post 的特定分类法 ('genre') 的术语 ID。我设法输出了第一个 ID(如您在代码示例中所见)。如何获得 'tax_query'
数组中 'terms'
的分类法 'genre' 的所有术语 ID 的逗号分隔列表?
function my_function( $query_args) {
$terms = get_the_terms( $post->ID, 'genre');
$termlist = $terms[0]->term_id;
$query_args = array(
'post_type' => 'portfolio',
'orderby' => 'date',
'order' => 'ASC',
'tax_query' => array(
array(
'taxonomy' => 'genre',
'field' => 'term_id',
'terms' => array($termlist),
),
),
);
return $query_args;
}
要return所有你的ID,你需要使用这个:
$term_ids = []; // Save into this array all ID's
// Loop and collect all ID's
if($terms = get_terms('genre', [
'hide_empty' => false,
])){
$term_ids[]=wp_list_pluck($terms, 'term_id'); // Save ID
}
现在您可以通过特定术语获得术语 ID 数组,并且您可以使用 join(',', $term_ids)
函数制作逗号分隔的 ID 列表或您想要的任何内容。
但是如果你想通过特定的 post 收集所有术语 ID,你需要这样的东西:
$terms_ids = [];
if($terms = get_the_terms( $POST_ID_GOES_HERE, 'genre')){
$term_ids[]=wp_list_pluck($terms, 'term_id');
}
但在使用 get_the_terms
之前,您必须确保已提供 post ID 或定义了对象 ID。
在你的函数中你遗漏了那部分。
这是您函数的更新:
function my_function( $query_args ) {
global $post; // return current post object or NULL
if($post)
{
$terms_ids = array();
if($terms = get_the_terms( $post->ID, 'genre')){
$term_ids[]=wp_list_pluck($terms, 'term_id');
}
$query_args = array(
'post_type' => 'portfolio',
'orderby' => 'date',
'order' => 'ASC',
'tax_query' => array(
array(
'taxonomy' => 'genre',
'field' => 'term_id',
'terms' => $terms_ids,
),
),
);
return $query_args;
}
}
我想在 WP_Query 循环中输出一个列表,其中包含相应 post 的特定分类法 ('genre') 的术语 ID。我设法输出了第一个 ID(如您在代码示例中所见)。如何获得 'tax_query'
数组中 'terms'
的分类法 'genre' 的所有术语 ID 的逗号分隔列表?
function my_function( $query_args) {
$terms = get_the_terms( $post->ID, 'genre');
$termlist = $terms[0]->term_id;
$query_args = array(
'post_type' => 'portfolio',
'orderby' => 'date',
'order' => 'ASC',
'tax_query' => array(
array(
'taxonomy' => 'genre',
'field' => 'term_id',
'terms' => array($termlist),
),
),
);
return $query_args;
}
要return所有你的ID,你需要使用这个:
$term_ids = []; // Save into this array all ID's
// Loop and collect all ID's
if($terms = get_terms('genre', [
'hide_empty' => false,
])){
$term_ids[]=wp_list_pluck($terms, 'term_id'); // Save ID
}
现在您可以通过特定术语获得术语 ID 数组,并且您可以使用 join(',', $term_ids)
函数制作逗号分隔的 ID 列表或您想要的任何内容。
但是如果你想通过特定的 post 收集所有术语 ID,你需要这样的东西:
$terms_ids = [];
if($terms = get_the_terms( $POST_ID_GOES_HERE, 'genre')){
$term_ids[]=wp_list_pluck($terms, 'term_id');
}
但在使用 get_the_terms
之前,您必须确保已提供 post ID 或定义了对象 ID。
在你的函数中你遗漏了那部分。
这是您函数的更新:
function my_function( $query_args ) {
global $post; // return current post object or NULL
if($post)
{
$terms_ids = array();
if($terms = get_the_terms( $post->ID, 'genre')){
$term_ids[]=wp_list_pluck($terms, 'term_id');
}
$query_args = array(
'post_type' => 'portfolio',
'orderby' => 'date',
'order' => 'ASC',
'tax_query' => array(
array(
'taxonomy' => 'genre',
'field' => 'term_id',
'terms' => $terms_ids,
),
),
);
return $query_args;
}
}