如何在保存前更改WordPress Term的插件

时间:2018-06-11 作者:Richard Tinkler

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

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

< 10 million views
> 10 million views
Wordpress自动删除“<;”和“>”符号表示第二个属性被视为重复属性,因此不会被导入。

WP All Import的开发人员建议使用WP\\u insert\\u term\\u数据挂钩在插入到数据库中时更改段塞。

这是一个好主意,因为这样我们就可以维护这两个属性。例如:

< 10 million views becomes lt-10-million-views
> 10 million views becomes gt-10-million-views
我相信这很简单,但我还是一个新手,当涉及到钩到Wordpress!最好的方法是什么?

提前感谢您的帮助!

1 个回复
最合适的回答,由SO网友:Daren Zammit 整理而成

将以下代码段添加到主题的函数中。php文件;

“wp\\u insert\\u term\\u data”过滤器允许您在将术语添加到数据库之前修改其名称、slug或term\\u组。这适用于通过WP All Import添加的术语,也适用于通过admin手动添加的术语。

过滤器传递所有分类法术语,而不仅仅是woocommerce属性,因此您需要添加分类法的slug(属性)

add_filter(\'wp_insert_term_data\', function ($data, $taxonomy, $args) {

        //replace my-attribute with attribute slug
        if ($taxonomy == \'pa_my-attribute\') {

            //Replace all < with lt-
            if (false !== strpos($data[\'name\'], \'&lt;\')) {
                $data[\'slug\'] = \'lt-\' . $data[\'slug\'];
            }

            //Replace all > with gt-
            if (false !== strpos($data[\'name\'], \'&gt;\')) {
                $data[\'slug\'] = \'gt-\' . $data[\'slug\'];
            }
        }

        return $data;

}, 10, 3);
要获取属性slug,请转到Woocommerce>属性并从那里复制slug。确保在i.e my attribute变为pa\\U my-attribute之前包含pa\\UU。

enter image description here

正如您所看到的,它适用于所有人<;和>条款

enter image description here

结束

相关推荐

page-slug goes to not found

我上传了一个名为page testtest的文件。php到我的模板文件夹。当我去example.com/testtest这对我来说似乎很奇怪,因为文档清楚地表明我应该毫不费力地去查阅那个文件。相反,我得到了“哎呀!找不到那个页面。”顺便说一下,永久链接设置为:https://example.com/sample-post/ 我使用下划线模板在有人勇敢地让我查阅文件之前https://developer.wordpress.org/themes/template-files-section/page-tem