プログラム関係の備忘録。技術系記事1000記事以上を目指すブログ

【WordPress】ショートコードを使い投稿ページからテンプレートを呼び出す

  • 2018年3月26日
  • 2018年3月26日
  • wordpress
  • 353view
  • 1件

ショートコードを使って投稿ページから関数を呼び出す

function.phpにショートコードの設定を追記する。

function.php
[php] function func() {
return "サンプルです。";
}
add_shortcode(‘shortCD’, ‘func’);
[/php]

投稿ページの好きな箇所に作ったショートコードを記述する
[html] [[shortCD]] [/html]

結果

サンプルです。

ショートコードを使って投稿ページからテンプレートタグを呼び出す

同じようにして、次はWPのテンプレートタグを呼び出します。
以下の例ではブログ名を取得。
[php] function func() {
return get_bloginfo(‘name’);
}
add_shortcode(‘shortCD’, ‘func’);
[/php]

投稿ページの好きな箇所に作ったショートコードを記述する
[html] [[shortCD]] [/html]

結果

ショートコードを使ってSQLを叩く

自作テーブルを追加してデータ管理をしてみるでやったように、追加したオリジナルデータもショートコードを使えば投稿ページから呼び出すことが可能(以下の例では既存テーブルからSELECT)
記事タイトルを一件取得して表示する
[php] function func2(){
global $wpdb;
$response = $wpdb->get_var("SELECT post_title
FROM $wpdb->posts");
return $response;
}
add_shortcode("shortCD2", "func2");
[/php]

投稿ページの好きな箇所に作ったショートコードを記述する
[html] [[shortCD2]] [/html]

結果

ショートコードを使ってSQLを叩く2

次は、投稿ステータスが「公開済み」の記事の一覧を取得して表示
[php] function func3() {
ob_start();
global $wpdb;
$data = $wpdb->get_results( "
SELECT post_title
FROM $wpdb->posts
WHERE post_status = ‘publish’
" );

foreach ($data as $value) {
echo $value->post_title . "<br />";
}
return ob_get_clean();
}

add_shortcode("shortCD3", "func3");
[/php]

上記のコードをショートコードでそのまま実行すると、WPの処理により「記事先頭にSELECTの結果が表示されてしまう為、
ショートコードの関数内を「ob_start()」と「return ob_get_clean();」で囲ってバッファリングすることで、
ショートコードを記述した位置にきちんと表示させるようにしている。

投稿ページの好きな箇所に作ったショートコードを記述する
[html] [[shortCD3]] [/html]

結果