You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP中向WordPress自定义短代码传递数组?

在PHP中向WordPress短代码传递数组的解决方案

嘿,我来帮你搞定这个问题!你的短代码目前是通过字符串接收tags参数的,要让它支持数组传递,我们需要先修改短代码函数的参数处理逻辑,然后再用正确的方式在PHP中调用它。

第一步:修改短代码函数(functions.php)

首先,我们要更新Insert_NewsBlogsByTags函数,让它既能兼容编辑器里传入的逗号分隔字符串,又能直接接收PHP里传递的数组:

function Insert_NewsBlogsByTags($attr) {
    // 调整默认参数,tags默认设为空数组
    $a = shortcode_atts(array(
        'title' => 'News',
        'selector' => '#all',
        'number' => 4,
        'tags' => array()
    ), $attr);

    // 兼容两种传入方式:如果是字符串则转成数组,数组则直接使用
    if (is_string($a['tags']) && !empty($a['tags'])) {
        // 按逗号分割并去除每个标签的空格
        $a['tags'] = array_map('trim', explode(',', $a['tags']));
    }

    ob_start();
    the_widget( 'Fbstax_Widget_Recent_Posts_By_Categories_Tags', array(
        'title' => esc_html__($a['title'], 'fbstax-theme'),
        'selector' => esc_html__($a['selector'], 'fbstax-theme'),
        'number' => $a['number'],
        'tags' => $a['tags'] // 现在这里传递的是数组格式
    ) );
    // 别忘了返回输出缓冲区的内容
    return ob_get_clean();
}

// 如果还没注册短代码,添加这行
add_shortcode('news_blogs_by_tags', 'Insert_NewsBlogsByTags');

第二步:在PHP中调用短代码

现在有两种常用的方式在PHP里给这个短代码传递数组:

方式1:直接调用短代码函数(推荐,更高效)

如果你是在PHP模板文件里使用,直接调用函数并传入数组参数是最直接的方式:

// 准备你的参数数组
$shortcode_params = array(
    'title' => 'Latest Tech Updates',
    'number' => 5,
    'tags' => array('technology', 'smartphones', 'ai') // 直接传递数组
);

// 调用函数并输出结果
echo Insert_NewsBlogsByTags($shortcode_params);

方式2:使用do_shortcode函数(适合需要短代码字符串的场景)

如果你的场景需要用短代码字符串格式,就把数组转成逗号分隔的字符串再传入:

// 把数组标签转成逗号分隔的字符串
$tags_list = implode(',', array('technology', 'smartphones', 'ai'));

// 构造短代码字符串
$shortcode_str = "[news_blogs_by_tags title='Latest Tech Updates' number='5' tags='$tags_list']";

// 执行短代码并输出
echo do_shortcode($shortcode_str);

注意事项

  • 确保Fbstax_Widget_Recent_Posts_By_Categories_Tags这个小工具能够接收数组格式的tags参数,如果它原本只支持字符串,可能还需要调整小工具的代码逻辑来处理数组。
  • 处理字符串转数组时用array_map('trim', ...)是为了避免用户输入的标签前后有空格导致识别错误。

内容的提问来源于stack exchange,提问作者zakharov.arthur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:20:24