首页 > 解决方案 > 如何在保存之前更改 Wordpress 术语的 slug

问题描述

我们正在使用 WP All Import 将产品数据从 CSV 导入 WooCommerce。一切正常(很棒的插件!)但我们有一个问题:

我们的两个产品属性包含不允许的符号:

< 10 million views
> 10 million views

Wordpress 会自动删除“<”和“>”符号,这意味着第二个属性被视为重复,因此不会被导入。

WP All Import 的开发人员建议使用 wp_insert_term_data 挂钩在将 slug 插入数据库时​​对其进行更改。

这是一个好主意,因为这样我们就可以同时保持这两个属性。例如:

< 10 million views becomes lt-10-million-views
> 10 million views becomes gt-10-million-views

我敢肯定这很简单,但在连接 Wordpress 方面我还是个新手!最好的方法是什么?

提前感谢您的帮助!

标签: wordpressslugterm

解决方案


这是您的案例所需的功能:

add_filter( 'wp_insert_term_data', 'hook_term_332', 10, 3 );
function hook_term_332( $data, $taxonomy, $args ){
  //this is for slug part
  $data['slug']=sanitize_title($data['slug']);

  //this is for visible name part
  $data['name']=str_replace(array(">"), array("some_another_character"), $data['name']);

  return $data;
}

函数“sanitize_title”将任何字符串格式化为可接受的 slug。通常它用于清理帖子标题并为它们创建 slug,但它也适合您的情况。


推荐阅读