php 如何通过参数,最终成为一个类名称的一部分与WordPress的简码

zphenhs4  于 5个月前  发布在  PHP
关注(0)|答案(3)|浏览(40)

这是我想要用简码生成的结果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');


正如您所看到的,我将color属性的默认内容设置为grey,但也允许覆盖并指定从简码传递的参数中的颜色。
然后这个颜色需要成为div中类名的一部分。所以如果没有参数传递,那么类名将变为:“servive-block-grey”。或者如果我传递参数color=“laundyar”,那么类名将变为:“servive-block-laundyar”。
这可能吗
如果是这样的话..有人可以帮助我使用的代码..因为我得到了数百个错误从WordPress当我查看页面。
基本上,这些错误是这3个错误的重复(我认为这可能是由于我试图将参数放入类名中而导致的语法错误-像这样:servive-block-'.$color.'
Copyright © 2018 www.cnjs.com. All Rights Reserved.京ICP备05000000号-1京公网安备11010502000000000号京公网安备11010502000000000号
Copyright © 2016 - 2018 www.wp-includes.php All rights reserved.京ICP备05000000号-1京公网安备1101050200000000号
Copyright © 2016 - 2018 www.cnjs.com. All Rights Reserved.粤ICP备16047777号-1
感谢任何指导!

d8tt03nd

d8tt03nd1#

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

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

yhived7q

yhived7q2#

请修改您的简码:[/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');

vsmadaxz

vsmadaxz3#

使用$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

});

字符串

相关问题