你关注的“产品分类表、产品表、询盘表”的创建与CRUD(增删改查),在这套极简方案里完全复用WordPress原生数据库表+后台操作,无需手动建表(避免破坏WordPress规范),下面分表讲清楚“表结构、创建方式、CRUD操作入口”,全程贴合新手友好的逻辑:


核心原则

WordPress的设计理念是“复用核心表,避免自建表”,所以我们不会在数据库里手动CREATE TABLE,而是通过:

  • 自定义文章类型/分类法 → 映射“产品表/产品分类表”(复用wp_posts/wp_terms等核心表);
  • 自定义字段 → 存储产品扩展信息(SKU/价格/MOQ);
  • 表单提交数据 → 存储到wp_posts(自定义文章类型)或wp_postmeta,或直接发邮件(询盘表极简方案)。

一、产品分类表(对应“产品分类”)

1. 表结构(复用WordPress原生表)

实际关联表作用核心字段(简化)
wp_terms存储分类名称/别名term_id(主键)、name(分类名)、slug(URL别名)
wp_term_taxonomy关联分类类型term_taxonomy_idterm_idtaxonomy(固定为product_category
wp_term_relationships关联分类与产品object_id(产品ID)、term_taxonomy_id

2. 创建方式(无需写SQL,后台可视化操作)

我们在functions.php里注册了product_category分类法,后台会自动生成操作入口:

  • 入口:WordPress后台 → 产品(Products)产品分类(Product Categories)(和“文章分类”操作逻辑完全一致);
  • 操作:点击“添加新分类”,填写“名称”(中英双语)、“别名”(URL友好名称),直接创建,无需接触数据库。

3. CRUD操作(全在WordPress后台)

操作后台入口说明
新增(C)产品 → 产品分类 → 添加新分类支持层级分类(如“电子配件”下建“手机壳”),Polylang会自动适配多语言
查询(R)产品 → 产品分类(列表页)可查看所有分类、关联产品数,支持搜索/筛选
修改(U)产品 → 产品分类 → 点击分类名称编辑分类名、别名、描述,保存后自动同步到数据库
删除(D)产品 → 产品分类 → 悬停分类 → 点击“删除”支持“删除并归并到其他分类”,避免产品无分类

二、产品表(对应“产品”)

1. 表结构(复用WordPress原生表)

实际关联表作用核心字段(简化)
wp_posts存储产品基础信息ID(产品主键)、post_title(产品名)、post_content(产品详情)、post_type(固定为product)、post_status(发布/草稿)
wp_postmeta存储产品扩展字段meta_idpost_id(关联产品ID)、meta_key(字段名:_product_sku/_product_price/_product_moq)、meta_value(字段值)
wp_postsmeta产品特色图片_thumbnail_id(关联媒体库图片ID)

2. 创建方式(无需写SQL,后台可视化操作)

我们在functions.php里注册了product自定义文章类型,后台会自动生成操作入口:

  • 入口:WordPress后台 → 产品(Products)添加新产品(Add New Product)
  • 操作:填写产品名称、详情,上传特色图片,在下方“Product Details”面板填写SKU/价格/MOQ/规格,点击“发布”即可,无需接触数据库。

3. CRUD操作(全在WordPress后台)

操作后台入口说明
新增(C)产品 → 添加新产品填写基础信息+自定义字段,发布后自动存入wp_posts+wp_postmeta
查询(R)产品 → 所有产品(列表页)可查看所有产品,支持按分类/状态/日期筛选,搜索产品名/SKU
修改(U)产品 → 所有产品 → 点击产品名称编辑任意字段,保存后自动更新数据库
删除(D)产品 → 所有产品 → 悬停产品 → 点击“删除”支持批量删除,删除后wp_postspost_status改为trash(回收站),彻底删除需清空回收站

进阶:批量CRUD(可选)

如果产品数量多,可装轻量插件WP All Import/Export

  • 批量导入:Excel/CSV文件(含产品名/SKU/价格)一键导入,自动生成产品;
  • 批量导出:将所有产品数据导出为Excel,方便线下编辑;
  • 批量修改:通过“快速编辑”/“批量编辑”修改价格、分类等字段。

三、询盘表(对应“询盘表单提交数据”)

方案1:极简版(无需建表,直接发邮件)

适合你的场景(仅一个询盘表单),无需存储数据,表单提交后直接发邮件到你的邮箱,优点:无数据库冗余,速度快。

  • 配置:Contact Form 7后台 → 编辑表单 → “邮件”标签,填写收件人邮箱(你的外贸邮箱),邮件内容包含表单字段(姓名/邮箱/产品/留言);
  • 操作:用户提交表单后,你直接在邮箱查看/回复,无需CRUD操作。

方案2:标准版(存储询盘数据,复用wp_posts

如需在后台查看/管理询盘数据,创建inquiry自定义文章类型(存储询盘),步骤如下:

1. 新增代码(在functions.php末尾添加)

// 注册询盘自定义文章类型(仅后台可见,前台不显示)
function create_inquiry_post_type() {
    $labels = array(
        'name' => pll__('Inquiries'),
        'singular_name' => pll__('Inquiry'),
        'add_new' => pll__('Add New Inquiry'),
        'add_new_item' => pll__('Add New Inquiry'),
        'edit_item' => pll__('Edit Inquiry'),
        'all_items' => pll__('All Inquiries'),
    );
    $args = array(
        'labels' => $labels,
        'public' => false, // 前台不可见
        'show_ui' => true, // 后台可见
        'supports' => array('title', 'custom-fields'),
        'menu_icon' => 'dashicons-email',
        'capability_type' => 'post',
    );
    register_post_type('inquiry', $args);
}
add_action('init', 'create_inquiry_post_type');

// Contact Form 7 提交后保存询盘到数据库
function save_inquiry_from_cf7($contact_form) {
    $submission = WPCF7_Submission::get_instance();
    if (!$submission) return;
    
    $posted_data = $submission->get_posted_data();
    // 提取表单字段(需和CF7表单字段名一致)
    $name = isset($posted_data['your-name']) ? sanitize_text_field($posted_data['your-name']) : '';
    $email = isset($posted_data['your-email']) ? sanitize_email($posted_data['your-email']) : '';
    $phone = isset($posted_data['your-phone']) ? sanitize_text_field($posted_data['your-phone']) : '';
    $product = isset($posted_data['your-product']) ? sanitize_text_field($posted_data['your-product']) : '';
    $message = isset($posted_data['your-message']) ? sanitize_textarea_field($posted_data['your-message']) : '';
    
    // 创建询盘文章
    $inquiry_id = wp_insert_post(array(
        'post_type' => 'inquiry',
        'post_title' => pll__('Inquiry from') . ' ' . $name . ' (' . $email . ')',
        'post_status' => 'publish',
        'post_author' => 1,
    ));
    
    // 保存询盘自定义字段
    if ($inquiry_id) {
        update_post_meta($inquiry_id, '_inquiry_name', $name);
        update_post_meta($inquiry_id, '_inquiry_email', $email);
        update_post_meta($inquiry_id, '_inquiry_phone', $phone);
        update_post_meta($inquiry_id, '_inquiry_product', $product);
        update_post_meta($inquiry_id, '_inquiry_message', $message);
    }
}
add_action('wpcf7_mail_sent', 'save_inquiry_from_cf7');

2. 表结构(复用wp_posts+wp_postmeta

表名作用核心字段
wp_posts询盘基础信息ID(询盘ID)、post_title(询盘标题:来自XXX)、post_type(inquiry)
wp_postmeta询盘详情_inquiry_name(姓名)、_inquiry_email(邮箱)、_inquiry_product(产品)等

3. CRUD操作(后台可视化)

操作后台入口说明
新增(C)自动创建:用户提交CF7表单后,代码自动创建询盘记录无需手动操作,数据自动存入数据库
查询(R)WordPress后台 → InquiriesAll Inquiries查看所有询盘,按时间排序,支持搜索姓名/产品
修改(U)Inquiries → 点击询盘标题编辑询盘信息(如添加回复备注),保存后更新数据库
删除(D)Inquiries → 悬停询盘 → 点击“删除”支持批量删除,移入回收站或彻底删除

四、总结(核心关键点)

  1. 无需手动建表:所有表都复用WordPress原生表,通过“自定义文章类型/分类法”映射,避免破坏WordPress规范;
  2. CRUD全在后台:无需写SQL/PHP代码,通过WordPress后台可视化操作,和编辑文章/分类逻辑一致,新手易上手;
  3. 询盘表可选:极简场景直接发邮件即可,需管理数据则用自定义文章类型存储,轻量无冗余。

如果需要,我可以补充:

  • Contact Form 7 询盘表单的具体字段配置代码;
  • 产品/询盘数据的Excel批量导入模板;
  • 后台自定义列表(如产品列表显示价格/SKU列)的配置方法。
    (豆包)

标签: none