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

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

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

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

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

function.php

function func() {
    return "サンプルです。";
}
add_shortcode('shortCD', 'func');

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

[[shortCD]]

結果

サンプルです。

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

同じようにして、次はWPのテンプレートタグを呼び出します。
以下の例ではブログ名を取得。

function func() {
    return get_bloginfo('name');
}
add_shortcode('shortCD', 'func');

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

[[shortCD]]

結果

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

自作テーブルを追加してデータ管理をしてみるでやったように、追加したオリジナルデータもショートコードを使えば投稿ページから呼び出すことが可能(以下の例では既存テーブルからSELECT)
記事タイトルを一件取得して表示する

function func2(){
  global $wpdb;
  $response = $wpdb->get_var("SELECT post_title
  FROM $wpdb->posts");
  return $response;
}
add_shortcode("shortCD2", "func2");

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

[[shortCD2]]

結果

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

次は、投稿ステータスが「公開済み」の記事の一覧を取得して表示

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

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

[[shortCD3]]

結果