Можно ли добавить пользовательские поля в термин атрибута WooCommerce? [закрыто]
На Wordpress / WooCommerce
, можно ли добавить пользовательский поля для термина атрибута WooCommerce
?
Под "атрибутами" я подразумеваю общие атрибуты, а не атрибуты продуктов.
Пожалуйста, проверьте изображение ниже для получения более подробной информации:
Возможно ли это сделать с помощью плагина ACF
(Расширенные пользовательские поля)?
Спасибо!
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:
ОБНОВЛЕНО 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.