Поиск

Generic selectors
Exact matches only
Search in title
Search in content

WordPress do_shortcode и PHP if else условие

WordPress do_shortcode — это встроенный в вордпресс способ отображения виджетов в PHP-коде. Это рабочий вариант, если вам просто нужно вывести какой-то виджет в PHP-коде, но если вам нужно сделать что-то вроде условия if else, ситуация может усложниться.

Столкнулся с ситуацией, когда необходимо было вывести на сайт виджет аукциона. Само по себе виджет работал нормально, но каждый раз, когда виджет отображался, он подтягивал с собой ряд встроенных атрибутов таких как фильтры и прочие элементы при этом контента (в моем случаи аукционов) вложено не было. По сути отображался пустой блок с рядом элементов которые попросту «мусолили» глаз.

Итак, задача была, не выводит виджет если в нем нет элементов. Пробовал разные подходы, но такие приемы как if (!empty($wsidget)) или if(isset($widget)) не работали. Виджет всегда возвращал свои атрибуты.

WordPress do_shortcode с оператором PHP if else и функцией «strlen»

Осознав что стандартные приемы здесь бессильны, я начал смотреть в сторону какой типа данных возвращает виджет и какого размера, чтобы на них зацепится и создать условие. Выяснилось что это string измерив который я получил в моем случа ~820+ символов.

Далее уже пишу функцию с использованием «strlen»:

<?php
// Берем код виджета в переменную
$planned_auctions = do_shortcode('[yith_auction_non_started]');
// Проверяем размер стринги которую возвращает переменная. В моем случае если больше 830 то это значит что шорткод не пустой и его следует отобразить
if (strlen($planned_auctions) > 830) {
    // Execute shortcode variable is it length is more than 830
    echo $planned_auctions;
} else {
    // А иначе возвращаем пустой ответ
    return;
}
?>

Итого:

Используя PHP «strlen», вы можете проверить размер ответа (переменной в которой лежит код виджета), и основываясь на этом размере уже принимать решение для его отображения или нет.

Оставить комментарий

Alex Kostritsa

Об авторе
Опыт в менеджменте в IT организациях более 10 лет. Преподаю курсы по менеджменту Hillel. В свободное время пишу блог, и работаю над своими "pet" проектами.
Посмотреть все материалы (13)
  • Одесса, Украина