有一个简单的Woocommerce网站,我使用ACF pro添加一些自定义字段到给定分类的术语。使用这个,我可以,例如,添加一个“颜色”字段到我的“产品类别”分类术语。
问题:
我想使用get_terms()
(codex)做一些查询,我发现我的meta_query
参数不起作用(意外结果)。为什么?我的自定义字段没有保存(从后端)为term_meta
,而是保存为wp_option
。
ACF4似乎没有将这些字段保存为term_meta
(如其设计),而是保存为wp_option
,在Wordpress选项表中。因此,您无法使用get_terms()
(codex)“按terms_meta
查询术语“(meta_query
)来获取基于某个term_meta
值的术语。
1条答案
按热度按时间lsmepo6l1#
我可以通过执行以下操作修复此问题:
假设我的分类术语中有2个自定义字段:
color
和shape
(意味着我在后端术语编辑/创建页面上为给定的分类法输入了颜色和形状)。所以我们有:
update_term_meta()
(codex)更新term_meta
的过滤器(挂接2次,一次用于color
,一次用于shape
)get_term_meta()
(codex)而不是wp_option
返回term_meta
值的过滤器(挂接2次,一次用于color
,一次用于shape
)source
注1:
这将触发具有
color
或shape
自定义字段的所有术语(无论分类)。如果您不希望分类始终应用于这些字段的情况,则可能需要按分类进行筛选。注2:
ACF5似乎支持开箱即用的real
term_meta
,但仍处于早期访问阶段。升级过程似乎包含针对此特定情况的重构方法(将数据从wp_options
复制到realterm_metas
):更新到ACF 5后,系统将提示您升级数据库。
这是从4.x版跨字段和字段组设置迁移的必要步骤。此升级还将跨所有分类术语值从"wp_options"表复制到"wp_termmeta"表。
在此升级过程中未删除或修改任何数据。(source)
注3:我相信这将是可能的循环对所有的ACF术语自定义字段"生成"这个代码自动为所有自定义字段的术语,并防止必须添加2过滤器为每个新的ACF术语字段。但由于ACF5应该很快出去,这可能是不值得的时间。