WordPressを読み取り専用に設定する方法を教えてください。
読み取り専用データベースアクセスでスレーブインスタンスを拡張する設定がありますが、WordPressがまだデータベースに書き込もうとしているログデータがたくさんあります。
update_{post_type}_metadata
、 set_transient
、 wpdb
...基本的に、書き込もうとするものをすべて停止するのが理想的です。私は、MASTERインスタンスとSLAVEインスタンスのどちらにいるのかを簡単に確認できるので、かなり早くフックを変更できます。
メタデータの更新機能をショートさせようとすると1つのベクトルが削除される可能性がありますが、残りの部分ではWP Coreを変更する必要があります。
add_filter ( 'update_post_metadata', '__return_false', 99 );
$result = update_post_meta( -1, 'test-key', 'test-value' );
echo $result;
助言がありますか?
HyperDB は、より長期的な解決策として期待されています。
WordPressは読み取り専用モードではうまく機能しません。キャッシュやその他のタスクについてはデータベースに依存します。
それでも続行したい場合は、いくつかの選択肢があります。
使用する機能
/**
* 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' );