制作の現場から  
  ワードプレスで独自のテーブルを使用する
2018
15
Mar

ワードプレスで独自のテーブルを使用する

非常に人気な地域ブログサイトが人気ゆえに、閉鎖してしまったのを実際にこの目で見たことがあります。

サイトが重すぎて閲覧できなかったからです。

サイトが重すぎる原因はいくつか考えられますが、今回はデータベースについて考えてみます。

ワードプレスの運用でデータ量の問題はあまり気にする必要は無いようです。
しかし、カスタムフィールドの値を使って検索する場合は注意が必要です。
データ量が多いと検索に時間がかかることになるからです。

カスタムフィールドの値は通常wp_postmetaテーブルに保存されています。

フィールド
meta_id bigint(20) メタデータのID
post_id bigint(20) メタデータの所属するpostのID
meta_key varchar(255) キー
meta_value longtext

カスタムフィールドの値で検索するということは、上記のmeta_key,meta_valueを使って検索することなのです。
ワードプレスは、※meta_key,meta_valueでの検索にインデックスを使用しないようです。
全文検索になるので記事量が増えるとサイトが重くなるのです。

※meta_keyにはインデックスが設定されていました。ということで、まあ、独自テーブルが必要な場合の参考ということにしておきます。

そこで今回は、独自にテーブルを作成することにします。
ワードプレスで独自のテーブルを作成して使用するための注意事項です。

テーブルを作成しただけでは$wpdbオブジェクトが利用できません。
$wpdbオブジェクトを利用するためには、新規にdb.phpファイルを作成します。

db.php
require_once( ABSPATH . WPINC . '/wp-db.php' );
class my_wpdb extends wpdb {
	var $tables = array( 'posts', 'comments', 'links', 'options', 'postmeta', 'terms', 'term_taxonomy', 'term_relationships', 'termmeta', 'commentmeta', 'new_my_table', );
}
if ( ! isset( $wpdb ) ) {
    $wpdb = new my_wpdb( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST );
}

$wpdbオブジェクトを上書きした形です。

作成したdb.phpをwp-contentフォルダに置きます。
以上で$wpdbオブジェクトが新しいテーブルnew_my_tableを対象にして使用することができるようになりました。

※ユーザー関連のテーブルは、抜け落ちている訳ではなく別管理のようです。

 

top