Содержимое шорткода не отображается. Показан только [shortcode-tag].

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

Я создаю небольшой плагин, в котором создаю несколько шорткодов. Я использую плагин Classic Editor.

Вот мой код в Plugin.php:

<?php
/**
 * Plugin Name: Простой визуализатор данных
 * Description: Читает данные из CSV и отображает данные в нужном формате
 * Version: 1.0.0
 * Author: Субрата
 */

function evd_dreambig_shortcode() {
    return 'Привет! Можешь ли ты мечтать о большом?';
}

function register_evd_shortcodes() {
    add_shortcode( 'dream-big', 'evd_dreambig_shortcode' );
}

add_action( 'init', 'register_evd_shortcodes' );

Но когда я вставляю шорткод в содержимое поста как [dream-big], он просто отображает тег, т.е. [dream-big] на странице поста, а не показывает его содержимое: Привет! Можешь ли ты мечтать о большом?

Я также попробовал другой подход:

function evd_dreambig_shortcode() {
    return '<h1>Привет! Можешь ли ты мечтать о большом?</h1>';
}

add_shortcode( 'dream-big', 'evd_dreambig_shortcode' );

Но это тоже не работает.

Я использую пользовательскую тему. Я также пробовал добавить add_filter( 'the_content', 'do_shortcode'); в functions.php. Все равно не повезло!

plugin.php является единственным файлом в моем каталоге плагина.

Что я делаю не так?

Попробуйте указать параметры по умолчанию, вот так:

evd_dreambig_shortcode($attr = [], $content = null){
    return $content
}

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

Проблема с отображением содержания шорткода, при которой вместо текста выводится только метка шорткода (например, [dream-big]), может возникать по нескольким причинам. Рассмотрим возможные причины и решения, придерживаясь формата FOREST (Factual, Original, Relevant, Engaging, Straightforward and Tailored).

Фактический анализ проблемы

В вашем коде вы правильно регистрируете шорткод с помощью функции add_shortcode(). Однако возможные причины, по которым шорткод не работает, могут быть следующими:

  1. Неактивная функция do_shortcode: Вы упомянули, что добавили add_filter( 'the_content', 'do_shortcode'); в файл functions.php, но этот код может быть неактивным, если вы используете его не в том месте или в конфликте с другими фильтрами.

  2. Ошибка в доступности шорткода: Шорткоды могут не работать в определённых областях темы или плагина, если функция обработки контента (например, the_content()) не вызывается правильно.

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

  4. Использование специальных символов: Когда вы возвращаете HTML-код через шорткод, необходимо убедиться, что HTML правильно форматируется и не экранируется, как в вашем втором подходе с использованием &lt;h1&gt;.

Оригинальные решения

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

  1. Проверка активации шорткода: Убедитесь, что ваш шорткод правильно зарегистрирован. Добавьте отладочный вывод для проверки вызова функции. Например:

    function evd_dreambig_shortcode() {
       error_log('Dream big shortcode called');
       return 'Hello! Can you dream big?';
    }
  2. Использование правильного возврата HTML: Если вы хотите вернуть HTML-код через шорткод, убедитесь, что он не экранируется:

    function evd_dreambig_shortcode() {
       return '<h1>Hello! Can you dream big?</h1>';
    }
  3. Удаление лишнего кода: Не добавляйте add_filter в functions.php, если вы уже его зарегистрировали в плагине. Этот код не нужен, так как do_shortcode вызывается автоматически в функциях WordPress, которые обрабатывают контент.

  4. Проверка на конфликты: Отключите все дополнительные плагины, кроме Classic Editor и вашего плагина, чтобы проверить на наличие конфликтов.

  5. Тестирование на стандартной теме: Переключитесь на стандартную тему WordPress, чтобы удостовериться, что проблема не в вашей кастомной теме.

Релевантные рекомендации

Если после выполнения вышеуказанных шагов проблема не решена, попробуйте:

  • Проверить журналы ошибок сервера для нахождения возможных подсказок о причинах проблемы.
  • Убедиться, что ваш PHP-код и плагины актуальны и совместимы с версией WordPress, которую вы используете.

Заключение

Используйте предложенные рекомендации, чтобы систематически устранить проблему с вашим шорткодом. Применение этих шагов поможет вам диагностировать проблему и верно отобразить содержимое шорткода на вашем сайте. Не забывайте, что тестирование и отладка являются важнейшими этапами разработки в IT.

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

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