是的,这是可能的。还有一个简单的指南here.
下面是您可以添加到主题的主函数的工作代码。php文件:
// Adds a custom rule type.
add_filter( \'acf/location/rule_types\', function( $choices ){
$choices[ __("Other",\'acf\') ][\'wc_prod_attr\'] = \'WC Product Attribute\';
return $choices;
} );
// Adds custom rule values.
add_filter( \'acf/location/rule_values/wc_prod_attr\', function( $choices ){
foreach ( wc_get_attribute_taxonomies() as $attr ) {
$pa_name = wc_attribute_taxonomy_name( $attr->attribute_name );
$choices[ $pa_name ] = $attr->attribute_label;
}
return $choices;
} );
// Matching the custom rule.
add_filter( \'acf/location/rule_match/wc_prod_attr\', function( $match, $rule, $options ){
if ( isset( $options[\'taxonomy\'] ) ) {
if ( \'==\' === $rule[\'operator\'] ) {
$match = $rule[\'value\'] === $options[\'taxonomy\'];
} elseif ( \'!=\' === $rule[\'operator\'] ) {
$match = $rule[\'value\'] !== $options[\'taxonomy\'];
}
}
return $match;
}, 10, 3 );
在ACF创建/编辑字段组屏幕上,您会看到如下内容:
更新于2018年9月25日(UTC)
在术语编辑页面上匹配规则的功能中
$options[\'ef_taxonomy\']
已更改为
$options[\'taxonomy\']
—当时,数组键
taxonomy
不存在(在我的情况下),它现在存在,我认为它取代了
ef_taxonomy
钥匙谢谢
@JordanCarter 注意关键问题,以及
@VadimH 用于初始答案的编辑。=)
在该函数中,我还添加了if ( isset( $options[\'taxonomy\'] ) )
检查以避免PHP的“未定义”通知。感谢@JordanCarter注意到这一点。
@瓦迪姆,你可以用get_field( \'{NAME}\', \'term_{TERM ID}\' )
要检索(并显示)字段的值,请执行以下操作:
$term_id = 123;
$value = get_field( \'my_field\', \'term_\' . $term_id );
请参见
get_field()
\'s官员
documentation.
PS:整个代码(不仅仅是get_field()
) 最后一次在ACF 5.7.6和ACF PRO 5.7.3以及WooCommerce 3.4.5上进行了尝试和测试