Шорткоды отображаются вexcerpt, несмотря на использование strip_shortcodes

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

На моем сайте шорткоды отображаются в аннотациях, несмотря на то, что WordPress должен автоматически удалять их, и что я попробовал два различных решения:

function remove_shortcode_from_excerpt($content) {
    $content = strip_shortcodes( $content );
    return $content;
}
add_filter('the_excerpt', 'remove_shortcode_from_excerpt');

И

add_filter( 'the_excerpt', 'shortcode_unautop');
add_filter( 'the_excerpt', 'do_shortcode');

Которые я добавил в файл functions.php моей дочерней темы.

Каковы мои следующие варианты?

Итак, как указал iguanarama, первым шагом является то, чтобы убедиться, что используемая вами тема использует the_excerpt() для отображения аннотации.

Вам нужно проверить в вашем файле archive.php, как он отображается. В моей теме использовался файл 'template-parts/content-front-c.php'. Затем перейдите в этот файл и посмотрите, какая функция отображает аннотацию. Сразу после того, как функция получает содержимое, добавьте $content=strip_shortcodes($content);, и, в моем случае, это сработало!

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

Вопрос о том, почему шорткоды отображаются в экстрактах (excerpt) на вашем сайте WordPress, даже после использования функции strip_shortcodes, требует внимательного анализа и подхода к решению. Давайте разберем эту проблему и предложим несколько решений.

Проблема

Ваши попытки использовать фильтры the_excerpt для удаления шорткодов не увенчались успехом, что может быть связано с тем, как генерируется и выводится экстракт в вашей теме. Ваша цель — гарантировать, что шорткоды не будут отображаться, когда вы используете функцию the_excerpt().

Решение

  1. Проверка темы:
    Первым делом вам нужно убедиться, что в вашей теме действительно используется the_excerpt() для отображения экстрактов. Для этого проведите аудит файлов вашей темы, особенно в шаблонах, которые отвечают за вывод записей (например, archive.php, index.php или файлы в папке template-parts).

  2. Изменение функции вывода экстракта:
    Если вы нашли, что ваша тема использует пользовательскую функцию для отображения экстракта, например, get_the_excerpt() или the_excerpt(), вам необходимо вставить код, убирающий шорткоды непосредственно после получения контента. Например:

    $content = get_the_content();
    $content = strip_shortcodes($content);
    echo wp_trim_words($content, 30); // Показывает первые 30 слов без шорткодов

    Либо, если используете the_excerpt(), добавьте в соответствующем месте:

    add_filter('the_excerpt', 'remove_shortcode_from_excerpt', 10);

    Это должно помочь убрать шорткоды из экстракта.

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

    function remove_shortcode_from_excerpt($content) {
       return strip_shortcodes($content);
    }
    add_filter('the_excerpt', 'remove_shortcode_from_excerpt', 9); // Устанавливаем приоритет
  4. Проверка использования другого фильтра:
    Использование shortcode_unautop и do_shortcode может вести к конфликтам, если они применяются неправильно. Убедитесь, что вы не смешиваете различные фильтры без необходимости. Функция do_shortcode должна применяться к контенту после того, как были удалены все шорткоды, что в вашем случае может быть ненужным.

Заключение

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

Не забывайте очищать кеш (если используете плагины кэширования), чтобы ваши изменения вступили в силу.

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

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

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