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

使用wp_insert_post为多篇文章设置自定义分类法的问题

解决单表单创建两篇文章时的分类法赋值问题

我完全懂你现在的头疼点——用一个表单生成两篇独立文章,但自定义分类法的赋值总是跑偏:要么每篇只能拿到对应输入框的第一个分类选项,要么两篇直接共享所有输入的分类。咱们来拆解问题,一步步搞定它。

问题根源分析

你当前的代码逻辑卡在了两个极端:

  • 加[$key]时,你直接从$taxinput["job_listing_category"]里取了单个元素,自然只能拿到第一个分类选项;
  • 去掉[$key]时,你把整个分类数组一股脑塞给了每一篇文章,结果两篇文章就都带上了所有分类。

核心问题出在表单提交的分类数据没有按文章维度拆分,后端无法区分哪些分类属于第一篇文章,哪些属于第二篇。

具体解决方案

第一步:调整表单的命名规则

首先要确保两个分类输入框的name属性是独立的,让后端能拿到两个分开的分类数组。比如:

  • 第一篇文章的分类输入框命名为:job_listing_category_0[]
  • 第二篇文章的分类输入框命名为:job_listing_category_1[]

(这里的0和1对应两篇文章的索引,你也可以用更语义化的命名,比如article_1_categories[]和article_2_categories[],只要能区分开就行)

第二步:后端逻辑适配调整

在处理文章创建的循环里,分别取对应文章的分类数组,再传入tax_input:

// 假设你有两篇文章的基础数据存在$posts数组里,$key是0和1
foreach ($posts as $key => $post_data) {
    // 获取对应文章的分类数组,做空值和数组校验
    $current_categories = $_POST["job_listing_category_{$key}"] ?? [];
    if (!is_array($current_categories)) {
        $current_categories = [$current_categories];
    }

    // 构建当前文章的分类输入
    $tax_input = [
        'job_listing_category' => $current_categories
    ];

    // 创建文章,合并基础数据和分类信息
    wp_insert_post(array_merge($post_data, ['tax_input' => $tax_input]));
}

如果你的表单是按文章分组提交数据(比如articles[0][categories][]),那可以这样处理:

$submitted_articles = $_POST['articles'] ?? [];
foreach ($submitted_articles as $article) {
    $current_categories = $article['categories'] ?? [];
    if (!is_array($current_categories)) {
        $current_categories = [$current_categories];
    }

    $tax_input = ['job_listing_category' => $current_categories];
    wp_insert_post(array_merge($article['post_info'], ['tax_input' => $tax_input]));
}

第三步:排查提交数据结构(关键调试步骤)

你可以先在后端打印提交的POST数据,确认分类数组的结构是否正确:

var_dump($_POST);
exit;

如果看到job_listing_category是一个包含所有选项的一维数组,那说明你的表单命名重复了,没有区分开两篇文章的分类,这时候必须修改表单的name属性。

额外注意事项

  • 确保表单提交的是分类的term_id(推荐用ID,比名称更可靠),如果提交的是分类名称,需要先通过get_term_by()转换为ID;
  • 确认job_listing_category是你自定义分类法的正确slug,不然tax_input不会生效。

这样调整后,每篇文章就能精准拿到对应输入框的所有分类选项,不会再出现要么单选项要么全选项的问题了。

内容的提问来源于stack exchange,提问作者Matt - Salusa Community

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:10:23