您可以获得查询的对象,但这仍然留下了一个未提及的问题,即您正在放弃主查询并执行第二个查询,从而使页面速度至少降低了2倍。分页也会因此而中断。
您可能见过有人警告您不要使用query_posts
, 这就是为什么,使用WP_Query
同样的方法就是重新创建该函数的内部。
使用筛选器和操作执行此操作,请使用pre_get_posts
在WP进入数据库之前修改主post请求的操作。
e、 g.以下是一个排除id为的类别的示例1
从主页:
function exclude_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( \'cat\', \'-1\' );
}
}
add_action( \'pre_get_posts\', \'exclude_category\' );
因此,让我们用以下内容替换支票:
if ( $query->is_tax( \'pwb-brand\' ) && $query->is_main_query() ) {
并设置
posts_per_page
价值,例如。
$query->set( \'posts_per_page\', -1 );
通过将此设置为
-1
最坏的情况变得更糟,现在这个页面的速度和成本都没有上限。如此之慢,您可能会耗尽执行时间,或试图显示它的内存。
你可能会想,“但只有50种产品是永远不会发生的”,我会说,这是一个愚蠢的数字,你永远不会想到会达到,但永远不会-1
/每件事
备选方案包括:
分页(pagination)延迟加载(lazy loading)无限滚动(infinite scroll)有些人显示所有内容是因为他们想ctrl+f
并且很容易找到产品,但这可以通过搜索框和带有名称的隐藏输入来完成post_type
以及价值product
, 第二个是将分类设置为pwb-brand