wordpress - 如何在保存之前更改 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 方面我还是个新手!最好的方法是什么?
提前感谢您的帮助!
解决方案
这是您的案例所需的功能:
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,但它也适合您的情况。
推荐阅读
- python - 根据另一个属性自动设置一个属性的值并缓存它们以供以后使用
- azure-devops - 在 Azure Devops Pipelines Builds 上的 CI 触发器中排除文件类型
- java - 如何从数组中计算唯一的“模式”?
- python - 将数组列表转换为列表?
- python - 检索选定的记录
- c++ - 有没有办法从两个图像创建一个垫子,同时保持图像的参考
- groovy - 用 groovy 迭代嵌套的 json
- python-3.x - 矩阵只产生一半的预期数据
- jsf - 如果在 jsf 中选中了某些复选框,如何启用我的按钮?
- libgdx - 如何使 ImageButton 在 libgdx 中看起来被按下?