我正在编写一个插件,用于将其他CMS中的产品和类别导入WoodPress(使用Woocommerce)。为了保持类别的结构并将产品放入正确的类别中,我希望使用来自源CMS的类别的自定义ID(不是Wordpress生成的ID),而不是类别名称作为参考。
默认类别参数如下所示:
$default = array(
\'name\' => \'\',
\'slug\' => \'\',
\'parent\' => 0,
\'description\' => \'\'
);
我需要添加一个引用字段来存储来自源CMS的ID,如下所示:
$args = array(
\'name\' => \'Name of the category\',
\'slug\' => \'name-of-the-category\',
\'parent\' => 0,
\'description\' => \'My category\',
\'ref_id\' => \'53113\'
);
我读过几篇关于向类别中添加自定义字段的文章,看起来最好的方法是使用术语meta,如下所示:
// After I\'ve created the category and saved its\' ID in $cat_id
// I add a termmeta for this category
add_term_meta($cat_id, \'ref_id\', \'53113\', true);
但现在的问题是,我如何用这个搜索类别
ref_id
? 我必须用key循环遍历所有术语meta吗
ref_id
并搜索“53113”?
有没有更快的方法可以通过ref_id
第53113页?类似于:
// Fictional function that would be perfect,
// returns category ID assigned by Wordpress
$cat_id = get_cat_by_meta(\'ref_id\', \'53113\');
我需要使用
ref_id
因为类别名称不是唯一的(在不同的父类别下可能有同名的类别),我认为这是从源CMS复制结构的最快方法。我需要这样做的另一个原因是,源CMS不知道Wordpress结构或可用类别及其ID。每次我都可以说将产品/类别放入
ref_id
等于“53113”。
我希望我清楚地解释了问题和目标,如果没有,请留下评论,以便我可以改进问题。
Update: possible solution with an SQL Example
也许我可以使用这样的查询:
global $wpdb;
$results = $wpdb->get_results("SELECT term_id FROM wp_termmeta WHERE meta_key = \'ref_id\' AND meta_value = \'53113\' LIMIT 1");
我想这应该行得通,对我来说,这似乎是一个足够简单的解决方案(当然我也需要这样做
$wpdb->prepare
查询中包含变量)。但我不确定这是否是Wordpress的最佳实践。
那么,我应该只使用这个自定义查询,还是有更好的方法?