Choose your language. / ja / en / zh
このサイトでは Cookie を使用して、ユーザーに合わせたコンテンツや広告の表示、翻訳、広告の表示回数やクリック数の測定を行っています。 詳細

WordPressで夢小説を公開する

 夢小説サイトをWordPressで作る方法を説明します。夢小説が何か解らない人はググって下さい。

スクリプトをダウンロードする

 夢小説用のスクリプトとしてはDreamMakerさんのCGIが有名です。しかしWordPressはPHP製なので、組み込みやすいようaleviritaさんのdream.phpを使わせていただく事にしました。

 サイトからダウンロードしたら解凍してURLの設定をしてアップロードするだけ。設定についてはaleviritaさんのマニュアルを参考に。
 特にパーミッション等の設定も不要です。
 今回はWPテンプレートディレクトリに「dream」フォルダを作ってその中にアップロードしました。

フォーム埋め込み

 直接dream.php?formにアクセスしても良いのですが、テンプレートディレクトリに入れた都合上ちょっと嫌かも。
 という事でフォームを埋め込みたいテンプレートに以下を記述。

<?php
require_once(TEMPLATEPATH.'/dream/dream.php');
nameForm();
?>

 私は条件分岐を使い夢小説用のタクソノミーにだけ表示させるようtaxonomy.phpに記述しました。

ショートコードの登録

 Wordpressでは投稿フォームにPHPを記述できませんので、ショートコードを使って置き換えます。
 single.phpの、the_content();より前に以下を記述。

<?php
require_once(TEMPLATEPATH.'/dream/dream.php');
function dream_code($atts){
	extract(shortcode_atts(array(
		'id' => 0 //デフォルトのID
	), $atts));
	ob_start(); //バッファ開始。これが無いと登録情報が全て本文冒頭に表示される
	myName($id); //dream.phpの関数
	return ob_get_clean(); //吐き出す
}
add_shortcode('dream','dream_code');
?>

 こうする事で、記事内で[dream id=1]と記述すると、ID1に設定した名前に置き換わるようになります。上記のコードはfunction.phpに書いても大丈夫な筈。
 一応設置してあるので、動作サンプル代わりにどうぞ→夢小説

 以下は参考サイト。

dream.phpのアクセス制限

 セキュリティが気になる方は.htaccess等で適宜アクセス制限を。この際、リファラー制限の場合はサイトURLだけでなくリファラー無しの場合も許可してください。内部リンクのみの場合は403エラーが出ます。(不具合報告ありがとうございました)

拡張機能を使う

 拡張機能を使う場合はカスタムフィールドと併用すると少し楽です。

特定の項目のフォームだけ表示する

 nameForm関数に引数を渡すだけですので、投稿ページにフォームを表示させているならカスタムフィールドを使って以下のようにします。

<?php
require_once(TEMPLATEPATH.'/dream/dream.php');
nameForm($post->dream1);
?>

 Wordpressの投稿編集画面でカスタムフィールドの名前を「dream1」、値に「1,2」等と数値を区切って入れればOK。

ページ毎にデフォルト名を変える

 今の所モード指定(手動取得)にしか成功していませんが、自動取得も頑張ればできそう。
 ちょっと面倒ですが.iniファイルを直接編集する必要があります。詳しくはaleviritaさんのマニュアルを見ていただきたいのですが、.iniの方に各モードでのデフォルト値を登録し、カスタムフィールド(dream2)にモード番号を登録して、テンプレートの方でそれを呼び出します。
 single.phpのrequire_once(TEMPLATEPATH.'/dream/dream.php');の前に追記。

<?php
if($post->dream2){$mode = $post->dream2;}
require_once(TEMPLATEPATH.'/dream/dream.php');
?>

名前をカスタム表示する

 例えば名前に「サスケ」と登録したとして「サスケェ…」と喋らせたい場合等に使用します。ごめんなさいNARUTOわかりませんすみません。

 この場合はmyName関数の代わりにCmyName関数を使用するので、ショートコードを増やします。
 先程のsingle.phpのショートコードを登録した所(add_shortcode('dream','dream_code');の下)に追記します。

<?php
function dream2_code($atts){
	extract(shortcode_atts(array( //デフォルト値についてはマニュアルを参考にお好みで
		'id' => 2,
		'type' => 'd',
		'kigou' => '、'
	), $atts));
	ob_start();
	CmyName($id,$type,$kigou);
	return ob_get_clean();
}
add_shortcode('dream2','dream2_code');
?>

 本文で[dream2 id=2 type=Ks kigou=…]等として使用します。デフォルト値を設定しているので引数は省略可能です。