7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

wordpressのWp_optionテーブル

Last updated at Posted at 2018-08-03

wordpressで作成されるデータベースのwp_optionsというテーブルを触ったのでメモします。

ここに保存されるのは
・管理画面>設定の設定情報
・wordpress全体の設定情報
・テーマ、プラグインがここに設定情報を保存することもあります。

特徴として他のテーブルはテーブル同士紐づいたりするのに対して
このoptionsテーブルは唯一独立しているという特徴があります。

#抽出
今回、管理画面>表示設定で設定するfrontpageの登録状況を確認したくて
以下のコマンドを実行しました。

front.sql

MariaDB [ebdb]> SELECT * FROM wp_options WHERE option_name IN ('page_on_front');
+-----------+---------------+--------------+----------+
| option_id | option_name   | option_value | autoload |
+-----------+---------------+--------------+----------+
|        84 | page_on_front | 2            | yes      |
+-----------+---------------+--------------+----------+

option_valueのところはページIDが入っていました。

#option_nameの一覧を表示

結構大きなテーブルなので一つのカラムを表示してみます。

optionname.sql

MariaDB [ebdb]> select option_name from wp_options;
+---------------------------------------------------------------------------+
| option_name                                                               |
+---------------------------------------------------------------------------+



| current_theme                                                             |
| date_format                                                               |
| db_version                                                                |
| default_category                                                          |
| default_comment_status                                                    |
| default_comments_page                                                     |
| default_email_category                                                    |
| default_link_category                                                     |
| default_ping_status                                                       |
| default_pingback_flag                                                     |
| default_post_format                                                       |
| default_role                                                              |



+---------------------------------------------------------------------------+

#option_nameの制約
最大長:64文字
型:varchar
ユニーク制約:あり

option_nameを設定する際は64文字以内のユニークな値で設定する必要があります。

#option_value
wordpressがoption_valueに値を保存する際は文字列で保存されます。
真偽値や数値は数値文字列として保存されます。

またoption_valueには配列やオブジェクトを保存することも可能ですが
この場合はシリアライズされた値が保存されます。

webサイトのURLが文字列のまま保存されていたり、
プラグインリストの配列がシリアライズされて保存されたりします。

設定値が配列やオブジェクトの場合
wordpressはserialize関数、unserialize関数を使用して処理を行います。

#wpdbオブジェクトによる操作の注意点
チェックサムの値と文字列のバイト数が一致しない置換処理などを行うと
wordpressがアンシリアライズできなくなることがあります。

#wordpressが重いときはautoloadカラムをチェック!?
autoloadカラムがonに設定されていると
wordpressの設定情報をまとめて一括取得することで
データベースへのクエリ発行回数を減らして
パフォーマンスを高めます。しかし、実行領域、ページの種類にかかわらず
wordpressが起動するたびに毎回実行されるという側面もあるため
利用頻度が低くデータ量の大きいレコードがある場合は
autoloadをnoに設定してパフォーマンスが上がる場合もあります。

現状利用していないテーマやプラグインでも
以前利用していて、このautoloadカラムがyesになっていた場合
パフォーマンスに影響が出る可能性もあります。
プラグイン、テーマでアンインストールしても
必ずautoloadがnoになるとも限らないので注意が必要です。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?