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 />(呼び出しコード:&lt;?php echo get_option(&quot;%s&quot;); ?&gt;)<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の要素を増やしたり減らしたりする事でフォーム数を変更出来る。
テーマ中に呼び出し用のコードを書いてやる事で、任意の箇所で呼び出す事が出来る。

※ちなみに、タグ等を出力する位置によっては、あえて細かい出力箇所を指定せずに、フックと組み合わせても良いかもしれない。




2011年09月19日 |