这听起来像是您的短代码所使用的函数有很多可以接受的参数。
总的来说,我肯定认为更好的选择是为要控制的每个参数使用属性。
正如您在该教程中所知,短代码可以为变量定义默认值,并使用短代码中的属性来覆盖它们。这就是我建议你做的。
您甚至可以创建一些不同的核心“样式”,从这些样式开始使用不同的默认值,并且人们可以根据自己的喜好自定义它们。这样,可以从特定的样式开始,然后在必要时覆盖参数,而不是要求每个参数都由短代码本身定义。
查看以下内容:
add_shortcode(\'my_widget\', \'my_widget_shortcode\');
function my_widget_shortcode($atts) {
if(!isset($atts[\'style\']))
$atts[\'style\'] = \'\'; // if that attribute isn\'t set, it will throw an error in the switch otherwise
// define defaults based on style
switch ($atts[\'style\']) {
// style="1"
case 1:
$defaults = array(
\'color\' => \'red\',
\'height\' => 600,
\'width\' => 600,
);
break;
// style="dog"
case \'dog\':
$defaults = array(
\'color\' => \'green\',
\'height\' => 400,
\'width\' => 600,
);
break;
// style="frisbee"
case \'frisbee\':
$defaults = array(
\'color\' => \'blue\',
\'height\' => 200,
\'width\' => 200,
);
break;
// no style attribute defined or something else that doesn\'t have a case defined above
// eg: style="dinosaur"
default:
$defaults = array(
\'color\' => \'yellow\',
\'height\' => 800,
\'width\' => 500,
);
}
// merge arrays and override defaults with shortcode atts
extract(shortcode_atts($defaults, $atts));
// do some stuff
}