PHP/WordPressiyoシリーズのおまけです。本編から3年くらい経ってますが...実は、カスタムフィールドのみを使って記事を投稿することによって、意味を成さなくなる機能があります。それは、検索機能です。上の画像はブログ”第一駅撮区”の検索結果を撮ったものですが、WordPressに標準で付属する検索機能はカスタムフィールドを対象としないため、カスタムフィールドのみを使用して記事を投稿した場合は、検索しても何もヒットせず使い物になりません。今回はこれを改善しようというものです。WordPressカスタマイズ事典”に2つの方法が記載されていました。1つ目はfunctions.phpを書き換える方法、2つ目はプラグインを利用する方法です。今回は1つ目の方法でプログラムをそのまま書き換えてみました。一度同じ文字列で検索してみると...おおお、ヒットしています。これはありがたい!が、カスタムフィールドのすべてを検索対象としたときに、例えば”2015年の抱負”というページのカスタムフィールドの内容に”20189.jpeg”というファイル名が入っていた場合、2018年に投稿した記事を検索しようと”2018′′と検索すると”2015年の抱負”が結果に表示されてしまいます。写真などのファイル名で訪問者が検索を行うというのは考えにくいので、ファイル名を内容とするカスタムフィールドは検索対象から除外することをおすすめします。Line”のリニューアル時点ではまだ準備中だったBASICの配布ファイルですが、2016/05/14に公開を開始しました。1つ目は人生で初めて作ったプログラムである”数当てゲーム”、2つ目はスロット(のようなもの)です。JavaScriptコーナーにも、配布ファイルを置く予定となっているページがありますが、こちらは未だにほとんど進んでいません。BASICコーナーの配布ファイルのページには、ダウンロード数をカウントするカウンターが設置されています。これは私が自作したものですが、1つ難点があります。それはクリックしただけで+1されるということです。これは私の知識不足ではなく(と信じたい)、技術上どうしようもないことのようです。ブラウザではダウンロードするときに”キャンセル”を選ぶ画面が出てきますが、もうこの時点でPHPはすべての処理が終わっていると考えられます。”キャンセル”を選んだとしても、PHPなどでそれを受け取る方法が存在しないため、必ず+1されてしまうのです。PHP/WordPressiyo#1の続きです。1.カスタムフィールドの項目数と名前を決めるただ名前を決めるだけですが、これが意外と重要です。考慮すべきことは、項目数は少なければ少ないほうがいいということです。欲張ってたくさん作ってしまうと、後々本文として表示するためにfunctions.phpを改造するときに進まなくなります。#1で挙げた例では、date撮影日info写真の説明photo写真のURLというようにして設定しています。投稿の新規追加画面で、右上にある”表示オプション”をクリックし、”カスタムフィールド”にチェックします。すると上の写真のようになります。ここで、自分が決めたカスタムフィールドの名前と値を書き連ねていきます。6:00という具合です。ここで注意したいのは、ここで決めたカスタムフィールドの項目は、後で変更しにくいという点です。変更できないわけではありませんが、functions.phpを書き直す必要が出てきます。2.本文として表示するようにする今の状態で”公開”をクリックしても、何も公開されません。本文には、エディターに書いた内容しか表示しないからです。本文として表示させるには、content.phpを改造する必要があります。class=”entry-content”>と書かれた場所を探します。そこには、こうあります。?></div>これはtwentytwelveテーマの場合です。これを次のように書き換えます。?></div>上下のコードを見比べると、まずthe_content関数がなくなっています。これはエディターから投稿する際に使う関数なので、カスタムフィールドのみを使う場合は必要ないからです。次に、article_contentという謎の関数が組み込まれています。関数の名前はなんでもいいですが、引数には$post->IDを指定しておきます。ちなみに、ここで内容を書くのではなく、わざわざ関数としているのは、RSSでの表示にもこの関数を使うためです。);としても6:00と表示されますが、関数にしておいたほうが変更する際にも便利です。次に、functions.phpを開き、article_contentという関数を作ります。</p>";}起きた時間を表示させるなら、例えば上のようになります。戻り値を文字列とするか配列とするか。trueで文字列、falseまたは何も書かなかった場合は配列となっています。自分が起きた時間を”12:00′′、ペットのポチが起きた時間を”不明”として、カスタムフィールドの値を”12:00,不明”と書いたとしましょう。すると、表示されるのは起きた時間は12:00,不明です。