<?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>WEBCreate practice!! &#187; PHP</title>
	<atom:link href="http://study.guidebook.jp/web_create/?cat=4&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://study.guidebook.jp/web_create</link>
	<description>Just another WordPress site</description>
	<lastBuildDate>Wed, 22 May 2013 02:26:09 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://study.guidebook.jp/web_create/?cat=4&amp;feed=rss2" />
		<item>
		<title>WordPressでquery_posts()を使用して取得したデータを初期化する方法</title>
		<link>http://study.guidebook.jp/web_create/?p=429</link>
		<comments>http://study.guidebook.jp/web_create/?p=429#comments</comments>
		<pubDate>Wed, 22 May 2013 02:24:32 +0000</pubDate>
		<dc:creator>masayoshi</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://study.guidebook.jp/web_create/?p=429</guid>
		<description><![CDATA[前回の記事でワードプレスの繰り返しの基本、繰り返しに使用する記事の総数をquery_posts()を使って限定する方法をお伝えしましたが、今回は「wp_reset_query()」を使って取得したデータを一旦リセットする [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://study.guidebook.jp/web_create/?p=411" target="_blank">前回の記事</a>でワードプレスの繰り返しの基本、繰り返しに使用する記事の総数をquery_posts()を使って限定する方法をお伝えしましたが、今回は「<strong>wp_reset_query()</strong>」を使って取得したデータを一旦リセットする方法をお伝えします。<span id="more-429"></span></p>
<p>&nbsp;</p>
<p>例えばこのWEBCreate PRACTICE!!の様にTOPページ以外にもお知らせが出ている様なサイトでは非常に助かる関数となります。具体的にはquery_posts()を使って記事のタイトルを何件か繰り返した後に一件の記事の全文を表示させたい時に使って頂くとかなり便利というやつです。</p>
<p>&nbsp;</p>
<p>WEBCreate PRACTICE!!を例にとってソースを観て行きます。</p>
<p>&nbsp;</p>
<h3><span style="color: #ff0000;">News-feed部分の繰り返しの記述</span></h3>
<p>&nbsp;</p>
<p><a href="http://study.guidebook.jp/web_create/wp-content/uploads/2013/05/wp_2_01.jpg"><img class="aligncenter size-full wp-image-434" alt="wp_2_01" src="http://study.guidebook.jp/web_create/wp-content/uploads/2013/05/wp_2_01.jpg" width="590" height="295" /></a></p>
<pre class="brush: php; title: ; notranslate">
&lt;ul id=&quot;news&quot; class=&quot;ticker&quot;&gt;
 &lt;?php if (query_posts('showposts=4')) : ?&gt;
 &lt;?php while (have_posts()) : the_post(); ?&gt;
 &lt;li&gt;&lt;a href=&quot;&lt;?php the_permalink(); ?&gt;&quot;&gt;&lt;?php the_date(); ?&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/li&gt;
 &lt;?php endwhile; ?&gt;
 &lt;?php endif; ?&gt;
&lt;/ul&gt;
</pre>
<p>ここまでは前回の復習みたいな感じですが、「WEBCreate PRACTICE!!」の場合このままでは問題が発生します。「WEBCreate PRACTICE!!」はTOPページにも単一の投稿にもこのソースを使用しています。なにが起きるかというと単一の記事を表示すると、4件分の記事をすべて表示してしまうんですね。ここで登場するのが「wp_reset_query()」です。</p>
<p>&nbsp;</p>
<h3><span style="color: #ff0000;">wp_reset_query()を使ってquery_posts()を初期化する</span></h3>
<p>&nbsp;</p>
<p>使い方は非常に簡単です。query_posts()をリセットしたい場所にこの記述をするだけです。</p>
<pre class="brush: php; title: ; notranslate">
&lt;ul id=&quot;news&quot;&gt;
 &lt;?php if (query_posts('showposts=4')) : ?&gt;
 &lt;?php while (have_posts()) : the_post(); ?&gt;
 &lt;li&gt;&lt;a href=&quot;&lt;?php the_permalink(); ?&gt;&quot;&gt;&lt;?php the_date(); ?&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/li&gt;
 &lt;?php endwhile; ?&gt;
 &lt;?php endif; ?&gt;
 &lt;?php wp_reset_query(); ?&gt;
&lt;/ul&gt;
</pre>
<p>これでこのあと記事の本文を表示してもquery_posts()の内容は影響しません。<br />
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://study.guidebook.jp/web_create/?feed=rss2&#038;p=429</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://study.guidebook.jp/web_create/?p=429" />
	</item>
		<item>
		<title>WordPressで記事の繰り返しの件数を指定する!!</title>
		<link>http://study.guidebook.jp/web_create/?p=411</link>
		<comments>http://study.guidebook.jp/web_create/?p=411#comments</comments>
		<pubDate>Fri, 17 May 2013 00:59:00 +0000</pubDate>
		<dc:creator>masayoshi</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://study.guidebook.jp/web_create/?p=411</guid>
		<description><![CDATA[いやもーほんとに、WordPressやるのなら誰でも知ってる基礎中の基礎なんですけど、例えばTOPページにお知らせの項目があって記事のタイトルを最新記事から3件だけ表示させたいとか、そんな場面で使えるロジックを今回はご紹 [...]]]></description>
				<content:encoded><![CDATA[<p>いやもーほんとに、WordPressやるのなら誰でも知ってる基礎中の基礎なんですけど、例えばTOPページにお知らせの項目があって記事のタイトルを最新記事から3件だけ表示させたいとか、そんな場面で使えるロジックを今回はご紹介です。<span id="more-411"></span><br />
&nbsp;<br />
それじゃあまず最終的には↓↓みたいな感じで記事を投稿したら新しい記事のタイトルが先頭に来て・・・というのを仕上がり目標にしましょう。<br />
&nbsp;<br />
<a href="http://study.guidebook.jp/web_create/wp-content/uploads/2013/05/wp_1_01.jpg"><img class="aligncenter size-full wp-image-412" alt="wp_1_01" src="http://study.guidebook.jp/web_create/wp-content/uploads/2013/05/wp_1_01.jpg" width="590" height="295" /></a><br />
&nbsp;<br />
それじゃあ、ここでWordPressの記事の繰り返しの基本です。<br />
&nbsp;</p>
<h3><span style="color: #ff0000;">WPの記事繰り返しの基本形</span></h3>
<p>&nbsp;</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php if (have_posts()) : ?&gt;
  &lt;?php while (have_posts()) : the_post();?&gt;
    /*ここに書かれた内容が記事の数だけ繰り返し*/
  &lt;?php endwhile; ?&gt;&lt;?php else : ?&gt;
    /*繰り返す記事が無い場合ここに書かれた内容が表示される*/
&lt;?php endif; ?&gt;
</pre>
<p>&nbsp;<br />
この記述がWPの繰り返しの基本構文です。じゃあ、実際に投稿記事のタイトルが表示されるように記述を追加します。<br />
&nbsp;</p>
<h3><span style="color: #ff0000;">投稿記事のタイトルが繰り返される様に記述を追加</span></h3>
<p>&nbsp;</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php if (have_posts()) : ?&gt;
  &lt;?php while (have_posts()) : the_post();?&gt;
    &lt;a href=&quot;&lt;?php the_permalink(); ?&gt;&quot;&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;
  &lt;?php endwhile; ?&gt;&lt;?php else : ?&gt;
    &lt;div&gt;残念ながら記事が見つかりません。&lt;/div&gt;
&lt;?php endif; ?&gt;
</pre>
<p>&nbsp;<br />
<strong>the_permalink()</strong>はタイトルに対応する詳細記事のURLを取得する関数で、<strong>the_title()</strong>は記事のタイトルを取得する関数になります。<br />
&nbsp;<br />
実際に編集しながらやっている方はお分かりだと思うんですが、この書き方だと<span style="color: #ff0000;">記事の数だけ繰り返し＝全記事のタイトル</span>となってしまい。全ての投稿記事のタイトルが出てきちゃいます。そこで登場するのが<strong>query_posts()関数</strong>です。これを使用すると最新記事から何件だけなどの条件を付けることが可能となります。じゃあ実際に最新3件しか表示されない様に変更しましょう。<br />
&nbsp;</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php query_posts('showposts=3'); ?&gt;
&lt;?php if (have_posts()) : ?&gt;
  &lt;?php while (have_posts()) : the_post();?&gt;
    &lt;a href=&quot;&lt;?php the_permalink(); ?&gt;&quot;&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;
  &lt;?php endwhile; ?&gt;&lt;?php else : ?&gt;
    &lt;div&gt;残念ながら記事が見つかりません。&lt;/div&gt;
&lt;?php endif; ?&gt;
</pre>
<p>&nbsp;<br />
このように記述をすれば最新3件のみのタイトルが表示されるようになります。ちなみにquery_posts(&#8216;showposts=○&#8217;)の○の中の数字が取り出したい記事の件数になります。<br />
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://study.guidebook.jp/web_create/?feed=rss2&#038;p=411</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://study.guidebook.jp/web_create/?p=411" />
	</item>
		<item>
		<title>PHPを使ってクロスブラウザ+デバイス</title>
		<link>http://study.guidebook.jp/web_create/?p=67</link>
		<comments>http://study.guidebook.jp/web_create/?p=67#comments</comments>
		<pubDate>Sat, 27 Apr 2013 04:00:19 +0000</pubDate>
		<dc:creator>masayoshi</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://study.guidebook.jp/web_create/?p=67</guid>
		<description><![CDATA[メディアクエリを使ってデバイスの幅でCSSを切り替えるレスポンシブデザイン。素敵ですよね・・・。僕もリキッドレイアウトでサイトを作ってみたいなと思うものの、なかなか時間が取れず取り組めてないです。今回はそんなレスポンシブ [...]]]></description>
				<content:encoded><![CDATA[<p>メディアクエリを使ってデバイスの幅でCSSを切り替えるレスポンシブデザイン。素敵ですよね・・・。僕もリキッドレイアウトでサイトを作ってみたいなと思うものの、なかなか時間が取れず取り組めてないです。今回はそんなレスポンシブデザインとは違う、昔ながらのPHPでユーザーエージェント情報を取得してクロスブラウザなりデバイスを実現する手法をご紹介しようと思います。<span id="more-67"></span><br />
&nbsp;<br />
まずは肝心なユーザーエージェント情報ですが<a href="http://study.guidebook.jp/php_new_s/close.php">こちらのページ</a>をご覧になってください。ページの上部に、<br />
&nbsp;<br />
<strong>Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31</strong><br />
（※上記はウインドウズのPCかつクロームで閲覧した場合です）<br />
&nbsp;<br />
という文字列が出てくると思います。もちろん見る人の環境によって文字列の中身は変わります。これがユーザーエージェント情報です。この文字列の中身をPHPで判別して行くわけです。では早速ユーザー情報を取得してみましょう。</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
echo getenv(&quot;HTTP_USER_AGENT&quot;);
?&gt;
</pre>
<p>または</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
echo $_SERVER['HTTP_USER_AGENT'];
?&gt;
</pre>
<p>この記述をPHPファイルの&lt;body&gt;の中に記述してください。そして、サーバーにUPして確認をしていただくと先ほどのようなユーザーエージェント情報が出てくると思います。<br />
ちなみに、書き方は違いますがjavaScriptでもユーザーエージェント情報は取得できます。ただ、このままの状態では単に情報を表示させているだけなので今回はPCサイトを<br />
&nbsp;<br />
<strong>PCで閲覧→PCサイトを表示</strong><br />
<strong>スマホで閲覧→スマホサイトを表示</strong><br />
&nbsp;<br />
という振り分けをしていこうと思います。今回はgetenv()を使用します。PCサイトのindex.phpに下記の記述を加えてください。<br />
<span style="color: #ff0000;">(※ここ以下のPHPの記述はHTMLのソースコードより必ず上に記述してください。先ほどの&lt;body&gt;の中の記述は消していただいて大丈夫です。)</span><br />
&nbsp;</p>
<h2>PCサイトにスマホでアクセスしたらスマホサイトに飛ばす</h2>
<pre class="brush: php; title: ; notranslate">
&lt;?php
$agent = getenv(&quot;HTTP_USER_AGENT&quot;);
if (mb_ereg(&quot;iPhone&quot;, $agent) or mb_ereg(&quot;iPad&quot;, $agent) or mb_ereg(&quot;Android&quot;, $agent)) {
  header('Location: スマホサイトへのファイルのパス');
  exit();
}
?&gt;
</pre>
<p>上記のコードの「スマホサイトへのファイルのパス」の部分を書き換えてください。ちなみに絶対パスでも相対パスでもどちらでも構わないです。<br />
では今度は逆にスマホサイトにPCでアクセスしてきたらPCサイトを表示するようにしていきます。スマホサイトのindex.phpに下記の記述を追加してください。<br />
<span style="color: #ff0000;">(※ここ以下のPHPの記述も必ずHTMLのソースコードより上に記述してください。)</span><br />
&nbsp;</p>
<h2>スマホサイトにPCでアクセスしたらPCサイトに飛ばす</h2>
<pre class="brush: php; title: ; notranslate">
&lt;?php
$agent = getenv(&quot;HTTP_USER_AGENT&quot;);
if (!(mb_ereg(&quot;iPhone&quot;, $agent) or mb_ereg(&quot;iPad&quot;, $agent) or mb_ereg(&quot;Android&quot;, $agent))) {
  header('Location: PCサイトへのファイルのパス');
  exit();
}
?&gt;
</pre>
<p>上記のコードもPCサイトと同じようにパスを自分の環境に合わせて書き換えてください。<br />
最後に赤文字で何回もHTMLのコードより上に書いてくださいと言っている理由と「HTMLより上に書く」のサンプルコードを書いておきます。<br />
&nbsp;<br />
今回のPHPの記述はheader()というPHPの関数を使用しています。この関数は強制的に別ページにユーザーを飛ばす力を持っています。HTMLのコードが上から順番にブラウザに読まれるのと同じようにPHPのコードも上から順番に読まれます。<br />
今回の記述はユーザーエージェント情報に「iphone」「ipad」「Android」という文字列が入っていたらスマホサイトまで飛ばしているわけです。要するに<strong>HTMLのコードが読まれる前にPHPの記述が読まれなければいけない訳です。</strong></p>
<p>ではサンプルを最後に・・・。</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
$agent = getenv(&quot;HTTP_USER_AGENT&quot;);
if (!(mb_ereg(&quot;iPhone&quot;, $agent) or mb_ereg(&quot;iPad&quot;, $agent) or mb_ereg(&quot;Android&quot;, $agent))) {
  header('Location: PCサイトへのファイルのパス');
  exit();
}
?&gt;
&lt;!DOCTYPE HTML&gt;
&lt;html lang=&quot;ja&quot;&gt;
&lt;head&gt;
~以下略~
</pre>
]]></content:encoded>
			<wfw:commentRss>http://study.guidebook.jp/web_create/?feed=rss2&#038;p=67</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://study.guidebook.jp/web_create/?p=67" />
	</item>
	</channel>
</rss>
