【子テーマでも OK!】WordPress の投稿・固定ページで PHPファイルをショートコードで呼び出す方法

WordPress の投稿・固定ページの任意の場所に、PHPファイルを呼び出す方法があります。
これについては以前、スタートミーアップのコラム記事 「functions.php にコピペでOK!覚えておくと便利な WordPress 小技集」 の中で触れたことがあるのですが、なんと、子テーマのフォルダの中ではうまく動作しませんでした…。

ということで、親テーマでも子テーマでも使えるコードをご紹介します。

目次

functions.php に追加するコード

まずは下のコードを functions.php に追加します。
これで PHPファイルをショートコードで呼び出すことができるようになります。
子テーマを用意している方は子テーマの functions.php へ。

PHPファイルの作成方法については後述します。

function PHP_Include($params = array()) {
    extract(shortcode_atts(array(
        'file' => 'default'
    ), $params));
    ob_start();
    include(get_stylesheet_directory() . "/$file.php");
    return ob_get_clean();
}
add_shortcode('hwebphp', 'PHP_Include');

投稿・固定ページ内に記述するショートコード

投稿・固定ページの任意の箇所に PHPファイルを読み込むためのショートコードを記述します。
PHPファイルが「myFile.php」とすると、ショートコードは下のようになります。
'myFile'は、表示させたい PHPファイルの .php を抜いたファイル名に置き換えて!

【子テーマでも OK!】WordPress の投稿・固定ページで PHPファイルをショートコードで呼び出す方法

更新情報をショートコードで表示してみる<実践編>

実際に、更新情報を一覧表示するための PHPファイルを作成して、それをショートコードでトップページに呼び出してみます。

【子テーマでも OK!】WordPress の投稿・固定ページで PHPファイルをショートコードで呼び出す方法
完成イメージ

作業の手順

  1. PHPファイル「news.php」を作成する
  2. functions.php にコードを追加する
  3. トップページ内にショートコードを記述する

PHPファイル「news.php」を作成する

news.php と名前をつけて保存 → アップロード。

<dl class="news">
    <?php
    global $post;
    $tmp_post = $post;
    $myposts = get_posts('numberposts=表示する件数&category=表示するカテゴリー ID');
    foreach($myposts as $post) :
    setup_postdata($post);
    ?>
    <dt><?php the_time('Y年m月d日') ?></dt>
    <dd><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></dd>
    <?php endforeach; ?>
    <?php $post = $tmp_post; ?>
</dl>

functions.php にコードを追加する

news.php と同じフォルダ内の functions.php に追加 → アップロード。

function PHP_Include($params = array()) {
    extract(shortcode_atts(array(
        'file' => 'default'
    ), $params));
    ob_start();
    include(get_stylesheet_directory() . "/$file.php");
    return ob_get_clean();
}
add_shortcode('hwebphp', 'PHP_Include');

トップページ内にショートコードを記述する

トップページの好きなところにショートコードを記述。
完成♪

[hwebphp file='news']

※[] は半角に変えて下さい。