@serhgons

Как вставить код рекламы после нужного абзаца в WP?

Ребята подскажите. Есть код который выводит в записях Wordpress после нужного абзаца рекламный код, выглядит он так:
add_filter( 'the_content', 'wpse_ad_content' );
function wpse_ad_content( $content ) {
        if( !is_single() )
            return $content;
            $paragraphAfter = 3; //Введите номер абзаца, после которого вставляем.
            $content = explode ( "</p>", $content );
            $new_content = '';
                for ( $i = 0; $i < count ( $content ); $i ++ ) {
                    if ( $i == $paragraphAfter ) {
                    $new_content .= 'тут код рекламы';
                    }
            $new_content .= $content[$i] . "</p>";
            }
            return $new_content;
    }


Однако этот код может выводить только один код и только под одним абзацем. Кто может модифицировать код, чтобы я мог задавать не одно значение абзаца и кода, а три? То-есть три раза указывать номер абзаца и код который нужно вывести.
  • Вопрос задан
  • 158 просмотров
Пригласить эксперта
Ответы на вопрос 2
wfantastic
@wfantastic
увлечен wordpress
Попробуйте это.
Мы можем использовать массив с номерами абзацев, после которых нужно вставить рекламу, и массив с соответствующими кодами рекламы. Затем мы можем пройтись по массиву контента и вставить рекламу после каждого абзаца, который находится в массиве номеров.

add_filter( 'the_content', 'wpse_ad_content' );
function wpse_ad_content( $content ) {
    if( !is_single() )
        return $content;
        
    // Массив с номерами абзацев, после которых нужно вставить рекламу
    $paragraphsAfter = array(3, 6, 9);
    
    // Массив с кодами рекламы для каждого абзаца
    $ads = array(
        '<div>Код рекламы для абзаца 3</div>',
        '<div>Код рекламы для абзаца 6</div>',
        '<div>Код рекламы для абзаца 9</div>'
    );
    
    $content = explode ( "</p>", $content );
    $new_content = '';
    $count = count($content);
    
    for ( $i = 0; $i < $count; $i ++ ) {
        $new_content .= $content[$i] . "</p>";
        
        // Проверяем, нужно ли вставлять рекламу после текущего абзаца
        if (in_array($i+1, $paragraphsAfter)) {
            $adIndex = array_search($i+1, $paragraphsAfter);
            if ($adIndex !== false && isset($ads[$adIndex])) {
                $new_content .= $ads[$adIndex];
            }
        }
    }
    
    return $new_content;
}
Ответ написан
Комментировать
d9d9_Sun
@d9d9_Sun
делаю сайты.
Элементарно же, ещё пару ифов добавить надо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы