ワードプレスの表示オプションのデフォルト値をテーマから設定する方法

ワードプレスの表示オプションのデフォルト値をテーマから設定する方法

ワードプレスを始めてインストールしたサイトで、「表示オプションの設定をするのが地味に面倒くさい。」
と感じたことはないでしょうか?

現在僕が作っているワードプレスのテーマで、表示オプションの設定をワードプレスのテーマ側からやってみたのでその方法を公開しようと思います。

 

スポンサーリンク



ワードプレスの表示オプションとは何か?

ワードプレスの初心者であれば意外と気づかない表示オプション。一体何のことなのかと言いますとこれのことです。

 

SS 2016-01-07 16.57.57

 

ちなみに表示オプションをクリックすると下の図のように開きます。

 

SS 2016-01-07 16.57.35

 

投稿画面上であれば、ここにチェックが入っているメタボックスだけが出現します。
なので結構大事な設定でもあります。

 

update_user_meta関数を使います

早速結論から入りましたが、ここチェックの有無などを管理しているのは、データベースのwp_usermetaテーブルです。そして、ここのテーブルの更新を担当しているのがupdate_user_meta関数です。

この関数の使い方は簡単で、以下のように引数を取れます。

 

update_user_meta( $user_id, $meta_key, $meta_value, $prev_value );

 

この関数の中で、データベースを実際に覗いてみて調べないとわからなかったのが、$meta_key$meta_valueです。

データベースを調べた結果、基本的には隠すものを$meta_valueとして保存してありました。

わかりにくいので表にしてみましょう。今回僕が初期設定したかったのは、以下の5つです。

 

$meta_key $meta_valueの型 説明
managenav-menuscolumnshidden 配列型

array()

外観のメニューページの表示オプションの隠すものを保存。
metaboxhidden_post 配列型

array()

投稿ページの隠すメタボックスを保存。
meta-box-order_post 連想配列型

array(
‘side’ => ‘カンマ区切り’
‘normal’ => ‘カンマ区切り’
)

投稿ページのメタボックスの並び順を保存。
metaboxhidden_page 配列型

array()

固定ページの画面の表示オプションの隠すものを保存。
meta-box-order_page 連想配列型

array(
‘side’ => ‘カンマ区切り’
‘normal’ => ‘カンマ区切り’
)

固定ページの隠すメタボックスを保存。

 

例えば、すべてのユーザーの投稿ページのメタボックスを全表示したい場合はこうです。

 

foreach(get_users() as $user){
	update_user_meta( $user->ID, 'metaboxhidden_post', array() );
}

 

after_switch_themeフックを使う

今回やりたかったのが表示オプションのデフォルト値をテーマから設定したかったので、after_switch_themeというテーマが有効化された時のフックに引っ掛けてみました。

 

 
function thub_switch(){
	//表示オプションとメタボックスの配置
	foreach(get_users() as $user){
		update_user_meta( $user->ID, 'managenav-menuscolumnshidden', array() );
		update_user_meta( $user->ID, 'metaboxhidden_post',
			array(
				'slugdiv',
				'authordiv',
				'postcustom',
				'trackbacksdiv',
			)
		);
		update_user_meta( $user->ID, 'meta-box-order_post', 
			array(
				'side'		=> 'submitdiv,slugdiv,authordiv,postimagediv,categorydiv,tagsdiv-post_tag,formatdiv',
				'normal'	=> 'postexcerpt,commentstatusdiv,commentsdiv,postcustom,trackbacksdiv',
			)
		);
		update_user_meta( $user->ID, 'metaboxhidden_page',
			array(
				'page_eyecatch',
				'postcustom',
				'commentstatusdiv',
				'commentsdiv',
				'slugdiv',
				'authordiv',
			)
		);
		update_user_meta( $user->ID, 'meta-box-order_page', 
			array(
		    'side'		=> 'submitdiv,pageparentdiv,slugdiv,authordiv,page_eyecatch,postimagediv',
		    'normal'	=> 'commentstatusdiv,commentsdiv,postcustom',
    	)
		);
	}
}
add_action('after_switch_theme','thub_switch');
 

 

スポンサーリンク



まとめ

今回やったことは、テーマ作成者には意外と需要がありそうなのにググってもほとんど情報が出てこなかったものです。データベースを覗いてみたらわかることも多いのですが、それが意外と面倒くさかったりしますし、自分で忘れないためにもメモしておきました。おしまい。

スポンサーリンク