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

【WordPress】内部リンクで表示されるブログカードをカスタマイズする方法

2022.07.01
2044
WordPress プログラミング

WordPressでブログを始めた方必見!おすすめのプラグインを紹介します

2020.07.22
530
HTMLCSS プログラミング

Animate.cssでアニメーション表示を遅延(delay)させる方法

2022.04.29
4994
WordPress

【All in One SEO】 一部のページでは出力しないようにする方法

2022.06.15
2268