Отключить / скрыть предварительный просмотр примера с помощью редактора Elementor на странице с коротким кодом.

Вопрос или проблема

Здравствуйте, разработчики WordPress.

Я создал плагин, который позволяет вставлять контент на страницу, используя шорткод. Контент довольно длинный, так как это список данных. Когда я редактирую страницу с элементом, я получаю “дублированный” вид, так как он показывает “предварительный просмотр” контента из шорткода над редактором.

Есть ли способ отключить предварительный просмотр, либо из кода, либо из бэкенда? В плагине я делаю шорткод доступным следующим образом:

add_shortcode('apartmentList', function() {
     include 'ApartmentLists/ApartmentListOne.php';
});

Всегда используйте буфер вывода с шорткодами, чтобы гарантировать, что контент захватывается и отображается только в месте использования шорткода. Таким образом, ваш код будет изменен следующим образом:

add_shortcode('apartmentList', function() {
     ob_start();
     include 'ApartmentLists/ApartmentListOne.php';
     return ob_get_clean();
});

Кроме того, если вы хотите полностью остановить отображение контента шорткода в редакторе Elementor, вы можете добавить простое условие следующим образом:

add_shortcode('apartmentList', function() {
     // Проверьте, рендерит ли Elementor бэкенд
     if (is_admin() && isset($_REQUEST['action']) && $_REQUEST['action'] === 'elementor') {
         return ''; // Возвращает пустую строку в редакторе Elementor
     }

     ob_start();
     include 'ApartmentLists/ApartmentListOne.php';
     return ob_get_clean();
});

is_admin() проверяет, является ли страница страницей бэкенда.

$_REQUEST['action'] === 'elementor' проверяет, активен ли редактор Elementor.

Ответ или решение

Здравствуйте, уважаемые разработчики WordPress.

Ваша задача состоит в том, чтобы отключить или скрыть предварительный просмотр контента, вставляемого с помощью шорткода в редакторе Elementor. Вам мешает то, что редактор отображает "дублированный" вид, показывая предварительный просмотр контента шорткода. Рассмотрим, как можно решить эту проблему на примере вашего текущего кода.

Теория

Когда вы работаете с шорткодами в WordPress, их результат часто отображается как в редакторе, так и на фронтенде сайта. Это может быть не всегда удобно, особенно в визуальных редакторах, таких как Elementor. Чтобы избежать отображения контента шорткода в редакторе, можно сделать проверку, чтобы выводилось пустое значение, если активен элементорный редактор. Для этого используем PHP-функции is_admin() и проверку действия $_REQUEST['action'].

Пример

Ваш первоначальный код шорткода выглядел следующим образом:

add_shortcode('apartmentList', function() {
     include 'ApartmentLists/ApartmentListOne.php';
});

Теперь модифицируем его, чтобы добавилась проверка, отсекающая отображение в Elementor:

add_shortcode('apartmentList', function() {
     // Проверяем, если происходит рендеринг в бекэнде и активен Elementor
     if (is_admin() && isset($_REQUEST['action']) && $_REQUEST['action'] === 'elementor') {
         return ''; // Возвращаем пустую строку в редакторе Elementor
     }

     ob_start();
     include 'ApartmentLists/ApartmentListOne.php';
     return ob_get_clean();
});

Применение

  1. is_admin(): Эта функция проверяет, открыта ли страница административной панели, что помогает различать, где именно отображается контент.

  2. $_REQUEST[‘action’] === ‘elementor’: Данный оператор проверяет, используется ли в данный момент редактор Elementor. Если проверка успешна, то это значит, что мы находимся в элементорном интерфейсе.

  3. ob_start() и ob_get_clean(): Используются для захвата контента, который выводится в результате работы скрипта, и возвращают его только тогда, когда сам шорткод вызывается на фронтенде сайта.

Таким образом, предложенный код поможет вам избежать дублирования контента при редактировании страницы с помощью Elementor. Это улучшит ваше рабочее взаимодействие с редактором, предоставив более чистое и сосредоточенное на задаче окружение.

Оцените материал
Добавить комментарий

Капча загружается...