这是我想用短代码生成的html - 在WordPress中编辑页面内容时:
<div class="shadow-wrapper half-shadow im-centered">
<div class="box-shadow shadow-effect-2">
<div class="servive-block servive-block-bluemed">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec nec nulla vitae lacus.
</div>
</div>
</div>
这就是我想在编辑器框中使用的内容 - 当使用新的短代码时,我将定义:
[box color="bluemed"]
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec nec nulla vitae lacus.
[/box]
传递的参数:color = "bluemed"需要成为div类的一部分..如: <div class="servive-block servive-block-bluemed">
(参见上面的html代码示例)
这是我在functions.php文件中放置的内容,试图创建这个新的短代码:
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('/box', 'colored_box_end');
如您所见,我将颜色属性默认内容设置为灰色,但也允许覆盖并指定从短代码传递的参数中的颜色 .
然后,这种颜色需要成为div内部类名的一部分 . 因此,如果没有传递参数,那么类名将变为:“servive-block-grey” . 或者如果我传递color =“lavendar”的参数,那么类名将变为:“servive-block-lavendar” .
这有可能吗?
如果是这样..有人可以帮助我正在使用的代码..因为我在查看页面时从WordPress收到数百个错误 .
基本上错误是这三个的重复(我认为可能是因为我试图在类名中放入参数时出现语法错误 - 如下所示: servive-block-'.$color.'
)
警告:preg_split():第244行的C:\ xampp \ htdocs \ CIRB \ CirbWP \ wp-includes \ formatting.php中的未知修饰符'b'警告:在C:\ xampp \ htdocs中为foreach()提供的参数无效第246行\ CIRB \ CirbWP \ wp-includes \ formatting.php警告:implode():在第297行的C:\ xampp \ htdocs \ CIRB \ CirbWP \ wp-includes \ formatting.php中传递的参数无效
谢谢你的指导!
3 回答
请修改您的短代码:[/ box]至 [end-box]
试试这个:我将[/ box]替换为 [end-box] ,并将灰色替换为 'grey'
使用$ content输出短代码内的内容:
我认为你的问题在于这一行:
这个警告:
可能是你的
'/box'
参数的结果,假设WordPress使用正则表达式来解析它(文档没有查看代码) . 您不需要显式添加结束标记,只需使用add_shortcode('box', 'colored_box_shortcode');
并将所有内容放在一个函数中而不是两个函数中 .