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に条件分岐を使って記述しました。AMP化に伴い埋め込み形式では動かなくなってしまったので、当サイトでは別窓で設定する方法にしています。

ショートコードの登録

 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=…]等として使用します。デフォルト値を設定しているので引数は省略可能です。

Music Software Bundles from Pluginboutique.com

読者アンケート

この記事が気に入りましたら、いいね、シェア、購読をお願いします!

🔔 から登録すると、更新をプッシュ通知で受け取れます。

このサイトではクッキーを使用しています。
詳細