仅在其他快捷码中执行快捷码

时间:2012-11-30 作者:Maxim Zubarev

我想知道是否可以做一个短代码only in another shortcode. 例如,我得到了以下代码片段:

[heading]some pricing page[/heading]
[pricing_box]
  [heading]Some title[/heading]
[/pricing_box]
现在我不想定义一个短代码heading 这将应用于嵌套的和第一级的短代码。我两者都要heading 短代码以产生不同的输出。当然,我可以通过将其中一个短代码重命名为title 或者别的什么,但这并不总是产生最佳的命名安排。

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

要对嵌套标题使用不同的回调,请在pricing_box 在返回字符串之前,回调并还原主处理程序。

add_shortcode( \'pricing_box\', \'shortcode_pricing_box\' );
add_shortcode( \'heading\',     \'shortcode_heading_main\' );

function shortcode_pricing_box( $atts, $content = \'\' )
{
    // switch shortcode handlers
    add_shortcode( \'heading\', \'shortcode_heading_pricing_box\' );

    $out = \'<div class="pricing-box">\' . do_shortcode( $content ) . \'</div>\';

    // restore main handler
    add_shortcode( \'heading\', \'shortcode_heading_main\' );

    return $out;
}

function shortcode_heading_main( $atts, $content = \'\' )
{
    return "<h2>$content</h2>";
}

function shortcode_heading_pricing_box( $atts, $content = \'\' )
{
    return "<h3>$content</h3>";
}

结束

相关推荐

call shortcode in javascript

加载DOM后,我想通过jquery显示一个短代码:这就是我如何称呼短代码:<?php echo do_shortcode(\'[plugin]\'); ?>现在,我的问题是如何在jquery函数中调用该短代码,因为我的网站是基于jquery/ajax调用的?谢谢