Как подправить код и выводить блок перед шестым Н2 (а не первым)

xoxol4uk22
На сайте с 14.11.2017
Offline
66
266

Ранее добрые люди помогли вывести код перед вторым Н2

Помогите теперь, пожалуйста подправить функцию (хочу сделать еше одну) для вывода перед 6-ым Н2, а то методом тыка что-то не получается(( А вывод после n-ого абзаца выглядит местами некрасиво. Вот код для вывода перед вторым:

$content=preg_replace('#<h2.*?\K<h2#s','<p style="text-align: center;">'.$ads.'</p><h2',$content,1)

либо альтернативный:

$content = str_replace_n("<h2>", '<p style="text-align: center;">' . $ads . '</p><h2>', $data, 2);
J
На сайте с 20.02.2014
Offline
97
jkm
#1

$content=preg_replace('#^(?>.*?\K<h2){6}#s','<p style="text-align: center;">'.$ads.'</p><h2',$content,1);
xoxol4uk22
На сайте с 14.11.2017
Offline
66
#2

Спасибо, большое! Строка рабочая, только дупля не нарезаю, как создать теперь 2 рабочие фукции одновременно?

Если весь код выглядит так:

function ads_h2($content) {
if( ! is_single( array(1184,1144) ) ) {
$ads='КОД РЕКЛАМЫ';
$content=preg_replace('#<h2.*?\K<h2#s','<p style="text-align: center;">'.$ads.'</p><h2',$content,1);
return $content;
}
else return $content;

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

То что здесь переименовать, чтобы это было 2 отдельные функции? Я пробовал добавить в конце букву ко всем ads_h2, $content, $ads, но что-то делаю не так(((

owx
На сайте с 27.06.2009
Offline
100
owx
#3

function ads_h2($content) {

if( ! is_single( array(1184,1144) ) ) {

$ads='КОД РЕКЛАМЫ';

$content=preg_replace('#<h2.*?\K<h2#s','<p style="text-align: center;">'.$ads.'</p><h2',$content,1);

$content=preg_replace('#^(?>.*?\K<h2){6}#s','<p style="text-align: center;">'.$ads.'</p><h2',$content,1);

return $content;

}

else return $content;

}

add_filter('the_content', 'ads_h2');

xoxol4uk22
На сайте с 14.11.2017
Offline
66
#4

Спасибо большое. В общем, кому будет интересно, то вот пример вывода рекламы перед нужным заголовком Н2 для вордпресс через function.php

## Выводит рекламу только перед вторым заголовком h2, если он есть 
function ads_h2($content) {
if( ! is_single( array(1184,1144) ) ) {
$ads='КОД РЕКЛАМЫ 1';
$ads2='КОД РЕКЛАМЫ 2';
$content=preg_replace('#^(?>.*?\K<h2){2}#s','<p style="text-align: center;">'.$ads2.'</p><h2',$content,1);
$content=preg_replace('#^(?>.*?\K<h2){6}#s','<p style="text-align: center;">'.$ads2.'</p><h2',$content,1);
return $content;
}
else return $content;

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

В данном случае перед вторым и 6-ым заголовком Н2. Для тех, кто еще дальше, чем я от php, то {2} и {6} – порядковые номера Н2 заголовков, перед которыми нужно выводить рекламу.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий