Как вставить информацию в середину статьи на WordPress

Admin PHP, WordPress

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

Приведу два способа, как это сделать. Они работают одинаково, но один способ подойдёт для размещения кода в файл single.php, а другой в functions.php. Кому что удобнее.

Вставка в файл Functions.php

function wpse_ad_content( $content ) {
    if( !is_single() )
    return $content;
    $paragraphAfter = 1; // Номер абзаца, после которого нужно вставить данные
    $content = explode ( "</p>", $content );
    for ( $i = 0; $i < count ($content)-1; $i ++ ) {
        if ( $i == $paragraphAfter ) {
          ?>
         
   <?php get_template_part( 'content/ploshadka.net' ); ?>

    <?php
    }
    echo $content[ $i ] . "</p>";
    }
}
add_filter( 'the_content', 'wpse_ad_content' );

Данные выводятся в этом участке кода:

<?php get_template_part( 'content/ploshadka.net' ); ?>

Вместо него сюда можно занести любую другую информацию. В данном случае после первого абзаца вставляется содержимое файла info.php, который находится в папке content.

Вставка в файл Single.php

В своём шаблоне находим и закомментируем похожую на эту строчку:

// the_content();

Вместо неё вставляем следующее содержимое:

<?php
    // Вставка любой информации после второго абзаца
    $paragraphAfter = 1; // После какого абзаца нужно вставить
    $content = apply_filters( 'the_content', get_the_content() );
    $content = explode( "</p>", $content );
    for ( $i = 0; $i < count( $content ); $i++ ) {
        if ( $i == $paragraphAfter ) {
            ?>

    <?php get_template_part( 'content/ploshadka.net' ); ?>

    <?php
    }
    echo $content[ $i ] . "</p>";
    }
    // Конец функции

Как вставить сразу два блока с информацией

На примере кода для записей (статей).

<?php
    // Вставка любой информации после второго абзаца
    $paragraphAfter = 1; // После какого абзаца нужно вставить в первом блоке
    $paragraphAfter2 = 3; // После какого абзаца нужно вставить во втором блоке
    $content = apply_filters( 'the_content', get_the_content() );
    $content = explode( "</p>", $content );
    for ( $i = 0; $i < count( $content ); $i++ ) {
        if ( $i == $paragraphAfter ) {
            ?>

    <?php get_template_part( 'content/ploshadka.net' ); ?>

<?php
 } else {
        if ( $i == $paragraphAfter2 ) {
?>

    <?php get_template_part( 'content/ploshadka.net' ); ?>
   
    <?php
    }}
    echo $content[ $i ] . "</p>";
    }

Из php кода выше видно, что мы добавили вторую переменную paragraphAfter2, которую можем приравнять к любому абзацу с текстом. Далее мы добавили второй участок для вставки информации. В конце кода добавили недостающую скобку }.

По аналогии можно добавить ещё несколько других блоков. И каждый раз внедряя новый участок кода:

 } else {
        if ( $i == $paragraphAfter3 ) {
?>

Обязательно в конце добавляем ещё одну скобку }.

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

Комментарии к статье “Как вставить информацию в середину статьи на WordPress” (2)

  • Читатель
    28.01.2019 в 10:43

    Добрый день! Спасибо за статью.
    А как прописать условие вставки (например после второго абзаца) нужного html-кода (текста), но не во всех статьях, а только в тех, в которых встречается нужное упоминание (например один или 2 раза).
    Поясню. У меня новости о строительстве объектов строительной компании. Каждая новость — о своем объекте, периодически они повторяются. Основных объектов немного — штук 5. Вот хотелось бы сделать так: 5 php-файлов с кусками о каждом из объектов (ну или просто 5 кусков html в файле functions.php). Скрипт смотрит на новость — если название объекта (в тексте) встречается, ну например 1-2 раза (2 для достоверности) — то: вставляется (или подключается файл) НУЖНЫЙ кусок кода о соответствующем объекте строительства.
    Буду очень признателен за помощь!

    • Admin
      Автор записи
      28.01.2019 в 14:41

      Это можно сделать через произвольные поля. Если существует произвольное поле с определенным значением, то выводить блок. Если не знаете что это, погуглите get_post_meta.

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

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Как вставить информацию в середину статьи на WordPress"