不是这样的pre_get_posts
工作,或者它的用途。
这个pre_get_posts
筛选器,是更改集合或修改WP_Query
对象,然后再从信息中获取帖子。
例如,这里有一个将主页查询修改为仅获取5篇帖子:
function tomjn_fetch_five_posts( \\WP_Query $q ) {
if ( $q->is_main_query() && $q->is_home() ) {
$q->set( \'posts_per_page\', 5 );
}
}
add_action( \'pre_get_posts\', \'tomjn_fetch_five_posts\' );
在你的情况下,还不清楚你想做什么,但假设我们只想用最高的
session
元键值,我们可以执行以下操作:
$q->set( \'meta_key\', \'session\');
$q->set( \'meta_value\', $lastSessionNumber );
然而,这两个查询以及您编写的SQL查询都存在着严重的性能和流量缩放问题,这种问题是无法掩盖或优化的
性能缓存和流量缩放问题的症结在于数据存储效率不高。如果您想以一种可以快速查询的方式存储内容以查找帖子,那么必须使用分类法。这就是构建分类法的目的,否则类别和标记将存储在post meta中
元查询包括extremely 慢
在事情开始失控和页面加载时间激增之前,不要期望超过少数人能够同时查看该页面。元查询非常昂贵
也许你可以缓存它们?
你永远不能缓存该页面,因为它会向不同的用户显示不同的内容,如果你开始缓存该页面,它会向所有用户显示相同的内容。
数据存储
如果会话是post ID,则应使用post父级链接它们。
否则,您最好挂接到post save,检查会话是否是最大的数字,并将其存储在用户meta中,以便下次需要它时,您已经找到了它,而且它是简单/快速的get_user_meta
呼叫