wordpressのショートコードを自作できるようになればできる幅も広がるし、更新が楽になることあるので、積極的に使っていきたいですよね。

今回はショートコードを使って別記事の内容を表示させる方法を書いていきます。

カスタム投稿でインクルード用のカスタム投稿を作成すれば、wordpressの管理画面でphpのインクルードのような機能としても使える便利なショートコードです。

カスタム投稿の作り方は次の記事に書いてます。

カスタム投稿を複数作るときにできるだけ分かりやすく複製するカスタム投稿を複数作るときにできるだけ分かりやすく複製する

制作コード

早速、自作のショートコードを作るコード例です。

以下のようなコードになっています。

コードをクリップボードにコピー
function includepost_insert_func($atts) {
  $atts = shortcode_atts(array(
    'id' => 0,
  ), $atts);
  $id = $atts['id'];
  $mypost = get_post($id);
  if( !(empty($mypost)) ){
    $html = $mypost->post_content;
    return $html;
  }
}
add_shortcode( 'includepost', 'includepost_insert_func'); 

今回は[postinclude]というショートコードを作っています。

[postinclude id="記事のID"] とすれば、記事の内容を取得して、表示するようになっています。

制作コード+α

せっかくなので、先程のコードを少しアレンジして、ショートコードの属性値によって、表示する内容を記事内容だけではなく、記事タイトルなども取得できるようにしてみました。

以下のように変更しました。

コードをクリップボードにコピー
function includepost_insert_func($atts) {
  $atts = shortcode_atts(array(
    'id' => 0,
    'value' => 'post_content',
  ), $atts);
  $id = $atts['id'];
  $mypost = get_post($id);
  if( !(empty($mypost)) ){
    $value = $atts['value'];
    $html = $mypost->$value;
    return $html;    
  }
}
add_shortcode( 'includepost', 'includepost_insert_func');

変更点は次の3ヶ所です。

  1. 4行目「'value' => 'post_content',」の追加
  2. 9行目「$value = $atts['value'];」の追加
  3. 10行目「$html = $mypost->$value;」の変更

[postinclude id="記事のID" value="取得したい情報"] とすれば、記事の取得したい情報が取得できます。

valueに設定できる値は 関数リファレンス/get post の戻り値のものです。


当サイトのコードの箇所は、同じようなショートコードで制作しています。
コードを挿入するショートコードはもう少し複雑ですが。。

ショートコードをアレンジすればもっと色んなことができると思うので、ショートコードで遊んでみてはどうでしょうか?