我正在尝试在我的主主页中运行多个wp\\U查询。。
这是一种好的做法吗?
$argsPort= array(
\'posts_per_page\' => 6,
\'category_name\' => \'portefolio\',
\'suppress_filters\' => true,
);
$wqPort = new WP_Query($argsPort);
$argsServices = array(
\'posts_per_page\' => 6,
\'category_name\' => \'servicos\',
\'suppress_filters\' => true,
);
$wqServices = new WP_Query($argsServices);
$argsClients= array(
\'posts_per_page\' => 3,
\'category_name\' => \'clientes\',
\'suppress_filters\' => true,
);
$wqClients = new WP_Query($argsClients);
$argsBlog= array(
\'posts_per_page\' => 3,
\'category_name\' => \'blogue\',
\'suppress_filters\' => true,
);
$wqBlog = new WP_Query($argsBlog);
我已经在使用两个循环,但其中只有一个有效,另一个不返回任何东西,它们都是相同的,但有一个使用
$wqPort
另一个使用
$wqBlog
, 只有wqLog工作
<?php foreach ($wqPort as $projeto) : setup_postdata( $projeto );?>
<li class="glide__slide">
<div class="card">
<a href="<?php the_permalink(); ?>">
<?php if(has_post_thumbnail( )) : ?>
<div class="card__image display--flex"
style="background-image: url(\'<?php echo wp_get_attachment_url( get_post_thumbnail_id( $post->ID ) ); ?>\');">
<!--imagem -->
</div> <!-- imagem -->
<?php else : ?>
<div class="card__image__none">
</div>
<?php endif;?>
<!-- -->
<div class="card__container">
<p class="card__container__subtitle">
<?php the_tags(\'\', \', \', \'<br />\'); ?>
</p>
<h2 class="card__container__title">
<a href="<?php the_permalink(); ?>">
<?php the_title( ); ?>
</a>
</h2>
</div>
</a>
</div>
</li>
<?php endforeach;?>
<?php wp_reset_query(); ?>
SO网友:Tom J Nowell
您的问题在于:
foreach ($wqPort as $projeto)
$wqPort
是类型的对象
WP_Query
, 不是数组。如果查看PHP错误日志,应该会看到这些行的警告和通知
相反,请使用标准的post循环:
$q = new WP_Query( [ .. args here ... ] );
if ( $q->have_posts() ) {
while( $q->have_posts() ){
$q->the_post();
// .. do things
}
wp_reset_postdata();
} else {
// no posts found
}
这就是标准WP\\U查询post循环的样子
其他注意事项:
避免将suppress\\u filters设置为true,这将阻止缓存机制工作,以及任何插件调整查询,从而导致性能下降wp_rest_query
, 它用于query_posts
. 使用wp_reset_postdata
相反,不要在同一行上涂抹多个内容缩进您的代码,这将防止常见错误,并使阅读更容易如果您有两个PHP块之间没有任何内容,不要关闭并重新打开它们,只需一个大块即可。E、 g.这:<?php echo 1; ?><?php echo 2;?>
成为:<?php echo 1; echo 2; ?>