PHP
WordPress
10
どのような問題がありますか?

この記事は最終更新日から1年以上が経過しています。

投稿日

更新日

WordPressにショートコードを使ってPHPを埋め込む方法

  • 環境
    • Windows 10 Pro 64bit バージョン1909
    • Local by Flywheel 5.6.1
      • PHP 7.4.1 / MySQL 8.0.16 / Apach / WordPress 5.4.2
      • テーマ : Lightning

ショートコードをつくる基本の方法

  1. functions.phpを開く
  2. PHPで関数を定義して処理を書く
  3. add_shortcode('{ショートコード用文字}', '{関数名}');を書く
  4. WordPressの記事などに[{ショートコード用文字}]を書く
  5. プレビューなんかで見ると処理の結果が出力される
functions.phpに書く
function short_cord_func() {
    return 'ショートコードをつくる基本の方法';
}
add_shortcode('short_cord_string', 'short_cord_func');
記事ショートコードを書く
[short_cord_string]

image.png

外部ファイルを読み込んでショートコードをつくる方法

  1. 外部ファイルにPHPで処理を書く
  2. functions.phpを開く
  3. PHPで関数を定義して外部ファイルを呼び出す処理を書く
  4. あとは「ショートコードをつくる基本の方法」と同じ
テーマ用ディレクトリ配下にディレクトを作って外部ファイルをおいてみた
テーマのディレクトリ
├ functions.php
└ customphp
 └ short-cord.php << 外部ファイル
short-cord.phpという外部ファイルにPHPで処理を書く
// この外部ファイルからの出力がそのまま埋め込まれるイメージ
<p><?php echo '外部ファイルを読み込んでショートコードをつくる方法'; ?><p>
functions.phpにPHPで関数を定義して外部ファイルを呼び出す処理を書く
function short_cord_func() {
    // 出力バッファリングを有効化する
    ob_start();
    // 外部ファイルを読み込む
    // 「.php(拡張子部分)」は不要
    get_template_part('customphp/short-cord');
    // 出力バッファを削除する
    return ob_get_clean();
}
add_shortcode('short_cord_string', 'short_cord_func');

image.png

外部ファイルを読み込むショートコードを複数作る場合

外部ファイルを読み込む専用の関数を作っておくと便利

こんな風に外部ファイルおいてみた
テーマのディレクトリ
├ functions.php
└ customphp
 ├ hoge.php << 外部ファイル
 └ fuga.php << 外部ファイル
functions.php
/**
 * 外部ファイルを読み込む専用関数.
 * @param array 読み込む外部ファイル名(拡張子なし)を値に持つ連想配列(keyはfile).
 **/
function custom_func($args) {
    // $file変数を配列からインポートする
    extract(shortcode_atts(array('file' => 'default'), $args));
    // 出力バッファリングを有効化する
    ob_start();
    // 外部ファイルを読み込む
    get_template_part("$file");
    // 出力バッファを削除する
    return ob_get_clean();
}

/** hoge.phpを使うショートコード用関数. */
function hoge() {
    return custom_func(['file' => 'customphp/hoge']);
}
add_shortcode('hoge', 'hoge');

/** fuga.phpを使うショートコード用関数. */
function fuga() {
    return custom_func(['file' => 'customphp/fuga']);
}
add_shortcode('fuga', 'fuga');

テーマを選定中でちょいちょい変える場合

外部ファイルを複数作っている場合にはどっかのディレクトリにまとめておくとテーマが変わった時にディレクトリ毎持っていけるから便利
だけど、テーマを選定中で使うテーマのディレクトリ毎にコピーしていくのは面倒くさい
そんな時はシンボリックリンクを使うと便利

外部ファイルを入れるディレクトリを作る
{サイトのディレクトリ}/app/public
├ wp-admin
├ wp-includes
├ wp-content
|└ themes
| ├ lightning         << テーマのディレクトリ
| |├ functions.php
| |└ customphp       << シンボリックリンク
| └ twentynineteen   << テーマのディレクトリ
|  ├ functions.php
|  └ customphp       << シンボリックリンク
└ customphp  << 外部ファイル用ディレクトリ
 ├ hoge.php
 └ fuga.php
Windowsのコマンドプロンプトでシンボリックリンクを作る方法
# 1. 管理者権限でコマンドプロンプトを起動する
# 2. シンボリックリンクを作りたいところに移動する
>cd "c:\Users\{ユーザ}\Local Sites\sample\app\public\wp-content\themes\twentynineteen"
# 3. ディレクトリ(/D)のシンボリックリンクをつくる(mklink)
>mklink /D customphp "c:\Users\{ユーザ}\Local Sites\sample\app\public\customphp"
customphp <<===>> c:\Users\{ユーザ}\Local Sites\sample\app\public\customphp のシンボリック リンクが作成されました

ショートコードを作ってみた

WordPressでPHPを埋め込む方法がなんとなくわかったので早速Google検索した結果を表示するショートコードを作ってみた。
WordPressでGoogleのCustom Search APIを使ってみる - ponsuke_tarou’s blog

新規登録して、もっと便利にQiitaを使ってみよう

  1. ユーザーやタグをフォローできます
  2. 便利な情報をストックできます
  3. 記事の編集提案をすることができます
ログインすると使える機能について
ponsuke0531
びっくりするほど物覚えが悪いが、エンジニアを目指しています。

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
新規登録
すでにアカウントを持っている方はログイン
10
どのような問題がありますか?
新規登録して、Qiitaをもっと便利に使ってみませんか

この機能を利用するにはログインする必要があります。ログインするとさらに下記の機能が使えます。

  1. ユーザーやタグのフォロー機能であなたにマッチした記事をお届け
  2. ストック機能で便利な情報を後から効率的に読み返せる
新規登録ログイン
ストックするカテゴリー