凸 ブロックのつみかさね

デザイン、技術メモ、レビュー中心の雑記ブログ

WordPressでテーマのテンプレートファイルをショートコードで読み込む方法

企業サイトを作っていると、繰り返し表示する内容を投稿記事の中に記載したい場合があります。そんな時にテーマ内のテンプレートファイルをショートコードで読み込む方法を調べたのでメモしておきます。

はじめに

WordPressを使う方にとっては常識ですが、投稿記事(PAGE記事)の中にphpを直接記述することはできません。理由はセキュリティ的によろしくないからです。

そのため?というわけではないですが、ショートコードを上手く活用する事で、phpを直接記述する必要がなくなります。

どういう時に使うのか

いろいろな場面があると思いますが、例えば以下のような場合が考えられます。

  • 記事途中の任意の場所に広告をはさみたい場合
  • 記事下に電話番号のお問い合わせを書きたい。ただし全てのページに記載したいわけではない
  • 記事内の画像はテーマファイルの中で管理しており、テーマまでのファイルパスを簡単にしたい …etc

functions.phpにコードを記載

functions.phpに以下を記述します。

//ショートコードを使ったphpファイルの呼び出し
function themePhpInclude($atts) {
    extract(shortcode_atts(array(
            'file' => '★'
    ), $atts));
    ob_start();
    include(STYLESHEETPATH . "/$file.php");
    return ob_get_clean();
}
add_shortcode('themephp', 'themePhpInclude');

注意点としては、以下のようになります。

  • 拡張子は不要(hoge.phpというファイルを読み込む場合は、hogeだけでよい)
  • コードの★は、ショートコードにファイル名を記載しなかった時に読み込むファイルを記載する必要があります。

投稿ページにショートコードを記載

投稿記事内の入れたい場所に以下のようなショートコードを記載します。「★ファイル名★」の箇所には、読み込ませたいファイル名を記載してください。拡張子はいりません。

[themephp file='★ファイル名★']

ショートコードをテーマファイル内で使いたい場合

あまりそういう事はないと思いますが、ショートコードをテーマファイル内で使いたい場合があります。その場合は、以下のように記載することで使うことができます。

<?php echo do_shortcode('[themephp file='★ファイル名★']'); ?>

今回のつみかさね

ホームページをよくみると、同じような内容を何度も書いていて面倒だな、と感じる事があります。そうした時にまとめておくと、修正する際に1ケ所で済むので便利です。もしホームページを作っている場合は、「同じような記述を何度もしていないか」考えてみると、いいかもしれません。

エンジニアのためのWordPress開発入門 (Engineer's Library)

エンジニアのためのWordPress開発入門 (Engineer's Library)

  • 作者: 野島祐慈,菱川拓郎,杉田知至,細谷崇,枢木くっくる
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/01/26
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

©blockworks.