С помощью следующего кода я получаю пользовательский атрибут продукта из WooCommerce.
Соответствует ли этот код или его можно решить лучше?
Правильно ли используется глобальная функция внутри функции?
Как я могу расширить код, чтобы, если указанный атрибут продукта отсутствует, отображалось сообщение «Нет информации об этом продукте»?
Функции.php
function single_atr() {
global $product;
$custom_attribute = $product->get_attribute( 'Color' );
echo $custom_attribute;
}
add_shortcode( 'single_atr', 'short_ single_atr');
Шорткод в Elementor:
[short_ single_atr]






В вашем текущем коде есть некоторые ошибки.
Далее вы можете указать желаемый атрибут продукта, который будет отображаться в качестве аргумента в коротком коде. Если атрибут не установлен на товаре, будет отображено сообщение:
function single_atr_shortcode( $atts ) {
extract( shortcode_atts( array(
'attribute' => '',
), $atts, 'single_atr' ) );
global $product;
if ( ! is_a($product, 'WC_Product') || ! $attribute ) {
return;
}
if ( $custom_attribute = $product->get_attribute( $attribute ) ) {
// Display product attribute
return $custom_attribute;
} else {
// No attribute: Display a message
return __("No Information on this Product", "woocommerce");
}
}
add_shortcode( 'single_atr', 'single_atr_shortcode');
Код находится в файле function.php вашей дочерней темы (или в плагине). Протестировано и работает.
Шорткод (Использование):
[single_atr attribute = "Color"]