如何使用 WordPress 简码传递最终成为类名一部分的参数

问题描述 投票:0回答:3
php wordpress parameter-passing shortcode
3个回答
1
投票

我认为你的问题出在这一行:

add_shortcode( '/box', 'colored_box_end' );

此警告:

preg_split():未知修饰符“b”

可能是你的

'/box'
参数的结果,假设 WordPress 使用正则表达式来解析它(文档没有说明这一点,我也没有查看代码)。您不需要显式添加结束标记,只需使用
add_shortcode('box', 'colored_box_shortcode');
并将所有内容放入一个函数而不是两个函数中。

function colored_box_shortcode( $atts, $content = "" ) {
   extract( shortcode_atts( array(
      'color' => 'grey',
   ), $atts) );
  return '<div class="shadow-wrapper half-shadow im-centered">
  <div class="box-shadow shadow-effect-2">
  <div class="servive-block servive-block-'.$color.'">' . $content '</div>
    </div>
    </div>';
}
add_shortcode( 'box', 'colored_box_shortcode' );

0
投票

请修改您的简码:[/box] 至 [end-box]

[box color="bluemed"]
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec nec nulla vitae lacus.
[end-box]

试试这个: 我将 [/box] 替换为 [end-box],也将灰色替换为 'grey'

function colored_box_shortcode($atts) {

   extract(shortcode_atts(array(
      'color' => 'grey',
   ), $atts));
  return '<div class="shadow-wrapper half-shadow im-centered"><div class="box-shadow shadow-effect-2">
  <div class="servive-block servive-block-'.$color.'">';
}

add_shortcode('box', 'colored_box_shortcode');

function colored_box_end() {
    return '</div>
    </div>
    </div>';
}

add_shortcode('end-box', 'colored_box_end');

0
投票

使用 $content 输出短代码中的内容:

add_shortcode("box", function ($atts, $content = "") {

    $atts = shortcode_atts(array(
        "color" => "grey",
    ), $atts);

    ?>
        <div class="shadow-wrapper half-shadow im-centered">
        <div class="box-shadow shadow-effect-2">
        <div class="servive-block servive-block-<?php echo $atts["color"];?>">
            <?php echo do_shortcode($content);?>
        </div>
        </div>
        </div>
    <?php

});
© www.soinside.com 2019 - 2024. All rights reserved.