是否可以向WooCommerce属性术语添加自定义字段?

时间:2018-04-30 作者:David Smith

在…上Wordpress / WooCommerce, 是否可以将自定义字段添加到WooCommerce 属性项?

“属性”指的是一般属性,而不是产品下的属性。

请查看下图以了解更多详细信息:

enter image description here

有没有可能用ACF (高级自定义字段)插件?

谢谢

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

是的,这是可能的。还有一个简单的指南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创建/编辑字段组屏幕上,您会看到如下内容:

enter image description here


更新于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上进行了尝试和测试

结束

相关推荐

是否可以向WooCommerce属性术语添加自定义字段? - 小码农CODE - 行之有效找到问题解决它

是否可以向WooCommerce属性术语添加自定义字段?

时间:2018-04-30 作者:David Smith

在…上Wordpress / WooCommerce, 是否可以将自定义字段添加到WooCommerce 属性项?

“属性”指的是一般属性,而不是产品下的属性。

请查看下图以了解更多详细信息:

enter image description here

有没有可能用ACF (高级自定义字段)插件?

谢谢

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

是的,这是可能的。还有一个简单的指南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创建/编辑字段组屏幕上,您会看到如下内容:

enter image description here


更新于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上进行了尝试和测试

相关推荐