尝试以下操作:
add_action( \'genesis_loop\', \'bds_more_projects_query\' );
function bds_more_projects_query() {
if ( is_singular( \'portfolio\' ) ) {
$categories = get_the_terms( $post->ID, \'portfolio_category\' );
$cat_ids = array();
foreach ( $categories as $category ) {
$cat_ids[] = $category->term_id;
}
$args = array(
\'post_type\' => \'portfolio\',
\'posts_per_page\' => 4,
\'tax_query\' => array(
array(
\'taxonomy\' => \'portfolio_category\',
\'field\' => \'id\',
\'terms\' => array( $cat_ids ),
),
),
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();
echo the_title();
endwhile;
}
wp_reset_postdata();
}
}
基本上,在
$categories
数组,添加
term_id
,然后在查询参数中使用该新数组。这个
get_the_terms
函数返回一个WP\\u Term对象数组,而不仅仅是一个id数组(请参见
WP Code Reference 了解更多信息)。
要检查的另一件事是$post
正在给您函数内的当前帖子。
要验证,请添加var_dump($post)
就在is_singular( \'portfolio\' )
条件并确保它为您提供了当前的post对象。如果不是,请添加global $post
内部bds_more_projects_query
函数并重试。