WordPressのテンプレートをいじらずにPHPコードで遊びたい

スポンサーリンク

WordPressのカスタマイズにはPHPコードを利用しますが、テンプレートをいじるのはなんか不安です。

ウィジェットとしてPHPコードを実行したいと思います。

スポンサーリンク

カスタムHTMLではPHPコードは実行できない

まず試したのがウィジェットの「カスタムHTML」です。

しかし、「<?」で始まるタグはエラーになってしまいます。

Special characters must be escaped: [<].
(特殊文字はエスケープしなければならない)

うーん。ダメですね。

まずfunction.phpにフィルタ関数を追加する

まずはテキストウィジェットでPHPを評価するように、コードを追加します。

funtion.phpの末尾にでも追加してください。

function widget_text_exec_php( $widget_text ) {
    if( strpos( $widget_text, '<' . '?' ) !== false ) {
        ob_start();
        eval( '?>' . $widget_text );
        $widget_text = ob_get_contents();
        ob_end_clean();
    }
    return $widget_text;
}
add_filter( 'widget_text', 'widget_text_exec_php', 99 );

こちらの記事を参考にしました。

こんな感じに。

ざっくりコードの意味を説明すると、テキストが「<?」で開始されていたら、中身をPHPコードとして「評価(eval; evaluate)」して、中身を置き換える、というものです。

テキストウィジェットにコードを入力する

「設定」の「外観」ー「ウィジェット」で、項目を追加したい場所に「テキスト」ウィジェットを追加します。

これは、さっきのコードだと「widget_text」と対応しています。

すると、こんなふうに表示されます。

あれ? そのまま……

ビジュアル編集だとPHPコードが実行されません

はい、「ビジュアル」編集だったので、「<>」がエスケープされてしまって、コードが実行されていませんでした。

コードを入力するときには、忘れずに「テキスト」編集にしましょう

これ大事。

この記事で書きたかったのは、実はこれだけです。

こんな感じで、PHPコードで記事のカテゴリーを取得して、リンクで挿入することができました。

試してみたきっかけ

なんでPHPコードを実行しようと思ったかというと、同じカテゴリーのほかの記事一覧へのアクセスをかんたんにしたかったのです。

自分でも記事を書き終わってチェックするときに、他の記事にはどうなのがあったっけ、と関連記事を探したくなるからです。

自分が便利になれば、見る人にとっても便利になるはず。

こんなふうに、ページの情報をもとにした項目を追加したい場合に、PHPコードは役に立ちます。

ちなみに、WordPressでカテゴリー情報を取得する方法は、こちらを参考にしました。

せっかくカスタマイズしやすいWordPressなので、投稿記事にあわせてカスタマイズしたいですが、テンプレートを変にいじってわけがわからなくなるのも心配ですよね。

ウィジェットにPHPコードを追加する方法なら、いらなくなったらウィジェットを消すだけで済むので、手軽に試せます。

ということで、ハッピー・コーディング♪

こちらもどうぞ

タイトルとURLをコピーしました