<?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.7</title>
	<atom:link href="http://scianto.net/archives/tag/wordpress27/feed" rel="self" type="application/rss+xml" />
	<link>http://scianto.net</link>
	<description>趣味のウェブデザインと管理人PAONの日記</description>
	<lastBuildDate>Thu, 29 Jul 2010 03:47:50 +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/wordpress27/feed" />
		<item>
		<title>投稿ページにカスタムフィールドを追加する</title>
		<link>http://scianto.net/archives/2009/05/04134232.php</link>
		<comments>http://scianto.net/archives/2009/05/04134232.php#comments</comments>
		<pubDate>Mon, 04 May 2009 04:42:32 +0000</pubDate>
		<dc:creator>paon</dc:creator>
				<category><![CDATA[web design]]></category>
		<category><![CDATA[WordPress2.7]]></category>
		<category><![CDATA[カスタムフィールド]]></category>
		<category><![CDATA[管理画面]]></category>

		<guid isPermaLink="false">http://scianto.net/?p=584</guid>
		<description><![CDATA[
            記事の投稿ページに独自のカスタムフィールドを追加する方法です。
            
              
            
            公式ドキュメン [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-608" title="20090501_02" src="http://scianto.net/paolog-wp/wp-content/uploads/2009/04/20090501_02.png" alt="20090501_02" width="500" height="250" /></p>
            <p>記事の投稿ページに独自のカスタムフィールドを追加する方法です。</p>
            <p>
              <span id="more-584"></span>
            </p>
            <p>公式ドキュメントにサンプルコードがあるのでそちらを参考に手順を追ってみます。ただ、サンプルコードは古いバージョンのWordPressにも対応するようなコードになっているようです。個人的に使うだけの予定なので、古いバージョンは無視してWP2.7のみに対応する簡単なコードに書き換えます。</p>
            <h2>アクションフック</h2>
            <pre class="brush:php">add_action('admin_menu', 'myplugin_add_custom_box');
add_action('save_post', 'myplugin_save_postdata');</pre>
            <p>add_action()でアクションフックの設定をします。admin_menuフックに実行したい関数名（例ではmyplugin_add_custom_box）を指定しています。admin_menuフックは「管理画面メニューの基本構造が配置されたあとに実行する」フックになります。</p>
            <p>もうひとつは記事を保存したときに実行されるようにフックを設定します。ここで登録している関数myplugin_save_postdataは入力された値をデータベースに保存するための関数です。</p>
            <p> 次ではここで登録した関数の中身をチェックしていきます。</p>
            <h2>カスタムフィールドを登録</h2>
            <p>myplugin_add_custom_box()はカスタムフィールドを登録？するための独自関数です。この関数のなかではadd_meta_box()を使っています。この関数の中身はサンプルを書き換えています。</p>
            <pre class="brush:php">
function myplugin_add_custom_box () {
  add_meta_box( 'myplugin_sectionid', 'My Post Section Title', 'myplugin_inner_custom_box', 'post', 'advanced' );
}</pre>
            <h3>書式</h3>
            <pre>add_meta_box('id', 'title', 'callback', 'page', 'context', 'priority')</pre>
            <h3>パラメータ</h3>
            <dl>
              <dt>id</dt>
              <dd>生成されるフィールドはいくつかのdiv要素で囲まれることになりますが、この一番外側のdiv要素につけるid名のようです。複数のフィールドを追加するときは重複しない名前にしたほうがいいでしょう。</dd>
              <dt>title</dt>
              <dd>フィールドの名前。</dd>
              <dt>callback</dt>
              <dd>ページが出力されたら呼び出される関数。</dd>
              <dt>page</dt>
              <dd>どの編集ページに表示するかを指定します。&quot;post&quot;、&quot;page&quot;、&quot;link&quot;から選びます。記事投稿ページなので&quot;post&quot;。</dd>
              <dt>context</dt>
              <dd>編集ページのどの部分に表示するかの選択（？）。選べる値は&quot;normal&quot;、&quot;advanced&quot;、&quot;side&quot;。&quot;normal&quot;と&quot;advanced&quot;の差がわかりませんが、wysiwygエディタと同じブロックに表示するなら&quot;advanced&quot;、サイドバーは&quot;side&quot;を選択するといいようです。</dd>
              <dt>priority</dt>
              <dd>優先順位。フィールドが呼び出される順番かな？。</dd>
            </dl>
            <p>コールバック関数に指定したmyplugin_inner_custom_box()で実際に出力する内容を決めます。ようやくですね。</p>
            <pre class="brush:php">function myplugin_inner_custom_box() {
  global $post;
  echo '&lt;input type=&quot;hidden&quot; name=&quot;myplugin_noncename&quot; id=&quot;myplugin_noncename&quot; value=&quot;' .wp_create_nonce( plugin_basename(__FILE__) ) . '&quot; /&gt;';
  echo '&lt;label for=&quot;myplugin_new_field&quot;&gt;フィールド名&lt;/label&gt; ';
  echo '&lt;input type=&quot;text&quot; name=&quot;myplugin_new_field&quot; value=&quot;'.get_post_meta($post-&gt;ID,'myplugin_new_field',true).'&quot; size=&quot;25&quot; /&gt;';
} </pre>
            <p>わかりやすいよう少し書き換え。隠しフィールドの行はよくわかりませんが、ファイル名を元にwp_create_nonce()でランダムな文字を作成し、フォームから正しく投稿された値かどうかを認証してるということでしょうか？この部分はつけていたほうが良さそうですね。</p>
            <p>次にラベルとテキストフィールドを出力します。テキストフィールドのname属性がデータベースのフィールド名になるようです。初期値としてget_post_meta()でデータベースから値を取ってくるようになってます。</p>
            <h2>入力データの保存</h2>
            <pre class="brush:php">function myplugin_save_postdata( $post_id ) {
  if ( !wp_verify_nonce( $_POST['myplugin_noncename'], plugin_basename(__FILE__) )) {
    return $post_id;
  }
  if ( 'page' == $_POST['post_type'] ) {
    if ( !current_user_can( 'edit_page', $post_id )) return $post_id;
  } else {
    if ( !current_user_can( 'edit_post', $post_id )) return $post_id;
  }
    
  $mydata = $_POST['myplugin_new_field'];

  if (get_post_meta($post_id, $mydata) == &quot;&quot;) 
    add_post_meta($post_id, 'myplugin_new_field', $mydata, true);
  elseif($mydata !=get_post_meta($post_id, 'myplugin_new_field', true)) 
    update_post_meta($post_id, 'myplugin_new_field',$mydata);
  elseif($mydata==&quot;&quot;) 
    delete_post_meta($post_id, 'myplugin_new_field',get_post_meta($post_id,'myplugin_new_field',true));
 
}</pre>
            <p>ここでもよくわからない関数がいくつか出てきますが、これはまたわかったときに記事にしたいと思います。この関数は汎用的に使えそうなので&quot;myplugin_new_field&quot;の部分を変更すればほかでも使えそうですね。</p>
            <p>これで一通り、カスタムフィールドを追加&amp;保存する方法がわかりました。</p>

]]></content:encoded>
			<wfw:commentRss>http://scianto.net/archives/2009/05/04134232.php/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://scianto.net/archives/2009/05/04134232.php" />
	</item>
		<item>
		<title>query_postsで特定のカテゴリの記事を表示する[WordPressテンプレート作成#12]</title>
		<link>http://scianto.net/archives/2009/04/19230142.php</link>
		<comments>http://scianto.net/archives/2009/04/19230142.php#comments</comments>
		<pubDate>Sun, 19 Apr 2009 14:01:42 +0000</pubDate>
		<dc:creator>paon</dc:creator>
				<category><![CDATA[web design]]></category>
		<category><![CDATA[Customize]]></category>
		<category><![CDATA[WordPress2.7]]></category>

		<guid isPermaLink="false">http://scianto.net/?p=569</guid>
		<description><![CDATA[

トップページにおすすめの記事として特定のカテゴリの記事を表示するということはよくあります。今回はそれを実現してみます。

デフォルトではすべてのカテゴリから管理画面で指定した件数ぶんの記事を取り出すようになっ [...]]]></description>
			<content:encoded><![CDATA[
<p><img class="alignnone size-full wp-image-607" title="20090501_01" src="http://scianto.net/paolog-wp/wp-content/uploads/2009/05/20090501_01.png" alt="20090501_01" width="495" height="250" /></p>
<p>トップページにおすすめの記事として特定のカテゴリの記事を表示するということはよくあります。今回はそれを実現してみます。</p>
<p><span id="more-569"></span></p>
<p>デフォルトではすべてのカテゴリから管理画面で指定した件数ぶんの記事を取り出すようになっているので、ループ中で特定のカテゴリだけに絞り込む必要があります。この場合、テンプレートタグの<code><a href="http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/query_posts">query_posts()</a></code>を使います。<code>query_posts()</code>はループ中で使い、クエリを変更することができます。</p>
<p>コードは次のようになります。</p>
<pre class="brush:php;">&lt;?php if ( have_posts() ) : query_posts('cat=4'); ?&gt;
&lt;ul&gt;
&lt;?php while (have_posts()) : the_post(); ?&gt;
&lt;li&gt;&lt;a href="&lt;?php the_permalink() ?&gt;"&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/li&gt;
&lt;?php endwhile;?&gt;
&lt;/ul&gt;
&lt;?php endif; ?&gt;</pre>
<p>これでカテゴリID「4」の記事タイトルをリンクつきで、管理画面で指定した件数ぶん表示します。これをテンプレート(index.php等)内の表示したい箇所に挿入します。</p>
<p>テンプレート内で表示件数を変えるときは引数showpostsに整数を指定します。</p>
<pre class="brush:php;">query_posts('showposts=5&amp;cat=4')</pre>
<p>実際には「特定カテゴリのトピックスを表示する」場合などに使えます。</p>
<p>トピックスを表示したら、その下にその他のカテゴリの記事を複数件ならべることもあると思います。この場合はカテゴリID「4」以外の記事ということになりますね。</p>
<p>新たにループをつくり次のコードを挿入します。</p>
<pre class="brush:php;">query_posts('showposts=10&amp;cat=-4')</pre>
<p>引数catの整数に「-（マイナス）」をつけると「それ以外」という意味になります。このループをquery_posts()なしで行うとトピックス部分と同じクエリになってしまうので注意が必要です。</p>
<p>query_posts()にはcategory__not_inという引数もあって同じことができます。この引数は配列です。category__not_inとほかの引数を同時に指定するには次のように書くと動きました。</p>
<pre class="brush:php;">query_posts('showposts=5&amp;'.array('category__not_in' =&gt; array(4,10)))</pre>
]]></content:encoded>
			<wfw:commentRss>http://scianto.net/archives/2009/04/19230142.php/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://scianto.net/archives/2009/04/19230142.php" />
	</item>
		<item>
		<title>最近のコメントを表示する[WordPressテーマ作成#11]</title>
		<link>http://scianto.net/archives/2009/03/19201936.php</link>
		<comments>http://scianto.net/archives/2009/03/19201936.php#comments</comments>
		<pubDate>Thu, 19 Mar 2009 11:19:36 +0000</pubDate>
		<dc:creator>paon</dc:creator>
				<category><![CDATA[web design]]></category>
		<category><![CDATA[WordPress Theme]]></category>
		<category><![CDATA[WordPress2.7]]></category>

		<guid isPermaLink="false">http://scianto.net/archives/2009/03/19201936.php</guid>
		<description><![CDATA[
最近のコメントを表示するテンプレートを作成します。

MovableTypeにはありますが、WordPressには「最近のコメント」を表示するタグや機能がありません。これはsimple_recent_commen [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-606" title="20090419_01" src="http://scianto.net/paolog-wp/wp-content/uploads/2009/05/20090419_01.png" alt="20090419_01" width="500" height="250" /></p>
<p>最近のコメントを表示するテンプレートを作成します。</p>
<p><span id="more-548"></span></p>
<p>MovableTypeにはありますが、WordPressには「最近のコメント」を表示するタグや機能がありません。これは<a href="http://www.g-loaded.eu/2006/01/15/simple-recent-comments-wordpress-plugin/">simple_recent_commentsプラグイン</a>をインストールすれば簡単にできます。</p>
<p>単純にインストールしてもいいのですが、SQL文をつかったデータベースへのアクセス方法の勉強になりそうなので少しコードを追いながら仕組みを理解しようと思います。コードは以下。</p>
<pre class="brush:php">&lt;?php
       global $wpdb;
       $sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID,
       comment_post_ID, comment_author, comment_date_gmt, comment_approved,
       comment_type,comment_author_url,
       SUBSTRING(comment_content,1,30) AS com_excerpt
       FROM $wpdb-&gt;comments
       LEFT OUTER JOIN $wpdb-&gt;posts ON ($wpdb-&gt;comments.comment_post_ID =
       $wpdb-&gt;posts.ID)
       WHERE comment_approved = '1' AND comment_type = '' AND
       post_password = ''
       ORDER BY comment_date_gmt DESC
       LIMIT 10";
       $comments = $wpdb-&gt;get_results($sql);
       $output .= "\n&lt;ul&gt;";
       foreach ($comments as $comment) {
       $output .= "\n&lt;li&gt;".strip_tags($comment-&gt;comment_author)
       .":" . "&lt;a href=\"" . get_permalink($comment-&gt;ID) .
       "#comment-" . $comment-&gt;comment_ID . "\" title=\"on " .
       $comment-&gt;post_title . "\"&gt;" . strip_tags($comment-&gt;com_excerpt)
       ."&lt;/a&gt;&lt;/li&gt;";
       }
       $output .= "\n&lt;/ul&gt;";
       echo $output;
?&gt;</pre>
<p>それでは自分なりの理解の範囲で順にコードを調べていきます。PHPは勉強中なので間違っているところもあると思います。そのときは指摘ください。ちょっと長くなりそう・・・。</p>
<pre>global $wpdb;</pre>
<p>グローバル変数$wpdbを宣言します。これでデータベースへの接続準備ができるようです。データベース接続はwp-db.php内でwpdbクラスの形で定義されています。wpdbクラスは<a href="http://www.woyano.com/jv/ezsql">ezSQL</a>というPHPライブラリをもとに書かれているようなので興味のある方はそちらも参考にしてください。全部英語ですけど。</p>
<p>次はデータベースに接続するためのSQL文です。ほとんどやったことがないので少しずつ解決していきます。</p>
<p>SELECT文はデータを取り出すためにつかいます。基本の形は次のようになります。</p>
<p>SELECT &lt;列名&gt; FROM &lt;テーブル名&gt; [WHERE 検索条件];</p>
<p>これをベースに細かな条件を指定していくようです。</p>
<pre>SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url,</pre>
<p>DISTINCT文は結果に重複した行があるとき、それを削除した結果を返してくれます。この場合はDESTINCT以下の列名の組み合わせで重複がないものを取り出します。</p>
<pre>SUBSTRING(comment_content,1,30) AS com_excerpt</pre>
<p>SUBSTRINGで<code>comment_content</code>（コメントの本文）の1～30文字を抜き出します。それを<code>com_excerpt</code>という別名に名前を変更するという処理です。</p>
<pre>FROM $wpdb-&gt;comments</pre>
<p>$wpdb-&gt;commentsというテーブルからデータを取り出します。普通、コメントテーブル（wp_comments）からデータをとってくるなら</p>
<pre>FROM wp_comments</pre>
<p>と書きますが、<code>$wpdb-&gt;comments</code>を実行すると<code>wp_comments</code>という文字列が帰ってきてこれがテーブル名になります。詳しくは公式ドキュメント（下のほう）を参照してください。</p>
<p><a href="http://codex.wordpress.org/Function_Reference/wpdb_Class">Function Reference/wpdb Class « WordPress Codex</a></p>
<p>テーブル構造は以下に書いてあります。</p>
<p><a href="http://codex.wordpress.org/Database_Description/2.5">Database Description/2.5 « WordPress Codex</a></p>
<pre> LEFT OUTER JOIN $wpdb-&gt;posts ON ($wpdb-&gt;comments.comment_post_ID = $wpdb-&gt;posts.ID)</pre>
<p>ここでは<code>wp_comments</code>と<code>wp_posts</code>の2つのテーブルを結合しています。FROMで指定した<code>wp_comments</code>テーブルをすべて参照して<code>wp_posts</code>テーブルと比べます。そのなかから<code>comment_post_ID</code>と<code>wp_posts</code>テーブルのIDが等しいものを選んで結合するということらしいです。できあがったテーブル名は<code>$wpdb-&gt;comments</code>で参照される文字列wp_commentsです。</p>
<pre>WHERE comment_approved = '1' AND comment_type = '' AND
         post_password = ''
         ORDER BY comment_date_gmt DESC
         LIMIT 10";</pre>
<p>さきほど結合したテーブルをさらに絞り込みます。<code>comment_approved = "1"</code>で認証されていて、且つ<code>comment_type</code>が空、且つ<code>post_password</code>が空という条件を満たすものをコメント日時でソートして10件取り出すという処理になります。</p>
<p>SQL文ができたら<code>get_results()</code>でデータベースに問い合わせをします。</p>
<pre><span class="brush:php">$comments = $wpdb-&gt;get_results($sql);</span></pre>
<p>結果はオブジェクトで帰ってきます。<code>$comments</code>を<code>print_r()</code>で出力したらこうなります。</p>
<pre>stdClass Object 
  (             
   [ID] =&gt; 記事のID
   [post_title] =&gt; 記事のタイトル
   [post_password] =&gt; 記事のパスワード
   [comment_ID] =&gt; コメントID
   [comment_post_ID] =&gt;  コメントをつけた記事ID
   [comment_author] =&gt; コメントの投稿者名
   [comment_date_gmt] =&gt; コメントの投稿日時             
   [comment_approved] =&gt; コメントの状態              
   [comment_type] =&gt; コメントタイプ              
   [comment_author_url] =&gt; コメント投稿者のURL               
   [com_excerpt] =&gt; コメントの抜粋
  )</pre>
<p>あとはforeachでまわして必要なデータを抜き出してHTMLに整形です。</p>
<p>SQLは難しいですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://scianto.net/archives/2009/03/19201936.php/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://scianto.net/archives/2009/03/19201936.php" />
	</item>
		<item>
		<title>最近の記事を表示する[WordPressテーマ作成#10]</title>
		<link>http://scianto.net/archives/2009/03/14211434.php</link>
		<comments>http://scianto.net/archives/2009/03/14211434.php#comments</comments>
		<pubDate>Sat, 14 Mar 2009 12:14:34 +0000</pubDate>
		<dc:creator>paon</dc:creator>
				<category><![CDATA[web design]]></category>
		<category><![CDATA[WordPress Theme]]></category>
		<category><![CDATA[WordPress2.7]]></category>

		<guid isPermaLink="false">http://scianto.net/archives/2009/03/14211434.php</guid>
		<description><![CDATA[
最近書いた記事をサイドバーなどに表示する方法を紹介します。

今回のポイントとなるテンプレートタグはquery_posts()です。このタグをつかうとループ内に表示する記事の表示件数を変えたり、特定のカテゴリに属 [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-605" title="20090319_01" src="http://scianto.net/paolog-wp/wp-content/uploads/2009/05/20090319_01.png" alt="20090319_01" width="500" height="250" /></p>
<p>最近書いた記事をサイドバーなどに表示する方法を紹介します。</p>
<p><span id="more-544"></span></p>
<p>今回のポイントとなるテンプレートタグは<code><a href="http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/query_posts">query_posts()</a></code>です。このタグをつかうとループ内に表示する記事の表示件数を変えたり、特定のカテゴリに属する記事のみ抽出することができます。</p>
<h2>最新X件の記事を表示</h2>
<p>たとえば次のようにすると最新5件の記事タイトルを表示します。</p>
<pre class="php">&lt;?php if ( have_posts() ) : query_posts('showposts=5'); ?&gt;
&lt;ul&gt;
  &lt;?php while (have_posts()) : the_post(); ?&gt;
  &lt;li&gt;&lt;a href="&lt;?php the_permalink() ?&gt;"&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;?php endwhile;?&gt;
&lt;/ul&gt;
&lt;?php endif; ?&gt;</pre>
<p>query_posts()の引数はいろいろあるのでけっこう自由に絞込みができると思います。詳しくは以下のページで。</p>
<p><a href="http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/query_posts">WordPress Codex 日本語版ドキュメント &#8211; </a><a href="http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/query_posts">query posts</a></p>
<h2>カテゴリで絞り込む</h2>
<p>次の例はカテゴリで絞り込むパターンです。たとえばカテゴリ2の記事を5件表示するには次のように書きます。</p>
<pre>query_posts( ' showposts=5&amp;cat=2 ' );</pre>
<p>カテゴリ名でもいけます。「ウェブデザイン」というカテゴリがあったとすると・・・</p>
<pre>query_posts( ' showposts=5&amp;category_name=ウェブデザイン ' );</pre>
<p>ただしカテゴリのスラッグを見ているようなので日本語表記とスラッグが異なっていると日本語で指定してもうまくできません。URLはできるだけ短くしたいほうなのでスラッグを短く設定してます。なので個人的にはカテゴリIDのほうが使いやすいですね。</p>
<h2>指定件数だけスキップして表示</h2>
<p>最新の記事をトップに表示して、それより古い記事を違うレイアウトで表示したいときに使える方法です。</p>
<pre>query_posts( ' showposts=5&amp;offset=1 ' );</pre>
]]></content:encoded>
			<wfw:commentRss>http://scianto.net/archives/2009/03/14211434.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://scianto.net/archives/2009/03/14211434.php" />
	</item>
		<item>
		<title>必要なテンプレートをさらに追加する[WordPressテンプレート作成#9]</title>
		<link>http://scianto.net/archives/2009/03/14211301.php</link>
		<comments>http://scianto.net/archives/2009/03/14211301.php#comments</comments>
		<pubDate>Sat, 14 Mar 2009 12:13:01 +0000</pubDate>
		<dc:creator>paon</dc:creator>
				<category><![CDATA[web design]]></category>
		<category><![CDATA[WordPress Theme]]></category>
		<category><![CDATA[WordPress2.7]]></category>

		<guid isPermaLink="false">http://scianto.net/archives/2009/03/14211301.php</guid>
		<description><![CDATA[
ここまでで基本の機能をもったテーマをつくったので今回は必要になると思われる残りのテンプレートを作成しようと思います。

今回作ったのはこの5つ。

	404.php
	category.php
	date [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-604" title="20090314_02" src="http://scianto.net/paolog-wp/wp-content/uploads/2009/05/20090314_02.png" alt="20090314_02" width="500" height="250" /></p>
<p>ここまでで基本の機能をもったテーマをつくったので今回は必要になると思われる残りのテンプレートを作成しようと思います。</p>
<p><span id="more-543"></span></p>
<p>今回作ったのはこの5つ。</p>
<ul>
	<li>404.php</li>
	<li>category.php</li>
	<li>date.php</li>
	<li>page.php</li>
	<li>functions.php</li>
</ul>
<p>&#8220;cateogry.php&#8221;、&#8221;date.php&#8221;、&#8221;page.php&#8221;の中身はindex.phpと同じなので内容は省略しておきます。404.phpの中身もページが見つからなかったときに表示するだけなので「ページが見つかりません。」とか表示するようにしておきます。functions.phpは独自の関数を定義するファイルですが、まだ勉強してないので空のままです。</p>
<p>それぞれのテンプレートはこれから必要になったときにデザインにあわせた編集をしていく予定です。</p>
<p>これでテーマに必要な一通りのテンプレートの作成はできたと思います。あとはカスタム関数を勉強して、デザインををつければ基本テンプレートのできあがり！ですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://scianto.net/archives/2009/03/14211301.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://scianto.net/archives/2009/03/14211301.php" />
	</item>
		<item>
		<title>検索フォームを設置する[WordPressテンプレート作成#8]</title>
		<link>http://scianto.net/archives/2009/03/12195012.php</link>
		<comments>http://scianto.net/archives/2009/03/12195012.php#comments</comments>
		<pubDate>Thu, 12 Mar 2009 10:50:12 +0000</pubDate>
		<dc:creator>paon</dc:creator>
				<category><![CDATA[web design]]></category>
		<category><![CDATA[WordPress Theme]]></category>
		<category><![CDATA[WordPress2.7]]></category>

		<guid isPermaLink="false">http://scianto.net/archives/2009/03/12195012.php</guid>
		<description><![CDATA[     
     サイドバーに検索フォームを設置します。
     
     今回の目標は次のようにします。
     
       検索フォームをサイドバーに設置（searchform.php）
  [...]]]></description>
			<content:encoded><![CDATA[     <p><img src="http://scianto.net/paolog-wp/wp-content/uploads/2009/03/20090312_01.png" alt="20090312_01" title="20090312_01" width="500" height="300" class="alignnone size-full wp-image-539" /></p>
     <p>サイドバーに検索フォームを設置します。</p>
     <p><span id="more-540"></span></p>
     <p>今回の目標は次のようにします。</p>
     <ul>
       <li>検索フォームをサイドバーに設置（searchform.php）</li>
       <li>検索結果を表示するテンプレートを作成（search.php）</li>
       </ul>
     <h2>検索フォーム（searchform.php）</h2>
     <p>searchform.phpという名前で新規ファイルを作成しておきます。コードは以下。</p>
     <pre>&lt;!--BEGIN #searchform--&gt;
&lt;div id=&quot;SearchForm&quot;&gt;
  &lt;form method=&quot;get&quot; action=&quot;&lt;?php bloginfo( 'url' ); ?&gt;&quot;&gt;
    &lt;fieldset&gt;
    &lt;legend&gt;&lt;label for=&quot;s&quot;&gt;検索&lt;/label&gt;&lt;/legend&gt;
    &lt;p&gt;
      &lt;input name=&quot;s&quot; id=&quot;s&quot; type=&quot;text&quot; value=&quot;keyword(s)&quot; tabindex=&quot;1&quot; /&gt;
      &lt;input id=&quot;submit&quot; type=&quot;submit&quot; tabindex=&quot;2&quot; /&gt;
    &lt;/p&gt;
    &lt;/fieldset&gt;
  &lt;/form&gt;
&lt;/div&gt;
&lt;!--END form#searchform--&gt;</pre>
     <p>Web標準を意識してコーディングしてみました。</p>
     <p>ひとつめのinput要素のnameとid属性はかならず&quot;s&quot;でないと検索クエリが送信できないのでここは変更不可です。あまり関係ないことですが、送信ボタンにname属性をつけると検索時に</p>
     <pre>?s=キーワード&amp;submit=実行</pre>
     <p>と無駄なクエリがついてしまうのでボタンのname属性はなしです。</p>
     <h2>検索結果テンプレート（search.php）</h2>
     <p>search.phpという名前で新規ファイルを作成します。コードは以下。</p>
     <pre>&lt;?php get_header(); ?&gt;
&lt;div id=&quot;PageBody&quot;&gt;
  &lt;div id=&quot;Primary&quot;&gt;
    &lt;div id=&quot;PrimaryInner&quot;&gt;
      &lt;h1&gt;検索結果&lt;/h1&gt;
      &lt;?php if(have_posts()) : ?&gt;&lt;?php while (have_posts()) : the_post(); ?&gt;
      ～ここに記事を表示するためのコード～
      &lt;?php endwhile; ?&gt; 
      &lt;ul class=&quot;navigation&quot;&gt;
        &lt;li class=&quot;next-posts&quot;&gt;&lt;?php next_posts_link('Older Entries') ?&gt;&lt;/li&gt;
        &lt;li class=&quot;previous-posts&quot;&gt;&lt;?php previous_posts_link('Newer Entries') ?&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;?php else: ?&gt;

      ～キーワードに合った記事が見つからなかったときに表示する内容～
      &lt;?php endif; ?&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;!-- END div#Primary --&gt;
&lt;?php get_sidebar(); ?&gt;
&lt;/div&gt;
&lt;!-- END div#PageBody --&gt;
&lt;?php get_footer(); ?&gt; </pre>
     <p>基本的にindex.phpの記事表示部分とほぼ同じテンプレートになります。表示内容やデザインを変えるときはこのテンプレートを編集することになります。</p>
     <p>シンプルすぎるのでいずれは変更します。いまのところはこのままいきます。</p>
]]></content:encoded>
			<wfw:commentRss>http://scianto.net/archives/2009/03/12195012.php/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://scianto.net/archives/2009/03/12195012.php" />
	</item>
		<item>
		<title>テンプレートファイルをわけてみた[WordPressテーマ作成#7]</title>
		<link>http://scianto.net/archives/2009/03/08203234.php</link>
		<comments>http://scianto.net/archives/2009/03/08203234.php#comments</comments>
		<pubDate>Sun, 08 Mar 2009 11:32:34 +0000</pubDate>
		<dc:creator>paon</dc:creator>
				<category><![CDATA[web design]]></category>
		<category><![CDATA[WordPress Theme]]></category>
		<category><![CDATA[WordPress2.7]]></category>

		<guid isPermaLink="false">http://scianto.net/archives/2009/03/08203234.php</guid>
		<description><![CDATA[
     今回はこれまで作成したindex.phpファイルからヘッダー、フッター、サイドバーのテンプレートに分割しました。

     
       header.php
         htmlのhea [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://scianto.net/paolog-wp/wp-content/uploads/2009/03/20090308_01.png" alt="20090308_01" title="20090308_01" width="500" height="300" class="alignnone size-full wp-image-532" /></p>
     <p>今回はこれまで作成したindex.phpファイルからヘッダー、フッター、サイドバーのテンプレートに分割しました。</p>
<p><span id="more-533"></span></p>
     <ul>
       <li><strong>header.php</strong><br />
         htmlのhead要素とページのヘッダー部分を書いたテンプレート。</li>
       <li><strong>sidebar.php</strong><br />
       サイドバーの内容を書いたテンプレート。</li>
       <li><strong>footer.php</strong><br />
       ページのフッター部分。コピーライトとかはここです。</li>
       <li><strong>index.php</strong><br />
       コンテンツ部分はこれになります。<br />
       </li>
       </ul>
     <h2>header.php</h2>
     <p>どのあたりで切るかという問題になりましたが、htmlのhead要素とページタイトル（h1要素）を含むdiv#Headerまでを含めることにしました。</p>
     <pre class="brush:xhtml">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;ja&quot; lang=&quot;ja&quot;&gt;
&lt;head&gt;
       &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
       &lt;meta http-equiv=&quot;Content-Style-Type&quot; content=&quot;text/css&quot; /&gt;
       &lt;meta http-equiv=&quot;Content-Script-Type&quot; content=&quot;text/javascript&quot; /&gt;
       &lt;title&gt;&lt;?php bloginfo('name');?&gt;&lt;/title&gt;
       &lt;link href=&quot;&lt;?php bloginfo('stylesheet_url');?&gt;&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&gt;
       &lt;link rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot; title=&quot;RSS 2.0&quot; href=&quot;&lt;?php bloginfo('rss2_url');?&gt;&quot; /&gt;
       &lt;link rel=&quot;alternate&quot; type=&quot;application/atom+xml&quot; title=&quot;Atom cite contents&quot; href=&quot;&lt;?php bloginfo('atom_url');?&gt;&quot; /&gt;
       &lt;?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?&gt;
       &lt;?php wp_head(); ?&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;div id=&quot;Wrapper&quot;&gt;
    &lt;div id=&quot;WrapperInner&quot;&gt;
      &lt;div id=&quot;Header&quot;&gt;
        &lt;div id=&quot;HeaderInner&quot;&gt;
          &lt;h1&gt; &lt;a href=&quot;&lt;?php bloginfo('url');?&gt;&quot;&gt;&lt;?php bloginfo('name');?&gt;&lt;/a&gt; &lt;/h1&gt;
          &lt;p&gt; &lt;?php bloginfo('description');?&gt; &lt;/p&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;!-- END div#Header --&gt;
     </pre>
     <h2>sidebar.php</h2>
     <p>サイドバーはきっちりdiv#Secondaryで分けました。</p>
     <pre class="brush:xhtml">&lt;div id=&quot;Secondary&quot;&gt;
  &lt;div id=&quot;SecondaryInner&quot;&gt;
    &lt;ul&gt;
      &lt;?php wp_list_categories('show_count=1&amp;title_li=&lt;h2&gt;カテゴリ&lt;/h2&gt;'); ?&gt;
      &lt;li&gt; &lt;h2&gt;アーカイブ&lt;/h2&gt;
        &lt;ul&gt;
          &lt;?php wp_get_archives('type=monthly'); ?&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;h2&gt;タグ&lt;/h2&gt;
      &lt;?php wp_tag_cloud('format=list')?&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;!-- END div#Secondary --&gt;
     </pre>
     <h2>footer.php</h2>
     <p>フッターに表示する内容はまだ考えてないのでとりあえず、WPのバージョンとサイト名を表記しておくことにしました。</p>
     <pre class="brush:xhtml">    &lt;div id=&quot;Footer&quot;&gt;
      &lt;div id=&quot;FooterInner&quot;&gt;
        &lt;ul class=&quot;support&quot;&gt;
          &lt;li&gt;Powered by &lt;a href=&quot;http://wordpress.org/&quot;&gt;WordPress &lt;?php bloginfo('version'); ?&gt;&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href=&quot;http://scianto.net/&quot;&gt;PAOLOG&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;!-- END div#Footer --&gt;
  &lt;/div&gt;
  &lt;!-- END div#WrapperInner --&gt;
&lt;/div&gt;
&lt;!-- END div#Wrapper --&gt;
&lt;?php wp_footer(); ?&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
     <h2>index.php</h2>
     <p>上のように各ブロックをテンプレートにわけたので、それぞれを読み込む場所に次のタグを挿入します。</p>
     <ul>
       <li><strong>get_header()</strong><br />
         header.phpを読み込みます。</li>
       <li><strong>get_sidebar()</strong><br />
         sidebar.phpを読み込みます。</li>
       <li><strong>get_footer()</strong><br />
         footer.phpを読み込みます。</li>
       </ul>
     <pre class="brush:xhtml">&lt;?php get_header();?&gt;
&lt;div id=&quot;PageBody&quot;&gt;
  &lt;div id=&quot;Primary&quot;&gt;
    &lt;div id=&quot;PrimaryInner&quot;&gt;
      &lt;?php if(have_posts()) : while(have_posts()) : the_post(); ?&gt;
      &lt;div class=&quot;entry&quot;&gt;
        &lt;div class=&quot;entry-header&quot;&gt;
          &lt;h2&gt;&lt;a href=&quot;&lt;?php the_permalink() ?&gt;&quot; title=&quot;&lt;?php the_title(); ?&gt;&quot;&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/h2&gt;
          &lt;ul class=&quot;entry-meta&quot;&gt;
            &lt;li class=&quot;entry-meta-time&quot;&gt;&lt;em&gt;投稿日時&lt;/em&gt; &lt;span&gt;&lt;?php the_time('Y');?&gt;&lt;/span&gt;&lt;span&gt;&lt;?php the_time('m');?&gt;&lt;/span&gt;&lt;span&gt;&lt;?php the_time('d');?&gt;&lt;/span&gt;&lt;span&gt;&lt;?php the_time('g:i A');?&gt;&lt;/span&gt;&lt;/li&gt;
            &lt;li class=&quot;entry-meta-author&quot;&gt;&lt;em&gt;投稿者&lt;/em&gt; &lt;?php the_author();?&gt;&lt;/li&gt;
            &lt;li class=&quot;entry-meta-category&quot;&gt;&lt;em&gt;カテゴリ&lt;/em&gt;&lt;?php the_category(); ?&gt;&lt;/li&gt;
            &lt;?php if (function_exists('the_tags')) : the_tags('&lt;li class=&quot;entry-meta-tags&quot;&gt;', ' | ', '&lt;/li&gt;'); endif; ?&gt; &lt;?php edit_post_link('編集', '&lt;li class=&quot;admin&quot;&gt;', '&lt;/li&gt;'); ?&gt;
          &lt;/ul&gt;
        &lt;/div&gt;
        &lt;div class=&quot;entry-body&quot;&gt;
          &lt;?php the_content(); ?&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;?php comments_template('', true); ?&gt;
      &lt;?php endwhile; endif; ?&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;!-- END div#Primary --&gt;
  &lt;?php get_sidebar(); ?&gt;
&lt;/div&gt;
&lt;!-- END div#PageBody --&gt;
&lt;?php get_footer(); ?&gt; </pre>
]]></content:encoded>
			<wfw:commentRss>http://scianto.net/archives/2009/03/08203234.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://scianto.net/archives/2009/03/08203234.php" />
	</item>
		<item>
		<title>コメントとトラックバックを分けて表示[WordPressテーマ作成#6]</title>
		<link>http://scianto.net/archives/2009/03/06001715.php</link>
		<comments>http://scianto.net/archives/2009/03/06001715.php#comments</comments>
		<pubDate>Thu, 05 Mar 2009 15:17:15 +0000</pubDate>
		<dc:creator>paon</dc:creator>
				<category><![CDATA[web design]]></category>
		<category><![CDATA[WordPress Theme]]></category>
		<category><![CDATA[WordPress2.7]]></category>

		<guid isPermaLink="false">http://scianto.net/?p=530</guid>
		<description><![CDATA[     
コメントとトラックバックを分けて表示するようにテンプレートを改造します。

     前回、コメントまわりのテンプレート（comments.php）を作成しました。WordPressではコメントとトラッ [...]]]></description>
			<content:encoded><![CDATA[    <p> <img src="http://scianto.net/paolog-wp/wp-content/uploads/2009/03/20090306_01.png" alt="20090306_01" title="20090306_01" width="500" height="300" class="alignnone size-full wp-image-531" /></p>
<p>コメントとトラックバックを分けて表示するようにテンプレートを改造します。</p>
<p><span id="more-530"></span></p>
     <p><a href="http://scianto.net/archives/2009/03/02232201.php">前回</a>、コメントまわりのテンプレート（comments.php）を作成しました。WordPressではコメントとトラックバックが同じコメントとして扱われるので<code>wp_comments_list()</code>を引数なしで使うと両方混ざって表示されてしまうようです。</p>
     <p>しかもほかのブログには必ずあるはずのトラックバックURLもデフォルトでは表示されません。これはちょっと気持ち悪いのでコメントとトラックバックを分けて表示し、トラックバックURLも表示するようにします。</p>
     <p>ピンバックというのもありますが、今回はトラックバックと同様に扱うことにします。</p>
     <p>まずはコメントがあるかどうかで分岐します。</p>
     <pre name="code" class="php">&lt;?php if ( have_comments() ) : ?&gt;</pre>
     <p>内部の変数$comments_by_typeは連想配列で、グローバル変数$commentsのcomment_typeの値を持っているようです。comment.phpのseparate_comments関数で定義されているのでそちらを参照してください。以下はcomment_typeが &#8216;comment&#8217; だったらというif文。</p>
     <pre name="code" class="php">&lt;?php if ( ! empty($comments_by_type['comment']) ) : ?&gt;</pre>
     <p>もっていたらコメントのリストを表示します。<code><a href="http://codex.wordpress.org/Template_Tags/wp_list_comments">wp_list_comments()</a></code>にはいろいろなパラメータがありますが、そのなかの「type」を使うとリストをコメントとトラックバック別々に表示することができるようです。typeがとる値は &#8216;all&#8217;, &#8216;comment&#8217;, &#8216;trackback&#8217;, &#8216;pingback&#8217;,  &#8216;pings&#8217; です。&#8217;pings&#8217; は &#8216;trackback&#8217; と &#8216;pingback&#8217; をあわせたものです。デフォルトは &#8216;all&#8217; です。  たとえば、コメントだけのリストを作るときは次のようにします。</p>
     <pre name="code" class="php">&lt;ol&gt;
 &lt;?php wp_list_comments('type=comment'); ?&gt;
&lt;/ol&gt;</pre>
     <p>コメントがないときは、「コメントはありません。」と表示。</p>
     <pre>&lt;?php else: ?&gt;
&lt;p&gt;コメントはありません。&lt;/p&gt;
&lt;?php endif; ?&gt;</pre>
     <p>同じようにトラックバックとピンバックのときは次のように。</p>
     <pre name="code" class="php">&lt;?php if ( ! empty($comments_by_type['pings']) ) : ?&gt;
&lt;h3 id=&quot;Trackbacks&quot;&gt;Trackbacks/Pinbacks&lt;/h3&gt;
&lt;ol&gt;
&lt;?php wp_list_comments('type=trackback'); ?&gt;
&lt;/ol&gt;
&lt;?php else: ?&gt;
&lt;p&gt;トラックバック/ピンバックはありません。&lt;/p&gt;
&lt;?php endif; ?&gt;</pre>
     <p>次にリストをページ分割するときのリンクをつくります。前後のリンクはulリストにしたいので、分割したページがあると時だけ表示するようにします。</p>
     <pre name="code" class="php">&lt;?php if (previous_comments_link() || next_comments_link() ) : ?&gt;
&lt;ul class=&quot;navigation&quot;&gt;
  &lt;li class=&quot;previous-comments&quot;&gt;&lt;?php previous_comments_link() ?&gt;&lt;/li&gt;
  &lt;li class=&quot;next-comments&quot;&gt;&lt;?php next_comments_link() ?&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;?php endif; ?&gt;</pre>
     <p>あとは、はじめの分岐「コメント（トラックバック、ピンバックのいずれか）がないときの表示。</p>
     <pre name="code" class="php">&lt;?php else : // this is displayed if there are no comments so far ?&gt;<br />
         &lt;?php if ( comments_open() ): ?&gt;<br />
  &lt;!-- If comments are open, but there are no comments. --&gt;<br />
  &lt;?php else: ?&gt;<br />
  &lt;!-- If comments are closed. --&gt;<br />
  &lt;p class=&quot;nocomments&quot;&gt;この記事はコメント、トラックバックおよびピンバックを受け付けていません。&lt;/p&gt;<br />
  &lt;?php endif; ?&gt;
&lt;?php endif; ?&gt;</pre>
<p>これでいいと思うのですが、if文のところは次のようにしたほうがいいかなと思ったりして・・・。</p>
     <pre name="code" class="php">&lt;?php if ( comments_open() || pings_open() ) : ?&gt;</pre>
     <p>以上をまとめたのが以下。</p>
     <pre name="code" class="php">&lt;?php if ( have_comments() ) : ?&gt;
  &lt;?php if ( ! empty($comments_by_type['comment']) ) : ?&gt;
  &lt;h3 id=&quot;Comments&quot;&gt;&lt;?php comments_number('comment', '1 comment', '% comments' );?&gt;&lt;/h3&gt;
  &lt;ol&gt;
   &lt;?php wp_list_comments('type=comment'); ?&gt;
  &lt;/ol&gt;
  &lt;?php else: ?&gt;
  &lt;p&gt;コメントはありません。&lt;/p&gt;
  &lt;?php endif; ?&gt;

  &lt;?php if ( ! empty($comments_by_type['pings']) ) : ?&gt;
  &lt;h3 id=&quot;Trackbacks&quot;&gt;Trackbacks/Pinbacks&lt;/h3&gt;
  &lt;ol&gt;
  &lt;?php wp_list_comments('type=trackback'); ?&gt;
  &lt;/ol&gt;
  &lt;?php else: ?&gt;
  &lt;p&gt;トラックバック/ピンバックはありません。&lt;/p&gt;
  &lt;?php endif; ?&gt;
  &lt;?php if (previous_comments_link() || next_comments_link() ) : ?&gt;
  &lt;ul class=&quot;navigation&quot;&gt;
  &lt;li class=&quot;previous-comments&quot;&gt;&lt;?php previous_comments_link() ?&gt;&lt;/li&gt;
  &lt;li class=&quot;next-comments&quot;&gt;&lt;?php next_comments_link() ?&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;?php endif; ?&gt;
&lt;?php else : // this is displayed if there are no comments so far ?&gt;
  &lt;?php if ( comments_open() ): ?&gt;
  &lt;!-- If comments are open, but there are no comments. --&gt;
  &lt;?php else: ?&gt;
  &lt;!-- If comments are closed. --&gt;
  &lt;p class=&quot;nocomments&quot;&gt;この記事はコメント、トラックバックおよびピンバックを受け付けていません。&lt;/p&gt;
  &lt;?php endif; ?&gt;
&lt;?php endif; ?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://scianto.net/archives/2009/03/06001715.php/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://scianto.net/archives/2009/03/06001715.php" />
	</item>
		<item>
		<title>コメントフォームとコメント一覧を表示する[WordPressテーマ作成 #5]</title>
		<link>http://scianto.net/archives/2009/03/02232201.php</link>
		<comments>http://scianto.net/archives/2009/03/02232201.php#comments</comments>
		<pubDate>Mon, 02 Mar 2009 14:22:01 +0000</pubDate>
		<dc:creator>paon</dc:creator>
				<category><![CDATA[web design]]></category>
		<category><![CDATA[WordPress Theme]]></category>
		<category><![CDATA[WordPress2.7]]></category>

		<guid isPermaLink="false">http://scianto.net/archives/2009/03/02232201.php</guid>
		<description><![CDATA[     
シングルページ（記事の個別ページ）にコメントフォームとその記事に投稿されたコメントの一覧を表示するようにテンプレートをつくってみます。
     
      
     
     デフォルトテン [...]]]></description>
			<content:encoded><![CDATA[     <p><img src="http://scianto.net/paolog-wp/wp-content/uploads/2009/03/20090302_01.png" alt="シングルページにコメントフォームとコメント一覧を表示する" title="シングルページにコメントフォームとコメント一覧を表示する" width="500" height="300" class="alignnone size-full wp-image-528" /></p>
<p>シングルページ（記事の個別ページ）にコメントフォームとその記事に投稿されたコメントの一覧を表示するようにテンプレートをつくってみます。</p>
     <p>
      <span id="more-529"></span>
     </p>
     <p>デフォルトテンプレートをみてもコメントの部分はけっこう複雑なのでindex.phpだけではつらいです。なのでテンプレートを分けます。</p>
     <p>「comments.php」という名前で新規ファイルを作成。これにタグを書いていきます。index.php側でこのテンプレートを読み込むには次の構文を記事のループの中に書きます。</p>
     <pre>&lt;?php comments_template(); ?&gt;</pre>
     <p>さらに、次の文をhead要素内に書きます。</p>
     <pre>&lt;?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?&gt;</pre>
     <p>コメント返信用のJavascriptを挿入するための記述です。wp_head()関数があるときはその前に挿入します。</p>
     <p>それではcomments.phpの作成に入ります。参考にするのはドキュメントの次のページ。</p>
     <p><a href="http://wpdocs.sourceforge.jp/Migrating_Plugins_and_Themes_to_2.7/Enhanced_Comment_Display">Migrating Plugins and Themes to 2.7/Enhanced Comment Display &#8211; WordPress Codex 日本語版</a></p>
     <p>2.7から追加されたタグを使ったテンプレートの書き方が紹介されています。それを参考にまずは大まかにテンプレートの構成を作ってみました。 </p>
     <pre name="code" class="php">//この部分は削除しない

if (!empty($_SERVER['SCRIPT_FILENAME']) &amp;&amp; 'comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
  die ('このページには直接アクセスできません。');
if ( post_password_required() ) {
  echo '&lt;p class=&quot;nocomments&quot;&gt;この投稿はパスワードで保護されています。コメントを閲覧するにはパスワードを入力してください。&lt;p&gt;';
  return;
}
//ここまでは削除しない
//ここから編集
&lt;?php if ( have_comments() ) : ?&gt;
  (1)コメントがあるときに表示する内容はここに書く
&lt;?php else :&gt;
  //コメントがひとつもないときに表示する内容はここに書く
  &lt;?php if ('open' == $post-&gt;comment_status) : ?&gt;
    (2)コメントを受け付ける設定になっているがコメントがないときに表示する内容をここに書く
    &lt;?php else : ?&gt; 
    (3)コメントを受け付けない設定のときに表示する内容をここに書く
&lt;?php endif; ?&gt;
&lt;?php endif; ?&gt;
&lt;?php if ('open' == $post-&gt;comment_status) : ?&gt;
(4) コメントフォームのテンプレートタグはここ
&lt;?php endif; ?&gt;</pre>
     <p>冒頭の部分はデフォルトを参考。「消さないでね」とあるのでそのままコピペです。comments.phpに直接アクセスできないようにするため（？）と記事がパスワードでロックされているかをチェックしているようです。個人的にはロックすることはないので必要ないかも・・・ですが・・・ロックの意味がよくわかりません。なのでこれはそのままスルー。</p>
     <h2>1.コメントがあるとき</h2>
     <pre>if (have_comments() ): ?&gt;</pre>
     <p>まずは<code>have_comments()</code>でコメントがあるかどうかを判定します。コメントがあれば投稿されたコメントを表示します。コメントの表示には<code><a href="http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/wp_list_comments">wp_list_comments()</a></code>を使います。</p>
     <pre>&lt;ol&gt;
  &lt;?php wp_list_comments(); ?&gt;
&lt;/ol&gt;</pre>
     <p>デフォルトの設定ではリスト形式で出力されます。このタグのまわりをol要素やul要素で囲むことを忘れずに。特定のコメントに対するコメントがあると入れ子のリストで表示されます。</p>
     <h2>2. コメントを受けつける設定でコメントがないとき</h2>
     <p>記事にコメントがあるかどうかはグローバル変数の$postにアクセスして調べているようです。</p>
     <pre>&lt;?php if ( 'open' == $post-&gt;comment_status ) : ?&gt;</pre>
     <p>$postは記事の情報を持っている配列で、「comment_status」もそのひとつ。コメントを受け付ける設定になっているかどうかを表しています。受け付ける設定なら「open」になっています。</p>
     <p>ひとつもコメントがないときは「コメントはありません」と表示するようにします。</p>
     <pre>#15&lt;?php if ( 'open' == $post-&gt;comment_status ) : ?&gt;

&lt;p&gt;コメントはありません。&lt;/p&gt;</pre>
     <h2>3. コメントを受け付けない設定のとき</h2>
     <p>このときは単純になにも表示しないか、「コメントは受け付けていません」とか表示するのがいいかと思います。</p>
     <pre>#17&lt;?php else : ?&gt;
&lt;p&gt;コメントは受け付けていません&lt;/p&gt;</pre>
     <h2>4. コメントフォームをつくる</h2>
     <p>コメントフォームはコメントを受け付ける設定のときに常に表示したいので、if文を追加します。</p>
     <pre name="code" class="php">&lt;div id=&quot;respond&quot;&gt;
  &lt;form action=&quot;&lt;?php echo get_option('siteurl'); ?&gt;/wp-comments-post.php&quot; method=&quot;post&quot; id=&quot;commentform&quot;&gt;
    &lt;input type=&quot;hidden&quot; value=&quot;&lt;?php echo $id; ?&gt;&quot; /&gt;
   	&lt;?php comment_id_fields(); ?&gt;
    &lt;?php if ( $user_ID ) : ?&gt;
    &lt;p&gt;&lt;a href=&quot;&lt;?php echo get_option('siteurl'); ?&gt;/wp-admin/profile.php&quot;&gt;&lt;?php echo $user_identity; ?&gt;&lt;/a&gt;としてログインしています。ほかのユーザーIDでコメントするときは&lt;a href=&quot;&lt;?php echo get_option('siteurl'); ?&gt;/wp-login.php?action=logout&quot; title=&quot;&lt;?php _e('Log out of this account') ?&gt;&quot;&gt;ログアウト &amp;raquo;&lt;/a&gt;してください。&lt;/p&gt;
    &lt;?php else : ?&gt;
    &lt;dl&gt;
      &lt;dt&gt; &lt;label for=&quot;author&quot;&gt;名前 &lt;span&gt;&lt;?php if ($req) _e('(required)'); ?&gt;&lt;/span&gt;&lt;/label&gt;&lt;/dt&gt;
      &lt;dd&gt; &lt;input type=&quot;text&quot; name=&quot;author&quot; id=&quot;author&quot; value=&quot;&lt;?php echo $comment_author; ?&gt;&quot; size=&quot;22&quot; tabindex=&quot;1&quot; /&gt; &lt;/dd&gt;
      &lt;dt&gt; &lt;label for=&quot;email&quot;&gt;メール&lt;span&gt;&lt;?php if ($req) _e('(required)'); ?&gt;&lt;/span&gt;&lt;/label&gt; &lt;/dt&gt;
      &lt;dd&gt; &lt;input type=&quot;text&quot; name=&quot;email&quot; id=&quot;email&quot; value=&quot;&lt;?php echo $comment_author_email; ?&gt;&quot; size=&quot;22&quot; tabindex=&quot;2&quot; /&gt; &lt;/dd&gt;
      &lt;dt&gt; &lt;label for=&quot;url&quot;&gt;Webサイト&lt;/label&gt; &lt;/dt&gt;
      &lt;dd&gt; &lt;input type=&quot;text&quot; name=&quot;url&quot; id=&quot;url&quot; value=&quot;&lt;?php echo $comment_author_url; ?&gt;&quot; size=&quot;22&quot; tabindex=&quot;3&quot; /&gt; &lt;/dd&gt;
   &lt;/dl&gt;
   &lt;?php endif; // Check for $user_ID ?&gt;
   &lt;p&gt;次のタグを使うことができます: &lt;?php echo allowed_tags(); ?&gt;&lt;/p&gt;
   &lt;dl&gt;
     &lt;dt&gt; &lt;label for=&quot;comment&quot;&gt;コメント&lt;/label&gt;&lt;/dt&gt;
     &lt;dd&gt; &lt;textarea name=&quot;comment&quot; id=&quot;comment&quot; cols=&quot;100%&quot; rows=&quot;10&quot; tabindex=&quot;4&quot;&gt;&lt;/textarea&gt; &lt;/dd&gt;
   &lt;/dl&gt;
   &lt;ul&gt;
     &lt;li&gt; &lt;input name=&quot;submit&quot; type=&quot;submit&quot; id=&quot;submit&quot; tabindex=&quot;5&quot; value=&quot;Submit Comment&quot; /&gt; &lt;/li&gt;
   &lt;/ul&gt;
   &lt;div id=&quot;cancel-comment-reply&quot;&gt;
     &lt;p&gt;&lt;?php cancel_comment_reply_link() ?&gt;&lt;/p&gt;
   &lt;/div&gt;
   &lt;?php do_action('comment_form', $post-&gt;ID); ?&gt;
  &lt;/form&gt;
&lt;/div&gt;</pre>
     <p>ここは長いのでポイントだけ。</p>
     <h3>div#respond</h3>
     <p>コメントフォーム全体をid属性respondを指定したdiv要素で囲みます。これはコメントをスレッド（入れ子）形式にする場合は必須だと思います。</p>
     <h3>&lt;?php comment_id_fields(); ?&gt;</h3>
     <p>フォームの隠し属性を追加してくれます。これもスレッド形式のときは必須かも。出力される内容は以下のようなものです。</p>
     <pre>&lt;input type='hidden' name='comment_post_ID' value='10' id='comment_post_ID' /&gt;
&lt;input type='hidden' name='comment_parent' id='comment_parent' value='0' /&gt;</pre>
     <h3>&lt;?php cancel_comment_reply_link() ?&gt;</h3>
     <p>返信コメントの入力をキャンセルするためのリンクを表示するための関数です。</p>
     <h2>とりあえず完成</h2>
     <p>ひとまず形になりましたが、ちょっと変更したいところもあります。WordPressではコメントやトラックバック、そしてピンバックというものをまとめてコメントとして扱っているのでMTからの移籍組としてはちょっと理解できません。</p>
     <p>ということで次回はこれらをわけて表示できるように修正しようと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://scianto.net/archives/2009/03/02232201.php/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://scianto.net/archives/2009/03/02232201.php" />
	</item>
		<item>
		<title>サイドバーを追加する[WordPressテーマ作成 #4]</title>
		<link>http://scianto.net/archives/2009/02/20233459.php</link>
		<comments>http://scianto.net/archives/2009/02/20233459.php#comments</comments>
		<pubDate>Fri, 20 Feb 2009 14:34:59 +0000</pubDate>
		<dc:creator>paon</dc:creator>
				<category><![CDATA[web design]]></category>
		<category><![CDATA[WordPress Theme]]></category>
		<category><![CDATA[WordPress2.7]]></category>

		<guid isPermaLink="false">http://scianto.net/archives/2009/02/20233459.php</guid>
		<description><![CDATA[
今回は2カラムを想定してサイドバーをつけてみたいと思います。

まずは簡単に次のものをつけてみます。

	カテゴリ一覧
	タグクラウド
	（月別）アーカイブ

カテゴリ一覧
カテゴリを取得するにはw [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://scianto.net/paolog-wp/wp-content/uploads/2009/02/20090219_01.png" alt="サイドバーを追加する[WordPressテーマ作成#4]" width="500" height="300" class="alignnone size-full wp-image-526" /></p>
<p>今回は2カラムを想定してサイドバーをつけてみたいと思います。</p>
<p><span id="more-527"></span></p>
<p>まずは簡単に次のものをつけてみます。</p>
<ul>
	<li>カテゴリ一覧</li>
	<li>タグクラウド</li>
	<li>（月別）アーカイブ</li>
</ul>
<h2>カテゴリ一覧</h2>
<p>カテゴリを取得するには<code>wp_list_categories()</code>タグを使います。</p>
<pre>&lt;?php wp_list_categories(); ?&gt;</pre>
<p>引数に何も指定しないときは次のように出力されます。</p>
<pre class="brush:xhtml">&lt;li class="categories"&gt;Categories
  &lt;ul&gt;
    &lt;li class="cat-item cat-item-ID"&gt; &lt;a href="カテゴリページへのリンク" title="カテゴリ概要"&gt;カテゴリ名&lt;/a&gt; &lt;/li&gt;
    &lt;li class="cat-item cat-item-ID"&gt; &lt;a href="カテゴリページへのリンク" title="カテゴリ概要"&gt;カテゴリ名&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;</pre>
<p>wp_list_categories()タグの詳しい説明はドキュメントをご覧ください。<br /> <a href="http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/wp_list_categories">テンプレートタグ/wp list categories &#8211; WordPress Codex 日本語版</a></p>
<p>これはウィジェットで使うことが前提の出力です。テンプレートを公開するときなどはウィジェット対応のほうがいいと思いますが、そうでなければ独自スタイルにしたいですね。</p>
<p>title_liパラメータでリストのタイトル（この場合は「Categories」）表示を変えることができますが、これを空にするとリスト項目以外の出力はされなくなります。</p>
<pre>&lt;?php wp_list_categories(’title_li=’); ?&gt;</pre>
<p>出力はこのようになります。</p>
<pre class="brush:xhtml">&lt;li class="cat-item cat-item-ID"&gt; &lt;a href="カテゴリページへのリンク" title="カテゴリ概要"&gt;カテゴリ名&lt;/a&gt; &lt;/li&gt; 
&lt;li class="cat-item cat-item-ID"&gt; &lt;a href="カテゴリページへのリンク" title="カテゴリ概要"&gt;カテゴリ名&lt;/a&gt; &lt;/li&gt;</pre>
<p>この場合、自分で外側に&lt;ul&gt;&lt;/ul&gt;をつけないといけないのでわすれないようにしましょう。</p>
<p>今回はタイトルのマークアップを変更し、カテゴリごとの記事数を表示することにします。</p>
<pre>&lt;?php wp_list_categories('show_count=1&amp;title_li=&lt;h2&gt;カテゴリ&lt;/h2&gt;'); ?&gt;</pre>
<h2>アーカイブ（月別）</h2>
<p>アーカイブを出力するには<code>wp_get_archives()</code>タグを使います。月別のアーカイブの場合は次のようにします。</p>
<pre>&lt;?php wp_get_archives('type=monthly'); ?</pre>
<p><a href="http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/wp_get_archives">テンプレートタグ/wp get archives &#8211; WordPress Codex 日本語版</a></p>
<p>デフォルトで月別アーカイブを表示するようになっているので引数がなくてもOKです。ただ、カテゴリと違ってリストのタイトルは表示されないので自分で追加します。</p>
<pre>&lt;li&gt;&lt;h2&gt;アーカイブ&lt;/h2&gt;&lt;ul&gt;&lt;?php wp_get_archives('type=monthly'); ?&gt;&lt;/ul&gt;&lt;/li&gt;</pre>
<h2>タグクラウド</h2>
<p>wp_tag_cloud()タグを使って記事につけられたタグの一覧を表示します。</p>
<pre>&lt;?php wp_tag_cloud()?&gt;</pre>
<p><a href="http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/wp_tag_cloud">テンプレートタグ/wp tag cloud &#8211; WordPress Codex 日本語版</a></p>
<p>デフォルトではホワイトスペースで区切られただけになってしまうので引数を<code>format=list</code>としてulリストとして表示します。タグクラウドではulがつくようです。</p>
<p>カテゴリやアーカイブ、そしてタグクラウドと出力がまちまちなのがちょっと気に入らないです。今回は次のようにしました。</p>
<pre>&lt;li&gt;&lt;h2&gt;タグ&lt;/h2&gt;&lt;?php wp_tag_cloud('format=list')?&gt;&lt;/li&gt;</pre>
<h2>まとめ</h2>
<p>ここまでやったコードをまとめると次のようになります。次回はテンプレートを増やしてみようと思います。</p>
<pre class="brush:xhtml"> &lt;ul&gt;
 &lt;?php wp_list_categories('show_count=1&amp;title_li=&lt;h2&gt;カテゴリ&lt;/h2&gt;'); ?&gt;
 &lt;li&gt;&lt;h2&gt;アーカイブ&lt;/h2&gt;&lt;ul&gt;&lt;?php wp_get_archives('type=monthly'); ?&gt;&lt;/ul&gt;&lt;/li&gt;
 &lt;li&gt;&lt;h2&gt;タグ&lt;/h2&gt;&lt;?php wp_tag_cloud('format=list')?&gt;&lt;/li&gt;
 &lt;/ul&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://scianto.net/archives/2009/02/20233459.php/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://scianto.net/archives/2009/02/20233459.php" />
	</item>
	</channel>
</rss>
