简化重复值判断的if分支 优化WordPress术语处理函数
简化WordPress术语检查与创建的分支逻辑
我懂你现在的困扰——嵌套的if-else分支处理多个术语的存在性检查,代码越写越臃肿,维护起来特别头疼。咱们可以通过封装复用逻辑和扁平化流程来彻底理顺这段代码。
第一步:封装术语检查/创建的通用函数
先把「检查术语是否存在,不存在则创建」的重复逻辑抽成独立函数,避免冗余代码:
/** * 获取或创建指定分类下的术语 * @param string $term_name 术语名称 * @param string $taxonomy 分类法slug * @return WP_Term|false 返回术语对象,失败则返回false */ function get_or_create_term(string $term_name, string $taxonomy) { // 先检查术语是否存在 $term = get_term_by('name', $term_name, $taxonomy); // 不存在则尝试创建 if (!$term) { $created_result = wp_insert_term($term_name, $taxonomy); // 创建成功则返回新术语对象,失败返回false $term = is_array($created_result) ? get_term($created_result['term_id'], $taxonomy) : false; } return $term; }
第二步:简化主逻辑流程
有了通用函数后,主代码就能彻底摆脱复杂的分支判断,逻辑一目了然:
// 获取或创建两个目标术语 $term1_obj = get_or_create_term($term1, $taxonomy1); $term2_obj = get_or_create_term($term2, $taxonomy2); // 确保两个术语都成功获取/创建后,调用文章创建函数 if ($term1_obj && $term2_obj) { // 这里替换成你的文章创建函数,比如: // create_target_post($term1_obj, $term2_obj); } else { // 可选:处理术语创建失败的场景,比如记录错误日志 error_log("术语创建失败:term1=" . $term1 . " | term2=" . $term2); }
优化后的优势
- 代码复用:后续需要处理更多术语时,直接调用
get_or_create_term即可,不用重复写判断逻辑 - 逻辑清晰:主流程扁平化,再也不用纠结嵌套
if-else的分支走向 - 易维护:术语检查/创建的规则集中在一个函数里,后续修改(比如添加术语描述、自定义slug)只需要改动这一处
内容的提问来源于stack exchange,提问作者AlexBS
相关产品推荐
相关产品推荐

