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

PHP如何转换数组格式?wp_get_post_terms返回数组赋值不生效是什么原因

首先明确:你打印出来的两种数组写法本质是PHP中同一种索引数组的不同展示形式,本身不存在格式差异,直接赋值不生效的核心原因是你获取的$slugs并非你预期的字符串索引数组,常见原因及对应解决方案如下:

常见原因

  • 函数调用异常:wp_get_post_terms在查询出错(比如分类法名称拼写错误、传入的文章ID无效)时,会返回WP_Error对象而非数组,直接赋值自然不生效
  • 全局$post未初始化:如果在WordPress主循环外调用该函数,$post对象没有正确赋值,会导致传入的ID无效,返回空数组或错误对象
  • 数组索引异常:少数情况下返回的数组索引不连续,部分接收参数的逻辑要求必须是从0开始的连续数字索引数组,就会出现赋值不生效的问题

解决方案

第一步先对返回值做合法性校验,再通过array_values重置数组索引,保证输出是标准的连续数字索引字符串数组:

// 先获取分类别名
$slugs = wp_get_post_terms($post->ID, 'ml_patternsCustomTaxonomy', ['fields' => 'slugs']);
// 初始化默认分类数组
$categories = [];
// 校验返回值不是错误对象且不为空
if (!is_wp_error($slugs) && !empty($slugs)) {
    // 重置数组索引,确保是从0开始的连续索引数组
    $categories = array_values($slugs);
}

// 赋值给参数
$config = array(
    'title'       => $title,    
    'content'     => trim($patternContent),
    'categories'  => $categories
);

如果修改后仍不生效,可以在获取$slugs后添加一行调试代码,确认返回值的实际类型和内容:

var_dump($slugs);die;

如果输出为WP_Error对象,优先检查分类法名称拼写是否正确、$post->ID是否为有效文章ID。

内容的提问来源于stack exchange,提问作者D_P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:06:04