<?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>X-&#62;A-&#62;O</title>
	<atom:link href="http://blog.xao.jp/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.xao.jp/blog</link>
	<description>ちょっとでも良くしよう</description>
	<lastBuildDate>Fri, 18 May 2012 00:04:56 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.xao.jp/blog/feed/" />
		<item>
		<title>CakePHP 2.x で Cron を使う</title>
		<link>http://blog.xao.jp/blog/cakephp/cakephp-2-0-%e3%81%a7-cron-%e3%82%92%e4%bd%bf%e3%81%86/</link>
		<comments>http://blog.xao.jp/blog/cakephp/cakephp-2-0-%e3%81%a7-cron-%e3%82%92%e4%bd%bf%e3%81%86/#comments</comments>
		<pubDate>Fri, 11 May 2012 11:14:41 +0000</pubDate>
		<dc:creator>zuborawka</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://blog.xao.jp/blog/?p=749</guid>
		<description><![CDATA[以前、CakePHP1.3(ひょっとしたら1.2？)のときにもCronの使い方をメモしたのですが、あちらは通常の、ブラウザから渡されたURLに基づくアクションを疑似的に実行するという、どちらかというと裏技的なやり方であり &#8230; <a href="http://blog.xao.jp/blog/cakephp/cakephp-2-0-%e3%81%a7-cron-%e3%82%92%e4%bd%bf%e3%81%86/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>以前、CakePHP1.3(ひょっとしたら1.2？)のときにも<a title="CakePHP で cron を設定したときのメモ" href="http://blog.xao.jp/blog/cakephp/%e5%88%9d%e5%bf%83%e8%80%85%e5%90%91%e3%81%91%e3%81%ae-cakephp-%e3%81%a7-cron-%e3%82%92%e5%ae%9f%e8%a1%8c%e3%81%99%e3%82%8b%e3%81%9f%e3%82%81%e3%81%ae%e3%83%a1%e3%83%a2/">Cronの使い方をメモした</a>のですが、あちらは通常の、ブラウザから渡されたURLに基づくアクションを疑似的に実行するという、どちらかというと裏技的なやり方であり、CakePHPの本来のShellの使い方ではなかったようです。</p>
<p>今回2.xを使い始めたこともあり、改めてCronの使い方について学習したのでメモします。1.3とは結構変更があったようで、ConsoleというディレクトリがApp内に追加されて自作シェルの使用がより簡単になったっぽいです。なお以下の手順のバージョンはCakePHP2.1.1です。</p>
<p>基本はControllerがShellに変わったような感じで、かなりスッキリ作れます。</p>
<h1>クラスファイル作成と、Shellアクション呼び出しのポイント</h1>
<ol>
<li>自作のShellクラスを記述したPHPファイル(A)、Console/cake.phpを起動させるシェルスクリプト(B)、シェルスクリプトを提示実行させるためのCronコマンド(C)、以上のA,B,C3つの設置・設定が必要。</li>
<li>自作Shellクラス名は先頭にシェル名、続いて末尾に &#8220;Shell&#8221; をつける。</li>
<li>自作Shellクラスは AppShell を継承する。</li>
<li>ファイル名はクラス名+&#8221;.php&#8221;</li>
<li>無名メソッド(Controller の index のようなもの)を使いたいときは main を用いる。</li>
<li>メソッドのシグネチャはパラメータをとれない。コマンドで渡した引数は $this -&gt; args でアクセス。</li>
<li>自作Shell クラスファイルの保存場所は app/Console/Command/</li>
<li>シェルスクリプトから呼び出すのは app/Console/cake.php</li>
<li>シェルから cake.php に渡すアクション引数は &#8220;Shell&#8221; を<strong><span style="color: #ff0000;">つけない。</span></strong></li>
<li>Shell / Web の判定は定数 &#8216;CAKEPHP_SHELL&#8217; を用いる。</li>
<li>アクション共通の前処理は Shell::startup() をオーバーライド。後処理のコールバックは…無い。</li>
</ol>
<p>と言うわけで、Webの場合の”Controller&#8221;とかなり共通点が多いと思います。<br />
ただ、シェルスクリプトの設置やコマンドの打ち方など、直接CakePHPに関係ない部分もあるのでそちらの方で躓くことが多いかも知れない。</p>
<p>実際に例を挙げるとこんな具合</p>
<h2>A:自作のShellクラス</h2>
<pre class="brush:php">/**
 * app/Console/Command/MyShell.php
 */
class MyShell extends AppShell {

    var $uses = array( 'MyModel' ); // モデルを使用する場合はここに記述すれば楽。

    function main() {} // メソッドを無名にする場合は "main" を用いる

    function myMethod() { // メソッド名を指定する場合。
        $arg0 = $this -&gt; args[0]; // コマンドで渡した引数は $this -&gt; args に配列でセットされている。
    }

    /** このようなパラメータの渡し方は出来ない
    function myInvalidMethod( $arg ) {
    }
    */

}</pre>
<h2>B:シェルスクリプト</h2>
<ol>
<li>php へのパス</li>
<li>cake.php へのパス</li>
<li>シェル名(=Shell クラスの名前から末尾の”Shell&#8221;を除いたもの)</li>
<li>メソッド名</li>
<li>引数(省略/複数可能。クォータで囲むのが無難。)</li>
<li>コマンド&#8221;-app&#8221;</li>
<li>appまでのパス</li>
</ol>
<p>のそれぞれを順番通りにスペースで区切って保存。</p>
<p>パラメータを指定する場合は、クォータでくくっておいた方が無難。特に先頭が&#8221;-&#8221;ハイフンから始まるものは -app 以外であっても特別な意味を持つ可能性があるので要注意。</p>
<p><span style="color: #ff0000;">実行権限は755以上</span>にする。</p>
<p>あと、Windows環境で作成したファイルの場合は<span style="color: #ff0000;">改行コードを必ずLFとする</span>ことを忘れないように。</p>
<pre class="brush:shell;">#! /bin/sh
/usr/bin/php /*********/app/Console/cake.php My myMethod myArg0 myArg1 myArg2 -app /*********/app</pre>
<h2>C: ジョブコマンド</h2>
<p>※ B のファイルまでの(ルートから見た)パスを記述。例えば</p>
<pre>/home/user/private/myjob.sh</pre>
<p>な、感じ。</p>
<p>以上の A、B、Cを滞りなく設定すればOKなはず。</p>
<p>Linuxとかで普段からスクリプト書いてる人には後半の記述は当たり前のことがばかりではないかと思うのですが、私のようにそういうのが大変な人は参考にしてください。<br />
そういえば最初、Windows しか触ったことが無かったんで&#8221;root&#8221; とユーザーの違いが分かりにくかったですわ。</p>
<hr />
<p>おまけ。</p>
<h2>コマンドから柔軟に引数を渡す</h2>
<p>以上の書き方はシェルスクリプトに引数を固定した場合。これをコマンドから柔軟に指定したい場合は次のようにすればOK。ただ、なんかもっとスマートな書き方があると思います(＾＾；)</p>
<h3>B:シェル</h3>
<pre class="brush:shell;">#! /bin/sh
/usr/bin/php /*********/app/Console/cake.php $1 $2 $3 $4 $5 -app /*********/app</pre>
<h3 class="brush:shell;">C:コマンド</h3>
<pre>/home/user/private/myjob.sh My myFunction myArg0 myArg1 myArg2</pre>
<h2>呼び出しがShellであるかの是非を知る</h2>
<p>Model などで、現在のプロセスがShellなのかそうでないのかを判別する方法として、class ShellDispatcher で定義される定数 &#8216;CAKEPHP_SHELL&#8217; の使用があります。ちなみに bootstrap.php の読み込みはこの後に実行されるので、そこでもこのフラグをつかえます。</p>
<pre class="brush:php">/**
 * lib/Cake/Console/ShellDispatcher.php

ShellDispatcher::run( $argv ); #Console/cake.php
    ↓
new ShellDispatcher( $argv ); #ShellDispatcher::run
    ↓
ShellDispatcher::_initConstants(); #ShellDispatcher::__construct

 */
protected function _initConstants() {
    if (function_exists('ini_set')) {
        ini_set('html_errors', false);
        ini_set('implicit_flush', true);
        ini_set('max_execution_time', 0);
    }

    if (!defined('CAKE_CORE_INCLUDE_PATH')) {
        define('DS', DIRECTORY_SEPARATOR);
        define('CAKE_CORE_INCLUDE_PATH', dirname(dirname(dirname(__FILE__))));
        define('CAKEPHP_SHELL', true);  // ←これ！
        if (!defined('CORE_PATH')) {
            define('CORE_PATH', CAKE_CORE_INCLUDE_PATH . DS);
        }
    }
}</pre>
<h2>メソッド実行後のコールバックメソッドは・・・「無い」</h2>
<p>Controller でいうところの afterFilter のようなコールバックはありません。共通の前処理を行うには AppShell::startup() メソッドをオーバーライドすればいいのですが、後処理のそれはなく、見たところコアに触れざるを得ないようですので、実質的に共通の後処理は個別に書いていくしかない。</p>
<p>このあたり CakePHP はきっちり実装してる印象があるだけにちょっと残念。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xao.jp/blog/cakephp/cakephp-2-0-%e3%81%a7-cron-%e3%82%92%e4%bd%bf%e3%81%86/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.xao.jp/blog/cakephp/cakephp-2-0-%e3%81%a7-cron-%e3%82%92%e4%bd%bf%e3%81%86/" />
	</item>
		<item>
		<title>MySQLの超遅いSELECTが劇的に早くなった</title>
		<link>http://blog.xao.jp/blog/mysql/mysql%e3%81%ae%e8%b6%85%e9%81%85%e3%81%84select%e3%81%8c%e5%8a%87%e7%9a%84%e3%81%ab%e6%97%a9%e3%81%8f%e3%81%aa%e3%81%a3%e3%81%9f/</link>
		<comments>http://blog.xao.jp/blog/mysql/mysql%e3%81%ae%e8%b6%85%e9%81%85%e3%81%84select%e3%81%8c%e5%8a%87%e7%9a%84%e3%81%ab%e6%97%a9%e3%81%8f%e3%81%aa%e3%81%a3%e3%81%9f/#comments</comments>
		<pubDate>Thu, 10 May 2012 19:30:13 +0000</pubDate>
		<dc:creator>zuborawka</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://blog.xao.jp/blog/?p=732</guid>
		<description><![CDATA[CakePHPはよく触っていたものの、MySQLについてあまり知らなかったんですが、大規模なデータベースを扱ってみようと思い立ちいろいろ試行錯誤しています。 で、ついさっき感動したのが、40万件のレコードを扱ってるテーブ &#8230; <a href="http://blog.xao.jp/blog/mysql/mysql%e3%81%ae%e8%b6%85%e9%81%85%e3%81%84select%e3%81%8c%e5%8a%87%e7%9a%84%e3%81%ab%e6%97%a9%e3%81%8f%e3%81%aa%e3%81%a3%e3%81%9f/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>CakePHPはよく触っていたものの、MySQLについてあまり知らなかったんですが、大規模なデータベースを扱ってみようと思い立ちいろいろ試行錯誤しています。</p>
<p>で、ついさっき感動したのが、40万件のレコードを扱ってるテーブルに簡単なSELECT分を投げて返ってくる時間がなんと5秒もかかっていて、なんじゃこりゃ？って首をかしげてたんですが、INDEXひとつで劇的に早くなったこと。<br />
40万件が大規模かそうでないかはこの際おいておいて、INDEXのつけ方次第でこんなにも速度に変化があるのかと涙が出そうになった。</p>
<p>最初の劇遅いテーブルは簡単に書くとこんな具合。</p>
<pre class="brush:sql">CREATE TABLE IF NOT EXISTS `shops` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `name` varchar(255) NOT NULL,
    `status` enum('regular', 'special') NOT NULL DEFAULT 'regular',
    `created` timestamp,
    `modified` datetime,
    PRIMARY KEY (`id`),
    KEY `status` (`status`)
) ENGINE=MyISAM</pre>
<p>発行するクエリは</p>
<pre class="brush:sql">SELECT * FROM `shops` WHERE `status` = 'regular' ORDER BY `id` ASC LIMIT 1</pre>
<p>こんなごく単純にレコード一つとってくるだけなのですが、これがなんとびっくり<strong>平均5秒！</strong><br />
本来こんなのろまな筈がないのですが、いったい何が起こっているのかさっぱりでした。</p>
<p>いくらなんでもこれは遅すぎる。<br />
何が原因かわからなかったんでクエリから条件を一つずつ削除してみようと思い、まずはとORDER BY句を削除</p>
<pre class="brush:sql">SELECT * FROM `shops` WHERE `status` = 'regular' LIMIT 1</pre>
<p>するとなんと 0.00008秒！<br />
次にWHERE 句だけを削除しても同様に早くなった</p>
<pre class="brush:sql">SELECT * FROM `shops` ORDER BY `id` ASC LIMIT 1</pre>
<p>まぁ、これで早くなるのは当然ですが、しかしなぜ最初の文だとあれほど遅いのだろうか。<br />
エンジンはMyISAMだし、status にインデックス振ってるし、id も当然 PRIMARY KEY にしているし。。。<br />
で、試しに id と status を複数選択してインデックスを追加。</p>
<pre class="brush:sql">ALTER TABLE  `shops` ADD INDEX (  `id` ,  `status` ) ;</pre>
<p>これが実は成功の一歩手前だったんですが、効果がほんの少しあったようで3.5秒程度にはなった。<br />
が、それでも全然遅い。</p>
<p>で、たしか<span style="text-decoration: underline;">INDEXの順番とWHERE句の順番を同じにしないと意味がない</span>ってことだったので、WHERE句ではないと思いながらも<br />
id, status<br />
の順番を逆に<br />
status, id<br />
にして再度INDEXを設定した。</p>
<pre class="brush:sql">ALTER TABLE  `shops` ADD INDEX (  `status` ,  `id` ) ;</pre>
<p>すると！なんと<span style="color: #ff0000;"><strong>0.0004sec.！！！</strong></span></p>
<p>この理由は、MySQLは(っていうからには他のは違うのかっていうとよく分かりませんが)1テーブルにつき1インデックスしか使用されないんだということ。<br />
それからやはり順番は大事ってことですね。</p>
<p>ちなみにデータサイズは、インデックスを付加することで3.2MB増えた。<br />
同じような複合インデックスを INT+INTでやると3.5MBの増加、INT単体の場合は2.8MBの増加だった。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xao.jp/blog/mysql/mysql%e3%81%ae%e8%b6%85%e9%81%85%e3%81%84select%e3%81%8c%e5%8a%87%e7%9a%84%e3%81%ab%e6%97%a9%e3%81%8f%e3%81%aa%e3%81%a3%e3%81%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.xao.jp/blog/mysql/mysql%e3%81%ae%e8%b6%85%e9%81%85%e3%81%84select%e3%81%8c%e5%8a%87%e7%9a%84%e3%81%ab%e6%97%a9%e3%81%8f%e3%81%aa%e3%81%a3%e3%81%9f/" />
	</item>
		<item>
		<title>CakePHP2.0で、action内部からComponentを呼び出す方法</title>
		<link>http://blog.xao.jp/blog/cakephp/cakephp2-0%e3%81%a7%e3%80%81action%e5%86%85%e9%83%a8%e3%81%8b%e3%82%89component%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99%e6%96%b9%e6%b3%95/</link>
		<comments>http://blog.xao.jp/blog/cakephp/cakephp2-0%e3%81%a7%e3%80%81action%e5%86%85%e9%83%a8%e3%81%8b%e3%82%89component%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99%e6%96%b9%e6%b3%95/#comments</comments>
		<pubDate>Fri, 27 Apr 2012 03:00:44 +0000</pubDate>
		<dc:creator>zuborawka</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://blog.xao.jp/blog/?p=715</guid>
		<description><![CDATA[CakePHPが2.0になって変更した仕様の一つにControllerのアクション内でComponentを呼び出す方法があるようです。 以前だと App::import( 'Component', 'MyComponen &#8230; <a href="http://blog.xao.jp/blog/cakephp/cakephp2-0%e3%81%a7%e3%80%81action%e5%86%85%e9%83%a8%e3%81%8b%e3%82%89component%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99%e6%96%b9%e6%b3%95/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>CakePHPが2.0になって変更した仕様の一つにControllerのアクション内でComponentを呼び出す方法があるようです。</p>
<p>以前だと</p>
<pre class="brush:php">App::import( 'Component', 'MyComponent' );
$MyComponent = new MyComponent();</pre>
<p>で良かったはずですが、2.0だと色々と仕様が変わっているため</p>
<pre>Argument 1 passed to MyComponent::__construct() must be an instance of ComponentCollection, none given, called in ..........</pre>
<p>などとエラーになります。</p>
<p>そこで調べたらより便利な方法が提供されているではありませんか！</p>
<pre class="brush:php">$component = $this -&gt; Components -&gt; load( 'ComponentName' );</pre>
<p>これなら１行でOKです。</p>
<p><a title="Loading components on the fly" href="http://book.cakephp.org/2.0/en/controllers/components.html#loading-components-on-the-fly">Loading Components On The Fly</a></p>
<blockquote><p>You might not need all of your components available on every controller action. In situations like this you can load a component at runtime using the <a href="http://book.cakephp.org/2.0/en/core-libraries/collections.html"><em>Component Collection</em></a>. From inside a controller you can do the following:</p></blockquote>
<pre class="brush:php">&lt;?php
$this-&gt;OneTimer = $this-&gt;Components-&gt;load('OneTimer');
$this-&gt;OneTimer-&gt;getTime();</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.xao.jp/blog/cakephp/cakephp2-0%e3%81%a7%e3%80%81action%e5%86%85%e9%83%a8%e3%81%8b%e3%82%89component%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.xao.jp/blog/cakephp/cakephp2-0%e3%81%a7%e3%80%81action%e5%86%85%e9%83%a8%e3%81%8b%e3%82%89component%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99%e6%96%b9%e6%b3%95/" />
	</item>
		<item>
		<title>BaserCMS で、携帯判定</title>
		<link>http://blog.xao.jp/blog/basercms/basercms-%e3%81%a7%e3%80%81%e6%90%ba%e5%b8%af%e5%88%a4%e5%ae%9a/</link>
		<comments>http://blog.xao.jp/blog/basercms/basercms-%e3%81%a7%e3%80%81%e6%90%ba%e5%b8%af%e5%88%a4%e5%ae%9a/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 19:58:49 +0000</pubDate>
		<dc:creator>zuborawka</dc:creator>
				<category><![CDATA[BaserCMS]]></category>

		<guid isPermaLink="false">http://blog.xao.jp/blog/?p=702</guid>
		<description><![CDATA[BaserCMS を初めて使ってるんでメモ。 携帯の判定は /baser/bootstrap.php 内で行っていて、該当した UserAgent の場合に適宜情報を Configure::write() しています。  &#8230; <a href="http://blog.xao.jp/blog/basercms/basercms-%e3%81%a7%e3%80%81%e6%90%ba%e5%b8%af%e5%88%a4%e5%ae%9a/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>BaserCMS を初めて使ってるんでメモ。</p>
<p>携帯の判定は /baser/bootstrap.php 内で行っていて、該当した UserAgent の場合に適宜情報を Configure::write() しています。</p>
<table class="code-table" summary="BaserCMSでConfigureに書き込まれている、モバイルアクセス関連の設定値">
<caption>Configureに書き込まれているモバイルアクセス関連の設定値</caption>
<thead>
<tr>
<th>キー</th>
<th>値の候補</th>
<th>備考</th>
</tr>
</thead>
<tbody>
<tr>
<th>AgentPrefix.currentAgent</th>
<td>&#8216;mobile&#8217;, &#8216;smartphone&#8217;, null</td>
<td>$config['AgentSettings']のキーがそのまま入る。</td>
</tr>
<tr>
<th>AgentPrefix.currentPrefix</th>
<td>&#8216;mobile&#8217;, &#8216;smartphone&#8217;, null</td>
<td>currentAgent と同じ値だが、BaserCMSのコアではこちらを用いてMobileHelperのロードを行ったりしているため、これを使用した方がよさそう。</td>
</tr>
<tr>
<th>AgentPrefix.currentAlias</th>
<td>&#8216;m&#8217;, &#8216;s&#8217;, null</td>
<td>URLに挿入されるプリフィクス。</td>
</tr>
<tr>
<th>AgentPrefix.on</th>
<td>true, false</td>
<td>プリフィクスの有無。</td>
</tr>
</tbody>
</table>
<p>例：独自で作成した携帯用ヘルパー(AppMobileHelper)またはスマホ用ヘルパー(AppSmartphoneHelper)を用いる場合。<br />
※&#8221;MobileHelper&#8221; というクラスは、BaserCMSのコアで使用されているので名前が衝突しないように注意です。</p>
<pre class="brush:php">App::import('Core', 'BaserAppController', array('search' =&gt; BASER_CONTROLLERS));
/**
 * Controller 拡張クラス
 *
 * @package			baser.controllers
 */
class AppController extends BaserAppController {

	function __construct(){
		if( $prefix = Configure::read( 'AgentPrefix.currentPrefix' ) ){
			$this -&gt; helpers = array( 'App' . ucfirst( $prefix ) );
		}
		parent::__construct();
	}
}</pre>
<p class="brush:php">しかし、このCMSは簡単にそれなりのものが出来ちゃいますね♪<br />
素晴らしいです。</p>
<p class="brush:php">ありがとう、<a title="BaserCMS公式ページ" href="http://basercms.net">BaserCMS</a> !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xao.jp/blog/basercms/basercms-%e3%81%a7%e3%80%81%e6%90%ba%e5%b8%af%e5%88%a4%e5%ae%9a/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.xao.jp/blog/basercms/basercms-%e3%81%a7%e3%80%81%e6%90%ba%e5%b8%af%e5%88%a4%e5%ae%9a/" />
	</item>
		<item>
		<title>仕事を頼みたい人・ほしい人が知っておいて損のない話</title>
		<link>http://blog.xao.jp/blog/pc%e4%b8%80%e8%88%ac/%e4%bb%95%e4%ba%8b%e3%82%92%e9%a0%bc%e3%81%bf%e3%81%9f%e3%81%84%e4%ba%ba%e3%81%a8%e4%bb%95%e4%ba%8b%e3%81%8c%e3%81%bb%e3%81%97%e3%81%84%e4%ba%ba%e3%81%8c%e7%9f%a5%e3%81%a3%e3%81%a6%e3%81%8a%e3%81%84/</link>
		<comments>http://blog.xao.jp/blog/pc%e4%b8%80%e8%88%ac/%e4%bb%95%e4%ba%8b%e3%82%92%e9%a0%bc%e3%81%bf%e3%81%9f%e3%81%84%e4%ba%ba%e3%81%a8%e4%bb%95%e4%ba%8b%e3%81%8c%e3%81%bb%e3%81%97%e3%81%84%e4%ba%ba%e3%81%8c%e7%9f%a5%e3%81%a3%e3%81%a6%e3%81%8a%e3%81%84/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 16:58:17 +0000</pubDate>
		<dc:creator>zuborawka</dc:creator>
				<category><![CDATA[PC一般]]></category>

		<guid isPermaLink="false">http://blog.xao.jp/blog/?p=626</guid>
		<description><![CDATA[ランサーズというサービスをご存知でしょうか。 知名度は高いらしいですが、恥ずかしながら私は先日知ったばかりです。 利用する機会がありそうなのでメモ。 このサービスは、キャッチフレーズに「仕事マーケットプレイス」とあるよう &#8230; <a href="http://blog.xao.jp/blog/pc%e4%b8%80%e8%88%ac/%e4%bb%95%e4%ba%8b%e3%82%92%e9%a0%bc%e3%81%bf%e3%81%9f%e3%81%84%e4%ba%ba%e3%81%a8%e4%bb%95%e4%ba%8b%e3%81%8c%e3%81%bb%e3%81%97%e3%81%84%e4%ba%ba%e3%81%8c%e7%9f%a5%e3%81%a3%e3%81%a6%e3%81%8a%e3%81%84/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p><a title="仕事マッチングサイト | ランサーズ" href="http://www.lancers.jp/affiliate/track?id=48551&amp;link=%2F">ランサーズ</a>というサービスをご存知でしょうか。<br />
知名度は高いらしいですが、恥ずかしながら私は先日知ったばかりです。<br />
利用する機会がありそうなのでメモ。</p>
<p>このサービスは、キャッチフレーズに「仕事マーケットプレイス」とあるように、Web上で仕事を売買する市場のようなもの。<br />
仕事を依頼するクライアントと、受注を希望する者(ランサーと呼ばれる)とのマッチングサイト。<br />
同じマッチングサイトでありながら一般的な求人サイトと決定的に違う点は、このサービスはあくまでもプロジェクト単位でのマッチングであるという点。</p>
<p>お手頃価格でロゴを作ってほしい場合なんかはとても利用価値が高いのではないでしょうか。<br />
ほかに、e-commerceシステムの作成依頼からブログの日記を書いてもらう依頼や、メルマガに登録してもらう依頼なんかもあります。<br />
価格は自由に設定でき、例えばロゴのコンペなんかだと高額の案件ほど沢山の応募があり、質と価格のバランスが自然に取れているようにも見えました。</p>
<p><a href="http://www.lancers.jp/affiliate/track?id=48551&amp;link=%2F" target="_blank">ランサーズ (lancers.jp)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xao.jp/blog/pc%e4%b8%80%e8%88%ac/%e4%bb%95%e4%ba%8b%e3%82%92%e9%a0%bc%e3%81%bf%e3%81%9f%e3%81%84%e4%ba%ba%e3%81%a8%e4%bb%95%e4%ba%8b%e3%81%8c%e3%81%bb%e3%81%97%e3%81%84%e4%ba%ba%e3%81%8c%e7%9f%a5%e3%81%a3%e3%81%a6%e3%81%8a%e3%81%84/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.xao.jp/blog/pc%e4%b8%80%e8%88%ac/%e4%bb%95%e4%ba%8b%e3%82%92%e9%a0%bc%e3%81%bf%e3%81%9f%e3%81%84%e4%ba%ba%e3%81%a8%e4%bb%95%e4%ba%8b%e3%81%8c%e3%81%bb%e3%81%97%e3%81%84%e4%ba%ba%e3%81%8c%e7%9f%a5%e3%81%a3%e3%81%a6%e3%81%8a%e3%81%84/" />
	</item>
		<item>
		<title>いまさら聞けない .htaccess や ApacheやHTTPとは何かをたった1分間で知る</title>
		<link>http://blog.xao.jp/blog/wordpress/htaccess/%e3%81%84%e3%81%be%e3%81%95%e3%82%89%e8%81%9e%e3%81%91%e3%81%aa%e3%81%84-htaccess-%e3%82%84-apache%e3%82%84http%e3%81%a8%e3%81%af%e4%bd%95%e3%81%8b%e3%82%92%e3%81%9f%e3%81%a3%e3%81%9f1%e5%88%86/</link>
		<comments>http://blog.xao.jp/blog/wordpress/htaccess/%e3%81%84%e3%81%be%e3%81%95%e3%82%89%e8%81%9e%e3%81%91%e3%81%aa%e3%81%84-htaccess-%e3%82%84-apache%e3%82%84http%e3%81%a8%e3%81%af%e4%bd%95%e3%81%8b%e3%82%92%e3%81%9f%e3%81%a3%e3%81%9f1%e5%88%86/#comments</comments>
		<pubDate>Sun, 31 Jul 2011 04:43:12 +0000</pubDate>
		<dc:creator>zuborawka</dc:creator>
				<category><![CDATA[.htaccess]]></category>

		<guid isPermaLink="false">http://blog.xao.jp/blog/?p=612</guid>
		<description><![CDATA[.htaccess とは何か Apacheサーバ(というソフトウェア)に対してディレクトリごとにディレクティブ(=命令)を適用させるためのファイル。 設置したディレクトリとそのサブディレクトリにディレクティブを適用させる &#8230; <a href="http://blog.xao.jp/blog/wordpress/htaccess/%e3%81%84%e3%81%be%e3%81%95%e3%82%89%e8%81%9e%e3%81%91%e3%81%aa%e3%81%84-htaccess-%e3%82%84-apache%e3%82%84http%e3%81%a8%e3%81%af%e4%bd%95%e3%81%8b%e3%82%92%e3%81%9f%e3%81%a3%e3%81%9f1%e5%88%86/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<h2>.htaccess とは何か</h2>
<ul>
<li><span style="text-decoration: underline;"><strong>Apacheサーバ(というソフトウェア)</strong></span>に対してディレクトリごとに<strong><span style="text-decoration: underline;">ディレクティブ(=命令)</span></strong>を適用させるためのファイル。</li>
<li>設置したディレクトリとそのサブディレクトリにディレクティブを適用させる。</li>
<li><span style="text-decoration: underline;"><strong>メイン設定ファイル</strong></span>に記述したディレクティブや上位ディレクトリにある.htaccessのディレクティブを上書きする。</li>
<li>リクエストのたびに参照される。</li>
</ul>
<h2>ディレクティブとは何か</h2>
<ul>
<li><span style="text-decoration: underline;"><strong>Apacheサーバ</strong></span>への命令のこと。コマンド。指示子とも呼ばれる。</li>
</ul>
<h2>メイン設定ファイルとは何か</h2>
<ul>
<li>httpd.conf 。<span style="text-decoration: underline;"><strong>Apacheサーバ</strong></span>の起動時または再起動時に反映されるディレクティブのファイル。</li>
<li>.htaccess とは違い、一度起動すると再起動するまで変更を反映しない。</li>
<li>.htaccess で上書き不可能なディレクティブも書かれてある。</li>
</ul>
<h2>Apacheサーバとは何か</h2>
<ul>
<li><span style="text-decoration: underline;"><strong>Webサーバソフトウェア</strong></span>の一種で最もシェアが高い。</li>
<li>開発はApacheソフトウェア財団が行い、オープンソースであり無料で使用できる。</li>
</ul>
<h2>Webサーバソフトウェアとは何か</h2>
<ul>
<li><span style="text-decoration: underline;"><strong>HTTP</strong></span>(HyperText Transfer Protocol)に則り、クライアントのWebブラウザのリクエストを解析して、Webサーバコンピュータ内に存在するデータをHTTPコネクションに送信するソフトウェア。</li>
</ul>
<h2>HTTPとは何か</h2>
<ul>
<li>WebブラウザとWebサーバの間でHTMLなどのコンテンツの送受信に用いられる<span style="text-decoration: underline;"><strong>通信プロトコル(通信上の取り決め)</strong></span>の一種。</li>
<li>リクエスト-レスポンス型のプロトコルである。</li>
</ul>
<h2>通信プロトコルとは何か</h2>
<ul>
<li>ネットワークを仲介してコンピュータ同士が通信を行う場合の取り決めのこと。</li>
<li>国際標準化機構(ISO)により7つの階層に分けて標準化されている。</li>
<li>IPは3番目、TCPは4番目、HTTPは5番目の階層でセッション層と呼ばれるものである。</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.xao.jp/blog/wordpress/htaccess/%e3%81%84%e3%81%be%e3%81%95%e3%82%89%e8%81%9e%e3%81%91%e3%81%aa%e3%81%84-htaccess-%e3%82%84-apache%e3%82%84http%e3%81%a8%e3%81%af%e4%bd%95%e3%81%8b%e3%82%92%e3%81%9f%e3%81%a3%e3%81%9f1%e5%88%86/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.xao.jp/blog/wordpress/htaccess/%e3%81%84%e3%81%be%e3%81%95%e3%82%89%e8%81%9e%e3%81%91%e3%81%aa%e3%81%84-htaccess-%e3%82%84-apache%e3%82%84http%e3%81%a8%e3%81%af%e4%bd%95%e3%81%8b%e3%82%92%e3%81%9f%e3%81%a3%e3%81%9f1%e5%88%86/" />
	</item>
		<item>
		<title>WordPress の get_bloginfo, bloginfo を詳しく見る。</title>
		<link>http://blog.xao.jp/blog/wordpress/learn-more-about-get_bloginfo-and-bloginfo/</link>
		<comments>http://blog.xao.jp/blog/wordpress/learn-more-about-get_bloginfo-and-bloginfo/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 16:29:42 +0000</pubDate>
		<dc:creator>zuborawka</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[コアシステム]]></category>

		<guid isPermaLink="false">http://blog.xao.jp/blog/?p=561</guid>
		<description><![CDATA[get_bloginfo(), bloginfo() のパラメータとしてプリセットされている文字列を一覧にしてみました。調べたWordPressのバージョンは3.2.1 です。こうして眺めてみると、公開ページの出力に必要 &#8230; <a href="http://blog.xao.jp/blog/wordpress/learn-more-about-get_bloginfo-and-bloginfo/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>get_bloginfo(), bloginfo() のパラメータとしてプリセットされている文字列を一覧にしてみました。調べたWordPressのバージョンは3.2.1 です。こうして眺めてみると、公開ページの出力に必要なデータに絞っていることがよくわかります。</p>
<p>bloginfo( $show ) は get_bloginfo( $show, &#8216;display&#8217; ) で取得した値を echo するラッパー関数の類。</p>
<p>単に get_option() を呼び出しているものは意外と少なかった印象。</p>
<script type='text/javascript'>
jQuery( document ).ready(
	function(){
		jQuery( '.action-open' ).click( function(){
			var names = jQuery( this ).attr( 'id' ).split( '-' );
			var disp = jQuery( '#description-' + names[1] ).css( 'display' );
			if( 'none' == disp )
			{
				jQuery( '#description-' + names[1] ).css( 'display', 'table-row' );
				jQuery( this ).text( '-' );
			}
			else
			{
				jQuery( '#description-' + names[1] ).css( 'display', 'none' );
				jQuery( this ).text( '+' );
			}
		} );
	}
);
</script>
<table id='bloginfo-table'>
<colgroup>
	<col width="145" />
	<col width="72" />
	<col width="196" />
	<col width="124" />
	<col width="272" />
	<col width="82" />
</colgroup>
<thead>
	<tr>
		<th rowspan='2'>$show (第1引数)</th>
		<th colspan='3'>処理内容</th>
		<th rowspan='2'>フィルタ<br />(<a href='#bloginfo-note-1' class='to-note'>※1</a>)</th>
	</tr>
	<tr>
		<th>関数</th>
		<th>パラメータ</th>
		<th>その他</th>
	</tr>
</thead>
<tfoot>
	<tr>
		<th>$show</th>
		<th>関数</th>
		<th>パラメータ</th>
		<th>その他</th>
		<th>フィルタ</th>
	</tr>
</tfoot>
<tbody>	<tr class='even deprecated'>
		<th class='keyword'><span class="deprecated">home</span>(非推奨<a href="#bloginfo-note-2">※2</a>)</th>
		<td class='function home_url'>home_url</td>
		<td class='parameter'><span class="empty">無し</span></td>
		<td class='other'><span class="empty">無し</span></td>
		<td class='filter bloginfo_url'>bloginfo_url</td>
	</tr>
	<tr class='odd deprecated'>
		<th class='keyword'><span class="deprecated">siteurl</span>(非推奨<a href="#bloginfo-note-2">※2</a>)</th>
		<td class='function home_url'>home_url</td>
		<td class='parameter'><span class="empty">無し</span></td>
		<td class='other'><span class="empty">無し</span></td>
		<td class='filter bloginfo_url'>bloginfo_url</td>
	</tr>
	<tr class='even'>
		<th class='keyword'><span id="action-2" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>url(<a href="#bloginfo-note-5" class="to-note">※5</a>)</th>
		<td class='function home_url'>home_url</td>
		<td class='parameter'><span class="empty">無し</span></td>
		<td class='other'><span class="empty">無し</span></td>
		<td class='filter bloginfo_url'>bloginfo_url</td>
	</tr>
<tr id="description-2" class="description even" style="display:none"><td colspan="5"><p class="description">トップページのURL。</p><p class="codex">Returns the 'Site address (URL)' set in Settings &gt; General. This data is retrieved from the 'home' record in the wp_options table. Consider using home_url() instead.</p><p class="transrated">設定 &gt; 一般 で設定された 'サイトのアドレス (URL)' を返します。 このデータは wp_options テーブルの 'home' レコードから取得されます。替わりに home_url() の使用も検討してください。</p></td></tr>	<tr class='odd'>
		<th class='keyword'><span id="action-3" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>wpurl(<a href="#bloginfo-note-5" class="to-note">※5</a>)</th>
		<td class='function site_url'>site_url</td>
		<td class='parameter'><span class="empty">無し</span></td>
		<td class='other'><span class="empty">無し</span></td>
		<td class='filter bloginfo_url'>bloginfo_url</td>
	</tr>
<tr id="description-3" class="description odd" style="display:none"><td colspan="5"><p class="description">WordPress をインストールしたURL。</p><p class="codex">Returns the 'WordPress address (URL)' set in Settings &gt; General. This data is retrieved from the 'siteurl' record in the wp_options table. Consider using site_url() instead.</p><p class="transrated">設定 &gt; 一般 で設定された 'WordPress のアドレス (URL)' を返します。 このデータは wp_options テーブルの 'siteurl' レコードから取得されます。替わりに site_url() の使用も検討してください。</p></td></tr>	<tr class='even'>
		<th class='keyword'><span id="action-4" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>description</th>
		<td class='function get_option'>get_option</td>
		<td class='parameter'>"blogdescription"</td>
		<td class='other'><span class="empty">無し</span></td>
		<td class='filter bloginfo'>bloginfo</td>
	</tr>
<tr id="description-4" class="description even" style="display:none"><td colspan="5"><p class="codex">Returns the 'Tagline' set in Settings &gt; General. This data is retrieved from the 'blogdescription' record in the wp_options table.</p><p class="transrated">設定 &gt; 一般 で設定された 'キャッチフレーズ' を返します。 このデータは wp_options テーブルの 'blogdescription' レコードから取得されます。</p></td></tr>	<tr class='odd'>
		<th class='keyword'><span id="action-5" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>rdf_url</th>
		<td class='function get_feed_link'>get_feed_link</td>
		<td class='parameter'>"rdf"</td>
		<td class='other'><span class="empty">無し</span></td>
		<td class='filter bloginfo_url'>bloginfo_url</td>
	</tr>
<tr id="description-5" class="description odd" style="display:none"><td colspan="5"><p class="codex">Returns the RDF/RSS 1.0 feed URL (/feed/rfd).</p></td></tr>	<tr class='even'>
		<th class='keyword'><span id="action-6" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>rss_url</th>
		<td class='function get_feed_link'>get_feed_link</td>
		<td class='parameter'>"rss"</td>
		<td class='other'><span class="empty">無し</span></td>
		<td class='filter bloginfo_url'>bloginfo_url</td>
	</tr>
<tr id="description-6" class="description even" style="display:none"><td colspan="5"><p class="codex">Returns the RSS 0.92 feed URL (/feed/rss).</p></td></tr>	<tr class='odd'>
		<th class='keyword'><span id="action-7" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>rss2_url</th>
		<td class='function get_feed_link'>get_feed_link</td>
		<td class='parameter'>"rss2"</td>
		<td class='other'><span class="empty">無し</span></td>
		<td class='filter bloginfo_url'>bloginfo_url</td>
	</tr>
<tr id="description-7" class="description odd" style="display:none"><td colspan="5"><p class="codex">Returns the RSS 2.0 feed URL (/feed).</p></td></tr>	<tr class='even'>
		<th class='keyword'><span id="action-8" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>atom_url</th>
		<td class='function get_feed_link'>get_feed_link</td>
		<td class='parameter'>"atom"</td>
		<td class='other'><span class="empty">無し</span></td>
		<td class='filter bloginfo_url'>bloginfo_url</td>
	</tr>
<tr id="description-8" class="description even" style="display:none"><td colspan="5"><p class="codex">Returns the Atom feed URL (/feed/atom).</p></td></tr>	<tr class='odd'>
		<th class='keyword'><span id="action-9" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>comments_atom_url</th>
		<td class='function get_feed_link'>get_feed_link</td>
		<td class='parameter'>"comments_atom"</td>
		<td class='other'><span class="empty">無し</span></td>
		<td class='filter bloginfo_url'>bloginfo_url</td>
	</tr>
<tr id="description-9" class="description odd" style="display:none"><td colspan="5"><p class="codex">Returns the comments Atom feed URL (/comments/feed).</p></td></tr>	<tr class='even'>
		<th class='keyword'><span id="action-10" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>comments_rss2_url</th>
		<td class='function get_feed_link'>get_feed_link</td>
		<td class='parameter'>"comments_rss2"</td>
		<td class='other'><span class="empty">無し</span></td>
		<td class='filter bloginfo_url'>bloginfo_url</td>
	</tr>
<tr id="description-10" class="description even" style="display:none"><td colspan="5"><p class="codex">Returns the comments RSS 2.0 feed URL (/comments/feed). </p></td></tr>	<tr class='odd'>
		<th class='keyword'><span id="action-11" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>pingback_url</th>
		<td class='function get_option'>get_option</td>
		<td class='parameter'>"siteurl"</td>
		<td class='other'>末尾に"/xmlrpc.php"を付加</td>
		<td class='filter bloginfo_url'>bloginfo_url</td>
	</tr>
<tr id="description-11" class="description odd" style="display:none"><td colspan="5"><p class="codex">Returns the Pingback XML-RPC file URL (xmlrpc.php).</p></td></tr>	<tr class='even'>
		<th class='keyword'><span id="action-12" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>stylesheet_url</th>
		<td class='function get_stylesheet_uri (<a href="#bloginfo-note-3" class="to-note">※3</a>)'>get_stylesheet_uri (<a href="#bloginfo-note-3" class="to-note">※3</a>)</td>
		<td class='parameter'><span class="empty">無し</span></td>
		<td class='other'><span class="empty">無し</span></td>
		<td class='filter bloginfo_url'>bloginfo_url</td>
	</tr>
<tr id="description-12" class="description even" style="display:none"><td colspan="5"><p class="description">メインスタイルシート&quot;ファイル&quot;のURL</p><p class="codex">Returns the primary CSS (usually style.css) file URL of the active theme. Consider using get_stylesheet_uri() instead.</p><p class="transrated">有効化されているテーマの主CSSファイル(通常は style.css)のURLを返します。替わりに get_stylesheet_uri() の使用も検討してください。</p></td></tr>	<tr class='odd'>
		<th class='keyword'><span id="action-13" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>stylesheet_directory (<a href="#bloginfo-note-5" class="to-note">※5</a>)</th>
		<td class='function get_stylesheet_directory_uri'>get_stylesheet_directory_uri</td>
		<td class='parameter'><span class="empty">無し</span></td>
		<td class='other'><span class="empty">無し</span></td>
		<td class='filter bloginfo_url'>bloginfo_url</td>
	</tr>
<tr id="description-13" class="description odd" style="display:none"><td colspan="5"><p class="description">メインスタイルシートが格納されているディレクトリのURL</p><p class="codex">Returns the stylesheet directory URL of the active theme. (Was a local path in earlier WordPress versions.) Consider using get_stylesheet_directory_uri() instead.</p><p class="transrated">有効化されているテーマのスタイルシートディレクトリを返します。(初期のWordPressのバージョンにおいてはローカルパスでした。)替わりに get_stylesheet_directory_uri() の使用も検討してください。</p></td></tr>	<tr class='even'>
		<th class='keyword'><span id="action-14" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>template_directory (<a href="#bloginfo-note-5" class="to-note">※5</a>)</th>
		<td class='function get_template_directory_uri'>get_template_directory_uri</td>
		<td class='parameter'><span class="empty">無し</span></td>
		<td class='other'>"template_url"と完全に同じ</td>
		<td class='filter bloginfo_url'>bloginfo_url</td>
	</tr>
<tr id="description-14" class="description even" style="display:none"><td colspan="5"><p class="description">テーマファイルのディレクトリ。親テーマを指定している場合はそれを指す。</p></td></tr>	<tr class='odd'>
		<th class='keyword'><span id="action-15" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>template_url (<a href="#bloginfo-note-5" class="to-note">※5</a>)</th>
		<td class='function get_template_directory_uri (<a href="#bloginfo-note-3" class="to-note">※3</a>)'>get_template_directory_uri (<a href="#bloginfo-note-3" class="to-note">※3</a>)</td>
		<td class='parameter'><span class="empty">無し</span></td>
		<td class='other'>"template_directory"と完全に同じ</td>
		<td class='filter bloginfo_url'>bloginfo_url</td>
	</tr>
<tr id="description-15" class="description odd" style="display:none"><td colspan="5"><p class="description">利用中のテーマファイルのディレクトリURL。親テーマを指定している場合はそれを指す。</p><p class="codex">URL of the active theme's directory ('template_directory' was a local path before 2.6; see get_theme_root() and get_template() for hackish alternatives.) Within child themes, both get_bloginfo('template_url') and get_template() will return the parent theme directory. Consider using get_template_directory_uri() instead (for the parent template directory) or get_stylesheet_directory_uri() (for the child template directory).</p><p class="transrated">有効化されているテーマのディレクトリのURL( 'template_directory' は2.6以前はローカルパスでした; ハックな代替手段のためには get_theme_root() および get_template() をご覧ください。 ) 子テーマ使用中の場合、get_bloginfo('template_url') と get_template() の両方は親テーマのディレクトリを返すでしょう。 替わりに ( 親テーマディレクトリ取得のために ) get_template_directory_uri() 、( 子テーマディレクトリ取得のために ) get_stylesheet_directory_uri() の使用も検討してください。</p></td></tr>	<tr class='even'>
		<th class='keyword'><span id="action-16" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>admin_email</th>
		<td class='function get_option'>get_option</td>
		<td class='parameter'>"admin_email"</td>
		<td class='other'><span class="empty">無し</span></td>
		<td class='filter bloginfo'>bloginfo</td>
	</tr>
<tr id="description-16" class="description even" style="display:none"><td colspan="5"><p class="codex">Returns the 'E-mail address' set in Settings &gt; General. This data is retrieved from the 'admin_email' record in the wp_options table.</p><p class="transrated">設定 &gt; 一般 でセットした、「メールアドレス」を返します。このデータは wp_options テーブルの 'admin_email' レコードから取得されます。</p></td></tr>	<tr class='odd'>
		<th class='keyword'><span id="action-17" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>charset</th>
		<td class='function get_option'>get_option</td>
		<td class='parameter'>"blog_charset"</td>
		<td class='other'>設定されていない場合 "UTF-8" に上書き</td>
		<td class='filter bloginfo'>bloginfo</td>
	</tr>
<tr id="description-17" class="description odd" style="display:none"><td colspan="5"><p class="codex">Returns the 'Encoding for pages and feeds' set in Settings &gt; Reading. This data is retrieved from the 'blog_charset' record in the wp_options table.</p><p class="transrated">設定 &gt; 表示設定 でセットした、「ページとフィードの文字コード」を返します。このデータは wp_options テーブルの 'blog_charset' レコードから取得されます。</p></td></tr>	<tr class='even'>
		<th class='keyword'><span id="action-18" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>html_type</th>
		<td class='function get_option'>get_option</td>
		<td class='parameter'>"html_type"</td>
		<td class='other'><span class="empty">無し</span></td>
		<td class='filter bloginfo'>bloginfo</td>
	</tr>
<tr id="description-18" class="description even" style="display:none"><td colspan="5"><p class="codex">Returns the Content-Type of WordPress HTML pages (default: text/html). This data is retrieved from the 'html_type' record in the wp_options table. Themes and plugins can override the default value using the pre_option_html_type filter.</p><p class="transrated">WordPress HTMLページの Content-Type を返します(デフォルト: text/html)。 このデータは wp_options テーブルの 'html_type' レコードから取得されます。 テーマやプラグインは、そのデフォルト値を pre_option_html_type フィルタを用いることでオーバーライドすることができます。</p></td></tr>	<tr class='odd'>
		<th class='keyword'><span id="action-19" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>version</th>
		<td class='function empty'><span class="empty">無し</span></td>
		<td class='parameter'><span class="empty">無し</span></td>
		<td class='other'>グローバル変数 $wp_version をセット</td>
		<td class='filter bloginfo'>bloginfo</td>
	</tr>
<tr id="description-19" class="description odd" style="display:none"><td colspan="5"><p class="codex">Returns the WordPress Version you use. This data is retrieved from the '$wp_version' variable set in wp-includes/version.php.</p><p class="transrated">あなたが使用中のWordPressのバージョンを返します。このデータは wp-includes/version.php の中でセットされた変数 '$wp_version' から取得されます。</p></td></tr>	<tr class='even'>
		<th class='keyword'><span id="action-20" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>language</th>
		<td class='function get_locale'>get_locale</td>
		<td class='parameter'><span class="empty">無し</span></td>
		<td class='other'>アンダースコア(_)をハイフン(-)に変換</td>
		<td class='filter bloginfo'>bloginfo</td>
	</tr>
<tr id="description-20" class="description even" style="display:none"><td colspan="5"><p class="codex">Returns the language of WordPress.</p><p class="transrated">WordPress の言語を返します。</p></td></tr>	<tr class='odd'>
		<th class='keyword'><span id="action-21" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>text_direction</th>
		<td class='function is_rtl'>is_rtl</td>
		<td class='parameter'><span class="empty">無し</span></td>
		<td class='other'>関数が存在して戻り値が真の場合 "rtl" を、偽の場合 "ltr" を返す<br />is_rtl関数が存在しない場合は "ltr"を返す</td>
		<td class='filter bloginfo'>bloginfo</td>
	</tr>
<tr id="description-21" class="description odd" style="display:none"><td colspan="5"><p class="codex">Returns the Text Direction of WordPress HTML pages. Consider using is_rtl() instead.</p><p class="transrated">WordPress の HTMLページにおける書字方向を返します。 替わりに is_rtl() の使用も検討してください。</p></td></tr>	<tr class='even'>
		<th class='keyword'><span id="action-22" class="action-open" style="color:#1982D1; cursor:pointer;">+</span>name (<a href="#bloginfo-note-4" class="to-note">※4</a>)および、他に該当しなかった全て</th>
		<td class='function get_option'>get_option</td>
		<td class='parameter'>"blogname"</td>
		<td class='other'><span class="empty">無し</span></td>
		<td class='filter bloginfo'>bloginfo</td>
	</tr>
<tr id="description-22" class="description even" style="display:none"><td colspan="5"><p class="codex">Returns the 'Site Title' set in Settings &gt; General. This data is retrieved from the 'blogname' record in the wp_options table.</p><p class="transrated">設定 &gt; 一般 で設定された 'サイトのタイトル' を返します。 このデータは wp_options テーブル内の 'blogname' から取得されます。</p></td></tr></tbody>
</table>

<ul class='note'>
<li id='bloginfo-note-1'>(※1) bloginfo, または get_bloginfo の第2引数に 'display' を渡した場合のみ。</li>
<li id='bloginfo-note-2'>(※2) 替わりに "url" を使用します。</li>
<li id='bloginfo-note-3'>(※3) 内部で呼び出している関数の末尾は "I"ですが、キーワードの末尾は"L"。</li>
<li id='bloginfo-note-4'>(※4) switch 構文の default でもあるため、他に該当しなかった場合もこの処理が行われる。</li>
<li id='bloginfo-note-5'>(※5) いずれも末尾に'/'などのセパレータはつかない。</li>
</ul>
<h2>get_bloginfo() のフィルタ処理</h2>
<p>get_bloginfo() の第2引数に &#8216;display&#8217; を渡すことでフィルタが適用されます。( bloginfo()は常に適用されます。 )</p>
<p>適用されるフィルタフックは&#8217;bloginfo_url&#8217; もしくは &#8216;bloginfo&#8217; のいずれか一方で、この振り分けを $show に含まれる文字列で判定しているのがWordPressらしいところでしょうか。</p>
<p>具体的には、$show パラメータに &#8216;url&#8217;, &#8216;directory&#8217;, &#8216;home&#8217; のいずれかが含まれている場合には &#8216;bloginfo_url&#8217; フックが、それ以外の場合は &#8216;bloginfo&#8217; フックが適用されます。</p>
<p>デフォルトでは&#8217;bloginfo&#8217;フックの場合において wptexturize(), convert_chars(), esc_html()の順にフィルタ用関数を通されます。(cf./wp-includes/default-filters.php [Format strings for display.])<br />
&#8216;bloginfo_url&#8217;フックの場合はデフォルトでは何も処理をしないようです。</p>
<p>※ちなみに、get_bloginfo() の第2引数は今のところ &#8216;display&#8217;のみが有効。なお、Codex には大文字イニシャルで &#8216;Display&#8217; とありますが実際は case-sensitive で小文字が正しいです。</p>
<p>[参考ページ]</p>
<ul>
<li><a title="WordPress Codex" href="http://codex.wordpress.org/Function_Reference/get_bloginfo">Function Reference/get bloginfo « WordPress Codex</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.xao.jp/blog/wordpress/learn-more-about-get_bloginfo-and-bloginfo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.xao.jp/blog/wordpress/learn-more-about-get_bloginfo-and-bloginfo/" />
	</item>
		<item>
		<title>WordPress の言語設定の変更は、マルチサイトの是非で方法が異なる。</title>
		<link>http://blog.xao.jp/blog/wordpress/%e3%82%b3%e3%82%a2%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0/how-to-change-language-setting-is-determined-by-whether-it-is-multisites-or-not/</link>
		<comments>http://blog.xao.jp/blog/wordpress/%e3%82%b3%e3%82%a2%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0/how-to-change-language-setting-is-determined-by-whether-it-is-multisites-or-not/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 07:12:59 +0000</pubDate>
		<dc:creator>zuborawka</dc:creator>
				<category><![CDATA[コアシステム]]></category>

		<guid isPermaLink="false">http://blog.xao.jp/blog/?p=557</guid>
		<description><![CDATA[管理画面のエラーの内容からスクリプトをgrepなどで辿って調べたいと思っても日本語化されてるので手間がかかって仕方ない。というわけで、いったん英語モードにしようと思ったものの、確か見た記憶のある言語を変更できる管理画面上 &#8230; <a href="http://blog.xao.jp/blog/wordpress/%e3%82%b3%e3%82%a2%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0/how-to-change-language-setting-is-determined-by-whether-it-is-multisites-or-not/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>管理画面のエラーの内容からスクリプトをgrepなどで辿って調べたいと思っても日本語化されてるので手間がかかって仕方ない。というわけで、いったん英語モードにしようと思ったものの、確か見た記憶のある言語を変更できる管理画面上のインターフェイスがどこにもない。確かに見たはずなんだけど…</p>
<p>調べたところ、マルチサイト化している場合のみ、ブログ単位で管理画面から言語を変更できるようだ。私がうろ覚えしていたのは、たまたまそれがマルチサイト内だったからというわけでした。</p>
<pre class="brush:php">// /wp-admin/options-general.php
$languages = get_available_languages();
if ( is_multisite() &amp;&amp; !empty( $languages ) ):
// 以下、言語設定用の表示が続く</pre>
<p>ここで設定された言語設定はマルチサイトでのみ作成される wp_blogs テーブルの lang_id に格納されるため、単独ブログでは反映するすべがない。</p>
<p>単独のサイトの場合は wp-config.php を編集する必要あり。</p>
<pre class="brush:php">define('WPLANG', 'ja');</pre>
<p>これをコメントアウトすればデフォルトの英語表記になります。</p>
<p>複数言語のユーザーで同一ブログを編集するためには何らかのプラグインが必要になるのでしょうね、今のところは。</p>
<p>参考サイト：</p>
<ul>
<li><a title="WordPress言語の変更" href="http://www.kinopyo.com/blog/change-language-of-wordpress">Kinopyo Blog: WordPress言語の変更</a></li>
<li><a title="言語設定の変更　英語→日本語　日本語→英語 wordpress" href="http://hyokoya.wordpress.com/2011/04/08/%E8%A8%80%E8%AA%9E%E8%A8%AD%E5%AE%9A%E3%81%AE%E5%A4%89%E6%9B%B4%E3%80%80%E8%8B%B1%E8%AA%9E%E2%86%92%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%80%80%E6%97%A5%E6%9C%AC%E8%AA%9E%E2%86%92%E8%8B%B1%E8%AA%9E-wordpress/">hyokoya: 言語設定の変更　英語→日本語　日本語→英語 wordpress</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.xao.jp/blog/wordpress/%e3%82%b3%e3%82%a2%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0/how-to-change-language-setting-is-determined-by-whether-it-is-multisites-or-not/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.xao.jp/blog/wordpress/%e3%82%b3%e3%82%a2%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0/how-to-change-language-setting-is-determined-by-whether-it-is-multisites-or-not/" />
	</item>
		<item>
		<title>独自に取得した投稿オブジェクトを、デフォルトっぽく表示する方法</title>
		<link>http://blog.xao.jp/blog/wordpress/%e3%82%b3%e3%82%a2%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0/how-to-view-an-object-which-was-obtained-its-own-as-the-default/</link>
		<comments>http://blog.xao.jp/blog/wordpress/%e3%82%b3%e3%82%a2%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0/how-to-view-an-object-which-was-obtained-its-own-as-the-default/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 18:52:54 +0000</pubDate>
		<dc:creator>zuborawka</dc:creator>
				<category><![CDATA[コアシステム]]></category>

		<guid isPermaLink="false">http://blog.xao.jp/blog/?p=543</guid>
		<description><![CDATA[あえて定石から外れたやり方でポストを表示するためのメモ。 // 通常のWordPressループとは別に投稿オブジェクトを取得 $another_post = get_post( $args ); // パーマリンクの取得 &#8230; <a href="http://blog.xao.jp/blog/wordpress/%e3%82%b3%e3%82%a2%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0/how-to-view-an-object-which-was-obtained-its-own-as-the-default/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>あえて定石から外れたやり方でポストを表示するためのメモ。</p>
<pre class="brush:php">// 通常のWordPressループとは別に投稿オブジェクトを取得
$another_post = get_post( $args );

// パーマリンクの取得
$permalink = apply_filters( 'the_permalink', get_permalink( $another_post -&gt; ID ) );

// コンテンツの取得（ だいぶ端折った簡易版 ）
$content = apply_filters( 'the_content', str_replace( ']]&gt;', ']]&amp;gt;', $another_post -&gt; ID ) );</pre>
<p>コンテンツの取得は自信ないけどこんなものでしょうか。<br />
ほかに、抜粋（excerpt）や $more の取得などもありますがまたの機会に。<br />
WordPress の定石だとクエリを発行して投稿オブジェクトを取得してそれをループさせてってなるんですけど、どうも扱いが苦手。それにしてもグローバル変数をこれほど多用しながら、よくもここまでの規模のシステムを維持できるものですね。すごい。個人的にはありえないですわ。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xao.jp/blog/wordpress/%e3%82%b3%e3%82%a2%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0/how-to-view-an-object-which-was-obtained-its-own-as-the-default/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.xao.jp/blog/wordpress/%e3%82%b3%e3%82%a2%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0/how-to-view-an-object-which-was-obtained-its-own-as-the-default/" />
	</item>
		<item>
		<title>WordPress の thickbox を3箇所(見方によっては2箇所とか6箇所とか)修正したのでメモ。</title>
		<link>http://blog.xao.jp/blog/wordpress/wordpress-%e3%81%ae-thickbox-%e3%82%923%e7%ae%87%e6%89%80%e4%bf%ae%e6%ad%a3%e3%81%97%e3%81%9f%e3%81%ae%e3%81%a7%e3%83%a1%e3%83%a2%e3%80%82/</link>
		<comments>http://blog.xao.jp/blog/wordpress/wordpress-%e3%81%ae-thickbox-%e3%82%923%e7%ae%87%e6%89%80%e4%bf%ae%e6%ad%a3%e3%81%97%e3%81%9f%e3%81%ae%e3%81%a7%e3%83%a1%e3%83%a2%e3%80%82/#comments</comments>
		<pubDate>Sat, 09 Jul 2011 10:14:16 +0000</pubDate>
		<dc:creator>zuborawka</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.xao.jp/blog/?p=480</guid>
		<description><![CDATA[WordPress の thickbox のグループ利用でハマったこと。バグなのか私の使い方に問題があるのか不明。 きっと皆さん問題になってるのだろうと検索したのですが見当たらないってことは、私の環境または使い方に問題が &#8230; <a href="http://blog.xao.jp/blog/wordpress/wordpress-%e3%81%ae-thickbox-%e3%82%923%e7%ae%87%e6%89%80%e4%bf%ae%e6%ad%a3%e3%81%97%e3%81%9f%e3%81%ae%e3%81%a7%e3%83%a1%e3%83%a2%e3%80%82/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>WordPress の thickbox のグループ利用でハマったこと。バグなのか私の使い方に問題があるのか不明。<br />
きっと皆さん問題になってるのだろうと検索したのですが見当たらないってことは、私の環境または使い方に問題があるのかもしれませんが、一応解決したので同じ問題に当たった方はご参考にしてください。ちなみに、有名な(?)「thickbox.js から ＠マークを取り除く」ってのではないです。これはもちろん対処済みでした。</p>
<p>(なお余談ですが、WordPress は管理画面で jQuery を多用していて、そのライブラリの thickbox も一般の表示でしっかりと利用できるようにサポートされています。スクリプトとスタイルのハンドルを用意するのみならず、それを一度で呼び出してなおかつマルチサイトでも利用できるような関数として add_thickbox という関数まであります。これをヘッダでコールすれば、wp_head, wp_footer の呼び出し時に必要なスタイルシートとスクリプトが呼び出されます。)</p>
<p>単体表示では&#8221;ほぼ&#8221;問題なく表示されたのですが、グループ化を行った場合に正常に動作しませんでした。<br />
<strong><span style="color: #ff0000;">WordPressのバージョンは 3.1.4 ja</span></strong><br />
この<strong><span style="color: #ff0000;">問題を確認できたブラウザは Firefox 5.0、Chrome 12.0.742.112 m</span></strong><br />
一方で<strong><span style="color: #ff0000;">なんと、 IE9 では動作しました。</span></strong><br />
ブラウザによって異なるってことは結構微妙な問題なのでしょうか。</p>
<h3>まず、あまり重要でない箇所の修正を一点</h3>
<p>これはグループ化に関わらない問題で、ブラウザ間の解釈の相違もない単純なものです。<br />
thickboxのラッパー部分で使用する画像(「ロード中」のloadingAnimation.gifと、「閉じるボタン」のtb-close.png)のパスが、相対パス指定になってしまってるので、ページによっては正しくロードされません。(サブディレクトリの下にあるページのみ問題が生じます。)</p>
<pre class="brush:js">if ( typeof tb_pathToImage != 'string' ) {
    var tb_pathToImage = "../wp-includes/js/thickbox/loadingAnimation.gif";
}
if ( typeof tb_closeImage != 'string' ) {
    var tb_closeImage = "../wp-includes/js/thickbox/tb-close.png";
}</pre>
<p>これはWordPressをデフォルトで使用する場合には問題ないですがパーマリンクをカスタマイズしてURLの階層をひとつでも増やすとNGです。なのでこれは絶対パスに変更せざるを得ないのですが、ここで javascript を用いてURLを決定するコードをあえて書かずに、テンプレートのヘッダに</p>
<pre class="brush:php">&lt;script type='text/javascript'&gt;
var siteRootUrl = '&lt;?php echo site_url(); ?&gt;';
&lt;/script&gt;</pre>
<p>このように記述して、</p>
<p>先ほどの箇所を</p>
<pre class="brush:js">if ( typeof tb_pathToImage != 'string' ) {
    var tb_pathToImage = siteRootUrl + "/wp-includes/js/thickbox/loadingAnimation.gif";
}
if ( typeof tb_closeImage != 'string' ) {
    var tb_closeImage = siteRootUrl + "/wp-includes/js/thickbox/tb-close.png";
}</pre>
<p>このように修正。このほうが楽だと思います。siteRootUrl という値をほかのスクリプトでも使えますし。というよりも、<span style="text-decoration: underline; color: #ff0000;">たぶんWPのバージョンを変更するたびに修正しなくてはならない</span>部類なので、なるべく変更の量を減らしたほうが良いという考えです。</p>
<h2>本題</h2>
<p>さて話がそれました。肝心の問題はこれではなく、thickbox を rel 属性でグループ化した場合に正しく表示されないということ。<br />
これは修正箇所は3箇所ありまして、この何が不具合を引き起こしているのかは不勉強なため不明です。また、ブラウザによって挙動が異なるようなので、ブラウザの実装に問題があるのかもしれません。どなたか理由がお分かりの方はお教えくださればありがたいです。<br />
いずれにしても上記の環境では画像は一枚も表示されませんでした。スクリプトをalertなどを使って調べた結果、3点に問題が見つかったという次第です。</p>
<p>まず、1箇所目と2箇所目は同じような修正。<br />
<strong><span style="color: #ff0000;">93行目と97行目にある &amp;nbsp; を全て削除。</span></strong>これはデザイン的な空白なのでスタイルシートで余白を取る方向で。なぜこれが不具合を引き起こすのか不明ですが、とにかくこれを削る。(たぶん、&#8217;&amp;&#8217;が問題。)<br />
つぎに、<strong><span style="color: #ff0000;">97行目の &lt;a href=&#8217;#'&gt;&#8221;+thickboxL10n.prev+&#8221;&lt;/a&gt; を &lt;a href=&#8217;#'&gt;&amp;lg;前へ&lt;/a&gt; に変更。</span></strong><br />
つまり 97行目は最終的に<br />
TB_PrevHTML = &#8220;&lt;span id=&#8217;TB_prev&#8217;&gt;&lt;a href=&#8217;#'&gt;&amp;lt;前へ&lt;/a&gt;&lt;/span&gt;&#8221;;<br />
になります。<br />
これで動くはずですが、気になるので同じように thickboxL10n.next の箇所も変更しておきます。</p>
<p>まとめると次のようになります。</p>
<p>変更前</p>
<pre class="brush:js">TB_NextHTML = "&lt;span id='TB_next'&gt;&amp;nbsp;&amp;nbsp;&lt;a href='#'&gt;"+thickboxL10n.next+"&lt;/a&gt;&lt;/span&gt;";
(…略…)
TB_PrevHTML = "&lt;span id='TB_prev'&gt;&amp;nbsp;&amp;nbsp;&lt;a href='#'&gt;"+thickboxL10n.prev+"&lt;/a&gt;&lt;/span&gt;";</pre>
<p>変更後</p>
<pre class="brush:js">TB_NextHTML = '&lt;span id="TB_next"&gt;&lt;a href="#"&gt;次へ&amp;gt;&lt;/span&gt;';
(…略…)
TB_PrevHTML = '&lt;span id="TB_prev"&gt;&lt;a href="#"&gt;&amp;lt;前へ&lt;/a&gt;&lt;/span&gt;';</pre>
<p>[tsuiki]このあと、インライン表示のコードも大幅に書き換えてカスタマイズした結果、半分近くがリライトされたことになってしまい、何がなにやら。。。jQuery の trim 関数が IE8では非サポートだったってことも知ったり。[/tsuiki]</p>
<p>余談ですが、管理画面で呼び出している thickbox はこれとは別です。上記の操作は管理画面には影響しませんので念のため。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xao.jp/blog/wordpress/wordpress-%e3%81%ae-thickbox-%e3%82%923%e7%ae%87%e6%89%80%e4%bf%ae%e6%ad%a3%e3%81%97%e3%81%9f%e3%81%ae%e3%81%a7%e3%83%a1%e3%83%a2%e3%80%82/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.xao.jp/blog/wordpress/wordpress-%e3%81%ae-thickbox-%e3%82%923%e7%ae%87%e6%89%80%e4%bf%ae%e6%ad%a3%e3%81%97%e3%81%9f%e3%81%ae%e3%81%a7%e3%83%a1%e3%83%a2%e3%80%82/" />
	</item>
	</channel>
</rss>

