我想在Wordpress中更新许多product_category名称,然后从csv文件中检索它们。
csv文件头仅为:(ID; Product_category_Name)
我有900个类别和子类别,属于层次结构。
是否可以通过ID在数据库中搜索类别并更新类别名称?
会保持层次结构正确吗?
我可以在UTF-8中的名称中包含一些字符,例如“ö”,“ä”或“å”吗?
我可以使用wp php函数或直接的sql命令。
答案 0 :(得分:0)
此答案回答您的问题标题,但不是所有其他问题(请参见how to ask)。
您可以使用以下SQL查询(之前进行数据库备份):
UPDATE wp_terms as a
JOIN wp_term_taxonomy b ON a.term_id = b.term_id
SET a.name = 'new_name',
a.slug = 'new_slug'
WHERE b.taxonomy = 'product_cat'
AND a.name = 'old_name'
您需要替换的地方:
new_name
按您的新产品类别名称new_slug
按新产品类别标签(用小写字母和“ -
”替换空白) old_name
按您的旧商品类别名称(您要替换的商品) 您还可以将以下函数用于相同的SQL查询:
function rename_product_category( $old_name, $new_name ){
global $wpdb;
// Check that the new name doesn't exist
if( term_exists( $new_name, 'product_cat' ) )
return __("Your new product category term name already exist");
// Check that the old name exist
if( ! term_exists( $old_name, 'product_cat' ) )
return __("Your old product category term name doesn't exist");
$new_slug = sanitize_title( $new_name );
$result = $wpdb->query("
UPDATE {$wpdb->prefix}terms as a
JOIN {$wpdb->prefix}term_taxonomy b ON a.term_id = b.term_id
SET a.name = '$new_name',
a.slug = '$new_slug'
WHERE b.taxonomy = 'product_cat'
AND a.name = '$old_name'
");
if($result)
return sprintf(
__("The product category %s has been renamed to %s."),
'"<strong>' . $old_name . '</strong>"',
'"<strong>' . $new_name . '</strong>"'
);
else
return __("Something is wrong!.");
}
代码进入您的活动子主题(或活动主题)的function.php文件中。
用法 (假设您将“服装”产品类别重命名为“穿戴”):
echo rename_product_category( 'Clothing', 'Wear' );
将显示产品类别是否已重命名。经过测试,可以正常工作。