短码下的短码有可能多次出现吗?

时间:2019-09-16 作者:The WP Intermediate

[shortcode]
  [shortcode1 title="variable text"] Some text[/shortcode1]
  [shortcode1 title="variable text"] Some text[/shortcode1]
  [shortcode1 title="variable text"] Some text[/shortcode1]
  [shortcode1 title="variable text"] Some text[/shortcode1]
  [shortcode1 title="variable text"] Some text[/shortcode1]
  [shortcode1 title="variable text"] Some text[/shortcode1]
[/shortcode]
根据对短代码的需要,需要根据用户/管理员输入重复HTML部分。我提出了一种格式。以上是可能的吗?

短代码是否可以在短代码中多次发布?

<小时>Further explanation of the situation 未来的读者可能会发现它很有用→ 这是HTML的大厦(Hypothetical example)

<div class="classone">
  <div class="classtwo">  
    <div class="classthree">
      <ul class="four"> 
        <li class="question">
          <h3>Question</h3>          
        </li> 
        <li class="answer">
          <p>Answer</p>          
        </li>            
      </ul>      
    </div>  
  </div>  
</div>
这部分是重复的和内部的短代码→

<li class="question">
   <h3>Question</h3>          
</li> 
<li class="answer">
   <h3>Question</h3>         
</li>            
我认为外部短代码的代码将这样编写→

function external_shortcode(){
  ob_start();
  ?>
  <div class="classone">
    <div class="classtwo">  
      <div class="classthree">
        <ul class="four"> 
          <!-- This is the place where I want the inner shortcode many time           -->
        </ul>      
      </div>  
    </div>  
  </div>
  <?php   
  return ob_get_clean();
}
add_shortcode( \'shortcode\', \'external_shortcode\' );
内部短代码的代码→

function internal_shortcode($atts, $content = null){
  $data = [
     \'title\' => \'Some heading text goes here.\',
  ];
  $values = shortcode_atts($data, $atts);
  ob_start();
  ?>
  <li class="question">
    <h3><?php  echo esc_attr($values[\'title\']); ?></h3>          
  </li> 
  <li class="answer">
    <p><?php echo $content; ?></p>          
  </li>  
  <?php   
  return ob_get_clean();
}
add_shortcode( \'shortcode1\', \'internal_shortcode\' );

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

是的,您可以在短代码中包含任意次数的短代码。只需确保您设置了父短代码来解析嵌套在其中的短代码。

例如,如果[shortcode] 有点像

function outer_shortcode($content = null) {
    return \'<div>\' . $content . \'</div>\';
}
只需确保更新它以解析其他短代码的内容:

function outer_shortcode($content = null) {
    return \'<div>\' . do_shortcode($content) . \'</div>\';
}
然后,您可以在其中嵌套任意多个重复的短代码。

SO网友:Mike Baxter

以@WebElaine为例,只需将do\\u shortcode($content)添加到当前代码中:

// use both parameters in your function declaration, even if you will ignore the $atts
function external_shortcode($atts, $content){
  ob_start();
  ?>
  <div class="classone">
    <div class="classtwo">  
      <div class="classthree">
        <ul class="four">
           <?php
           // Using do_shortcode will cause Wordpress to output your inner shortcodes.
           do_shortcode($content);
           ?>
        </ul>      
      </div>  
    </div>  
  </div>
  <?php   
  return ob_get_clean();
}
add_shortcode( \'shortcode\', \'external_shortcode\' );

相关推荐

如何在Functions.php中链接style.css

我是WordPress的新手;我刚开始学习WordPress。我想把风格联系起来。函数中的css。php,但我无法解决这里可能存在的问题。谁能给我指出正确的方向吗?指数php<?php get_header(); ?> <?php if ( have_posts() ) { while ( have_posts() ) { the_post();