Вставка DIV после 2 абзацев в Wordpress

Я пытаюсь сделать так, чтобы мои сообщения вставляли цитату после 2 (или любого другого количества) абзацев. В случае с веб-сайтом, с которым я работаю, кавычки являются отдельным полем, поэтому я не могу просто назначить это тегу blockquote. Таким образом, я собрал это решение:

    function insert_pullquote( $text ) {

    if ( is_singular('review') ) :

        $quote_text = get_template_part( 'pullquote' );
        $split_by = "\n\n";
        $insert_after = 2; //number of paragraphs

        // make array of paragraphs
        $paragraphs = explode( $split_by, $text);

        // if array elements are less than $insert_after set the insert point at the end
        $len = count( $paragraphs );
        if (  $len < $insert_after ) $insert_after = $len;

        // insert $ads_text into the array at the specified point
        array_splice( $paragraphs, $insert_after, 0, $quote_text );

        // loop through array and build string for output
        foreach( $paragraphs as $paragraph ) {
            $new_text .= $paragraph; 
        }

        return $new_text;

    endif;

    return $text;

}
    add_filter('the_content', 'insert_pullquote');

Итак, хорошая новость заключается в том, что цитата отображается так, как я хочу (глянь сюда), но не после двух абзацев. Я использую встроенную функцию Wordpress get_template_part ('pullquote');, которая сама извлекает из поля с помощью echo (types_render_field ('pullquote')); Если я просто ввожу простой текст, все работает нормально. Что я делаю не так? Я немного помешан на PHP, поэтому, пожалуйста, терпите меня в случае очевидных ошибок. Спасибо!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
324
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Объем $new_text находится внутри цикла.

Тебе нужно

    $new_text = "";    // declare out side loop
    foreach( $paragraphs as $paragraph ) {
        $new_text .= $paragraph; 
    }
    return $new_text;  // now is available here.

Вы также можете использовать

$new_text =implode($paragraphs);  // to match your explode :-)

не уверен, что это решит общую проблему, но указанное мной исправление все равно необходимо.

bcperth 30.08.2018 02:36

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

Mark Tjan 19.02.2019 04:31

Сложно сказать. Вы просто вставляете строку в массив строк. Я предлагаю сделать count( $paragraphs ); после вставки и убедиться, что его значение увеличилось только на 1 после сварки. Также на случай, если я не понял, не используйте $new_text =implode($paragraphs);, если вы уже использовали цикл foreach.

bcperth 20.02.2019 01:42

Другие вопросы по теме

Пользовательский тип сообщения Wordpress для создания пользователем только одного элемента
Как создать список имен, отправленных через формы разными пользователями в wordpress
Ошибка при перемещении сайта wordpress
Ошибка 404 не обнаружена при использовании контактных форм на многоязычном сайте
Как использовать настраиваемое мета-поле вместо заголовка CPT в URL-адресе сообщения?
Требуется ли одобрение моего приложения facebook для публичного использования, ЕСЛИ я использую его только через токен доступа, ключ API и секрет?
Пользовательские метаданные, добавленные в Woocommerce, не отображаются в метаданных элемента заказа
WC: Как мне найти клиента по billing_phone или billing_email
Wordpress - Выровняйте изображение по левому краю, чтобы текст продолжался на том же отступе под изображением
ACF: поля повторителя, возвращающие ошибочные данные API, а новые поля не принимают новые данные при сохранении