<?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>鉄王 &#187; WordPress</title>
	<atom:link href="http://www.tecking.org/archives/category/web/wordpress/feed" rel="self" type="application/rss+xml" />
	<link>http://www.tecking.org</link>
	<description>身のまわりの雑事いろいろ。たまに毒吐き。</description>
	<lastBuildDate>Thu, 22 Dec 2011 05:15:21 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tecking.org/archives/category/web/wordpress/feed" />
		<item>
		<title>任意団体名で口座を開設する（ゆうちょ銀行編）</title>
		<link>http://www.tecking.org/archives/2622</link>
		<comments>http://www.tecking.org/archives/2622#comments</comments>
		<pubDate>Thu, 22 Dec 2011 04:31:13 +0000</pubDate>
		<dc:creator>tecking</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordBench]]></category>
		<category><![CDATA[コミュニティ運営]]></category>
		<category><![CDATA[会計]]></category>

		<guid isPermaLink="false">http://www.tecking.org/?p=2622</guid>
		<description><![CDATA[2012年1月21日開催予定のWordBench福井のイベント『WordCrab Fukui 2012』。参加費の集金用に、WordBench福井名義のゆうちょ口座を開設したところ、なんだかやたらとFacebook上での反応が良かったので、その開設方法を解説したいと思います……ってどーでもいいシャレですみません 任意団体名義での口座開設というとハードルが高いようですが、ゆうちょ銀行についていうとそうでもないみたいです。WordBench福井の前に、別の団体の口座も同じような方法で開設しているので、ほぼこの手順で問題ないでしょう。 団体の規約を作る 代表者個人の印鑑と身分証明書を用意する 代表者と会計担当者が別の場合は、会計担当者の印鑑と身分証明書を用意する 1～3を持って郵便局に行く ほぼ唯一の作業といっていいのは1.の規約作成です。といっても難しいものをつくる必要はなく、私の場合はA4判2枚の規約を作ってOKでした。参考になれば……ということで、提出した規約をもとにOpenDocument形式のテンプレートをつくりましたので、ご利用いただければと思います（一応PDF形式のファイルもダウンロードできるようにしました）。 なお、規約については一発OKが出ず何度か修正を求められるケースもあるので、口座開設手続きは最寄りの郵便局でやったほうがよいでしょうね。]]></description>
			<content:encoded><![CDATA[<p><a title="こんな感じで団体名義の口座を作りました" href="http://www.tecking.org/wordpress/wp-content/uploads/2011/12/wordbench.jpg" rel="shadowbox[2622]"><img src="http://www.tecking.org/wordpress/wp-content/uploads/2011/12/wordbench-400x300.jpg" alt="" title="こんな感じで団体名義の口座を作りました" width="400" height="300" class="alignnone size-medium wp-image-2625" /></a></p>
<p>2012年1月21日開催予定のWordBench福井のイベント『<a href="http://fukui.wordbench.org/archives/168" target="_blank">WordCrab Fukui 2012</a>』。参加費の集金用に、WordBench福井名義のゆうちょ口座を開設したところ、なんだかやたらとFacebook上での反応が良かったので、その開設方法を解説したいと思います……ってどーでもいいシャレですみません <img src='http://www.tecking.org/wordpress/wp-includes/images/smilies/icon_neutral.gif' alt=':-|' class='wp-smiley' /> </p>
<p><span id="more-2622"></span>任意団体名義での口座開設というとハードルが高いようですが、ゆうちょ銀行についていうとそうでもないみたいです。WordBench福井の前に、別の団体の口座も同じような方法で開設しているので、ほぼこの手順で問題ないでしょう。</p>
<ol>
<li>団体の規約を作る</li>
<li>代表者個人の印鑑と身分証明書を用意する</li>
<li>代表者と会計担当者が別の場合は、会計担当者の印鑑と身分証明書を用意する</li>
<li>1～3を持って郵便局に行く</li>
</ol>
<p>ほぼ唯一の作業といっていいのは1.の規約作成です。といっても難しいものをつくる必要はなく、私の場合はA4判2枚の規約を作ってOKでした。参考になれば……ということで、提出した規約をもとにOpenDocument形式のテンプレートをつくりましたので、ご利用いただければと思います（一応PDF形式のファイルもダウンロードできるようにしました）。</p>
<p>なお、規約については一発OKが出ず何度か修正を求められるケースもあるので、口座開設手続きは最寄りの郵便局でやったほうがよいでしょうね。</p>
<p><a href="http://www.tecking.org/wordpress/wp-content/plugins/download-monitor/download.php?id=7">規約テンプレート（OpenDocument形式）</a><br />
<a href="http://www.tecking.org/wordpress/wp-content/plugins/download-monitor/download.php?id=8">規約テンプレート（PDF形式）</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecking.org/archives/2622/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tecking.org/archives/2622" />
	</item>
		<item>
		<title>functions.phpの変更が反映されないときの点検項目（APC編）</title>
		<link>http://www.tecking.org/archives/2532</link>
		<comments>http://www.tecking.org/archives/2532#comments</comments>
		<pubDate>Sun, 02 Oct 2011 14:54:51 +0000</pubDate>
		<dc:creator>tecking</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[文系鯖缶日誌]]></category>
		<category><![CDATA[10.04]]></category>
		<category><![CDATA[APC]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[plug-in]]></category>
		<category><![CDATA[子テーマ]]></category>

		<guid isPermaLink="false">http://www.tecking.org/?p=2532</guid>
		<description><![CDATA[グーグル先生もこれといった答えを教えてくださらず、試行錯誤で1時間以上にわたりハマったのでメモ。 このところのVPSの低料金化で、重ったらしい共用サーバからVPSに乗り換えてWordPressを稼働させている方も多いかと思います。かくいう私もVPS（『さくらのVPS512』）に乗り換えて、当サイト含め3つのサイトを稼働させています。 PHPアクセラレータによる高速化 さて、せっかくVPSでWordPressを稼働させるのであれば、さまざまなワザを使って高速化を図りたいもの。その一つとして人気が高い（というか定番）のが、PHPアクセラレータを導入するという手法です。私が導入しているPHPアクセラレータ『APC』のサイトにはこう書かれています。 Alternative PHP Cache (APC) は、PHP の実行コードをキャッシュする仕組みで、 フリーかつオープンに使用できます。PHP の中間コードのキャッシュ・最適化を行うための、 フリーでオープンかつ堅牢なフレームワークを提供するということを目標としています。 意訳すると、PHPスクリプト（WordPressでいうとコアファイルやテーマファイル、プラグインなど *.php という名のファイル群）を、サーバがより高速に処理できる状態（バイトコードという）に変換し、メモリ上に蓄えておく仕組み。以降、同じPHPスクリプトを実行するときには変換後のバイトコードを使いまわすため、高速化が図れるというわけです。 で、何が起きた？ このメリットが実は落とし穴でした。WordPressのテーマディレクトリにある functions.php をいくらいじってもサイトに反映されないのです。 WordPressの利点として「PHPスクリプトをトライアンドエラーで修正しながらサイトを構築できる」があると思います。某CMSのように「再構築」という面倒きわまりない手順を踏まなくても、PHPスクリプトをちょっと書いて実行して、また修正して……が簡単にできる。すばらしい。 ところが、PHPアクセラレータを使っていると、PHPスクリプトの修正がすぐには反映されません。コンパイルされたバイトコードがメモリ上に残っていると、PHPスクリプトを修正しようが中身がからっぽになろうが、ゾンビのようにバイトコードが実行されてしまうのです。 例えば、当方の環境（Ubuntu 10.04 i386）におけるAPCの設定ファイル /etc/php5/apache2/conf.d/apc.ini にはこんな記述があります。 apc.gc_ttl=3600 これは、PHPスクリプトが変更されても3600秒間は変更前の古いバージョンでコンパイルしたバイトコードを使い続けるという設定です。なので functions.php をいくらいじってもサイトに反映されなかったというわけ（1時間待てば反映されるんですけどね…… ） 前振りが長くなりましたが対処法 APCを導入していて、かつ、テーマのテンプレートファイルや functions.php を変更する必要が出てきたら、一時的にAPCを停止させるのがいいでしょう。 /etc/php5/apache2/conf.d/apc.ini をエディタで開き -apc.enabled=1 +apc.enabled=0 &#8230; <a href="http://www.tecking.org/archives/2532">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>グーグル先生もこれといった答えを教えてくださらず、試行錯誤で1時間以上にわたりハマったのでメモ。</p>
<p>このところのVPSの低料金化で、重ったらしい共用サーバからVPSに乗り換えてWordPressを稼働させている方も多いかと思います。かくいう私もVPS（『さくらのVPS512』）に乗り換えて、当サイト含め3つのサイトを稼働させています。<br />
<span id="more-2532"></span><br />
<h2>PHPアクセラレータによる高速化</h2>
<p>さて、せっかくVPSでWordPressを稼働させるのであれば、さまざまなワザを使って高速化を図りたいもの。その一つとして人気が高い（というか定番）のが、PHPアクセラレータを導入するという手法です。私が導入しているPHPアクセラレータ<a href="http://www.php.net/manual/ja/intro.apc.php" target="_blank">『APC』のサイト</a>にはこう書かれています。</p>
<blockquote><p>Alternative PHP Cache (APC) は、PHP の実行コードをキャッシュする仕組みで、 フリーかつオープンに使用できます。PHP の中間コードのキャッシュ・最適化を行うための、 フリーでオープンかつ堅牢なフレームワークを提供するということを目標としています。</p></blockquote>
<p>意訳すると、PHPスクリプト（WordPressでいうとコアファイルやテーマファイル、プラグインなど *.php という名のファイル群）を、サーバがより高速に処理できる状態（バイトコードという）に変換し、メモリ上に蓄えておく仕組み。以降、同じPHPスクリプトを実行するときには変換後のバイトコードを使いまわすため、高速化が図れるというわけです。</p>
<h2>で、何が起きた？</h2>
<p>このメリットが実は落とし穴でした。WordPressのテーマディレクトリにある functions.php をいくらいじってもサイトに反映されないのです。</p>
<p>WordPressの利点として「PHPスクリプトをトライアンドエラーで修正しながらサイトを構築できる」があると思います。某CMSのように「再構築」という面倒きわまりない手順を踏まなくても、PHPスクリプトをちょっと書いて実行して、また修正して……が簡単にできる。すばらしい。</p>
<p>ところが、PHPアクセラレータを使っていると、PHPスクリプトの修正がすぐには反映されません。コンパイルされたバイトコードがメモリ上に残っていると、PHPスクリプトを修正しようが中身がからっぽになろうが、ゾンビのようにバイトコードが実行されてしまうのです。</p>
<p>例えば、<a href="http://www.tecking.org/archives/1861">当方の環境（Ubuntu 10.04 i386）</a>におけるAPCの設定ファイル  /etc/php5/apache2/conf.d/apc.ini にはこんな記述があります。</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">apc<span style="color: #339933;">.</span>gc_ttl<span style="color: #339933;">=</span><span style="color: #cc66cc;">3600</span></pre></div></div>

<p>これは、PHPスクリプトが変更されても3600秒間は変更前の古いバージョンでコンパイルしたバイトコードを使い続けるという設定です。なので functions.php をいくらいじってもサイトに反映されなかったというわけ（1時間待てば反映されるんですけどね…… <img src='http://www.tecking.org/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ）</p>
<h2>前振りが長くなりましたが対処法</h2>
<p>APCを導入していて、かつ、テーマのテンプレートファイルや functions.php を変更する必要が出てきたら、一時的にAPCを停止させるのがいいでしょう。</p>
<p>/etc/php5/apache2/conf.d/apc.ini をエディタで開き</p>

<div class="wp_syntax"><div class="code"><pre class="diff" style="font-family:monospace;"><span style="color: #991111;">-apc.enabled=1</span>
<span style="color: #00b000;">+apc.enabled=0</span></pre></div></div>

<p>と変更して、ウェブサーバ（当方の環境ではApache2）を再起動。</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> service apache2 restart</pre></div></div>

<p>こうすることで、PHPスクリプトの変更が即座にサイトに反映されるという、WordPress本来のメリット（？）にあずかれるようになります。</p>
<p>修正が終わったら、再度 apc.ini の書き換えとウェブサーバの再起動をお忘れなく。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecking.org/archives/2532/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tecking.org/archives/2532" />
	</item>
		<item>
		<title>rsyncでWordPressの環境をディレクトリ構造そのままで移設する</title>
		<link>http://www.tecking.org/archives/2513</link>
		<comments>http://www.tecking.org/archives/2513#comments</comments>
		<pubDate>Sun, 07 Aug 2011 05:57:46 +0000</pubDate>
		<dc:creator>tecking</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[さくら]]></category>
		<category><![CDATA[バックアップ]]></category>
		<category><![CDATA[レンタルサーバ]]></category>

		<guid isPermaLink="false">http://www.tecking.org/?p=2513</guid>
		<description><![CDATA[「リモートサーバAからリモートサーバBにWordPressの環境を移したい」というとき、rsyncでラクして転送するための作業メモです。いちいちftpでローカルにダウンロードして再アップ、というのも面倒ですからね。個人的な覚え書きですがどなたかの参考になれば。 私がよくやる制作工程ということで、作業環境はこんな感じ。 サーバA …… さくらのVPS 512 サーバAのWordPressインストールディレクトリ…… /home/foo/bar サーバB …… さくらのレンタルサーバ スタンダード サーバBのアカウント …… hoge サーバBの初期ドメイン …… hoge.sakura.ne.jp WordPressを転送したいサーバBのディレクトリ …… /home/hoge/www/fuga サーバAにログインして以下のコマンドを実行。 rsync -e &#34;ssh -p 22&#34; -rz /home/foo/bar/ hoge@hoge.sakura.ne.jp:/home/hoge/www/fuga/ コマンドを実行すると「DSA key fingerprint is ～」という文字列の後に Are you sure you want &#8230; <a href="http://www.tecking.org/archives/2513">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>「リモートサーバAからリモートサーバBにWordPressの環境を移したい」というとき、rsyncでラクして転送するための作業メモです。いちいちftpでローカルにダウンロードして再アップ、というのも面倒ですからね。個人的な覚え書きですがどなたかの参考になれば。</p>
<p>私がよくやる制作工程ということで、作業環境はこんな感じ。</p>
<ul>
<li>サーバA …… さくらのVPS 512</li>
<li>サーバAのWordPressインストールディレクトリ…… /home/foo/bar</li>
<li>サーバB …… さくらのレンタルサーバ スタンダード</li>
<li>サーバBのアカウント …… hoge</li>
<li>サーバBの初期ドメイン …… hoge.sakura.ne.jp</li>
<li>WordPressを転送したいサーバBのディレクトリ …… /home/hoge/www/fuga</li>
</ul>
<p><span id="more-2513"></span>サーバAにログインして以下のコマンドを実行。</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">rsync <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;ssh -p 22&quot;</span> <span style="color: #660033;">-rz</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>foo<span style="color: #000000; font-weight: bold;">/</span>bar<span style="color: #000000; font-weight: bold;">/</span> hoge<span style="color: #000000; font-weight: bold;">@</span>hoge.sakura.ne.jp:<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>hoge<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>fuga<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<p>コマンドを実行すると「DSA key fingerprint is ～」という文字列の後に</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Are you sure you want to <span style="color: #7a0874; font-weight: bold;">continue</span> connecting <span style="color: #7a0874; font-weight: bold;">&#40;</span>yes<span style="color: #000000; font-weight: bold;">/</span>no<span style="color: #7a0874; font-weight: bold;">&#41;</span>?</pre></div></div>

<p>と出てくるので yes [enter] で続行。アカウント hoge のパスワードを入力後、しばらくしてプロンプトが返ってきたら転送完了です。サーバBにSSHでログインして無事転送されたか確認しましょう。</p>
<p>ちなみに rsync の -a オプションを使わないのは、転送するファイルの所有者やパーミッション、タイムスタンプなどを<strong>サーバBに反映させない</strong>ようにするためです。</p>
<p>なお、ここで紹介した作業ではデータベースの内容は移設できません。phpMyAdminを使った移設方法を<a title="テスト環境から本番環境へのWordPress移設をphpMyAdminでできるだけラクにやってみる" href="http://www.tecking.org/archives/2266">別エントリー</a>でまとめてありますので、そちらもあわせてどうぞ。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecking.org/archives/2513/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tecking.org/archives/2513" />
	</item>
		<item>
		<title>『Breadcrumb NavXT』使用時におけるカスタム投稿タイプの表示不具合を改善</title>
		<link>http://www.tecking.org/archives/2492</link>
		<comments>http://www.tecking.org/archives/2492#comments</comments>
		<pubDate>Mon, 20 Jun 2011 14:20:23 +0000</pubDate>
		<dc:creator>tecking</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[3.1]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.tecking.org/?p=2492</guid>
		<description><![CDATA[WordPressで構築したサイトに簡単にパンくずリスト（トピックパス）を実装できるプラグイン『Breadcrumb NavXT』。バージョンも3.9.0まで上がり（2011.6.20現在）、今や〈定番〉といってもいいポジションにいるのではないかと思います。 そんな『Breadcrumb NavXT』﻿﻿、今まで作ったいろんなサイトに組み込んでいるものの、どうもカスタム投稿タイプとの相性がよろしくない様子（プラグインのそのものはカスタム投稿タイプに対応している、ということになっているのですけれども）。 『Custom Post Type UI』プラグインを使った私の設定に原因があるのかもしれませんが、あるサイトでこんなパンくずリストが出力されました。 何が起きた？ ホーム &#62; [カスタム投稿タイプのラベル] &#62; [カテゴリー名] &#62; 記事タイトル HTMLを見てみるとこんな感じです。 &#60;ul&#62; &#60;li&#62;&#60;a title=&#34;ホーム&#34; href=&#34;http://www.example.com&#34;&#62;ホーム&#60;/li&#62;&#60;li&#62;&#60;a title=&#34;[カスタム投稿タイプのラベル]&#34; href=&#34;&#34;&#62;[カスタム投稿タイプのラベル]&#60;/a&#62;&#60;/li&#62;&#60;li&#62;&#60;a title=&#34;[カテゴリー名]&#34; href=&#34;http://www.example.com/path/to/category&#34;&#62;[カテゴリー名]&#60;/a&#62;&#60;/li&#62;&#60;li&#62;記事タイトル&#60;/li&#62; &#60;/ul&#62; だらだらと書いてしまいましたが、結局 &#60;li&#62;&#60;a title=&#34;[カスタム投稿タイプのラベル]&#34; href=&#34;&#34;&#62;[カスタム投稿タイプのラベル]&#60;/a&#62;&#60;/li&#62; が余計に出力されてしまっているのです。 bcn_display() に引数を与えて解決 公式サイトにもあるようにこのプラグインは、テンプレートの任意の箇所に &#60;?php if &#40; function_exists&#40; 'bcn_display' &#41; &#8230; <a href="http://www.tecking.org/archives/2492">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>WordPressで構築したサイトに簡単にパンくずリスト（トピックパス）を実装できるプラグイン『<a href="http://wordpress.org/extend/plugins/breadcrumb-navxt/">Breadcrumb NavXT</a>』。バージョンも3.9.0まで上がり（2011.6.20現在）、今や〈定番〉といってもいいポジションにいるのではないかと思います。</p>
<p>そんな『Breadcrumb NavXT』﻿﻿、今まで作ったいろんなサイトに組み込んでいるものの、どうもカスタム投稿タイプとの相性がよろしくない様子（プラグインのそのものはカスタム投稿タイプに対応している、ということになっているのですけれども）。</p>
<p>『Custom Post Type UI』プラグインを使った私の設定に原因があるのかもしれませんが、あるサイトでこんなパンくずリストが出力されました。<br />
<span id="more-2492"></span><br />
<h2>何が起きた？</h2>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">ホーム &gt; [カスタム投稿タイプのラベル] &gt; [カテゴリー名] &gt; 記事タイトル</pre></div></div>

<p>HTMLを見てみるとこんな感じです。</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;ul&gt;
&lt;li&gt;&lt;a title=&quot;ホーム&quot; href=&quot;http://www.example.com&quot;&gt;ホーム&lt;/li&gt;&lt;li&gt;&lt;a title=&quot;[カスタム投稿タイプのラベル]&quot; href=&quot;&quot;&gt;[カスタム投稿タイプのラベル]&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title=&quot;[カテゴリー名]&quot; href=&quot;http://www.example.com/path/to/category&quot;&gt;[カテゴリー名]&lt;/a&gt;&lt;/li&gt;&lt;li&gt;記事タイトル&lt;/li&gt;
&lt;/ul&gt;</pre></div></div>

<p>だらだらと書いてしまいましたが、結局</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;li&gt;&lt;a title=&quot;[カスタム投稿タイプのラベル]&quot; href=&quot;&quot;&gt;[カスタム投稿タイプのラベル]&lt;/a&gt;&lt;/li&gt;</pre></div></div>

<p>が余計に出力されてしまっているのです。</p>
<h2>bcn_display() に引数を与えて解決</h2>
<p>公式サイトにもあるようにこのプラグインは、テンプレートの任意の箇所に</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">function_exists</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'bcn_display'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	bcn_display<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>と記述することによりパンくずリストを表示するようになっています。ところが、このままでは上記の〈余計なリンク〉が出力されてしまいます。</p>
<p>実は bcn_display() という関数（WordPress的にいうとテンプレートタグ）には、</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">bcn_display<span style="color: #009900;">&#40;</span> <span style="color: #009900; font-weight: bold;">true</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>と書くことにより、PHPで処理できる形として値を返すオプションがあります。つまり、たとえば</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> bcn_display<span style="color: #009900;">&#40;</span> <span style="color: #009900; font-weight: bold;">true</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>と書けば変数 $str にパンくずリストの文字列をいったん格納し preg_replace() などで不必要な箇所をカットして表示させることができるのです。</p>
<p>このオプションを活用して、上記の〈余計なリンク〉問題は</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">function_exists</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'bcn_display'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;/&lt;li&gt;&lt;a title=<span style="color: #000099; font-weight: bold;">\&quot;</span>[カスタム投稿タイプのラベル].+?li&gt;/&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">,</span> bcn_display<span style="color: #009900;">&#40;</span> <span style="color: #009900; font-weight: bold;">true</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;ul&gt;'</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$str</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;/ul&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>と回避。我ながら変則的なやりかたと思いながらも表示の不具合を解消できたのでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecking.org/archives/2492/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tecking.org/archives/2492" />
	</item>
		<item>
		<title>BuddyPressのメニュータブをカスタマイズ（フィルターフックで）</title>
		<link>http://www.tecking.org/archives/2462</link>
		<comments>http://www.tecking.org/archives/2462#comments</comments>
		<pubDate>Thu, 26 May 2011 22:15:54 +0000</pubDate>
		<dc:creator>tecking</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[BuddyPress]]></category>

		<guid isPermaLink="false">http://www.tecking.org/?p=2462</guid>
		<description><![CDATA[先日手がけたBuddyPressの案件にて、依頼主より「プロフィール設定のメニュータブについて、一部を非表示にしてほしい」とのオーダーがありました。 この画像でいうところの「活動」とか「プロフィール」といった項目ですね。 で、ソースを読んでいったところ、フィルターフックでメニュー項目の非表示ができることが分かりましたのでここに紹介する次第です。いつもどおりの「ご利用は計画的に」な技術情報ですのでご留意ください。 今回のオーダーは 「グループ」を非表示にしてほしい 「設定」→「通知」を非表示にしてほしい というもの。ぱっと思い浮かぶのは、「テンプレートファイルいじればオッケイなんじゃない？」との発想ですが、たとえば「グループ」の非表示に絡む wp-content/plugins/buddypress/bp-themes/bp-default/members/single/home.php というテンプレートファイルを見てみますと &#60;div id=&#34;item-nav&#34;&#62; &#60;div id=&#34;object-nav&#34; class=&#34;item-list-tabs no-ajax&#34;&#62; &#60;ul&#62; &#60;?php bp_get_displayed_user_nav&#40;&#41;; ?&#62; &#160; &#60;?php do_action&#40; 'bp_member_options_nav' &#41;; ?&#62; &#60;/ul&#62; &#60;/div&#62; &#60;/div&#62;&#60;!-- #item-nav --&#62; というループでメニューが生成されており、テーマファイルのカスタマイズではどうしようもない状態でした。 それじゃあ、ということで対処法を。 「グループ」を非表示に wp-content/plugins/buddypress/bp-core/bp-core-templatetags.php で定義されている bp_get_displayed_user_nav() 関数を見てみると、ありました apply_filters() 関数が。 echo &#8230; <a href="http://www.tecking.org/archives/2462">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>先日手がけたBuddyPressの案件にて、依頼主より「プロフィール設定のメニュータブについて、一部を非表示にしてほしい」とのオーダーがありました。</p>
<p><a rel="shadowbox[2462]" href="http://www.tecking.org/wordpress/wp-content/uploads/2011/05/2011-05-27-06h25_33.png"><img src="http://www.tecking.org/wordpress/wp-content/uploads/2011/05/2011-05-27-06h25_33-400x169.png" width="400" height="169" class="alignnone size-medium wp-image-2463" /></a></p>
<p>この画像でいうところの「活動」とか「プロフィール」といった項目ですね。</p>
<p>で、ソースを読んでいったところ、フィルターフックでメニュー項目の非表示ができることが分かりましたのでここに紹介する次第です。いつもどおりの「ご利用は計画的に」な技術情報ですのでご留意ください。</p>
<p><span id="more-2462"></span>今回のオーダーは</p>
<ul>
<li>「グループ」を非表示にしてほしい</li>
<li>「設定」→「通知」を非表示にしてほしい</li>
</ul>
<p>というもの。ぱっと思い浮かぶのは、「テンプレートファイルいじればオッケイなんじゃない？」との発想ですが、たとえば「グループ」の非表示に絡む wp-content/plugins/buddypress/bp-themes/bp-default/members/single/home.php というテンプレートファイルを見てみますと</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&lt;div id=&quot;item-nav&quot;&gt;
&lt;div id=&quot;object-nav&quot; class=&quot;item-list-tabs no-ajax&quot;&gt;
&lt;ul&gt;
	<span style="color: #000000; font-weight: bold;">&lt;?php</span> bp_get_displayed_user_nav<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">&lt;?php</span> do_action<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'bp_member_options_nav'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;!-- #item-nav --&gt;</pre></div></div>

<p>というループでメニューが生成されており、テーマファイルのカスタマイズではどうしようもない状態でした。</p>
<p>それじゃあ、ということで対処法を。</p>
<h3>「グループ」を非表示に</h3>
<p>wp-content/plugins/buddypress/bp-core/bp-core-templatetags.php で定義されている bp_get_displayed_user_nav() 関数を見てみると、ありました apply_filters() 関数が。</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">echo</span> apply_filters<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'bp_get_displayed_user_nav_'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$user_nav_item</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'css_id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'&lt;li id=&quot;'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$user_nav_item</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'css_id'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'-personal-li&quot; '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$selected</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&gt;&lt;a id=&quot;user-'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$user_nav_item</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'css_id'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&quot; href=&quot;'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$link</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&quot;&gt;'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$user_nav_item</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&lt;/a&gt;&lt;/li&gt;'</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span><span style="color: #000088;">$user_nav_item</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<ol>
<li>メニュー項目を作るたびに apply_filters() 関数を実行</li>
<li>&lt;li&gt; タグに
<pre>$user_nav_item['css_id']</pre>
<p> をIDとして与える</li>
</ol>
<p>ということをやっているので、</p>
<ol>
<li>非表示にしたいメニュー項目（&lt;li&gt;タグ）のIDを調べる</li>
<li>調べたIDについて以下のような関数を functions.php に書く</li>
</ol>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> remove_displayed_user_nav<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$content</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">function_exists</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'bp_get_displayed_user_nav'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$content</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$content</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
add_filter<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'bp_get_displayed_user_nav_groups'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'remove_displayed_user_nav'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>functions.php に書く前</p>
<p><a rel="shadowbox[2462]" title="" href="http://www.tecking.org/wordpress/wp-content/uploads/2011/05/2011-05-27-06h13_43.png"><img src="http://www.tecking.org/wordpress/wp-content/uploads/2011/05/2011-05-27-06h13_43-400x17.png" alt="" title="" width="400" height="17" class="alignnone size-medium wp-image-2464" /></a></p>
<p>functions.php に書いた後</p>
<p><a rel="shadowbox[2462]" title="" href="http://www.tecking.org/wordpress/wp-content/uploads/2011/05/2011-05-27-06h14_21.png"><img src="http://www.tecking.org/wordpress/wp-content/uploads/2011/05/2011-05-27-06h14_21-400x17.png" alt="" title="" width="400" height="17" class="alignnone size-medium wp-image-2465" /></a></p>
<p>同様にして……</p>
<h3>「設定」→「通知」を非表示に</h3>
<p>サブメニューの方は wp-content/plugins/buddypress/bp-core/bp-core-templatetags.php の bp_get_options_nav() 関数で実装されているようなので</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> remove_bp_get_options_nav<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$content</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">function_exists</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'bp_get_options_nav'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$content</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$content</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
add_filter<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'bp_get_options_nav_notifications'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'remove_bp_get_options_nav'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>このような感じで。</p>
<p>add_fliter() 関数の引数である bp_get_displayed_user_nav_hoge や bp_get_options_nav_hoge の文字列 hoge が&lt;li&gt;タグのIDに相当するので、削除したいメニュー項目のIDを調べて functions.php に add_filter でどんどこ追記していけばオッケイでしょう。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecking.org/archives/2462/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tecking.org/archives/2462" />
	</item>
		<item>
		<title>任意の画像を『WP-OGP』のサムネイルに使う</title>
		<link>http://www.tecking.org/archives/2396</link>
		<comments>http://www.tecking.org/archives/2396#comments</comments>
		<pubDate>Sat, 30 Apr 2011 14:53:50 +0000</pubDate>
		<dc:creator>tecking</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[OGP]]></category>
		<category><![CDATA[plug-in]]></category>

		<guid isPermaLink="false">http://www.tecking.org/?p=2396</guid>
		<description><![CDATA[今朝参加した勉強会でその存在をきちんと知ることになったOGP（Open Graph Protocol）。遅ればせながら当サイトにも実装してみるか、とググってみたところ『WP-OGP』というその名もズバリなプラグインがヒットしました。嗚呼素晴らしきかなプラグインの世界。 ですがこのプラグイン、例えばFacebook上でシェアしたとき、デフォルトだと こんな画像が表示されてしまいます。せっかくプラグインを組み込むのなら、オリジナルの画像を使いたいのが人情というものでしょう……ということで二つの方法を紹介。 デフォルト画像を上書き How do I replace the default image? Go to &#8220;wordpress directory&#8221;/wp-content/plugins/wp-ogp and replace default.jpg with another image with the same name! This only works for the default image, you need to add a featured &#8230; <a href="http://www.tecking.org/archives/2396">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>今朝参加した勉強会でその存在をきちんと知ることになったOGP（Open Graph Protocol）。遅ればせながら当サイトにも実装してみるか、とググってみたところ『<a href="http://wordpress.org/extend/plugins/wp-ogp/" target="_blank">WP-OGP</a>』というその名もズバリなプラグインがヒットしました。嗚呼素晴らしきかなプラグインの世界。</p>
<p>ですがこのプラグイン、例えばFacebook上でシェアしたとき、デフォルトだと</p>
<p><a rel="shadowbox[2396]" href="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/default.jpg"><img src="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/default.jpg" width="152" height="152" class="alignnone size-full wp-image-2397" /></a></p>
<p>こんな画像が表示されてしまいます。せっかくプラグインを組み込むのなら、オリジナルの画像を使いたいのが人情というものでしょう……ということで二つの方法を紹介。<br />
<span id="more-2396"></span><br />
<h2>デフォルト画像を上書き</h2>
<blockquote><p>How do I replace the default image?<br />
Go to &#8220;wordpress directory&#8221;/wp-content/plugins/wp-ogp and replace default.jpg with another image with the same name! This only works for the default image, you need to add a featured image on the post page for it to work with articles.</p></blockquote>
<p>……と『WP-OGP』のFAQにも載っている方法。任意の画像に default.jpg というファイル名をつけ wp-content/plugins/wp-ogp 内にアップロードするだけです。上書きするのでもともとの default.jpg が消えてしまったり、JPEG以外の画像だと使えなかったり、という欠点も。</p>
<h2>functions.phpに追記</h2>
<p>『WP-OGP』内の wpogp_add_head 関数をアクションフックで置き換える方法です。管理パネルの [外観] &#8211; [ヘッダー] で設定した画像だけでなく、サイト外の画像も表示可能という利点があります。例のごとく「ご利用は計画的に <img src='http://www.tecking.org/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> 」のコードですが、こんな感じで functions.php に追記します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> my_wpogp_add_head<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">function_exists</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'wpogp_add_head'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$post</span><span style="color: #339933;">;</span>
                <span style="color: #000088;">$image</span> <span style="color: #339933;">=</span> get_the_post_thumbnail_src<span style="color: #009900;">&#40;</span> get_the_post_thumbnail<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$post</span> <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">ID</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> wpogp_set_data<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
                <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$image</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'og:image'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'image_src'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> get_header_image<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
                <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'og:image'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'image_src'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$image</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
&nbsp;
                <span style="color: #b1b100;">echo</span> get_wpogp_headers<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$data</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
remove_action<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'wp_head'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'wpogp_add_head'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
add_action<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'wp_head'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'my_wpogp_add_head'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>上記の例では</p>
<ul>
<li>アイキャッチ画像がないとき……サムネイルはヘッダー画像</li>
<li>アイキャッチ画像があるとき……サムネイルはアイキャッチ画像</li>
</ul>
<p>となります。ヘッダー画像以外のものをサムネイルにしたいときは、9行目の get_header_image(); を &#8216;http://www.example.com/hoge.jpg&#8217;; のように書き換えればオッケイです。</p>
<p>［2011.5.1追記］<br />
初出時のコードにて『WP-OGP』プラグインOFF時の挙動に不具合がありました。コードを修正しましたので、初出時のものをお使いになった方がいらっしゃいましたら、再設定をおねがいいたします。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecking.org/archives/2396/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tecking.org/archives/2396" />
	</item>
		<item>
		<title>BuddyPressで子テーマを作る方法</title>
		<link>http://www.tecking.org/archives/2318</link>
		<comments>http://www.tecking.org/archives/2318#comments</comments>
		<pubDate>Sun, 24 Apr 2011 06:41:48 +0000</pubDate>
		<dc:creator>tecking</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[BuddyPress]]></category>
		<category><![CDATA[子テーマ]]></category>

		<guid isPermaLink="false">http://www.tecking.org/?p=2318</guid>
		<description><![CDATA[日本語でググったところ、意外にもその方法に言及しているサイトが見つからなかったので紹介します。BuddyPressの公式サイトにある『Theme Dev: Building a BuddyPress Child Theme』からの引用＋拙訳です。 子テーマを作るディレクトリは『子テーマ &#8211; WordPress Codex 日本語版』にあるとおり wp-content/themes 内でOK。でも、Codexどおりの書式ではBuddyPressのデフォルトテーマ（BuddyPress Default）を継承してくれないので、以下のように style.css を定義します（必須の項目だけ記しました）。 1 2 3 4 5 6 7 8 @charset &#34;utf-8&#34;; /* Theme Name: hoge Template: bp-default */ &#160; @import url( ../../plugins/buddypress/bp-themes/bp-default/_inc/css/default.css ); @import &#8230; <a href="http://www.tecking.org/archives/2318">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>日本語でググったところ、意外にもその方法に言及しているサイトが見つからなかったので紹介します。BuddyPressの公式サイトにある『<a href="http://codex.buddypress.org/theme-development/building-a-buddypress-child-theme/" target="_blank">Theme Dev: Building a BuddyPress Child Theme</a>』からの引用＋拙訳です。</p>
<p><a rel="shadowbox[2318]" title="" href="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/BuddyPress1.png"><img src="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/BuddyPress1-400x231.png" alt="" title="" width="400" height="231" class="alignnone size-medium wp-image-2320" /></a></p>
<p><span id="more-2318"></span>子テーマを作るディレクトリは『<a href="http://wpdocs.sourceforge.jp/Child_Themes" target="_blank">子テーマ &#8211; WordPress Codex 日本語版</a>』にあるとおり wp-content/themes 内でOK。でも、Codexどおりの書式ではBuddyPressのデフォルトテーマ（BuddyPress Default）を継承してくれないので、以下のように style.css を定義します（必須の項目だけ記しました）。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #a1a100;">@charset &quot;utf-8&quot;;</span>
<span style="color: #808080; font-style: italic;">/*
Theme Name: hoge
Template: bp-default
*/</span>
&nbsp;
<span style="color: #a1a100;">@import url( ../../plugins/buddypress/bp-themes/bp-default/_inc/css/default.css );</span>
<span style="color: #a1a100;">@import url( ../../plugins/buddypress/bp-themes/bp-default/_inc/css/adminbar.css );</span></pre></td></tr></table></div>

<p>BuddyPressデフォルトのテーマファイルは wp-content/themes 内ではなく wp-content/plugins/buddypress/bp-themes/bp-default 内にあるので @import のパス（7～8行目）が通常の子テーマとは異なっている、というわけです。</p>
<p>テンプレートをオーバーライド（上書き）したいときは、子テーマディレクトリ内に wp-content/plugins/buddypress/bp-themes/bp-default と同じ構造でテンプレートファイル（*.php）を配置していきます。</p>
<p>たとえばフォーラムのテンプレートをカスタマイズするなら wp-content/themes/hoge/forums というディレクトリを作り、その中に index.php や forums-loop.php を作ればいいということになります。</p>
<p>ではではハッピーなBuddyPressライフを！　BuddyPressの日本語ドキュメントはまだまだ発展途上だと思うので、BuddyPressと格闘するみなさんといろいろ情報共有したいですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecking.org/archives/2318/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tecking.org/archives/2318" />
	</item>
		<item>
		<title>テスト環境から本番環境へのWordPress移設をphpMyAdminでできるだけラクにやってみる</title>
		<link>http://www.tecking.org/archives/2266</link>
		<comments>http://www.tecking.org/archives/2266#comments</comments>
		<pubDate>Sun, 10 Apr 2011 08:42:35 +0000</pubDate>
		<dc:creator>tecking</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[phpMyAdmin]]></category>

		<guid isPermaLink="false">http://www.tecking.org/?p=2266</guid>
		<description><![CDATA[WordPressでサイト構築をする際、自分のPCにXAMPPなどでテスト環境を作り、しかる後に本番環境に移設するケースが多いかと思います。でも、単にインストールディレクトリ以下を本番環境に持っていくだけではダメで wp-config.php の書き換えとかデータベースの設定とかいろいろ面倒な作業が発生しますよね。 ということで、備忘録を兼ねて図版入りでテスト環境→本番環境への移設手順をまとめてみました。いつものとおり「ご利用は計画的に 」な技術情報ですのでご容赦のほど。 以下、テスト環境（localhost）のファイル・ディレクトリ等を青文字で、本番環境（www.example.com）のファイル・ディレクトリ等を緑文字で示します。 wp-config.php の DB_NAME，DB_USER，DB_PASSWORD，DB_HOST の行を本番環境に合わせて書き換えます。 インストールディレクトリ以下の全ファイル・ディレクトリを本番環境にアップロード。 phpMyAdminにアクセスし、テスト環境のデータベース内容を表示させます。 「エクスポート」タブをクリックし すべてのテーブルが選択されていることを確認したら…… 「ファイルに保存する」にチェックを入れてエクスポート。 phpMyAdminにアクセスし、本番環境のデータベースを表示させます。 テスト環境の全ファイル・ディレクトリをアップロードしたものの、WordPressのインストールスクリプトを実行させていないのでデータベースの中身はからっぽです。 「インポート」タブをクリックし、4.でエクスポートしたファイルを読み込みます。 読み込まれるとこんな感じになります。この例ではプラグインが使うテーブルも読み込まれてるので、デフォルトよりもテーブルの数が増えています。 テスト環境のURLを本番環境のものに置換するため、「SQL」タブをクリックします。 以下のSQL文を実行します。 UPDATE `wp_options` SET option_value=REPLACE&#40; option_value, &#34;localhost&#34;, &#34;www.example.com&#34; &#41;; UPDATE `wp_posts` SET post_content=REPLACE&#40; post_content, &#34;localhost&#34;, &#34;www.example.com&#34; &#41;, guid=REPLACE&#40; guid, &#34;localhost&#34;, &#8230; <a href="http://www.tecking.org/archives/2266">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>WordPressでサイト構築をする際、自分のPCにXAMPPなどでテスト環境を作り、しかる後に本番環境に移設するケースが多いかと思います。でも、単にインストールディレクトリ以下を本番環境に持っていくだけではダメで wp-config.php の書き換えとかデータベースの設定とかいろいろ面倒な作業が発生しますよね。</p>
<p>ということで、備忘録を兼ねて図版入りでテスト環境→本番環境への移設手順をまとめてみました。いつものとおり「ご利用は計画的に <img src='http://www.tecking.org/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> <strong> </strong>」な技術情報ですのでご容赦のほど。</p>
<p><span id="more-2266"></span>以下、<span style="color: #3366ff;">テスト環境（localhost）のファイル・ディレクトリ等を青文字</span>で、<span style="color: #339966;">本番環境（www.example.com）のファイル・ディレクトリ等を緑文字</span>で示します。</p>
<ol>
<li><span style="color: #3366ff;">wp-config.php</span> の DB_NAME，DB_USER，DB_PASSWORD，DB_HOST の行を本番環境に合わせて書き換えます。</li>
<li><span style="color: #3366ff;">インストールディレクトリ以下の全ファイル・ディレクトリ</span>を本番環境にアップロード。</li>
<li><span style="color: #3366ff;">phpMyAdmin</span>にアクセスし、テスト環境のデータベース内容を表示させます。<br />
<a title="テスト環境のデータベースを表示" rel="shadowbox[2266]" href="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/2011-04-10-15h46_00.png"><img src="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/2011-04-10-15h46_00-400x256.png" title="テスト環境のデータベースを表示" width="400" height="256" class="alignnone size-medium wp-image-2268" /></a></li>
<li><span style="color: #3366ff;">「エクスポート」タブ</span>をクリックし<a title="すべてのテーブルが選択されていることを確認" rel="shadowbox[2266]" href="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/2011-04-10-17h10_30.png"><img src="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/2011-04-10-17h10_30-400x161.png" title="すべてのテーブルが選択されていることを確認" width="400" height="161" class="alignnone size-medium wp-image-2279" /></a><br />
すべてのテーブルが選択されていることを確認したら……<br />
<a title="すべてのテーブルをエクスポート（＝ファイルに保存）" rel="shadowbox[2266]" href="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/2011-04-10-15h46_491.png"><img src="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/2011-04-10-15h46_491-400x275.png" title="すべてのテーブルをエクスポート（＝ファイルに保存）" width="400" height="275" class="alignnone size-medium wp-image-2277" /></a><br />
「ファイルに保存する」にチェックを入れてエクスポート。</li>
<li><span style="color: #339966;">phpMyAdmin</span>にアクセスし、本番環境のデータベースを表示させます。<br />
<a title="本番環境のデータベースを開いた状態" rel="shadowbox[2266]" href="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/2011-04-10-15h47_32.png"><img src="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/2011-04-10-15h47_32-400x183.png" title="本番環境のデータベースを開いた状態" width="400" height="183" class="alignnone size-medium wp-image-2270" /></a><br />
テスト環境の全ファイル・ディレクトリをアップロードしたものの、WordPressのインストールスクリプトを実行させていないのでデータベースの中身はからっぽです。</li>
<li><span style="color: #339966;">「インポート」タブ</span>をクリックし、4.でエクスポートしたファイルを読み込みます。<br />
<a title="エクスポートしたファイルをインポートします" rel="shadowbox[2266]" href="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/2011-04-10-15h48_211.png"><img src="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/2011-04-10-15h48_211-400x183.png" title="エクスポートしたファイルをインポートします" width="400" height="183" class="alignnone size-medium wp-image-2280" /></a></li>
<li>読み込まれるとこんな感じになります。この例ではプラグインが使うテーブルも読み込まれてるので、デフォルトよりもテーブルの数が増えています。<br />
<a title="ファイルがインポートされました" rel="shadowbox[2266]" href="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/2011-04-10-15h49_06.png"><img src="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/2011-04-10-15h49_06-400x201.png" title="ファイルがインポートされました" width="400" height="201" class="alignnone size-medium wp-image-2272" /></a></li>
<li>テスト環境のURLを本番環境のものに置換するため、<span style="color: #339966;">「SQL」タブ</span>をクリックします。<br />
<a title="「SQL」タブをクリックした状態です" rel="shadowbox[2266]" href="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/2011-04-10-15h52_17.png"><img src="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/2011-04-10-15h52_17-400x149.png" title="「SQL」タブをクリックした状態です" width="400" height="149" class="alignnone size-medium wp-image-2273" /></a></li>
<li><span style="color: #339966;">以下のSQL文を実行</span>します。

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">UPDATE</span> <span style="color: #ff0000;">`wp_options`</span> <span style="color: #993333; font-weight: bold;">SET</span> option_value<span style="color: #66cc66;">=</span><span style="color: #993333; font-weight: bold;">REPLACE</span><span style="color: #66cc66;">&#40;</span> option_value<span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;localhost&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;www.example.com&quot;</span> <span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">UPDATE</span> <span style="color: #ff0000;">`wp_posts`</span> <span style="color: #993333; font-weight: bold;">SET</span> post_content<span style="color: #66cc66;">=</span><span style="color: #993333; font-weight: bold;">REPLACE</span><span style="color: #66cc66;">&#40;</span> post_content<span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;localhost&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;www.example.com&quot;</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> guid<span style="color: #66cc66;">=</span><span style="color: #993333; font-weight: bold;">REPLACE</span><span style="color: #66cc66;">&#40;</span> guid<span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;localhost&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;www.example.com&quot;</span> <span style="color: #66cc66;">&#41;</span>;</pre></div></div>

</li>
<li>では、本番環境のURLにアクセスしてみましょう。いかがでしたか？</li>
</ol>
<p>ちなみに今回の例では、テスト環境でインストールしていたプラグイン『Contact Form 7』が使うテーブルもSQL文で置換する必要がありました。</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">UPDATE</span> <span style="color: #ff0000;">`wp_contact_form_7`</span> <span style="color: #993333; font-weight: bold;">SET</span> mail<span style="color: #66cc66;">=</span><span style="color: #993333; font-weight: bold;">REPLACE</span><span style="color: #66cc66;">&#40;</span> mail<span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;localhost&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;www.example.com&quot;</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> mail_2<span style="color: #66cc66;">=</span><span style="color: #993333; font-weight: bold;">REPLACE</span><span style="color: #66cc66;">&#40;</span> mail_2<span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;localhost&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;www.example.com&quot;</span> <span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>ちなみにphpMyAdminを使わずとも、4.でエクスポートしたファイルをテキストエディタで開き localhost を www.example.com に一括置換→本番環境にインポート でうまくいく場合もあります。私の場合は、何度かこの方法を試してみてまったくダメだったんですが……</p>
<p>なお、以上の手順ではWordPressのコアファイルやテーマ、プラグイン、アップロードした画像などは本番環境に移設できません。<a href="http://www.tecking.org/archives/2513" title="rsyncでWordPressの環境をディレクトリ構造そのままで移設する">別エントリー</a>で手順をまとめましたのでそちらもあわせてどうぞ。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecking.org/archives/2266/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tecking.org/archives/2266" />
	</item>
		<item>
		<title>Androidアプリ（.apk）のアップロードを可能にするWordPressプラグイン『PJW Mime Config』</title>
		<link>http://www.tecking.org/archives/2259</link>
		<comments>http://www.tecking.org/archives/2259#comments</comments>
		<pubDate>Mon, 04 Apr 2011 12:52:47 +0000</pubDate>
		<dc:creator>tecking</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[plug-in]]></category>

		<guid isPermaLink="false">http://www.tecking.org/?p=2259</guid>
		<description><![CDATA[先日のエントリー「Remember The Milk（RTM）にタスクを送るだけのアプリをApp Inventorで作ってみた」を書くとき、自作の野良アプリをアップロードしようとしたところ このファイルタイプはセキュリティの観点から許可されていません。 という警告が出てきてたいそう困りました。配布については、ダウンロード数をカウントできるプラグイン『WordPress Download Monitor』を使うことを決めてたのですが、それ以前にアップロードできないのでは話になりません。 で、探したところ『PJW Mime Config』というプラグインを発見したので紹介します。 公式プラグインディレクトリではこのような説明が書かれてます。 This plugin allows you to configure extra mime-types for support by the inline-uploader. A new options page is added as Options &#8230; Mime-types which allows you to add/delete &#8230; <a href="http://www.tecking.org/archives/2259">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>先日のエントリー「<a title="Remember The Milk（RTM）にタスクを送るだけのアプリをApp Inventorで作ってみた" href="http://www.tecking.org/archives/2231">Remember The Milk（RTM）にタスクを送るだけのアプリをApp Inventorで作ってみた</a>」を書くとき、自作の野良アプリをアップロードしようとしたところ</p>
<p><strong>このファイルタイプはセキュリティの観点から許可されていません。</strong></p>
<p>という警告が出てきてたいそう困りました。配布については、ダウンロード数をカウントできるプラグイン『<a href="http://wordpress.org/extend/plugins/download-monitor/" target="_blank">WordPress Download Monitor</a>』を使うことを決めてたのですが、それ以前にアップロードできないのでは話になりません。</p>
<p>で、探したところ『PJW Mime Config』というプラグインを発見したので紹介します。</p>
<p><span id="more-2259"></span>公式プラグインディレクトリではこのような説明が書かれてます。</p>
<blockquote><p>This plugin allows you to configure extra mime-types for support by the inline-uploader.</p>
<p>A new options page is added as Options &#8230; Mime-types which allows you to add/delete the extra mime-types.</p>
<p>By default the following extra mime-types are registered: audio/ac3, audio/MPA and video/x-flv.</p>
<p>（拙訳）<br />
インラインアップローダ（WordPress標準のアップローダ）にて、アップロード可能なファイルのMIME Typeを拡張するプラグインです。</p>
<p>プラグインをインストールすると、設定メニューに「MIME Types」という項目が追加され、MIME Typeの追加と削除ができるようになります。</p>
<p>デフォルトとして audio/ac3，audio/MPA，video/x-flv のMIME Typeが設定されています。</p></blockquote>
<p>ということで、上記「MIME Types」メニューよりAndroidアプリ（*.apk）のMIME Typeを追記します。</p>
<p><a title=".apkのMIME Typeは application/vnd.android.package-archive です" rel="shadowbox[2259]" href="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/2011-04-04-21h40_27.png"><img src="http://www.tecking.org/wordpress/wp-content/uploads/2011/04/2011-04-04-21h40_27-400x197.png" title=".apkのMIME Typeは application/vnd.android.package-archive です" width="400" height="197" class="alignnone size-medium wp-image-2260" /></a></p>
<p>[Add mime-type]をクリックして完了です。</p>
<p><em>WordPress › PJW Mime Config « WordPress Plugins</em><a href="http://wordpress.org/extend/plugins/pjw-mime-config/" target="_blank"></p>
<p>http://wordpress.org/extend/plugins/pjw-mime-config/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecking.org/archives/2259/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tecking.org/archives/2259" />
	</item>
		<item>
		<title>「このページにアクセスするための十分なアクセス権がありません。」の処方箋（の一例）</title>
		<link>http://www.tecking.org/archives/2225</link>
		<comments>http://www.tecking.org/archives/2225#comments</comments>
		<pubDate>Thu, 24 Mar 2011 12:10:29 +0000</pubDate>
		<dc:creator>tecking</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[WordPress ME]]></category>

		<guid isPermaLink="false">http://www.tecking.org/?p=2225</guid>
		<description><![CDATA[ただいま、WordPress MEで稼働していたサイトをアップグレードする案件に取り組んでいます。このたびその移行でドツボにハマりましたので、いつも通りの「ご利用は計画的に」の技術情報ですが、どなたかの参考になればと思いつつ、個人的な備忘録としてもここにメモっておく次第であります。 結論からいうと、私の場合「このページにアクセスするための十分なアクセス権がありません。」のエラーメッセージが出てアップグレード後の管理パネルに入れなかったのはインポート時の「MySQLの接続照合順序」の設定が原因でした。 移行元と移行先の環境、および作業の手順は以下のとおりです。 移行元 サーバ……さくらのレンタルサーバ　スタンダード MySQLのバージョン……4.0.27 データベースの文字コード……EUC-JP（ujis） WordPress設定ファイル（wp-config.php）のテーブル接頭辞……hoge_ 稼働中のURL……http://www.example.com/fuga 移行先 サーバ……ローカルのテスト環境（Ubuntu 8.04 Server Edition） MySQLのバージョン……5.0.67（XAMPP for Linux内で稼働） データベースの文字コード……UTF-8 Unicode（utf8） WordPress設定ファイル（wp-config.php）のテーブル接頭辞……wp_hoge_ 稼働させようとするURL……http://192.168.x.x/fuga 作業の手順 移行元のphpMyAdminにて hoge_ で始まるテーブル一式をSQL形式でエクスポート 1.で書き出したファイルをテキストエディタで開き（このとき文字コードはUTF-8と自動認識された）「hoge_」を「wp_hoge_」に一括置換し保存 移行先のphpMyAdminにて新規データベースを作成。MySQLの接続照合順序はデフォルトの utf8_general_ci にて 移行先にWordPressの最新版（本記事執筆時は3.1）全ファイルをアップロード。インストールスクリプト（http://192.168.x.x/fuga）は起動させない 移行先のphpMyAdminにて2.で作ったテキストファイルをインポート インポートした wp_hoge_options を開き siteurl と home を http://192.168.x.x/fuga &#8230; <a href="http://www.tecking.org/archives/2225">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>ただいま、WordPress MEで稼働していたサイトをアップグレードする案件に取り組んでいます。このたびその移行でドツボにハマりましたので、いつも通りの「ご利用は計画的に」の技術情報ですが、どなたかの参考になればと思いつつ、個人的な備忘録としてもここにメモっておく次第であります。</p>
<p>結論からいうと、私の場合「このページにアクセスするための十分なアクセス権がありません。」のエラーメッセージが出てアップグレード後の管理パネルに入れなかったのはインポート時の<strong>「MySQLの接続照合順序」の設定が原因</strong>でした。</p>
<p><span id="more-2225"></span>移行元と移行先の環境、および作業の手順は以下のとおりです。</p>
<h3>移行元</h3>
<ul>
<li>サーバ……さくらのレンタルサーバ　スタンダード</li>
<li>MySQLのバージョン……4.0.27</li>
<li>データベースの文字コード……EUC-JP（ujis）</li>
<li>WordPress設定ファイル（wp-config.php）のテーブル接頭辞……hoge_</li>
<li>稼働中のURL……http://www.example.com/fuga</li>
</ul>
<h3>移行先</h3>
<ul>
<li>サーバ……ローカルのテスト環境（Ubuntu 8.04 Server Edition）</li>
<li>MySQLのバージョン……5.0.67（XAMPP for Linux内で稼働）</li>
<li>データベースの文字コード……UTF-8 Unicode（utf8）</li>
<li>WordPress設定ファイル（wp-config.php）のテーブル接頭辞……wp_hoge_</li>
<li>稼働させようとするURL……http://192.168.x.x/fuga</li>
</ul>
<h3>作業の手順</h3>
<ol>
<li>移行元のphpMyAdminにて hoge_ で始まるテーブル一式をSQL形式でエクスポート</li>
<li>1.で書き出したファイルをテキストエディタで開き（このとき文字コードはUTF-8と自動認識された）「hoge_」を「wp_hoge_」に一括置換し保存</li>
<li>移行先のphpMyAdminにて新規データベースを作成。MySQLの接続照合順序はデフォルトの utf8_general_ci にて</li>
<li>移行先にWordPressの最新版（本記事執筆時は3.1）全ファイルをアップロード。インストールスクリプト（http://192.168.x.x/fuga）は起動させない</li>
<li>移行先のphpMyAdminにて2.で作ったテキストファイルをインポート</li>
<li>インポートした wp_hoge_options を開き siteurl と home を http://192.168.x.x/fuga に修正</li>
<li>インポートしたテーブルはWordPress MEの構造のままなので、http://192.168.x.x/fuga/wp-admin にアクセスしてデータベースをアップグレード</li>
<li>移行元で使っていたユーザー名・パスワードで管理パネルにログインすればオッケイ……のはずが「このページにアクセスするための十分なアクセス権がありません。」のエラーメッセージ発生！</li>
</ol>
<p>このメッセージが現われる原因として</p>
<p><a href="http://http://www.odysseygate.com/archives/769" target="_blank">[wordpress error] アクセスする権限がないと表示されて管理画面にログインできない場合の対処法 | Odysseygate.com</a></p>
<p>にて示されているような「wp_options の wp_user_roles 問題」がググるとよく出てくるのですが、ウチの場合は微妙に違っていました。上記サイトの「エラーの原因」「解決方法」にある対処法ではNGで、上で示した「作業の手順」の3.で</p>
<p><strong>接続照合順序を utf8_unicode_ci にしてデータベースを作成</strong></p>
<p>したことで問題を解決できたのでした。エクスポートされたファイルがUTF-8と判定されたのでデフォルトの接続照合順序で作成したのですが……原因がナゾです <img src='http://www.tecking.org/wordpress/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> 　移行元のMySQLがEUC-JP（ujis）の文字コードで稼働してるのに wp-config.php で</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'DB_CHARSET'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'utf8'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>と書いてたのがまずかったですかね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecking.org/archives/2225/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tecking.org/archives/2225" />
	</item>
	</channel>
</rss>

