<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>PAOLOG &#187; WordPress2.9</title>
	<atom:link href="http://scianto.net/archives/tag/wordpress2-9/feed" rel="self" type="application/rss+xml" />
	<link>http://scianto.net</link>
	<description>趣味のウェブデザインと管理人PAONの日記</description>
	<lastBuildDate>Wed, 25 Aug 2010 12:57:48 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://scianto.net/archives/tag/wordpress2-9/feed" />
		<item>
		<title>[WordPressカスタマイズ]オプションページの作り方</title>
		<link>http://scianto.net/archives/2010/01/10175553.php</link>
		<comments>http://scianto.net/archives/2010/01/10175553.php#comments</comments>
		<pubDate>Sun, 10 Jan 2010 08:55:53 +0000</pubDate>
		<dc:creator>paon</dc:creator>
				<category><![CDATA[web design]]></category>
		<category><![CDATA[WordPress2.9]]></category>
		<category><![CDATA[カスタマイズ]]></category>
		<category><![CDATA[管理画面]]></category>

		<guid isPermaLink="false">http://scianto.net/archives/2010/01/10175553.php</guid>
		<description><![CDATA[            
WordPressで独自プラグインを作ったら、プラグイン固有のオプション（設定）ページを作る機会もあると思います。そこで今回はプラグインからオプションページを作る方法を調べてみました。WP2. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://scianto.net/paolog-wp/wp-content/uploads/2010/01/20100110_01.jpg" alt="" title="wordpress custmize" width="500" height="220" class="alignnone size-full wp-image-745" /></p>            
<p>WordPressで独自プラグインを作ったら、プラグイン固有のオプション（設定）ページを作る機会もあると思います。そこで今回はプラグインからオプションページを作る方法を調べてみました。WP2.7以上限定です。</p>
            <p>
              <span id="more-746"></span>
            </p>
            <p>オプションページの作り方はしっかりと公式サイトに載ってますのでそちらを参考に。</p>
            <p> <a href="http://codex.wordpress.org/Creating_Options_Pages">英語版ページ：Creating Options Pages « WordPress Codex</a></p>
            <p>このページにはWP2.7から使えるようになった関数を使ったサンプルが掲載されてます。これらを使うとこれまでより簡単にオプションページを作成できるみたいなので、2.7用のコードをピックアップします。</p>
            <h2 class="level-2">ステップ1</h2>
            <p>まずはプラグインヘッダを書きます。</p>
            <pre class="brush:php;"> /*
   Plugin Name: Create Options Pages
   Plugin URI: http:/scianto.net/
   Description: オプションページを作成するサンプルプラグイン
   Version: 1.0
   Author: Paon
   Author URI: http://scianto.net/
 */
</pre>
            <h2 class="level-2">ステップ2</h2>
            <pre class="brush:php;">
add_action('admin_menu', 'baw_create_menu');
</pre>
            <p>add_action関数を使ってアクションフックadmin_menuに関数を登録します</p>
            <h2 class="level-2">ステップ3</h2>
            <h3 class="level-3">メニューの追加</h3>
            <pre class="brush:php;">
add_menu_page('BAW Plugin Settings', 'BAW Settings', 'administrator', __FILE__, 'baw_settings_page',plugins_url('/images/icon.png', __FILE__));</pre>
            <p>add_menu_page関数はトップレベルメニューを追加します。</p>
            <h4 class="level-4">書式</h4>
            <pre>add_menu_page(''page_title'', ''menu_title'', ''access_level/capability'', ''file'', ''[function]'', ''[icon_url]'');</pre>
            <dl>
              <dt>page_title</dt>
              <dd>オプションページのタイトルです。head内のtitle要素の内容です。</dd>
              <dt>menu_title</dt>
              <dd>メニューに表示されるときの名前です。</dd>
              <dt>access_level/capability</dt>
              <dd>オプションページを呼び出したり、編集するために必要なユーザーレベル。ここでは管理者をあらわす[administrator]。[10]でもいけます。</dd>
              <dt>&nbsp;</dt>
              <dt>file</dt>
              <dd>オプションページを表示するためのページ識別子。<br />
                「wp-admin/admin.php?page=ページ識別子」としてアクセスするための文字列になります。ここでは定義済み定数<code>__FILE__</code>をつかってファイル名を指定しています。もちろん、任意の文字列でもOKです。</dd>
              <dt>function</dt>
              <dd>ページを表示するための実行関数。</dd>
              <dt>icon_url</dt>
              <dd>メニューにカスタムアイコンを追加します。WP2.7から使えます。</dd>
            </dl>
            <h4 class="level-4">コンテンツ表示関数の登録</h4>
            <pre class="brush:php;">add_action( 'admin_init', 'register_mysettings' );</pre>
            <p>add_action関数でadmin_initアクションフックに対して、オプションページを表示するための関数を登録&amp;実行します。admin_initは管理画面にアクセスしたときにどのフックよりも先に実行するためのフック？のようです（英語弱いので自信ない・・・）。詳しくは以下を参照。</p>
            <p><a href="http://codex.wordpress.org/Plugin_API/Action_Reference/admin_init">admin_initのリファレンス（英語）</a></p>
            <h2 class="level-2">ステップ4</h2>
            <p>先のadmin_initにフックさせたregister_mysettings関数を定義します。</p>
            <pre class="brush:php;">function register_mysettings() {
	register_setting( 'baw-settings-group', 'new_option_name' );
	register_setting( 'baw-settings-group', 'some_other_option' );
	register_setting( 'baw-settings-group', 'option_etc' );
}</pre>
            <p>ここで登場した新しい関数register_settingはformから送信した値をデータベースに登録したりサニタイズするための関数のようです。</p>
            <h4 class="level-4">書式</h4>
            <pre>register_setting( $option_group, $option_name, $sanitize_callback );</pre>
            <dl>
              <dt>$option_group</dt>
              <dd>設定のグループ名。ここで指定した名前を次のステップで使うsettings_fields関数の引数に指定します。</dd>
              <dt>$option_name</dt>
              <dd>登録するオプションの名前。input要素などのname属性を指定します。</dd>
              <dt>sanitize_callback</dt>
              <dd>オプションの値をサニタイズするためのコールバック関数。</dd>
            </dl>
            <p>詳しくはリファレンスを参照してください。</p>
            <p><a href="http://codex.wordpress.org/Function_Reference/register_setting">register_settingのリファレンス（英語）</a></p>
            <h2 class="level-2">ステップ5</h2>
            <p>実際にオプションページに表示する内容を書き出す関数です。</p>
            <pre class="brush:php;">function baw_settings_page() {
  &lt;div class=&quot;wrap&quot;&gt;
		&lt;h2&gt;Your Plugin Name&lt;/h2&gt;
		&lt;form method=&quot;post&quot; action=&quot;options.php&quot;&gt;
		&lt;?php settings_fields( 'baw-settings-group' ); ?&gt;
			&lt;table class=&quot;form-table&quot;&gt;
				&lt;tr valign=&quot;top&quot;&gt;
					&lt;th scope=&quot;row&quot;&gt;New Option Name&lt;/th&gt;
					&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;new_option_name&quot; value=&quot;&lt;?php echo get_option('new_option_name'); ?&gt;&quot; /&gt;&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr valign=&quot;top&quot;&gt;
					&lt;th scope=&quot;row&quot;&gt;Some Other Option&lt;/th&gt;
					&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;some_other_option&quot; value=&quot;&lt;?php echo get_option('some_other_option'); ?&gt;&quot; /&gt;&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr valign=&quot;top&quot;&gt;
					&lt;th scope=&quot;row&quot;&gt;Options, Etc.&lt;/th&gt;
					&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;option_etc&quot; value=&quot;&lt;?php echo get_option('option_etc'); ?&gt;&quot; /&gt;&lt;/td&gt;
				&lt;/tr&gt;
			&lt;/table&gt;
			&lt;p class=&quot;submit&quot;&gt;
				&lt;input type=&quot;submit&quot; class=&quot;button-primary&quot; value=&quot;&lt;?php _e('Save Changes') ?&gt;&quot; /&gt;
			&lt;/p&gt;
		&lt;/form&gt;
&lt;/div&gt;
} </pre>
            <p>（*上のコードは見やすいように一部変更していますので構文として正しくありません。ご注意ください。）</p>
            <p>setting_fields関数を使うことで、これまで必要だったhiddenフィールドやnonceフィールドを自動で追加してくれるようになったのでずいぶん楽になりました^ ^。</p>
            <p>ところで、form要素のaction属性値がoptions.phpになっています。これはformから送信されたデータの登録やら書き換えなんかをやってくれる便利な関数が詰まっているようです。<br />
              options.phpはwp-admin/options.phpにあります。</p>
            <p>以上でオプションページを追加することができますね。</p>
            <p>ただ、これだけだと値を登録することしかできませんよね？。実際はその値を使って何かに反映させたいわけですから、値をDBから呼び出し加工するようにしなければならないと思います。このあたりは当面の課題ということで・・・。今回はここまで。</p>
]]></content:encoded>
			<wfw:commentRss>http://scianto.net/archives/2010/01/10175553.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://scianto.net/archives/2010/01/10175553.php" />
	</item>
	</channel>
</rss>
