使用自定义快捷代码时出现的Extract()问题

时间:2017-08-31 作者:Zac

我正在尝试添加具有以下短代码的图像:

add_shortcode(\'img_portfolio\', \'add_img_portfolio\');

function add_img_portfolio($atts){
shortcode_atts(array(
  \'url\' => \'https://s3.amazonaws.com/popco/images/services/starter-page/img-placeholder.jpg\',
  \'height\' => \'auto\'
), $atts);
extract($atts);
return \'<img class="img-fluid d-block mx-auto" src="\'.$url.\'" alt="" width=100% height="\'.$height.\'">\';
  }
并获取此错误:

Warning: extract() expects parameter 1 to be array, string given
知道同样的函数模式也适用于我所做的另一个短代码。

谢谢

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

如果短代码上没有使用属性,则$atts 将是字符串,因此您不能使用extract 在上面。你的部分问题是你没有使用shortcode_atts 正确地您需要指定shortcode_atts 返回到$atts. 这将确保$atts 是一个包含所有正确键的数组。

add_shortcode(\'img_portfolio\', \'add_img_portfolio\');

function add_img_portfolio($atts){
    $atts = shortcode_atts(array(
      \'url\' => \'https://s3.amazonaws.com/popco/images/services/starter-page/img-placeholder.jpg\',
      \'height\' => \'auto\'
    ), $atts);
    extract($atts);
    return \'<img class="img-fluid d-block mx-auto" src="\'.$url.\'" alt="" width=100% height="\'.$height.\'">\';
}
但老实说,不要使用extract(), 这被认为是一种不好的做法,因为您的代码最终会得到一堆显然没有分配到任何地方的变量。仅使用$atts 作为阵列:

function add_img_portfolio($atts){
    $atts = shortcode_atts(array(
      \'url\' => \'https://s3.amazonaws.com/popco/images/services/starter-page/img-placeholder.jpg\',
      \'height\' => \'auto\'
    ), $atts);

    return \'<img class="img-fluid d-block mx-auto" src="\'.$atts[\'url\'].\'" alt="" width=100% height="\'.$atts[\'height\'].\'">\';
}

结束

相关推荐

add_shortcode is not working

当我在web服务器上使用此文档时,它运行正常,但当此文件运行以使用WordPress中的插件时,我必须将文件的快捷码放在我要应用该插件效果的页面上。。。。但当我放置短代码时,它只显示该短代码的字符串,而不显示效果。请找到下面的编码文件并提供解决方案。<?php function sac_form() { echo \"<html>\"; echo \"<head></head>\"; echo \"<body>\