10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-06-29
  • 環境
    • 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

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?