<?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/"
	>

<channel>
	<title>片っ端からメモってみる &#187; WordPress</title>
	<atom:link href="http://www.parlia.net/weblog/post/category/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.parlia.net/weblog</link>
	<description>Linuxサーバ構築やその他もろもろの備忘録</description>
	<lastBuildDate>Mon, 20 Jul 2009 03:54:19 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>WordPressで更新日時を表示する</title>
		<link>http://www.parlia.net/weblog/post/524.html/</link>
		<comments>http://www.parlia.net/weblog/post/524.html/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 15:42:47 +0000</pubDate>
		<dc:creator>alte</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.parlia.net/weblog/?p=524</guid>
		<description><![CDATA[ループ内で the_modified_date() や the_modified_time() を使って更新日時が取得できる。

公開日と更新日が違う場合だけ表示するように、テンプレートに以下を追加する。
&#60;?ph [...]]]></description>
			<content:encoded><![CDATA[<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/the_modified_date">the_modified_date()</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/the_modified_time">the_modified_time()</a> を使って更新日時が取得できる。<br />
<span id="more-524"></span><br />
公開日と更新日が違う場合だけ表示するように、テンプレートに以下を追加する。</p>
<pre>&lt;?php if (get_the_modified_date('Y-m-d') != get_the_time('Y-m-d')) : ?&gt;
  更新: &lt;?php the_modified_date('') ?&gt;
&lt;?php endif; ?&gt;</pre>
<h2>更新日時順に記事を取得する</h2>
<p><a href="http://codex.wordpress.org/Template_Tags/get_posts">get_posts()</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/get_posts">日本語版</a>はorderbyのパラメータが間違っているみたい）でパラメータに「orderby=modified」を指定すると、更新日時順に記事を取得できる。</p>
<pre>
&lt;?php foreach(get_posts('orderby=modified') as $post) : ?&gt;
  &lt;a href="&lt;?php the_permalink() ?&gt;"&gt;&lt;?php the_title(); ?&gt; [&lt;?php the_modified_date("n/j"); ?&gt;]&lt;/a&gt;
&lt;?php endforeach; ?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.parlia.net/weblog/post/524.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPressのサイト内検索に検索向けAdSenseを使う</title>
		<link>http://www.parlia.net/weblog/post/375.html/</link>
		<comments>http://www.parlia.net/weblog/post/375.html/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 14:39:48 +0000</pubDate>
		<dc:creator>alte</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.parlia.net/weblog/?p=375</guid>
		<description><![CDATA[Googleの検索向けAdSenseの検索結果をWordPressのページで表示できるようにする。
参考 WordPressに検索向けAdsenseを設置する

検索向けAdSenseのコードを取得する
Google A [...]]]></description>
			<content:encoded><![CDATA[<p>Googleの検索向けAdSenseの検索結果をWordPressのページで表示できるようにする。<br />
参考 <a href="http://www.zubapita.jp/2008/02/26/wordpress%e3%81%ab%e6%a4%9c%e7%b4%a2%e5%90%91%e3%81%91adsense%e3%82%92%e8%a8%ad%e7%bd%ae%e3%81%99%e3%82%8b/">WordPressに検索向けAdsenseを設置する</a><br />
<span id="more-375"></span></p>
<h2>検索向けAdSenseのコードを取得する</h2>
<p><a href="http://www.google.com/adsense">Google Adsense</a> で検索向けAdSenseの設定をする。</p>
<ul>
<li>「検索タイプ」を自サイト(www.parlia.net)のみにする。</li>
<li>「検索結果ページを開く」で検索結果を表示するURL(http://www.parlia.net/weblog/search_adsense)を設定。</li>
<li>「検索ボックスのコード」と「検索結果のコード」を取得。</li>
</ul>
<h2>検索ボックスのコードを追加する</h2>
<p>sidebar.phpに検索ボックスのコードを追加。検索した語句がテキストボックスに表示されるように修正した。</p>
<pre>&lt;form action="http://www.parlia.net/weblog/search_adsense" id="cse-search-box"&gt;
  &lt;div&gt;
    &lt;input type="hidden" name="cx" value="partner-pub-5527588753240491:yhfy0aoxcm5" /&gt;
    &lt;input type="hidden" name="cof" value="FORID:11" /&gt;
    &lt;input type="hidden" name="ie" value="UTF-8" /&gt;
    &lt;input type="text" name="q" size="20" class="text" value="<span style="color: #00ffff;">&lt;?php echo attribute_escape(stripslashes($_GET['q'])) ?&gt;</span>" /&gt;
    &lt;input type="submit" name="sa" class="button" value="&amp;#x691c;&amp;#x7d22;" /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&amp;amp;lang=ja"&gt;&lt;/script&gt;</pre>
<h2>検索結果を表示するページの作成</h2>
<p>管理画面でページを作成。パーマリンクをコード取得するときに設定した検索結果を表示するURL(search_adsense)にする。本文に検索結果のコードを貼り付ける。<br />
<a href="http://www.parlia.net/weblog/wp-content/uploads/2008/11/searchresult.png" rel="lightbox[375]"><img title="検索結果ページの作成" src="http://www.parlia.net/weblog/wp-content/uploads/2008/11/searchresult-300x215.png" alt="" width="300" height="215" /></a></p>
<p>ページ一覧に検索結果のページ名が表示されないように修正が必要。<br />
修正方法は使っているテーマによるが、<a href="http://www.plaintxt.org/themes/sandbox/">Sandbox</a>ではサイト上部にページ一覧が表示されるので、functions.phpを修正する。wp_list_pagesの引数にexclude=354(検索結果のページのPages ID)を追加する。</p>
<pre>// Produces a list of pages in the header without whitespace
function sandbox_globalnav() {
 if ( $menu = str_replace( array( "\r", "\n", "\t" ), '', wp_list_pages('title_li=&amp;sort_column=menu_order&amp;echo=0<span style="color: #00ffff;">&amp;exclude=354</span>') ) )
  $menu = '&lt;ul&gt;' . $menu . '&lt;/ul&gt;';
 $menu = '&lt;div id="menu"&gt;' . $menu . "&lt;/div&gt;\n";
 echo apply_filters( 'globalnav_menu', $menu ); // Filter to override default globalnav: globalnav_menu
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.parlia.net/weblog/post/375.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPressの投稿リビジョンの数を制限する</title>
		<link>http://www.parlia.net/weblog/post/367.html/</link>
		<comments>http://www.parlia.net/weblog/post/367.html/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 15:10:26 +0000</pubDate>
		<dc:creator>alte</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.parlia.net/weblog/?p=367</guid>
		<description><![CDATA[wp-config.phpに以下を追加。

define ('WP_POST_REVISIONS', 5);


WP_POST_REVISIONSのオプション。Revision Management



true ( [...]]]></description>
			<content:encoded><![CDATA[<p>wp-config.phpに以下を追加。</p>
<pre>
define ('WP_POST_REVISIONS', 5);
</pre>
<p><span id="more-367"></span><br />
WP_POST_REVISIONSのオプション。<a href="http://codex.wordpress.org/Revision_Management">Revision Management</a></p>
<table border="0">
<tbody>
<tr>
<td>true (default), -1</td>
<td>すべてのリビジョンを保存。</td>
</tr>
<tr>
<td>false, 0</td>
<td>リビジョンを保存しない。(オートセーブは1つだけ保存)</td>
</tr>
<tr>
<td>(int) &gt; 0</td>
<td>intの数のリビジョンとオートセーブ1つを保存。古いリビジョンは自動で削除する。</td>
</tr>
</tbody>
</table>
<h2>投稿リビジョンを手動で削除する</h2>
<p>上記の設定をしても削除をするのは投稿を保存したときなので、SQLコマンドですべての投稿リビジョンを削除する。</p>
<pre>DELETE FROM wp_posts WHERE post_type = 'revision';</pre>
<p>wp-config.phpで$table_prefixを変更している場合はテーブル名を変更する必要がある。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.parlia.net/weblog/post/367.html/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>eAccelerator for WordPress を使う</title>
		<link>http://www.parlia.net/weblog/post/298.html/</link>
		<comments>http://www.parlia.net/weblog/post/298.html/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 13:36:11 +0000</pubDate>
		<dc:creator>alte</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.parlia.net/weblog/?p=298</guid>
		<description><![CDATA[eAccelerator for WordPress はWordPressがHTMLを生成する際のPHPの変数をeAcceleratorにキャッシュさせようというもの。詳しい説明は http://wordpress.ra [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://neosmart.net/dl.php?id=13">eAccelerator for WordPress</a> はWordPressがHTMLを生成する際のPHPの変数をeAcceleratorにキャッシュさせようというもの。詳しい説明は <a href="http://wordpress.rauru-block.org/index.php/1582">http://wordpress.rauru-block.org/index.php/1582</a> を参照。<a href="http://neosmart.net/dl.php?id=12">XCache用</a>や<a href="http://txfx.net/files/wordpress/apc-object-cache.phps">APC用</a>もある。<br />
<span id="more-298"></span></p>
<h2>eAcceleratorのビルド</h2>
<p>eAcceleratorのeaccelerator_getなどの変数キャッシュの関数を使えるようにしなければならない。<a href="http://www.parlia.net/weblog/post/263.html">前回</a>のconfigureオプションでは有効になっていないので、もう一度ビルドする。</p>
<p>configureオプションで--with-eaccelerator-shared-memoryが必要。</p>
<pre>$ tar jxvf eaccelerator-0.9.5.3.tar.bz2
$ cd eaccelerator-0.9.5.3/
$ phpize
$ ./configure --enable-eaccelerator --with-eaccelerator-shared-memory
$ make
$ sudo make install</pre>
<h2>eAccelerator for WordPress のインストール</h2>
<p><a href="http://neosmart.net/dl.php?id=13">eAccelerator for WordPress</a>をダウンロードして、展開する。展開してできたobject-cache.phpをwp-contentディレクトリ直下に置く。pluginsディレクトリではないので注意。</p>
<p>速度は変わっていないが、MySQLへのクエリ数は大幅に減った。もともとMySQLのキャッシュが効いていたのだと思う。</p>
<h2>管理画面でプラグインを反映するようにする</h2>
<p>eAccelerator for WordPressを使っていると、プラグインを追加しても、管理画面に反映されない。</p>
<p>wp-admin/includes/plugin.phpを修正して、プラグインの取得にキャッシュを使わないようにする。</p>
<pre>$ diff -u wp-admin/includes/plugin.php.orig wp-admin/includes/plugin.php
--- wp-admin/includes/plugin.php.orig   2008-09-09 21:16:00.000000000 +0900
+++ wp-admin/includes/plugin.php        2008-09-24 22:04:32.000000000 +0900
@@ -33,7 +33,7 @@

 function get_plugins($plugin_folder = '') {

-       if ( ! $cache_plugins = wp_cache_get('plugins', 'plugins') )
+//     if ( ! $cache_plugins = wp_cache_get('plugins', 'plugins') )
                $cache_plugins = array();

        if ( isset($cache_plugins[ $plugin_folder ]) )</pre>
<p><strong>[12/13 追記]</strong><br />
WordPressをアップグレードする度にplugin.phpを変更しなければならないので、object-cache.phpを修正して対応することにした。</p>
<pre>
$ diff -uw object-cache.php.orig object-cache.php
--- object-cache.php.orig       2007-10-28 06:56:08.000000000 +0900
+++ object-cache.php    2008-12-13 23:33:36.000000000 +0900
@@ -47,6 +47,9 @@

 function wp_cache_get($id, $flag = '')
 {
+       if ($id == 'plugins')
+               return false;
+
        global $wp_object_cache;

        return $wp_object_cache->get($id, $flag);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.parlia.net/weblog/post/298.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Counterize II でWordPressにカウンタを表示する</title>
		<link>http://www.parlia.net/weblog/post/121.html/</link>
		<comments>http://www.parlia.net/weblog/post/121.html/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 14:31:17 +0000</pubDate>
		<dc:creator>alte</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.parlia.net/weblog/?p=121</guid>
		<description><![CDATA[WordPressにカウンタをつけたかったので、Counterize IIをいれてみた。簡単なアクセス解析ができるプラグインみたい。

http://wordpress.org/extend/plugins/counte [...]]]></description>
			<content:encoded><![CDATA[<p>WordPressにカウンタをつけたかったので、Counterize IIをいれてみた。簡単なアクセス解析ができるプラグインみたい。<br />
<span id="more-121"></span><br />
<a href="http://wordpress.org/extend/plugins/counterizeii/">http://wordpress.org/extend/plugins/counterizeii/</a> からダウンロードして、pluginsディレクトリに展開する。counterize-ja_UTF.mo を counterize-ja.mo にリネームして設定画面を日本語表示にする。</p>
<h2>関数をいろいろ追加する</h2>
<p>昨日のアクセス数も表示できるように <a href="http://oboegaki.net/wordpress/plugin/counterize-ii.html">http://oboegaki.net/wordpress/plugin/counterize-ii.html</a> を参考にcounterize.phpに以下の関数を追加する。</p>
<pre># Returns amount of hits yesterday
function counterize_gethitsyesterday()
{
	$today = date("Y-m-d");
	$yesterday = date("Y-m-d",strtotime("-1 day"));
	$sql = "SELECT COUNT(1) FROM ".counterize_logTable()." WHERE timestamp &gt;= '$yesterday' AND timestamp &lt; '$today'";
	$wpdb =&amp; $GLOBALS['wpdb'];
	return $wpdb-&gt;get_var($sql);
}</pre>
<p>ユニークなIPアドレスからのアクセス数も表示できるようにしておこう。</p>
<pre># Returns amount of unique hits yesterday
function counterize_getuniquehitsyesterday()
{
	$today = date("Y-m-d");
	$yesterday = date("Y-m-d",strtotime("-1 day"));
	$sql = "SELECT count(DISTINCT ip) FROM ".counterize_logTable()." WHERE timestamp &gt;= '$yesterday' AND timestamp &lt; '$today'";
	$wpdb =&amp; $GLOBALS['wpdb'];
	return $wpdb-&gt;get_var($sql);
}</pre>
<p>トータルのユニークなヒット数(日にちが違えば同じIPアドレスでも別カウントとして数える)を表示する関数。</p>
<pre># Returns amount of unique hits total
function counterize_getuniquehitstotal()
{
	$sql = 'SELECT count(DISTINCT ip,date(timestamp)) FROM ' . counterize_logTable();
	$wpdb =&amp; $GLOBALS['wpdb'];
	return $wpdb-&gt;get_var($sql);
}</pre>
<p> <br />
sideber.phpあたりに以下を追加して実際に表示させる。</p>
<pre>&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;br /&gt;&lt;/td&gt;
      &lt;td&gt;Unique&lt;/td&gt;
      &lt;td&gt;Hits&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;今日&lt;/td&gt;
      &lt;td&gt;&lt;?php echo number_format(counterize_getuniquehitstoday()); ?&gt;&lt;/td&gt;
      &lt;td&gt;&lt;?php echo number_format(counterize_gethitstoday()); ?&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;昨日&lt;/td&gt;
      &lt;td&gt;&lt;?php echo number_format(counterize_getuniquehitsyesterday()); ?&gt;&lt;/td&gt;
      &lt;td&gt;&lt;?php echo number_format(counterize_gethitsyesterday()); ?&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;累計&lt;/td&gt;
      &lt;td&gt;&lt;?php echo number_format(counterize_getuniquehitstotal()); ?&gt;&lt;/td&gt;
      &lt;td&gt;&lt;?php echo number_format(counterize_getamount()); ?&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;</pre>
<p><strong>[12/2 追記]</strong><br />
現在の訪問者（アクセスから5分以内）の数を表示するには以下の関数を使う。</p>
<pre>counterize_get_online_users();</pre>
<h2>管理画面でIPアドレスを表示させる</h2>
<p>Counterize II ではDBにIPアドレスを記録しているかと思ったら、md5のハッシュ値を記録しているだけだった。</p>
<p>IPアドレスをそのまま記録するように修正する。</p>
<pre>$ diff -u counterize.php.orig counterize.php

@@ -781,7 +808,8 @@

                $wpdb =&amp; $GLOBALS['wpdb'];
                $sql = "INSERT INTO ".counterize_logTable()." (IP, timestamp, pageID, refererID, agentID) VALUES (";
-               $sql .= "'" . substr(md5($wpdb-&gt;escape($remoteaddr)),1,16) . "',";
+//             $sql .= "'" . substr(md5($wpdb-&gt;escape($remoteaddr)),1,16) . "',";
+               $sql .= "'" . $wpdb-&gt;escape($remoteaddr) . "',";
                $sql .= "'" . $timestamp . "', '";
                $sql .= $pageID . "', '";
                $sql .= $refererID . "', '";</pre>
<p>管理画面にIPアドレスを表示するように修正する。</p>
<pre>@@ -1098,6 +1126,7 @@
                &lt;td scope="col" width="2%"&gt;&lt;strong&gt;&lt;?php _e("del",'counterize'); ?&gt;&lt;/strong&gt;&lt;/td&gt;
                &lt;td scope="col" width="6%"&gt;&lt;strong&gt;&lt;?php _e("ID",'counterize'); ?&gt;&lt;/strong&gt;&lt;/td&gt;
                &lt;td scope="col" style="width: 14%"&gt;&lt;strong&gt;&lt;?php _e("Timestamp",'counterize'); ?&gt;&lt;/strong&gt;&lt;/td&gt;
+               &lt;td scope="col" style="width: 10%"&gt;&lt;strong&gt;&lt;?php _e("IP",'counterize'); ?&gt;&lt;/strong&gt;&lt;/td&gt;
                &lt;td scope="col" style="width: 20%"&gt;&lt;strong&gt;&lt;?php _e("URl",'counterize'); ?&gt;&lt;/strong&gt;&lt;/td&gt;
                &lt;td scope="col" style="width: 31%"&gt;&lt;strong&gt;&lt;?php _e("Referer",'counterize'); ?&gt;&lt;/strong&gt;&lt;/td&gt;
                &lt;td scope="col" style="width: 10%"&gt;&lt;strong&gt;&lt;?php _e("UserAgent",'counterize'); ?&gt;&lt;/strong&gt;&lt;/td&gt;
@@ -1115,6 +1144,7 @@
                        value="&lt;?php echo $entry-&gt;id; ?&gt;" /&gt;&lt;/td&gt;
                &lt;td&gt;&lt;?php echo $entry-&gt;id; ?&gt;&lt;/small&gt;&lt;/td&gt;
                &lt;td scope="col" width="14%"&gt;&lt;small&gt;&lt;?php echo $entry-&gt;timestamp; ?&gt; &lt;/small&gt;&lt;/td&gt;
+               &lt;td scope="col" width="10%"&gt;&lt;small&gt;&lt;?php echo $entry-&gt;ip; ?&gt; &lt;/small&gt;&lt;/td&gt;
                &lt;td scope="col" width="25%"&gt;&lt;small&gt;&lt;?php echo "&lt;a href=\"" . $entry-&gt;url . "\"&gt;" . wordwrap($entry-&gt;url, 30, "\n", 1); ?&gt;
                &lt;/a&gt; (&lt;a
                        href="edit.php?page=counterizeii/counterize.php&amp;urifilter=&lt;?php echo $entry-&gt;url; ?&gt;"&gt;F&lt;/a&gt;)&lt;/small&gt;&lt;/td&gt;</pre>
<p><strong>[12/2 追記]</strong><br />
プラグインを再び有効にしたときに、IPをmd5化しないように修正。</p>
<pre>$ diff -u counterize_install.php.orig counterize_install.php

@@ -179,11 +179,13 @@
     $wpdb-&gt;query($sql);
   }

+/*
   if($minorVersion &lt; 13)
   {
     $sql = "UPDATE `".counterize_logTable()."` set IP=MD5(IP);" ;
     $wpdb-&gt;query($sql);
   }
+*/

   // Set new Version
   update_option('counterize_MajorVersion',2);</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.parlia.net/weblog/post/121.html/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>
