【问题标题】:WordPress Find and Replace in the Database大规模数据库替换方法
【发布时间】:2017-08-22 04:31:19
【问题描述】:

快速概述:我们正在尝试将一些长期存在(7 年以上)的 WordPress 多站点安装从子域转换为子目录。更改 wp-config.php.htaccess 一切都很好。但是其中一些安装有超过 1000 个站点,并且散布在整个数据库中可能有大量的 abc.multisite.com 实例。

我正在尝试找到将abc.multisite.com 自动转换为multisite.com/abc 的最佳方法,当然不会影响123abc.multisite.com 导致123multisite.com/abc

我见过的所有查找/替换插件一次只能执行一次搜索,而且我有数千条记录要替换。

最好的方法是什么?有没有我可以在 PHP 中循环遍历的 SQL 命令来挖掘数百个数据库表?

我可以使用get_sites() 函数获取站点列表并循环访问。

或者是否有更好的工具来导出数据库并在那里查找/替换(其中一些数据库的大小会导致 atom/sublime/brackets 崩溃。

【问题讨论】:

    标签: php mysql sql database wordpress


    【解决方案1】:

    如果您有 (SSH) 访问 WP CLI,您可以在您的站点根目录中运行它:

    wp search-replace abc.multisite.com multisite.com/abc
    

    对于多站点,如果您想在所有表中进行搜索,则需要 --network 标志。

    http://wp-cli.org/commands/search-replace/

    默认情况下,该命令使用注册到 $wpdb 对象的表。 在多站点上,这将只是当前站点的表,除非 --network 已指定。搜索/替换智能处理PHP序列化数据,不改变主键值。

    wp search-replace abc.multisite.com multisite.com/abc --network
    

    【讨论】:

    • 非常感谢!我不知道存在 WP-CLI。我已经大致了解了它,它似乎大部分都在工作(在替换站点 URL 时仍然存在一些问题)虽然我仍然需要弄清楚我的特定情况的细微差别,但我相信这将非常适合我需要什么-谢谢!注意:wp --info 对我没有输出,事实证明 Suhosin 需要为 wp-cli 设置一个例外,现在它就像一个梦一样工作。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2020-02-12
    • 2010-11-18
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 2013-10-19
    • 1970-01-01
    相关资源
    最近更新 更多