web-dev-qa-db-ja.com

管理者ページ内のdo_shortcode()

ショートコードのあるプラグインをいくつか使用しています...ただし、コンテンツ用のパブリックページを作成する代わりに、add_menu_pageを使用してadmin内に新しいページを作成し、このコンテキスト内でdo_shortcode()を使用する方法を知る必要があります。

現状では、すべての機能が文字列を吐き出します。管理ページ内でショートコードAPIが利用できないためだと思います。

これを回避するにはどうすればよいですか。 WP Admin内でショートコードを利用する方法を説明している文書や、それが可能な場合はそれも説明できません。


具体的には、WP Admin内でWooCommerceのショートコードを利用しようとしています。私はプラグインがアカウント/ユーザー管理のためにWPバックエンドを利用していないという事実が嫌いです。

11
dcolumbus

do_shortcode()を呼び出す代わりに、ショートコードに関連付けられている関数を呼び出すだけです。

[example]という名前のショートコードと、ショートコードハンドラとして登録されている関数があります。

function example_shortcode( $atts = array(), $content = '' )
{
    extract( 
            shortcode_atts( 
            array (
            'before' => '',
            'after' => '',
            ), 
            $atts 
       )
   );

    return $before . $content . $after;
}
add_shortcode( 'example', 'example_shortcode' );

あなたの管理ページでは、あなただけの関数を呼び出す:

echo example_shortcode( 
    array ( 'before' => 'This ', 'after' => '!' ), 
    'works' 
);

出力:This works!

do_shortcode()よりも速くて信頼性があります。

9
fuxia

ショートコードAPIadminで利用可能ですが、その出力は問題のショートコードタグに依存します。

組み込みの[caption]は期待どおりに動作しますが、[embed]は機能しません(これは埋め込みAPIがどのようにショートコードを「遅延ロード」し、実行するthe_contentフィルタに依存するのか、技術的にショートコードAPIのせいではありません)。

結論: タグがどのように登録されているか、そして実行されたときに何をすると仮定するかに完全に依存します。

@ dcolumbusあなたの場合どのタグについて話していますか?

2
TheDeadMedic