如何为超过2万篇帖子批量更新自定义字段

时间:2017-01-26 作者:Emre

我有一个图片库网站,我把各种插件和肮脏的文件编辑黑客放在一起。例如,我必须确保jetpack infinite scroll能够很好地处理主题的构建和从自定义字段读取的图像的延迟加载!等

我厌倦了花时间确保插件和黑客之间的友好相处,我真的很想更新我的wordpress和插件等。所以我从头开始创建了自己的主题。我很确定我的主题已经准备好进行现场部署。但有一个小问题。

我使用的是“Nelio External Featured Image”插件,所以我所有的图像都存储在自己的自定义字段“\\u nelioefi\\u url”中。我想将其更改为“external\\u缩略图”。针对20k个岗位。在离线克隆数据库并使用mysql更新命令之前,我想问问是否有人知道一种更简单的方法。

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

我刚刚测试了这个,它工作了。

<?php 

function toCall(){
    global $wpdb;
    $togos = $wpdb->get_results("SELECT *   FROM $wpdb->postmeta WHERE meta_key=\'_nelioefi_url\'");
    return $togos;
}

foreach (toCall() as $go) {
    global $wpdb;
    $wpdb->update(
                $wpdb->postmeta,
                array(
                    \'meta_key\' => \'external_thumbnail\', // string
                    // \'column2\' => \'value2\'    // integer (number)
                ),
                array( \'meta_id\' => $go->meta_id )
            );
};  ?>
可以在文件中的某个位置调用foreach循环,只需确保有足够的内存:)

EDIT 您可以将所有内容放在一个函数中:

function toCall(){
    global $wpdb;
    $togos = $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key=\'_nelioefi_url\'");


    foreach ($togos as $go) {
        global $wpdb;
        $wpdb->update(
                    $wpdb->postmeta,
                    array(
                        \'meta_key\' => \'external_thumbnail\', // string
                        // \'column2\' => \'value2\'    // integer (number)
                    ),
                    array( \'meta_id\' => $go->meta_id )
                );
    };

}  ?>
然后你可以打电话给toCall() 方法,或者其他方法。

NB: The changes are irreversible. So, make sure you have backups.

相关推荐

如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: