Можно ли добавить пользовательские поля в термин атрибута WooCommerce? [закрыто]


На Wordpress / WooCommerce, можно ли добавить пользовательский поля для термина атрибута WooCommerce?

Под "атрибутами" я подразумеваю общие атрибуты, а не атрибуты продуктов.

Пожалуйста, проверьте изображение ниже для получения более подробной информации:

enter image description here

Возможно ли это сделать с помощью плагина ACF (Расширенные пользовательские поля)?

Спасибо!

Author: David Smith, 2018-04-30

1 answers

Да, это возможно. И здесь есть простое руководство .

Ниже приведен рабочий код, который вы можете добавить в основную тему functions.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


ОБНОВЛЕНО 25 сентября 2018 (UTC)

В функции для соответствия правилу на странице редактирования термина $options['ef_taxonomy'] был изменен на $options['taxonomy'] - тогда ключ массива taxonomy не существовало (в моем случае), и оно существует сейчас, что, я думаю, заменяет ключ ef_taxonomy. Спасибо @Jordancarter за то, что заметили ключевую проблему, и @Vadimh за редактирование первоначального ответа. =)

В этой функции я также добавил проверку if ( isset( $options['taxonomy'] ) ), чтобы избежать уведомления PHP о "неопределенном". Спасибо @Jordancarter за то, что заметил это.

@VADIMH, вы можете использовать get_field( '{NAME}', 'term_{TERM ID}' ) для извлечения (и отображения) значения поля, например:

$term_id = 123;
$value = get_field( 'my_field', 'term_' . $term_id );

Смотрите " Получить значение из разных объекты"раздел официальной документации get_field() .

PS: Весь код (а не только get_field()) был в последний раз опробован и протестирован на ACF 5.7.6 и ACF PRO 5.7.3 с помощью WooCommerce 3.4.5.

 11
Author: Sally CJ, 2018-09-25 02:49:02