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

时间:2015-07-23 作者:SunnyOz

这是我想用短代码生成的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代码示例)

下面是我在函数中的内容。尝试创建此新短代码的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\');
如您所见,我将颜色属性default content设置为灰色,但也允许覆盖并指定从快捷码传递的参数中的颜色。

然后,此颜色需要成为div内类名的一部分。因此,如果未传递任何参数,则类名将变为:“quot;服务块灰色;。或者如果我传递参数color=“”;拉文达尔;,然后,类名将变为:“quot;拉文达尔服务区;。

这可能吗?

如果是。。有人能帮助我使用的代码吗。。因为当我查看页面时,WordPress会出现数百个错误。

基本上,这些错误是这3个错误的重复(我认为这可能是由于我试图将参数放入类名中时出现语法错误造成的-如下所示:servive-block-\'.$color.\')

警告:preg\\u split():C:\\xampp\\htdocs\\CIRB\\CirbWP\\wp includes\\formatting中的未知修饰符“b”。php在线244

警告:为C:\\xampp\\htdocs\\CirbWP\\CirbWP\\wp includes\\formatting中的foreach()提供的参数无效。php在线246

警告:implode():在C:\\xampp\\htdocs\\CirbWP\\CirbWP\\wp includes\\formatting中传递的参数无效。php在线297

感谢您的指导!

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

任何WP短代码的第二个参数是在短代码块中找到的内容。此外,不确定如何在短代码名称上使用正斜杠,短代码名称中不允许使用斜杠。像这样尝试-

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\');

SO网友:SunnyOz

我刚刚从另一个论坛找到了我的问题的解决方案:这是由@vrajesh提供的:

我将[/box]替换为[结束框],并将灰色替换为“灰色”,因此我的代码现在看起来是这样的,它工作得很好。

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\');
希望这能帮助其他人做同样的事情。。。这是为了创建周围的div(通过短码来保持编码的简单性),并允许客户机在两者之间编写他们想要的任何内容,因为我不会为他们提供内容

结束

相关推荐

用javascrip获取html数据到php数组并存储到wordpress数据库

我想做的是将拖放到可拖放区域的项目存储到php数组中,以便存储到数据库中,以便从主题的其他部分访问存储的数组Here is my code. 索引。php<?php /* Plugin Name: Drag And Drop Plugin URI: https://wordpress.com/ Description: DD is a test plugin Version: 1.0.0 Author: Puni Charana A