wordpress 自定义_调查:创建自定义WordPress查询

今天,我们将看一下WordPress Query 。 即使WordPress已记录了其Query函数 ,但深入研究每个部分还是非常令人生畏的,并且可能不切实际。 这是您需要的快捷方式。

在这篇文章中,我们将讨论您可能需要经常在主题上应用WordPress查询的一些实用技巧

基本的WP_Query

简而言之, WP_Query是用于请求WordPress帖子和页面的类。 我们可以在WordPress主题中创建一个新的WP_Query类,以查询自定义规范中的帖子(或页面)。

首先,让我们看一下主题目录中的index.php ; 您应该找到以下代码。

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>

它称为Loop 。 默认情况下,它显示所有已发布的帖子。

让我们看看如何使用WP_Query对其进行自定义。 在此示例中,我们将排除特定类别的帖子。

首先,我们在变量中设置一个新的WP_Query

$my_query = new WP_Query();

在其中,我们可以分配要排除的类别ID。 例如:

$my_query = new WP_Query('cat=-1,-5'); //exclude category 1 and 5

然后,我们在循环中引用变量,如下所示。

<?php if ( $my_custom_query->have_posts() ) : while ( $my_custom_query->have_posts() ) : $my_custom_query->the_post(); ?>
	<div class="title">
		<a href="<?php the_permalink() ;?>"><?php the_title() ;?></a>
	</div>
<?php endwhile; else: ?>
	<p>
		<?php _e('Sorry, no posts matched your criteria.'); ?>
	</p>
<?php endif; ?>

请注意,当您有多个自定义查询时,尤其是在单个页面中,则必须用wp_reset_postdata()将其括起来。

使用WP-PageNavi分配查询

WP-PageNavi可能是最流行的在WordPress中添加数字分页的插件。 但是,大多数人将其与自定义WP_Query一起使用时会遇到错误。 分页根本就行不通

从2.74版开始,WP-PageNavi提供了一个选项,您可以在其中分配自定义查询。 以上面的自定义查询为例,我们可以执行以下操作:

wp_pagenavi( array( 'query' => $my_query ) );

……那应该解决错误。

缓存查询

应该注意的是,当您有多个查询时(尤其是在单个页面上),最终将导致多个服务器负载,这可能会影响站点负载性能

优化它的方法之一是使用Transient API。 在这种情况下,我们使用它来缓存WP_Query查询的对象,并将其存储在一定的时间段内。

这样,我们可以通过检索和处理缓存的数据而不是在每次页面加载时进行查询来加快查询的加载时间。

这是一个代码示例,其中缓存存储24小时。

if ( ! ( $my_query = get_transient( 'my_query_cache' ) ) ) {
	$my_query = new WP_Query('cat=-1,-5');
	set_transient( 'my_query_cache', $my_query, DAY_IN_SECONDS );
}

结语

使用WP_Query ,我们可以创建简单或更复杂的查询。 如果编写自定义WP_Query对您WP_Query似乎很复杂,则可以使用一个名为WP_Query Generator的工具来简化此工作。

我希望您会发现此技巧有用,并且如果您想进一步研究该主题,请参考以下参考资料:


翻译自: https://www.hongkiat.com/blog/wordpress-query-basic/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值