Большинство инструкций в сети рассказывают о том, как вывести атрибуты товара в шаблоне с помощью PHP, но в одном из проектов (интернет-магазин мебели) я использовал визуальный конструктор страниц товаров, поэтому мне нужно было выводить их в произвольных местах именно шорткодом. Готового решения не нашёл, поэтому пришлось сочинять самому с помощью мануалов, мата и знакомого разработчика.
Шорткоды для вывода габаритов товара
Вставляем в functions.php.
//Шорткод для вывода ширины товара
add_shortcode( 'pr-width', 'pr_width_func' );
function pr_width_func() {
// получаем объект товара из глобальной переменной
global $product;
// если параметр задан, то выводим
if(!is_null($product) && $product->get_width()) {
return $product->get_width();
}
}
//Шорткод для вывода длины товара
add_shortcode( 'pr-length', 'pr_length_func' );
function pr_length_func() {
global $product;
if(!is_null($product) && $product->get_length()) {
return $product->get_length();
}
}
//Шорткод для вывода высоты товара
add_shortcode( 'pr-height', 'pr_height_func' );
function pr_height_func() {
global $product;
if(!is_null($product) && $product->get_height()) {
return $product->get_height();
}
}
В add_shortcode()
первый параметр — это название шорткода, который потом используется для вставки на страницу [pr-width]
, второй параметр pr_length_func
— имя функции, которая должна сработать, если на странице найден шорткод.
Шорткод для вывода атрибута
Принцип точно такой же, как при выводе габаритов.
//Шорткод для вывода типа механизма
add_shortcode( 'pr-mechanism', 'pr_mechanism_func' );
function pr_mechanism_func() {
global $product;
if(!is_null($product) && $product->get_attribute( 'mehanizm' ) ) {
return $product->get_attribute( 'mehanizm' );
}
}
Имя атрибута берём в разделе «Товары — Атрибуты».
По образу и подобию можно наделать шорткоды для всех атрибутов, которые нужно вывести на странице. В моём случае получилось три.
Если задано несколько значений для одного атрибута, выводятся они через запятую.