WordPress如何在帖子内容中显示快捷码?

时间:2015-01-21 作者:Ari

我想知道wordpress是如何显示插入帖子内容中的短代码的,这样我就可以复制它的功能并将其实现到我的插件中。

Here is an example:

我想显示插入html代码之间的短代码,如下所示:

    <div class="akismet_activate">
    <div class="aa_a">A</div>
    <div onclick="document.akismet_activate.submit();" class="aa_button_container">

[the_shortcode id="4"]

<div class="aa_button_border">
    <div class="aa_button">Activate your Akismet account</div>
    </div>
    </div>
    <div class="aa_description"><strong>Almost done</strong> - [the_shortcode id="4"] activate your account and say goodbye to comment spam</div>
    </div>
我已经用了几种方法,但它只执行短代码,而忽略了html的优点。

如何使执行的短代码在html代码之间显示,如该示例所示?

2 个回复
SO网友:Ari

经过30分钟的研究,我得出了以下解决方案:

function wpse_175564() {

  // The html goodies with shortcodes
       $htmlcodes = \'<div class="akismet_activate">
                <div class="aa_a">A</div>
                <div onclick="document.akismet_activate.submit();" class="aa_button_container">

            [the_shortcode id="4"]

            <div class="aa_button_border">
                <div class="aa_button">Activate your Akismet account</div>
                </div>
                </div>
                <div class="aa_description"><strong>Almost done</strong>
     - [the_shortcode id="4"] activate your account and say goodbye to comment spam</div>
                </div>\';
         // End of HTML Goodies

               // Let\'s get the shortcode inside the string and execute it!

                $pattern = get_shortcode_regex();
  if (preg_match_all( \'/\'. $pattern .\'/s\', $htmlcodes, $matches ) && array_key_exists( 2, $matches )) {

       foreach($matches[0] as $i => $v){
          $htmlcodes = preg_replace($v , do_shortcode($v), $htmlcodes);
          $htmlcodes =  str_replace(array(\'[\',\']\'), \'\', $htmlcodes);
         }


  } 

 return $htmlcodes;

}
不确定这是否是最好的解决方案,但它有效。。。!

SO网友:jetlej

如果要直接在php模板中插入短代码,必须使用do_shortcode().

例如:

<?php echo do_shortcode( \'[the_shortcode id="4"]\' ); ?>

结束

相关推荐

Remove echo from shortcode

我刚刚开始使用短代码,由于缺乏php知识,我无法想出如何在不使用php echo的情况下使用此短代码。有人能帮我修改代码吗?// SPONSORS Shorcode function sponsors_shortcode($atts) { extract(shortcode_atts(array( \"name\" => \"sponsors\", ), $atts)); $args = array( \"