Bulk update wordpress posts

时间:2017-05-09 作者:Harry

编码器。我对WP编码真的很陌生,我没有任何知识,我们到了。我创建了一个插件(实际上找到了它,但我做了一些修改),更新了我所有的wp帖子。

让我们向您展示代码,

if ( ! class_exists( \'MyPlugin_BulkUpdatePosts\' ) ) :

class MyPlugin_BulkUpdatePosts
{
    public function __construct()
    {
        register_activation_hook( __FILE__, array( $this, \'do_post_bulk_update\' ) ); //Run this code only on activation
    }

    //Put your code in this function
    public function do_post_bulk_update()
    {
        $posts_to_update = get_posts(\'numberposts=-1\'); //numberposts for post query, "-1" for all posts.
        foreach ( $posts_to_update as $update_this_post ):

        //update query goes here

        endforeach;
    } 
}
endif;
如你所见,它对所有帖子进行了查询,主要问题是我有10k多篇帖子,但当我使用它时,我的服务器崩溃了,它给出了一个“503不可用”。但当我使用50-60个帖子时,它是有效的。

我怎样才能用更少的资源来实现这一目标?

2 个回复
SO网友:Rarst

WP如何处理数据库的一个实现细节是,它总是将所有查询结果拖拽到PHP值和内存空间中。换句话说,它不太可能在WP中抛出任何繁重的查询,也不可能让它崩溃。值得注意的是,任何处理大型查询(如数据库备份查询)的插件通常都是从头开始编写数据库访问层,而不是使用WP API。

因此,实现批量操作必须更加精细。查询应分为较小的批,并应按顺序进行处理。您需要自己编写逻辑或找到现有的解决方案。我想有一些,但我没有使用任何通用的。

在某些情况下,另一种方法是将更新逻辑挂接到单个帖子的访问上。如果不需要对所有内容进行一次性完全更新,那么更新可以以这种方式随时间传播,而不需要一次性更新代码,也不需要担心资源影响。

SO网友:Picard

10k以上的更新必须花费时间。根据需要,您可以对Wordpress表进行如下操作wp_posts 使用原始SQL查询,但我认为这不会大大加快速度。

因为问题是我认为时间-如果这是一次性操作-您可以通过更改max_execution_time 在php中。ini为脚本提供了更多的更新时间。为此,您需要访问服务器的配置。如果不这样做,可以在本地计算机上安装服务器包(如XAMPP),然后执行更新操作,然后将更新的DB移动到生产服务器。

other solutions 用于在远程服务器上更改该变量,但管理员通常会将其关闭。

结束

相关推荐

未定义变量:WooCommerce_loop

今天,我更新了woocommerce插件,在我的网站上发现以下错误:未定义变量:woocommerce\\u loop我的循环看起来像(对archive-product template 一年前):<?php $newReleasesCounter = 0; $loop = new WP_Query( $args_new_releases ); while ( $loop->have_posts() ) : $loop->the_post(); global $p