将WordPress配置为仅从数据库读取,从不写入

时间:2016-10-20 作者:jgraup

如何将WordPress设置为只读状态?

我有一个使用只读数据库访问扩展从属实例的设置,但我看到很多日志数据,WordPress仍在尝试写入数据库。

update_{post_type}_metadata, set_transient, wpdb... 基本上,停止任何试图写入的操作都是理想的。我可以很容易地检查主实例和从实例,这样我就可以很早地修改挂钩。

试图缩短更新元数据功能似乎可能会消除一个向量,但我担心剩下的涉及修改WP核心。

add_filter ( \'update_post_metadata\', \'__return_false\', 99 );

$result = update_post_meta( -1, \'test-key\', \'test-value\' );

echo $result;
有什么建议吗?

<小时>HyperDB 看来这是一个更有希望的长期解决方案。

1 个回复
SO网友:cowgill

WordPress在只读模式下无法正常工作。缓存和其他任务取决于数据库。

然而,如果您仍然想继续,有几个选项。

将数据库用户权限设置为“只读”使用函数拦截所有db查询。我们在我们的主题演示站点上使用它来防止db写入要使用的功能:

/**
 * Whitelist "SELECT" and "SHOW FULL COLUMNS" queries.
 */
function my_readonly_filter( $query ) {
  global $wpdb;

  if ( preg_match( \'/^\\s*select|show full columns\\s+/i\', $query ) ) {
    return $query;
  }

  // Return arbitrary query for everything else otherwise you get \'empty query\' db errors.
  return "SELECT ID from $wpdb->posts LIMIT 1;";
}
add_filter( \'query\', \'my_readonly_filter\' );

相关推荐

媒体库链接在SSL更新后损坏的WordPress MultiSite

我们已将SSL更新(未添加)到站点网络管理媒体库上的媒体工作正常,但子站点的媒体库显示灰色框例如:图像url如下所示:(直接访问此url时,服务器404出错,而不是WordPress 404页面)https://domain.com/blog/multisitedomain/wp-content/uploads/sites/2/2020/09/image-file.png 分解它我们有https://domain.com/blog ->