4

さて、次のようなWPテンプレートファイルにショートコードを追加できます。

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

しかし、ショートコードが次のようなコンテンツをラップアラウンドすることを意図している場合はどうなりますか?

[my_awesome_shortcode]
Hey, this is the content within the awesome shortcode.
[/my_awesome_shortcode]

それをテンプレートファイルに入れる方法が少しわかりません。

4

2 に答える 2

10

私のために働いた解決策は、ショートコードを単一の文字列に結合することでした。

<?php echo do_shortcode('[my_awesome_shortcode]<h1>Hello world</h1>[/my_awesome_shortcode]'); ?>

動作します!

実行したいショートコードコマンドの長いチェーンがある場合は、次のようにそれらのコマンド用に別の文字列を作成します

$shortcodes = '[row]';
    $shortcodes .= '[column width="2/3"]';
        $shortcodes .= 'Content';
    $shortcodes .= '[/column]';
    $shortcodes .= '[column width="1/3"]';
        $shortcodes .= 'More Content';
    $shortcodes .= '[/column]';
$shortcodes .= '[/row]';

次に、このようにすべてを実行します

<?php echo do_shortcode($shortcodes); ?>
于 2014-01-26T09:50:53.903 に答える
8

http://codex.wordpress.org/Shortcode_API#Enclosing_vs_self-closing_shortcodesによると

$content = nullショートカット関数に追加すると、次のようなトリックが実行されます。

function my_awesome_shortcode_func( $atts, $content = null ) {
   return '<awesomeness>' . $content . '</awesomeness>';
}

add_shortcode( 'my_awesome_shortcode', 'my_awesome_shortcode_func' );

となることによって:

[my_awesome_shortcode]
Hey, this is the content within the awesome shortcode.
[/my_awesome_shortcode]

結果は次のようになります。

<awesomeness>Hey, this is the content within the awesome shortcode.</awesomeness>
于 2012-07-27T21:11:55.623 に答える