Вопрос или проблема
Здравствуйте, разработчики 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();
});
Применение
-
is_admin(): Эта функция проверяет, открыта ли страница административной панели, что помогает различать, где именно отображается контент.
-
$_REQUEST[‘action’] === ‘elementor’: Данный оператор проверяет, используется ли в данный момент редактор Elementor. Если проверка успешна, то это значит, что мы находимся в элементорном интерфейсе.
-
ob_start() и ob_get_clean(): Используются для захвата контента, который выводится в результате работы скрипта, и возвращают его только тогда, когда сам шорткод вызывается на фронтенде сайта.
Таким образом, предложенный код поможет вам избежать дублирования контента при редактировании страницы с помощью Elementor. Это улучшит ваше рабочее взаимодействие с редактором, предоставив более чистое и сосредоточенное на задаче окружение.