(疑问无疑是误解的无限来源……)
我尝试在税务档案中显示两种类型的信息(taxonomy-artiste.php
) :
自定义帖子(bio)中的页面内容,以及其他自定义帖子(works)中的帖子列表。如果我理解得很好,可以使用pre\\u get\\u post更改主查询。所以,我在我的function.php
.
//Include all my CPT but the bio
function lm_exclude_bio( $query ) {
if( is_tax(\'artiste\') && empty( $query->query_vars[\'suppress_filters\'] ) ) {
$query->set( \'post_type\', array(
\'post\', \'cpt#1\', \'cpt#2\'
));
return $query;
}
}
add_filter( \'pre_get_posts\', \'lm_exclude_bio\' );
好的,它起作用了。
但是,当我在此存档中添加新查询时,它不会显示我排除的帖子。。。
$args = array( \'post_type\' => \'bio\', \'posts_per_page\' => 1 );
// My second query for CPT \'bio\'
$bio_query = new WP_Query( $args );
// The Loop
if ( $bio_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$bio_query->the_post();
// please, my custom post \'bio\' !...
}
/* Restore original Post Data */
wp_reset_postdata();
} else {
// no posts found
?>
这是不可能的(愚蠢的?)设置两个参数相反的查询?谢谢你的帮助!
最合适的回答,由SO网友:CodeMascot 整理而成
您已添加筛选器lm_exclude_bio
到pre_get_posts
. 因此,当您需要运行另一个查询时,可以删除过滤器以获得正常查询。您可以按如下方式卸下过滤器-
// Here we\'re removing the filter first. Then we are running the query.
remove_filter( \'pre_get_posts\', \'lm_exclude_bio\' );
$args = array( \'post_type\' => \'bio\', \'posts_per_page\' => 1 );
// My second query for CPT \'bio\'
$bio_query = new WP_Query( $args );
// The Loop
if ( $bio_query->have_posts() ) {
while ( $bio_query->have_posts() ) {
$bio_query->the_post();
// please, my custom post \'bio\' !...
}
/* Restore original Post Data */
wp_reset_postdata();
} else {
// no posts found
}
?>
也在
while ( $the_query->have_posts() )
您在上出错
$the_query
. 是的
$bio_query
. 我已经修复了上述代码中的错误。
希望有帮助。
SO网友:David Navia
好的,首先我发现你的代码有误导性,请检查while
第一部分修订:
// The Loop
if ( $bio_query->have_posts() ) {
while ( $bio_query->have_posts() ) {
$bio_query->the_post();
// please, my custom post \'bio\' !...
}
/* Restore original Post Data */
wp_reset_postdata();
} else {
// no posts found
?>
BUT 我认为您正在处理查询,因为您使用了两种不同的方法来攻击WP数据库。在你的第一段代码中(我想你把它放进了
functions.php
文件),您正在干扰“主查询”对象,但您似乎从未在
taxonomy-artiste.php
文件我建议这样做:
<?php
// Taxonomy-artiste.php
/*
* The content of a page from a custom post (bio)
*/
$args = array( \'post_type\' => \'bio\', \'posts_per_page\' => 1 );
$bio_query = new WP_Query( $args );
// The Loop
if ( $bio_query->have_posts() ) {
while ( $bio_query->have_posts() ) {
$bio_query->the_post();
the_content() // This will print the content of your bio post, stored in the global $post variable
}
/* Restore original Post Data */
wp_reset_postdata();
} else {
// no posts found
}
/*
* And after, a list of post from another custom post
*/
$args = array( \'post_type\' => \'#cpt1\', \'posts_per_page\' => \'put here the number of #cpt1 you want to load\' );
$other_query = new WP_Query( $args );
// The Loop
if ( $other_query->have_posts() ) {
while ( $other_query->have_posts() ) {
$other_query->the_post();
the_content() // This will print the content of your other posts, stored in the global $post variable
}
/* Restore original Post Data */
wp_reset_postdata();
} else {
// no posts found
}
?>
我希望这对你有帮助。