のむログ

技術メモ / 車 / 音楽 / 雑記 / etc...

こちらは旧ブログになります。

新ブログはこちらに移行しました🙇

WordPressの投稿ページでPHPを使う

f:id:nomunomu0504:20190411145640p:plain:w0

WordPressの投稿ページでPHPコードを利用する

WordPressでは、PHPで動的ページを生成しています。しかし、投稿ページや固定ページでは、PHPコードを直接利用することはできません。なので、「ショートコード」という方法を用いて利用できるようにします。

流れとして2パターン存在します。「ファイル別で管理する場合」「function.phpに直書きする場合」です。 2パターン紹介するので使いたい方を使ってください。

流れ1(ファイルで管理する)

・投稿・固定ページで処理したい内容が書かれたPHPファイルを用意する
・function.phpから対象のファイルを読み込み、ショートコードを作成
・投稿・固定ページでショートコードを記述

流れ2(function.phpに直書きする)

・function.phpに処理関数を書き込み、ショートコードを作成
・投稿・固定ページでショートコードを記述

流れ1: ファイルで管理する方法

wordpressのフォルダ内(できればfunction.phpとかと同じ階層)に、処理が記述されたPHPファイルを作成します。

<?php
// shortcode_function.php
function shortcode() {
    echo "Hello, World!!";
    return;
}
function shortcode_2() {
    return "Hello, World!!";
}
?>

関数としては、returnしてもしなくても大丈夫だったような。。。 しておいたほうがいいとは思います。

上記のように記述されたPHPファイルをfunction.phpでincludeします。
@子テーマを使っていない場合

<?php
// function.php
function create_shortcode() {
    ob_start();
    include(get_theme_root() . '/' . get_template() . "shortcode?function.php");
    return ob_get_clean();
}
add_shortcode('sc', 'create_shortcode');

@子テーマを使っている場合

<?php
// function.php
function create_shortcode() {
    ob_start();
    include(STYLESHEETPATH . 'shortcode_function.php');
    return ob_get_clean();
}
add_shortcode('sc', 'create_shortcode');

ここまで終わったら、PHPコードを実行したい投稿・固定ページに以下のように記述します。

[sc]

このようにすることで、投稿・固定ページでもPHPコード(上記の例ではcreate_shortcode.phpが実行され、includeされているshortcode_function.phpが実行される)を実行することができるようになります。

流れ2: function.phpに直書きする方法

wordpress内にあるfunction.phpに直接関数を書き込みます。

<?php
// function.php
function shortcode_function() {
    echo "Hello, World!!";
}
function shortcode_function_2() {
    return "Hello, World!!";
}
add_shortcode('sc', 'shortcode_function');
add_shortcode('sc2', 'shortcode_function');
?>

ここまで終わったら、PHPコードを実行したい投稿・固定ページに以下のように記述します。

[sc]
[sc2]

このようにすることで、投稿・固定ページでもPHPコード(上記の例ではcreate_shortcode.phpが実行され、includeされているshortcode_function.phpが実行される)を実行することができるようになります。

まとめ

少し手間と時間はかかるかもしれませんが、一度セットしてしまえば、追記していくだけで利用できるようになるので便利ですよね。 ぜひ試してみてください。