[英]Working with nested recursive shortcodes
我有以下兩個功能:
add_shortcode('section_block_container','dos_section_block_container');
function dos_section_block_container($atts, $content = null) {
$content = do_shortcode($content);
echo '<ul class="list-unstyled list-inline">' . $content . '</ul>';
}
add_shortcode('section_block','dos_section_blocks');
function dos_section_blocks($atts, $content = null) {
// define attributes and their defaults
extract( shortcode_atts( array (
'first' => FALSE,
'color' => '',
'icon' => '',
'title' => '',
), $atts ) );
?>
<li>
<a href="" style="background-color: <?php echo $color; ?>" title="<?php echo $title; ?>" class="section-block show-grid col-12 col-sm-3 <?php // echo ($first == TRUE ? 'col-offset-3 ' : '') ?>col-lg-3">
<h4><?php echo strip_tags ($title); ?></h4>
<?php echo strip_tags($content); ?>
<?php echo $icon; ?>
</a>
</li>
<?php
}
並在wp編輯器中使用遞歸[section_block]
[section_block_container]
[section_block color =“#001e61” title =“ Lorem Ipsum” icon =“” first =“ true”] [/ section_block]
[section_block color =“#001e61” title =“ Lorem Ipsum” icon =“” first =“ true”] [/ section_block]
[/ section_block_container]
問題是即使使用do_shortcode();
列表也不會出現在容器內部,而是出現在容器外部do_shortcode();
簡碼不能echo
值 。
它必須return
它。
function container($atts, $content = null) {
$content = do_shortcode($content);
return "<ul class='list-unstyled list-inline'>" . $content . "</ul>";
}
add_shortcode('section_block_containe','container');
function section_block_function($atts, $content = null) {
// define attributes and their defaults
extract( shortcode_atts( array (
"first" => FALSE,
"color" => '',
"icon" => '',
"title" => '',
), $atts ) );
$class = ($first)? 'col-offset-3 ':'';
$li =
"<li>
<a href='' style='background-color: ".$color."' title='".$title."' class='section-block show-grid col-12 col-sm-3 ".$class." col-lg-3'>
<h4>".$title."</h4>
".$content."
".$icon."
</a>
</li>";
return $li;
}
add_shortcode('section_block','section_block_function');
朋友,他唯一的錯誤是動作簡碼可與return一起使用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.