gpt4 book ai didi

wordpress - Wp_Query 中的最大数组长度 post__not_in 参数

转载 作者:行者123 更新时间:2023-12-02 19:48:20 27 4
gpt4 key购买 nike

我正在使用 WordPress 上的页面向本地 php 文件发出发布请求,以方便无限滚动。每次 WP_query 的参数如下:

$args =  array(
'post_status' => 'publish',
'post_type' => array( 'post'),
'post__not_in' => $_POST["LoadedIDs"],
'posts_per_page' => $numberofResources,
'orderby' => 'rand',
'meta_query' => array(
array(
'key' => 'shares',
'value' => 100,
'compare' => '>=',
'type' => 'numeric',
),
)
);

LoadedIDs 是已获取的 ID 列表,因此每次请求后自然会变得更长。最终我注意到我收到了重复的信息。我认为这是由于 post__not_in 数组长度的限制。请问有人知道那是什么吗?

最佳答案

您应该对此进行分析以查看需要多长时间。如果您有大量帖子(比如说 5-50k),那么执行查询可能需要一些时间,而且针对已加载的帖子进行测试也可能非常耗时。

此外,我假设加载的 ID 是从客户端发送的。如果是这种情况,并且有大量帖子,那么您可能会遇到与将数据从客户端获取到服务器有关的问题。您应该检查 $_POST 以确保所有 ID 都存在。如果您有太多 ID,那么您可能不得不采取诸如将加载的 ID 存储在 session 中之类的方法,但如果做得不好,这可能会变得困惑。

无论如何,这个尝试:

$exclude = is_array( @$_POST['LoadedIDs'] ) ? $_POST['LoadedIDs'] : [];

// use array keys for faster lookup
$_exclude = array_flip( $exclude );

$all_posts = get_posts( [
'post_status' => 'publish',
'post_type' => [ 'post' ],
'posts_per_page' => - 1,
'orderby' => 'rand',
'meta_query' => array(
array(
'key' => 'shares',
'value' => 100,
'compare' => '>=',
'type' => 'numeric',
),
)
]);

// get the next X number of posts.
$next_posts = array_slice( array_filter( $all_posts, function ( $p ) use( $_exclude ){
return ! isset( $_exclude[$p->ID] );
} ), 0, $numberofResources );

关于wordpress - Wp_Query 中的最大数组长度 post__not_in 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58792146/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com