web関連

【wordpress】ショートコードに指定した引数を他のphpファイルで使用する方法

【wordpress】ショートコードに指定した引数を他のphpファイルで使用する方法

ショートコードに指定した引数の値を元にphpファイルをincludeして、かつその読み込んだファイルにショートコードの引数を渡した時の備忘録

やりたいこと

ショートコードを作って引数で指定した名前のphpファイルを読み込む
かつそのphpファイルにショートコードの引数を渡す

functions.php

ショートコードを作って引数「file」「text01」「text02」にデフォルト値を指定

<?php 
function php_file_Include($params) {
 extract(shortcode_atts(array(
  'file' => 'default',
  'text01' => 'デフォルトのテキスト01だよ',
  'text02' => 'デフォルトのテキスト02だよ'
  ), $params));
 ob_start();
 include(STYLESHEETPATH . "/$file.php");
 return ob_get_clean();
}
add_shortcode('custom_shortcode', 'php_file_Include');
?>

出力

出力したいところに貼る

// 例:partsディレクトリ内のside01.phpを読み込んで引数「text01」と「text02」の値を渡す
[custom_shortcode file='parts/side01' text01='テキスト01だ' text02='テキスト02よ']

ショートコードを使って読み込むphpファイル

受け渡しが出来ているか確認する用のコード↓

ショートコードの引数を「$params[]」で取得する場合

<?php 
// 出力例:[custom_shortcode file='ファイル名' text02='テキスト02よ']の時
echo $params['file']; 
// 「ファイル名」が出力される
echo $params['text01'];
// 引数がないので出力されない
echo $params['text02']; 
// 「テキスト02よ」が出力される
?>

$params[]でも引数取得できるけどショートコード側で引数の指定が無いと出力されなかった

ショートコードの引数を変数で取得する場合

<?php 
// 出力例:[custom_shortcode file='ファイル名' text02='テキスト02よ']の時
echo $file;
// 「ファイル名」が出力される
echo $text01;
// 引数がないのでfunctions.phpで指定したデフォルト値「デフォルトのテキスト01だよ」が出力される
echo $text02; 
// 「テキスト02よ」が出力される
?>

変数で出力すれば引数が無い時にfunctions.phpで指定したデフォルトの値が出力される

ここまでがショートコードに引数指定してそれを元にファイル読み込んだりファイルに引数を渡す処理
以下は調べていた時のメモ

ここからメモ

メモ:extract()関数

extract()関数を使用してキー名を変数可して取得できるらしい

<?php // 例
extract(array(  
  'test01' => 'これはテスト01',
  'test02' => 'これはテスト02'
));
echo $test01;
// 「これはテスト01」と出力される
?>

▼参考
http://torhamzedd.halteria.com/2010/01/phpcompactextract.html

こんな関数あるんすね

メモ:include()関数のパスは「STYLESHEETPATH」を使う

functions.phpで使ってる「STYLESHEETPATH」について

include(STYLESHEETPATH . "/$file.php");

「TEMPLATEPATH」ってのもあるみたいだけど子テーマだと上手くいかないから「STYLESHEETPATH」を使う必要があるみたい

▼参考
https://webcre8tor.com/snippets/stylesheetpath.html

メモ:「ob_start();」と「ob_get_clean();」

すぐに出力させないで一時的に記憶しておいて後で出力する関数みたい
「ob_start();」で一時的に保存開始して「ob_get_clean();」で保存していたものを出力して終了する

▼参考
https://blog.s-giken.net/249.html

「ob_start()関数」はバッファリングを提供してくれる機能らしい
後でもうちょい調べる
文章がまとまらない