在许多帖子上重复(或更多)自定义域。有没有简单的方法可以把它们清理干净?

时间:2010-10-13 作者:Mike Wills

我正在清理一个站点,将其从单个安装的WP迁移到多站点安装的WP。我注意到每个帖子都有很多重复的自定义字段。我假设这是来自于插件的旧版本,在添加另一个插件之前没有检查字段。在迁移过程中,我正在删除这些插件。

我可以使用SQL在后端删除这些字段吗?或者有更好的方法吗?

SELECT * 
FROM  `wp_5_postmeta` 
WHERE  `meta_key` IN ("podPressPostSpecific", "aktt_tweeted", "podPressMedia")
仅使用DELETE 明显地

2 个回复
最合适的回答,由SO网友:John P Bloch 整理而成

如果你不打算使用这些插件,那就试试吧。没有理由让他们留在身边。直接SQL查询应该可以。

相关:add_post_meta() 有一个巧妙的论点来防止这个问题。第四个参数是布尔值,声明元是否应为单数:

add_post_meta( $post->ID, \'my_foo_bar\', \'value\', true );
资料来源:Add Post Meta | WP Codex

SO网友:windyjonas

如果要删除所有字段,请直接在数据库或管理区域中删除。但是,如果您想保留每个字段的一个副本,只删除重复项,那么这就有点复杂了。您可以使用复杂的SQL语句直接从数据库中删除,如:

delete from wp_postmeta
where meta_id in (
       select *
       from (
               select meta_id
               from wp_postmeta a
               where a.meta_key = \'podPressPostSpecific\'
               and meta_id not in (
                       select min(meta_id)
                       from wp_postmeta b
                       where b.post_id = a.post_id
                       and b.meta_key = \'podPressPostSpecific\'
               )
       ) as x
);
如果要删除另一个自定义字段的重复项,请不要忘记在两个位置更改meta\\u键的名称。

或者您可以使用php脚本来实现这一点。示例:

<?php
    define(\'WP_USE_THEMES\', false);
    require(\'wp-blog-header.php\');

    define( \'WP_DEBUG_DISPLAY\', true ); 
    ini_set( \'display_errors\', true );
    $allposts = get_posts(\'numberposts=-1&post_type=post&post_status=any\');
    $keys = array(\'podPressPostSpecific\', \'aktt_tweeted\', \'podPressMedia\');
    foreach ( $keys as $key ) {
        foreach( $allposts as $postinfo) {
            // Fetch array of custom field values
            $postmeta = get_post_meta($postinfo->ID, $key);

            if (!empty($postmeta) ) {
                // Delete the custom field for this post (all occurrences)
                delete_post_meta($postinfo->ID, $key);

                // Insert one and only one custom field
                update_post_meta($postinfo->ID, $key, $postmeta[0]);
            }
        }
    }
?>

结束

相关推荐