プラグインクラスで、公開データ用の単純なフィールドを提供したいと思います:メール、電話番号、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、今はそれをよりよくする方法がわかりません。