プラグインクラスで、公開データ用の単純なフィールドを提供したいと思います:メール、電話番号、Twitterなど。リストは拡張できます。
詳細については、GitHubのプラグインPublic Contact Dataを参照してください。
使い方を簡単にするために、入力しやすいショートコードも提供したいと思います。
[public_email]
[public_phone]
[public_something]
唯一の違いは2番目の部分です。ショートコードはエラーが発生しやすいので、これ以上の引数は必要ありません。そこで、プラグインクラスのすべてのフィールドに1つのショートコードハンドラーを登録します。
foreach ( $this->fields as $key => $value )
{
add_shortcode( 'public_' . $key, array( $this, 'shortcode_handler' ) );
}
ここで、shortcode_handler()
どのショートコードが呼び出されたかを知る必要があります。私の質問は、どうすればよいですか?
私の現在の回避策は別の関数です:
protected function current_shortcode()
{
$backtrace = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS );
return $backtrace[3]['args'][0][2];
}
これは…のために働きthe_content()
ます。しかし、エレガントでも堅牢でもありません。
私はを読みましたがwp-includes/shortcodes.php
、今はそれをよりよくする方法がわかりません。