Written by Kasumi

【簡単】wordpressのショートコードを使って、投稿記事内にphpファイルを呼び出す方法

wordpressの投稿記事内にphpファイルを呼び出したい。

また、投稿記事によって呼び出すファイルの内容を変更したい。

このような悩みを解決します。

functions.phpにショートコードを呼び出す関数を記述

//ショートコードを使ったphpファイルの呼び出し方法
function shortcode_php($params = array())
{
  extract(shortcode_atts(array(
    'file' => 'default',
    // バナー
    'bnr' => '',
  ), $params));
  ob_start();
  include(get_theme_root() . '/' . get_template() . "/ショートコードで呼び出したいファイルまでのルート(テーマ内)");
  return ob_get_clean();
}
add_shortcode('myphp', 'shortcode_php');

上記コードをfunctions.phpに記述します。

shortcode_attsの配列内で、ショートコードに属性を設定する事ができます。

たとえば、記事によって呼び出すphpファイルの中身を変えたい場合、属性を指定すれば簡単に条件分岐できます。

属性の使い方は次章で説明します。

今回は例として、bnr(バナー)の属性を配列に追記してます。

include関数内にショートコードで呼び出したいphpファイルまでのパスを記述します。

get_theme_root関数とget_template関数を使う事でテーマ内のファイルまでのパスを取得できます。

add_shortcode関数内で、ショートコードで呼び出したい名前を登録します。今回は「myphp」と登録します。

呼び出したいphpファイルを作成する

<!-- バナー属性の値がbnr01だったら -->
<?php if ($bnr == "bnr01") : ?>
  <div class="bnr01">
    <img src="./img/bnr01.jpg" alt="bnr01">
  </div>
  <!-- バナー属性の値がbnr02だったら -->
<?php elseif ($bnr == "bnr02") : ?>
  <div class="bnr02">
    <img src="./img/bnr02.jpg" alt="bnr02">
  </div>
  <!-- それ以外 -->
<?php else : ?>
  <div class="bnr">
    <img src="./img/bnr.jpg" alt="bnr03">
  </div>
<?php endif; ?>

次に呼び出したいphpファイルを作成します。

上記コードは例として、前章で追加した属性(bnr)の値が○○だったら○○のバナーを記事内にいれるという条件分岐処理を指定しています。

実際に呼び出したいコードを任意で作成しましょう。

ショートコードを記述

[myphp bnr =bnr01]

最後に実際にwordpress記事内でショートコードを記述してphpファイルが呼び出されるか確認してみましょう。

ショートコードを呼び出す時は[]を使い中にfunctions.phpで登録したショートコード名を入れます。

属性を登録した方はショートコード名の後にスペースを空け、属性と値を入れる事ができます。

今回は例として、bnr =bnr01と入れました。

なので前章で記述した【バナー属性の値がbnr01だったら】とコメントアウトしてる部分の条件分岐内コードが出力されます。

以上で記事内にphpファイルを呼び出す事が出来るようになりました。

まとめ

通常はphpを記事内に入れる事ができないですが、ショートコードを使えば簡単に挿入する事ができます。

今回実装した例のように、記事によって広告バナーの種類を変えたい・且つバナーは固定で用意されてるものを出力できるようにしたい時にショートコードはとても便利です。

以上で解説を終わります。

目次

関連記事

WordPress プログラミング

【簡単】is_pageで固定ページを複数指定し、条件分岐する方法【配列arrayを使おう】

2022.03.18
4220
HTMLCSS プログラミング

tableタグのtd、thに入ってる文字がスマホだとサイズがおかしくなる原因【改善】

2021.06.03
5370
プログラミング

www.有りのドメインを無しのドメインにリダイレクトする方法

更新日:2020.06.12
646
WordPress プログラミング

ワードプレスでヘッダーテンプレートをページによって分けたい時

更新日:2019.11.29
1132