dream.phpをWordpressで管理しているサイトで使う

有志の方も導入解説してくださっています。ありがとございます。

重なる部分と異なる解説が含まれますので、それぞれのものとして参照してください。

動作確認:WordPress 5.4.2

導入する。

2021年2月24日 不具合修正【ver.1.2】
スタイルシートのファイル名を修正しました。
29行目:MY_PLUGIN_URL.'dream-style.css'に変えるか、添付のdream-style.cssのファイル名をdreamform.cssに変えてください。
2020年9月17日 不具合修正【ver.1.1】
カスタムフィールド周りの不具合を修正しました。

ダウンロード&解凍した wp-dreamphpを、フォルダごとWordPressのwp-content内のpluginsフォルダ内にアップロードしてください。 更に、wp-dreamphpフォルダ内のdreamフォルダに、ダウンロードしたdream.phpのdreamフォルダの中身(dream.phpやdream_fix.iniなど)をアップロードしてください。

[wp-content]
 ├[languages]
 ├[plugins]
 │ ├ [他に使ってるプラグイン]
 │ └ [wp-dreamphp]
 │       ├ dream-style.css
 │       └[dream]
 │            ├ .htaccess
 │            ├ dream.php
 │            ├ dream_expand.php
 │            ├ dream_fix.ini
 │            └ dream_php.css
 ├[themes]
 ├[upgrade]
 └index.php

WordPressの管理画面のプラグイン一覧の「dream.php Wordpress Plugin」を有効化してください。

[myName id='項目番号'][CmyName id='項目番号' type='カスタム表示タイプ'][CmyName id='項目番号' type='カスタム表示タイプ' kigou='区切り記号'])・[nameForm]と投稿すれば、名前や変換フォームが表示されます。

変換フォーム用のCSSは、同梱のdream-style.cssに書き込んでください。

デフォルト名を変える

引数で指定するか、カスタムフィールドを利用してページごとに名前を直接orモード名(手動)でデフォルト名を変えることができます。 カスタムフィールドの管理はAdvanced Custom Fieldsというプラグインが便利です。

引数で名前ごとに指定

概要を一覧で表示するなど、シングルページ以外で作品内容を出力する可能性がある場合はこの名前ごとに変える方法が有効です。

ショートコードに、def=デフォルト名を追加します。

[myName id=項目番号 def=デフォルト名]
[CmyName id=項目番号 type=C def=デフォルト名]

カスタムフィールドで、「デフォルト名」の値を自動挿入できます。変換項目が一つしかないか、特定の変換項目以外はほとんど使わないようなページの場合は、 カスタムデフォ名を設定すると、def=デフォルト名を省けます。

  1. カスタムフィールド「defname」をつくって、各記事にて一番多く使う項目のデフォルト名を登録
  2. カスタムフィールドで登録したデフォルト名を使うときは[myName id=項目番号]、それ以外の項目番号の表示の際はデフォルト名を個別に設定(必須) [myName id=項目番号 def=デフォルト名]

ページごとに名前指定

そのページでだけ全ての項目番号のデフォルト名を変えるようなときにお勧めです。変えない項目や使わない項目があればそこは空欄で。

  1. カスタムフィールド「dream_def」をつくって、各記事にて、項目番号0から順に,区切りで使いたいデフォルト名を登録
    例;田中,南,みなみ

ページごとにモード名指定(手動)

カテゴリやジャンルごとに分けてデフォルト名を使いたい場合にお勧めです。

  1. モードによるデフォルト名をdream_ini.fixで設定
  2. カスタムフィールド「dream-mode」をつくって、各記事にて使いたいデフォルト名のモード名を登録

変換フォームについて

特定の項目番号のフォームだけ表示したければ、[nameForm no=番号,番号]というように、,区切で項目番号を指定してください。

テンプレートファイル内に書く場合は、以下のようにショートコードを呼び出すか、<?php nameForm(); ?>と直接PHPコードを書いてください。

<?php echo do_shortcode('[nameForm]'); ?>

応用:ショートコードを自作する

ショートコードを新たに作成することでより便利に使えるかもしれません。

wp-dreamphp.phpの末尾に追加するか、PHPに慣れていない方はCode Snippetsというプラグインで追加するとエラーを確認してくれますしテーマに依存しません。

function ショートコード用の関数名($attrs){
  ~ショートコードの内容~
}
add_shortcode('ショートコード名', 'ショートコード用の関数名');
//二か所のショートコード用の関数名は同一値

ショートコードのPHPコードをごく簡単に表すと上記のようになります。これで、[ショートコード名]と書くことでショートコードの内容が実行されます。
ショートコード名とショートコード用の関数名は自由に決められますが、ショートコードひとつひとつ英数字で他と被らない唯一のものにしてください。

項目番号を定義したショートコードを作る例

//項目番号0 を [myouji]で表示
function dream_code0($atts){
	$custom_name = get_post_meta(get_the_ID(), 'defname', true);
	$dname = ( empty( $custom_name ) === false) ? $custom_name : '';
	extract(shortcode_atts(array( 'def' => $dname ), $atts));
	if(function_exists('myName')){
		ob_start(); 
		myName('0',$def); //dream.phpの関数
		return ob_get_clean();
	}
}
add_shortcode('myouji','dream_code0');
	
//項目番号1 を [namae]で表示
function dream_code1($atts){
	$custom_name = get_post_meta(get_the_ID(), 'defname', true);
	$dname = ( empty( $custom_name ) === false) ? $custom_name : '';
	extract(shortcode_atts(array( 'def' => $dname ), $atts));
	if(function_exists('myName')){
		ob_start(); 
		myName('1',$def); //dream.phpの関数
		return ob_get_clean();
	}
}
add_shortcode('namae','dream_code1');

デフォルト名を指定するときは [myouji def=田中] という感じ

項目番号とデフォルト名を定義するショートコードを作る例

//項目番号0 でデフォルト名を アリス にしたものを [Alice] で表示
function dream_code_Alice($atts){
	if(function_exists('myName')){
		ob_start(); 
		myName('0','アリス'); //dream.phpの関数
		return ob_get_clean();
	}
}
add_shortcode('Alice','dream_code_Alice');

dream.phpをFreoで管理しているサイトで使う

PHP5.3以上の環境で弊サイト配布のSmartyプラグインを導入し、dream.php(dream_expand.php)とfreoのテンプレートファイルを書き換えることで使用できます。※最新のdream.phpをお使いください。

dream.phpの導入

freo設置ディレクトリ直下のindex.phpで、freo/freo.phpの読み込みより前にdream.phpを読み込みます。

例; require_once(dirname(__FILE__).'/dream/dream.php');

変換登録フォームの設置

名前変換フォームを設置する場合はテンプレート内で導入してください。

例; {php}nameForm();{/php}

Smartyプラグインの導入

modifier.dreamphp.zipを保存・解凍し、modifier.dreamphp.phpを、freo設置ディレクトリ内の、libsフォルダ内の、smartyフォルダ内の、pluginsフォルダにアップロードしてください。

2018年2月6日 不具合修正【ver.1.1】
{myName(項目番号,デフォルト名)}が有効にならないのを修正しました。29行目if(isset($input[1]) && $i[1]!='')if(isset($i[1]) && $i[1]!='')に書き換えるか、最新バージョンをお使いください。

dream.phpの書き換え

dream.phpをエディタで開き、■名前出力を文字列検索などで探し出し、3箇所のechoreturnに書き換えてください。

※freoと別のコンテンツとで一つのdream.phpを使う場合は末尾の解説を一緒に参照してください。

//■名前出力
function myName( $no,$own_def=FALSE )
{
   global $dream_myName_data;

   if(
        $dream_myName_data[$no]['defName'] == $dream_myName_data[$no]['set'] && 
        isset($own_def) && $own_def != ''
   )
   {
        return '<var style="font-style:normal" class="myName name'.$no.'">'.$own_def.'</var>';
   }
   elseif(isset($dream_myName_data[$no]['set']) && $dream_myName_data[$no]['set'] != '')
   {
   
        return '<var style="font-style:normal" class="myName name'.$no.'">'.$dream_myName_data[$no]['set'].'</var>';
   }
   else
   {
        return '<strong>ERROR</strong>';
   }
}

カスタム表示も使う場合はdream_expand.phpをエディタで開き、■名前出力を文字列検索などで探し出し(もしくは■クッキーオフの場合の箇所を文字列検索などで探し出しそのちょっと上)、2箇所のechoreturnに書き換えてください。


      return '<var style="font-style:normal" class="myName name'.$no.'">'.$name.'</var>';
   }
   else
   {
      return '<strong>ERROR</strong>';
   }
}
// ■クッキーオフの場合

※ダウンロード時期によっては、複数のechoで出力されている場合がありますが、1つに直してreutrnしてください。上記のサンプルコードを該当部にコピーペーストし上書きするか、2015年10月27日18:40以降にダウンロードしたdream.phpを利用してください。

テンプレートの書き換え

templatesフォルダ内のテンプレートファイルを開き、dream.phpの変換を利用したい箇所のfreo内で利用している変数の修飾子に|dreamphpを付与してください。携帯用のテンプレート他、環境ごとにテンプレートがある場合はそれらの全てを忘れず編集してください。

以下以外のファイル・変数でも同様に使えますので、必要に応じて適宜書き換えてください。

エントリーで変換名を利用する(エントリーで作品を管理)
  • freo/templates/internals/default/default.html
  • freo/templates/internals/view/default.html
  • freo/templates/mobiles/internals/default/default.html
  • freo/templates/mobiles/internals/view/default.html
例; {$entry_texts[$entry.id].excerpt|smarty:nodefaults|dreamphp}
  {$entry_text.excerpt|smarty:nodefaults|dreamphp}
  {$entry_text.more|smarty:nodefaults|dreamphp}
ページで変換名を利用する(ページで作品を管理)
  • freo/templates/internals/page/default.html
  • freo/templates/mobiles/internals/page/default.html
例; {$page_text.excerpt|smarty:nodefaults|dreamphp}
  {$page_text.more|smarty:nodefaults|dreamphp}
メディア文章表示プラグインで作品を管理
  • freo/templates/plugins/media_document/file.html
  • freo/templates/mobiles/plugins/media_document/file.html
例; {$media_document_text|smarty:nodefaults|dreamphp}

また、オプション機能等でデフォルト名を登録し、その情報を修飾子dreamphpのパラメーターとして渡すと優先デフォルト名として扱われます。情報は、ページ毎にデフォルト名を変える > 方法その2:ページ内で一律指定するの「,で区切る指定法」と対応しています。

他にデフォルト名を変えるには、第二引数とモード指定の自動取得(エントリーコードやページIDと併用)が使えます。モード指定の手動取得には対応していません。

例; {$entry_texts[$entry.id].excerpt|smarty:nodefaults|dreamphp:パラメーター}

エントリーもしくはページでの導入詳細

  1. オプションで入力項目を追加し、登録します。オプション管理から、以下の情報でオプションを登録してください。指示がない項目の内容は自由に設定して構いません。
    オプションID種類必須検証
    defName一行入力任意なし
  2. オプション情報はデフォルトで記事本文の下に出てしまうので、テンプレートを編集して、デフォルト名の指定だけ表示させないようにします。オプションを表示するあたりにand $option.id != 'defName'を書き足してください。※既に特定のオプション項目だけ表示するよう書き換えている場合は不要です。
    エントリー一覧表示画面
    <!--{if $entry_associates[$entry.id].option[$option.id] != '' and $option.id != 'defName'}-->
    エントリー個別表示画面
    <!--{if $entry_associate.option[$option.id] and $option.id != 'defName'}-->
    ページ個別表示画面
    <!--{if $page_associate.option[$option.id] and $option.id != 'defName'}-->
  3. テンプレートを編集して、パラメーターを付与します。
    エントリー一覧表示画面
    {$entry_texts[$entry.id].excerpt|smarty:nodefaults|dreamphp:$entry_associates[$entry.id].option.defName}
    エントリー個別表示画面
    {$entry_text.excerpt|smarty:nodefaults|dreamphp:$entry_associate.option.defName}
    {$entry_text.more|smarty:nodefaults|dreamphp:$entry_associate.option.defName}
    ページ個別表示画面
    {$page_text.excerpt|smarty:nodefaults|dreamphp:$page_associate.option.defName}
    {$page_text.more|smarty:nodefaults|dreamphp:$page_associate.option.defName}
  4. オプションフォームからデフォルト名を登録します。(複数指定する場合は項目番号0から,でから区切ります)

メディア文章表示プラグインでの導入詳細

  1. テンプレートを編集して、パラメーターを付与します。
    {$media_document_text|smarty:nodefaults|dreamphp:$media_document_information:defName}
  2. タイトルなどの指定方法と同じようなやりかたでdefNameの情報を登録します。(複数指定する場合は項目番号0から,でから区切ります)
    <!--
    title:テストファイル
    defName:田中,花子
    -->
    {myName(0)}

テンプレートを編集しても反映されない場合は、templates_cディレクトリー内のphpファイルを全て削除してください。

表示する

dream.phpのPHPコードのかわりに、以下の対応表に乗っ取った独自の書きかたでエントリーなりページなりを作成してください。

▽dream.phpの正規の書きかた▽Freoでの書きかた
<?php myName("項目番号");?>{myName(項目番号)}
<?php myName("項目番号","デフォルト名");?>{myName(項目番号,デフォルト名)}
<?php CmyName("項目番号","type");?>{CmyName(項目番号,type)}
<?php CmyName("項目番号","type","付加記号");?>{CmyName(項目番号,type,付加記号)}

注意すべき点は、PHPコードの書きかたと違って項目番号やデフォルト名に"(クォーテーション)を付けないことと、 (から)までの間以外スペースを含んではいけないこと(例:{myNameの間・myName(の間などは完全に詰めてください。項目番号や付加記号などの前後に半角スペースは可です)。なお付加記号に,(カンマ)は使えなくなります、すみません。

〇 {myName(0)}さん、こんにちは! お名前は{myName( 0 )}{myName( 1 , 花子 )}さんでよろしいですか?
× { myName(1) }さんのあだなは //{ とmyName、)と}の間にスペースが入っているからダメ
× {myName ( 2 )}ちゃんでよろしいですか? // myNameと(の間にスペースが入っているからダメ

{if $smarty.request.freo.mode}等でエントリーでだけ・ページでだけoffForm();を実行させるようheader.htmlを編集するなどで、POSTによる変換もできそうな気がします。現在POST変換に対応しておりませんが今後対応できるようにします。

freoと別のコンテンツとでdream.phpを併用する

dream.phpを書き換えるため、Freoをブログ(1コンテンツ)として使っていて別途メインコンテンツがある構成などの場合、一つのdream.phpを両方で使うことができません。今後対応の予定はありますが、お手数ですが現状はdream.phpをfreo用と他のコンテンツ用それぞれ設置する(初期設定のサイトのURLが同一であればクッキー情報も同一のものが使われます)か、以下の方法をお試しください。

方法はいくつかあるでしょうが、freo用の新規関数を作ってそれを使うやり方の説明です。

  1. dream.phpのfunction myName( $no,$own_def=FALSE ){から対応する}までをコピー・ペーストする / dream_expand.phpのfunction CmyName($no, $type, $kigou='…',$pre=FALSE)){から対応する}までをコピー・ペーストする
  2. ペーストした方だけechoreturnに書き換える
  3. ペーストした方の関数名を独自のものに変更する
    function freo_myName( $no,$own_def=FALSE ){
    function freo_CmyName($no, $type, $kigou='…',$pre=FALSE){
  4. modifier.dreamphp.phpを開いて、ファイル内の全てのreturn myNamereturn freo_myNameに(5箇所) / return CmyNamereturn freo_CmyNameに(2箇所)置き換える

トラブルシューティング

エラーが出る、白いページになる
お使いのサーバーのPHPのバージョンが5.3以上か確認してください。
dream.phpがアップロードしてあるか、またdream.phpの導入が正しくなされているか(パスが正しいか)確認してください。
最新のdream.phpを使っているか確認してください。
変換されず{myName(項目番号)}とでる
freoのテンプレートの書き換え(変数に|dreamphpを追加すること)が間違っていないか確認してください。また、変換を有効にしたい変数の全てに|dreamphpが付与されているか確認してください。
  • 書き換えが済んでいない、もしくは間違えている
  • 書き換えたあとアップロードしていない
  • template_c/フォルダの中のキャッシュを削除してみていない
変換部分が記事の一番上に出る
dream.phpの書き換え(全てのechoreturnに書き換えること)が間違っていないか確認してください。カスタム表示を使う場合はdream_expand.phpの書き換えも必要です。
  • 書き換えが済んでいない、もしくは間違えている
  • 書き換えたあとアップロードしていない

他、設置に際する質問やサポート、機能要望、うまくいかなかった部分などがあればメールTwitterでお受けいたしています。