Wordpress 嵌套循环,无法从查询中删除 meta_key
Wordpress nested loop, cannot remove meta_key from the query
我有两个自定义帖子类型 A 和 B,它们通过相同的自定义分类链接在一起。
在使用 "default" 循环遍历 A 帖子时,我希望每个 A 都获得具有相同分类法的所有 B。
代码如下所示:
<?php if(have_posts()): while(have_posts()): the_post(); ?>
<?php
$A_Bs=get_the_terms( $post->ID, 'A_B');
?>
<?php if($A_Bs!=false && count($A_Bs)>0):?>
<?php
$A_B=$A_Bs[0];
$args = array(
'post_type' => 'B',
'tax_query' => array(
array(
'taxonomy' => 'A_B',
'field' => 'term_id',
'terms' => $A_B->term_id,
),
),
);
$loop = new WP_Query($args);
$saved_post=$post;
?>
<?php while ($loop->have_posts()) : $loop->the_post();?>
blabla
<?php endwhile;?>
<?php $post=$saved_post;?>
<?php endif;?>
<?php endwhile; endif;?>
但是子循环总是空的。原因是,在 query_vars 我有这两个家伙:
'meta_key' => string 'position' (length=8)
'orderby' => string 'meta_value_num' (length=14)
而且我无法摆脱它们。我从未在任何地方指定此顺序,我的 B 帖子也没有此自定义字段。
它在 SQL 查询中生成此行:
aaaa_postmeta.meta_key = 'position'
并阻止我列出帖子。
我尝试使用 $args,删除 tax_query 并更改 post_type 但它始终相同。
感谢您的宝贵时间!
抱歉,我下班后才意识到我在 functions.php
中有以下内容
function order_by_position($query){
if(is_post_type_archive( 'A')||is_post_type_archive( 'C')||is_post_type_archive( 'D')){
$query->query_vars['meta_key']="position";
$query->query_vars['orderby']="meta_value_num";
}
return $query;
}
add_action( 'pre_get_posts', 'order_by_position' );
现在更符合逻辑了。
抱歉打扰了。
我有两个自定义帖子类型 A 和 B,它们通过相同的自定义分类链接在一起。 在使用 "default" 循环遍历 A 帖子时,我希望每个 A 都获得具有相同分类法的所有 B。
代码如下所示:
<?php if(have_posts()): while(have_posts()): the_post(); ?>
<?php
$A_Bs=get_the_terms( $post->ID, 'A_B');
?>
<?php if($A_Bs!=false && count($A_Bs)>0):?>
<?php
$A_B=$A_Bs[0];
$args = array(
'post_type' => 'B',
'tax_query' => array(
array(
'taxonomy' => 'A_B',
'field' => 'term_id',
'terms' => $A_B->term_id,
),
),
);
$loop = new WP_Query($args);
$saved_post=$post;
?>
<?php while ($loop->have_posts()) : $loop->the_post();?>
blabla
<?php endwhile;?>
<?php $post=$saved_post;?>
<?php endif;?>
<?php endwhile; endif;?>
但是子循环总是空的。原因是,在 query_vars 我有这两个家伙:
'meta_key' => string 'position' (length=8)
'orderby' => string 'meta_value_num' (length=14)
而且我无法摆脱它们。我从未在任何地方指定此顺序,我的 B 帖子也没有此自定义字段。
它在 SQL 查询中生成此行:
aaaa_postmeta.meta_key = 'position'
并阻止我列出帖子。 我尝试使用 $args,删除 tax_query 并更改 post_type 但它始终相同。
感谢您的宝贵时间!
抱歉,我下班后才意识到我在 functions.php
中有以下内容function order_by_position($query){
if(is_post_type_archive( 'A')||is_post_type_archive( 'C')||is_post_type_archive( 'D')){
$query->query_vars['meta_key']="position";
$query->query_vars['orderby']="meta_value_num";
}
return $query;
}
add_action( 'pre_get_posts', 'order_by_position' );
现在更符合逻辑了。 抱歉打扰了。