今天,我们将看一下WordPress Query 。 即使WordPress已记录了其Query函数 ,但深入研究每个部分还是非常令人生畏的,并且可能不切实际。 这是您需要的快捷方式。
在这篇文章中,我们将讨论您可能需要经常在主题上应用WordPress查询的一些实用技巧 。
简而言之, WP_Query
是用于请求WordPress帖子和页面的类。 我们可以在WordPress主题中创建一个新的WP_Query
类,以查询自定义规范中的帖子(或页面)。
首先,让我们看一下主题目录中的index.php
; 您应该找到以下代码。
它称为Loop 。 默认情况下,它显示所有已发布的帖子。
让我们看看如何使用WP_Query
对其进行自定义。 在此示例中,我们将排除特定类别的帖子。
首先,我们在变量中设置一个新的WP_Query
。
$my_query = new WP_Query();
在其中,我们可以分配要排除的类别ID。 例如:
$my_query = new WP_Query('cat=-1,-5'); //exclude category 1 and 5
然后,我们在循环中引用变量,如下所示。
have_posts() ) : while ( $my_custom_query->have_posts() ) : $my_custom_query->the_post(); ?>
请注意,当您有多个自定义查询时,尤其是在单个页面中,则必须用wp_reset_postdata()
将其括起来。
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/