管理ページ内のdo_shortcode()


14

私はショートコードを持ついくつかのプラグインを使用しています...しかし、コンテンツの公開ページを作成する代わりに、使用して管理者内にいくつかの新しいページを作成しadd_menu_pagedo_shortcode()このコンテキスト内での利用方法を知る必要があります。

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

これを回避するにはどうすればよいですか?WP Admin内でショートコードを使用する方法を説明するドキュメントはありません...それが可能かどうかはわかりません。


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


誰もがやって来て、「私は研究をしなかった」と判断し、コメントせずに負のスコアを与えたのは非常に役に立たない。
-dcolumbus

1
ショートコードはフロントエンドコンテンツ用であると言えますか?別のプラグインを使用して、独自のプラグイン管理ページのコンテンツを生成しようとしていますか?
ダミアン

@dcolumbus同意します。私は最近、いくつかの偽のダウン投票を見てきました。確かに、過去に見たことを覚えています。IMOこれは正直な(そして非常に素晴らしい)質問なので、私は現在、答えを突き刺しています;)
TheDeadMedic

管理ページを作成した場合は、出力を指定できますdo_shortcode()。なぜ使用する必要があるのですか。例を挙げていただけますか?
スティーブンハリス

特に、WooCommerceショートコードを利用しようとしています。ユーザー管理およびアカウント管理ページ。
dcolumbus

回答:


10

呼び出す代わりに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()


1
私もこれを考えていませんでした!その後も、管理者で(何らかの理由で)ショートコードを使用したことがなく、調査する言い訳がありました;)
TheDeadMedic

なぜこれも考えもしなかったのかわからない...試して報告するつもりだ!
dcolumbus

これの1つの欠点は、プラグインの作成者が将来ショートコードのコールバック関数をリファクタリングすると破損することです。ショートコード自体の変更はおそらく後方互換性がありますが、プラグインの内部関数名がそうなる可能性は低くなります。
イアン・ダン

2

ショートコードAPI 管理者で利用できるようですが、その出力は問題のショートコードタグに依存します。

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

結論:タグが登録される方法とタイミング、および実行時にタグが実行/想定する内容に完全に依存しています。

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


1
また、一部のタグはget_the_ID()投稿IDを返すことを期待します。
スティーブンハリス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.