WordPressでアクセス解析タグや広告タグ等を管理パネルで管理する方法
広告タグやアクセス解析タグ等、サイト毎に違いがあるタグをテーマファイルに直接書いてしまうと、複数サイトで同一テーマを利用する場合にテーマファイルを書き換える必要があったり、マルチサイト機能で同一のテーマを利用したい場合などにテーマを分けてやる必要があったりと、少しめんどくさい。
それらのタグをoptionsテーブルで管理し、管理パネルから追加・更新を行う事でサイト毎にそれらの出力文字列を設定出来るので、複数サイトで同じテーマを利用する場合などに便利かもしれない。
※前にバフの別ブログ「とりあえず9JP」で一度やったネタなのだけれど。
サンプル
管理画面のメニュー、設定に「テーマ独自設定」という項目が追加される。

クリックすると以下のような画面になり、出力したい文字列を任意に設定出来る。
あとはテーマ中で呼び出すだけ。

やり方
以下のソースをfunctions.phpに追加するだけ。
class ThemeOriginalOptions {
function optionName() {
/*
''(シングルクォート)で囲まれている項目名を書き換える。
ここに書いた要素数分の入力フォームが管理画面に表示される。
項目を追加する場合は配列を増やす。
連想配列にしてもOK。
*/
$optionNameArr[] = 'アドセンス468x60';
$optionNameArr[] = 'アクセス解析';
return $optionNameArr;
}
function adminMenu() {
add_options_page('テーマ用タグ', 'テーマ独自設定', 8, 'ThemeOriginalOptions', array($this, 'setOptions'));
}
function optionForm() {
if (is_array($this->optionName())) {
$optionNameArr = $this->optionName();
foreach ($optionNameArr as $key => $name) {
$key = 'theme_original_options_' . $key;
$optionsArr['form'] .= sprintf('<b>%s</b><br />(呼び出しコード:<?php echo get_option("%s"); ?>)<br /><textarea name="%s" cols="80" rows="8">%s</textarea><br /><br />', $name, $key, $key,get_option($key));
$optionsArr['key'] .= $key . ',';
}
return $optionsArr;
}
}
function setOptions() {
$optionsArr = $this->optionForm();
echo '<b>テーマ用タグ設定</b><br />';
echo '<form method="post" action="options.php">';
wp_nonce_field('update-options');
echo $optionsArr['form'];
echo '<input type="hidden" name="action" value="update" />';
echo '<input type="hidden" name="page_options" value="' . $optionsArr['key'] . '" />';
echo '<input type="submit" class="button-primary" value="設定更新" />';
echo '</form>';
}
}
add_action('admin_menu', array(new ThemeOriginalOptions(), 'adminMenu'));
optionNameメソッド内の配列optionNameArrの要素を増やしたり減らしたりする事でフォーム数を変更出来る。
テーマ中に呼び出し用のコードを書いてやる事で、任意の箇所で呼び出す事が出来る。
※ちなみに、タグ等を出力する位置によっては、あえて細かい出力箇所を指定せずに、フックと組み合わせても良いかもしれない。