如果您只对3个后续的tag\\u id感兴趣,可以从缩小查询范围开始,使用$\\u POST[\'tag\\u id\']和\'tag\\u in\':
$query_tag_id = $_POST[\'tag_id\'];
$news_query = new WP_Query(array(
\'post_type\' => \'news\',
\'posts_per_page\' => -1,
\'orderby\' => \'date\',
\'order\' => \'ASC\',
\'company\' => $company,
\'tag__in\' => array( $query_tag_id-1, $query_tag_id, $query_tag_id+1 )
));
您可以在if条件测试中引用$query\\u tag\\u id变量,如:
if( $tag_id == ( $query_tag_id - 1 ) ) {
// do stuff
}
if( $tag_id == $query_tag_id ) {
// do stuff
}
if( $tag_id == ( $query_tag_id + 1 ) ) {
// do stuff
}
我认为,当你将其与上述内容结合起来时,死亡医学专家提出的建议会起到作用。中间if测试如下:
if ( is_object_in_term( $post->ID, \'post_tag\', $query_tag_id ) )
do_my_funky_stuff();
如果失败,您可以在while循环中始终获取活动帖子的所有标记ID,并在if测试中使用这些ID。所以你必须更换
$tag_id = get_query_var(\'tag_id\');
使用:
$tags = get_the_tags();
$tag_ids = array();
if( $tags ) {
foreach ( $tags as $tag ) {
$tags_id[] = $tag->term_id;
}
}
if ( in_array( ( $query_tag_id - 1 ) , $tag_ids ) ) {
// do stuff
}
etc.
如果您确定您的帖子只有一个标签,您可以使用以下方法简化:
$tags = get_the_tags();
$tag_id = ( $tags ) ? $tags[0]->term_id : 0;
if( $tag_id == ( $query_tag_id - 1 ) ) {
// do stuff
}
etc.
更新:另一方面,get\\u query\\u var()不起作用,因为它查找您在查询中设置的参数。您没有在查询中设置任何tag\\u id,因此它不会返回任何内容。因此,按照我在回答开始时的建议更改查询将得到一个返回值,但不是您可以使用的返回值。