WP All Import插件PHP分类映射函数如何添加未匹配值加uncategorized前缀功能
优化后完整函数代码
把原有零散的替换规则整理为映射数组,更方便后续维护,同时实现你需要的未匹配分类自动加前缀的逻辑:
function cat_change($cat) { // 定义分类映射规则:键为待替换的原始值,值为标准化后的值 $cat_map = [ 'XLARGE' => 'XL', 'xl' => 'XL', 'extralarge' => 'XL', 'XXL' => '2XL', '2XLARGE' => '2XL', '2large' => '2XL', '2xlarge' => '2XL', 'XXXL' => '3XL', '3XLARGE' => '3XL', '3large' => '3XL', '3xlarge' => '3XL', ]; // 场景1:传入的$cat是完整分类名,完全匹配才替换(符合你描述的「不在待替换字符串列表」的判断逻辑) if (array_key_exists($cat, $cat_map)) { return $cat_map[$cat]; } else { return 'uncategorized>' . $cat; } // --- 如果你需要兼容原有模糊替换逻辑(即$cat包含关键词就替换),可以把上面的判断替换为下面的代码 --- /* $original_cat = $cat; foreach ($cat_map as $search => $replace) { $cat = str_replace($search, $replace, $cat); } // 替换后值无变化说明没有匹配到规则,加未分类前缀 if ($cat === $original_cat) { return 'uncategorized>' . $original_cat; } return $cat; */ }
逻辑说明
- 用关联数组维护替换规则,后续新增规则只需要在
$cat_map里加对应键值对即可,不用重复写str_replace语句 - 默认的完全匹配逻辑,仅当传入的分类名和映射表的待替换值完全一致时才做标准化,否则自动拼接
uncategorized>前缀 - 注释内的兼容逻辑可适配原有模糊替换需求,替换后如果值没有变化就判定为未匹配规则,自动加上前缀
内容的提问来源于stack exchange,提问作者Chris Xanthou
相关产品推荐
相关产品推荐

