functions.php設定, ショートコード
0

外部ファイルを読み込むショートコード

他サーバーに設置している別ドメイン配下にあるファイル、いわゆる外部ファイルを読み込む為のショートコード。
やりたかった事は、
(クライアントごとに投稿ページを作成するとして)
・各投稿ページに「クライアントコード」というカスタムフィールドを作成。
・↑これに各クライアントを識別する文字列を入力しておく。
・他サーバーに、各クライアントコード(文字列)をファイル名(フォルダ名)としたPHPファイルを設置。
・各クライアントごと(各投稿ページごと)に、他サーバー設置された各専用のPHPファイルを呼び出す(インクルード)する。
これを簡単にショートコードとして設定して実現したい!

いろいろ探しまわってたら、ありました!!
かちびと. net様の
任意のファイルを読み込み、その場に実装するWordPressショートコード – かちびと. netより

function file_aid_func( $atts ) {
  extract( shortcode_atts( array(
    'file' => ''
  ), $atts ) );

  if ($file!='')
    return @file_get_contents('http://aaa.com/inc/' . $file. '/aid.php') ;
}
add_shortcode( 'file_aid', 'file_aid_func' );

を、functions.phpに追加して、ショートコード[file_aid file=”aid0016″]を投稿フィールド内に記述すれば、
http://aaa.com/inc/aid0016/aid.phpのファイルを読み込むことが出来る!
テンプレート内に記述する場合は、

<?php echo do_shortcode('[file_aid file="n0016"]'); ?>

だが、テンプレートに記述したら各投稿ページごと(各クライアントごと)にはならない。

そこで、
$fileにそのまま「クライアントコード」のカスタムフィールド値が入るようにコード改造してみた。

function file_aid_func() {
  $file = post_custom("クライアントコード");
  return @file_get_contents('http://aaa.com/inc/' . $file. '/aid.php') ;
}
add_shortcode( 'file_aid', 'file_aid_func' );

↑これをfunctions.phpへ、
そしてテンプレートに、

<?php echo do_shortcode('[file_aid]'); ?>

とすれば、
クライアントn0016(カスタムフィールド「クライアントコード」の値「n0016」)の場合には、http://aaa.com/inc/aid0016/aid.phpを呼び出し、
クライアントn0091(カスタムフィールド「クライアントコード」の値「n0091」)の場合には、http://aaa.com/inc/aid0091/aid.phpを呼び出すことが出来る!

めでたしめでたし….
あれ??
よ~く考えてみたら…下記のようにPHPインクルードすれば同じ結果が得られる!?

<?php
$file = post_custom("クライアントコード");
include('http://aaa.com/inc/' . $file. '/aid.php');
?>

とほほ。涙
アホでスミマセン。

ここにたどり着くまでさんざん苦労したので、自分用のメモに残してみました。

WordPress(ワードプレス)のショートコードを初めて使ってみましたが、使いこなせればかなり便利なようですネ。

関連記事
カスタム投稿タイプとカスタム分類をプラグイン無で設定,表示
デフォルト投稿postの本文フィールドを非表示にする
URLからスクリーンショット画像を取得して表示「Browser Shots」プラグイン