以慢动作执行wp查询以避免内存错误?

时间:2018-01-14 作者:user2670708

例如,在php中,您可以使用每行读取一个文件fopen("inputfile.txt"); 但这会将所有行放在一个数组中,当文件非常大时会导致内存错误,另一种方法是fopen("inputfile.txt", "r");fgets(); 您可以从磁盘每行读取一个文件,而无需将所有文件加载到内存中。

我想知道Wp query是否有类似的功能,可以在不等待达到内存限制的情况下“缓慢”搜索数据库,即使查询速度较慢。

以下是查询:

$arr = array();
$args = array(
    \'post_type\' => \'post\',
    \'order\'             => \'ASC\',
    \'posts_per_page\' => \'-1\',
);
$query = new WP_Query($args);

if($query->have_posts()):
    while ($query->have_posts()) : $query->the_post();
        if(get_post_meta( get_the_ID(),\'slider_postition\',true )!=\'None\') {
            $pos = get_field(\'slider_postition\', get_the_ID());
            $arr[$pos-1] = get_the_ID();
        }
    endwhile;
endif;

for($i = 0;$i<15;$i++) {
   if($arr[$i] > 0) {
      //output
   }
}

1 个回复
最合适的回答,由SO网友:Nathan Johnson 整理而成

似乎您正在尝试获取最新的15篇文章,其中meta键不等于“None”。

您可以使用meta_query 参数

$args = [
  \'post_type\'      => \'post\',
  \'orderby\'        => \'date\',
  \'order\'          => \'ASC\',
  \'posts_per_page\' => \'15\',
  \'meta_query\'     => [
    [
      \'key\'     => \'slider_position\',
      \'value\'   => [ \'None\' ],
      \'compare\' => \'!=\',
    ],
  ],
];
$query = new WP_Query( $args );

结束

相关推荐

减少或阻止调用UPDATE_META_CACHE

我的主题每页调用update\\u meta\\u cache()函数58次!此函数将根据相关帖子运行以下查询:SELECT post_id, meta_key, meta_value -> FROM wp_postmeta -> WHERE post_id IN (81649) -> ORDER BY meta_id ASC -> ; 返回的绝大多数meta\\u键(以及相应的值)对于相关页面不是必需的(例如,主页循环不需要yoast\\