如何用WP All Import导入公司名称至Pods关联字段(存储ID)
解决WP All Import导入Pods关联字段时名称转ID的问题
我之前也碰到过一模一样的情况——Pods的关联字段只认关联对象的ID,直接喂名称肯定导不进去。你之前试的MATCH语法应该是参数没写对,这里给你两种靠谱的解决方案:
方法1:用WP All Import内置MATCH函数(最简单直接)
WP All Import本身就带了MATCH函数,能帮你根据帖子标题(或其他字段)自动匹配对应ID,正确语法是这样的:
MATCH (post_title, "{你的公司名称变量}", "公司自定义帖子类型slug")
具体操作步骤:
- 先确认你用Pods创建的「公司」自定义帖子类型的slug(比如可能是
company或者global_company,去Pods的帖子类型设置里就能找到) - 在WP All Import的字段映射界面,找到那个出问题的Pods关联字段
- 把字段值设置成:
MATCH (post_title, "{globalcompanyname[1]}", "company")- 把
company替换成你实际的公司帖子类型slug {globalcompanyname[1]}是你Excel里公司名称列的导入变量,确保和你设置的变量名完全一致
- 把
注意点:
- Excel里的公司名称必须和现有公司帖子的标题完全匹配(包括大小写、空格、特殊字符),不然MATCH会找不到对应ID
- 如果有重名的公司,MATCH会返回第一个匹配的帖子ID,所以最好提前确保公司名称唯一
方法2:自定义PHP函数(更灵活,适配复杂场景)
要是MATCH函数因为某些原因不生效(比如公司名称存在自定义字段而非post_title,或者需要更复杂的匹配逻辑),可以写个自定义函数来根据名称捞ID:
步骤1:添加自定义函数
把下面的代码加到你的主题functions.php文件,或者自定义插件里:
function get_company_id_by_name($company_name) { // 如果名称为空,直接返回空值 if (empty(trim($company_name))) return ''; // 替换成你的公司自定义帖子类型slug $post_type = 'company'; // 查询匹配名称的公司帖子 $company_query = new WP_Query(array( 'post_type' => $post_type, 'post_status' => 'publish', // 只找已发布的公司 'posts_per_page' => 1, 'title' => $company_name, 'fields' => 'ids' // 只返回ID,提升查询效率 )); // 找到匹配项就返回ID,找不到就返回空 return $company_query->have_posts() ? $company_query->posts[0] : ''; }
步骤2:在导入里调用函数
回到WP All Import的字段映射界面,找到Pods关联字段,把值设置成:
[get_company_id_by_name({globalcompanyname[1]})]
这个方法的好处是你可以灵活调整查询条件——比如如果公司名称存在Pods的某个自定义字段里,你可以把'title' => $company_name改成'meta_key' => 'company_name', 'meta_value' => $company_name来匹配自定义字段。
最后必做检查
不管用哪种方法,先运行导入预览,确认关联字段已经正确显示对应的公司ID,没问题再执行正式导入。
内容的提问来源于stack exchange,提问作者Andrii Pryimak
相关产品推荐
相关产品推荐

