WooCommerce の高パフォーマンス注文ストレージ (COT)への対応方法

はじめに

WooCommerce が2023年8月8日に、Version 8.0 になり、「高パフォーマンス注文ストレージ (COT)」というのを採用します。簡単にいうと、注文のデータベースが専用設計のものになります。今までは、注文データベースへのアクセスは WordPress の投稿クラス(WP_Post)を利用する場合と、独自のクラス(WC_Order)を介して行う場合があったのですが、今後、独自のクラス(WC_Order)のみになります。そのため高パフォーマンスになるという事です。Version 8.0 以降も、しばらくは併用できるようですが、近いうちに WordPress の投稿クラス(WP_Post)の利用は廃止されるので、以下の対応をとるべきです。

追記:この記事を書いた前日に、Version 8.0 からは見送られ、Version 8.2 からになりました。

独自プラグインへの対応方法

対応していないと以下の様な表示が出て、機能を有効化できません。

対応方法

自プラグインのコード内をエディターにより以下の正規表現で検索します。

wpdb|get_post|get_post_field|get_post_status|get_post_type|get_post_type_object|get_posts|metadata_exists|get_post_meta|get_metadata|get_metadata_raw|get_metadata_default|get_metadata_by_mid|wp_insert_post|add_metadata|add_post_meta|wp_update_post|update_post_meta|update_metadata|update_metadata_by_mid|delete_metadata|delete_post_meta|delete_metadata_by_mid|delete_post_meta_by_key|wp_delete_post|wp_trash_post|wp_untrash_post|wp_transition_post_status|clean_post_cache|update_post_caches|update_postmeta_cache|post_exists|wp_count_post|shop_order

もし上記が発見されなければ、プラグインのメインファイルに以下のコードを貼り、COT に対応している事を宣言します。こうするだけで上記の表示は消えて、COT を有効化できます。発見されても、注文関連でなければ同様です。

add_action(
	'before_woocommerce_init',
	function() {
		if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
			\Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true );
		}
	}
);

逆に注文関連で発見された場合には、修正が必要になります。簡単に言うと、WP_Post クラスを使用したものを、WC_Order クラスを使用したものに置き換えます。

詳細は以下を参考にしてください。

対応後

以下の様な表示に切り替わるので、チェックを入れて「変更を保存」します。

以前のテーブルからの置換が始まります。


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください