Поддержка Проблемы и решения внедрить в functions.php запрос

  • Здравствуйте. Как внедрить в functions.php такой запрос что бы он мог убирать картинку в записи и заменял её на рекламный блок?
    т.е на главной странице картинка есть а при переходе на страницу эта картинка убирается и заменяется рекламой. У многих на сайте видел но как сделать не знаю, подскажите пожалуйста.
    спасибо!

Просмотр 15 ответов — с 1 по 15 (всего 17)
  • Модератор Yuri

    (@yube)

    Как-то так

    add_filter('the_content','my_dummy_function');
    function my_dummy_function($content) {
       if ( ! is_single() ) return $content;
       $content = preg_replace("/<img .*>/mU", "РЕКЛАМА", $content);
       return $content;
    }

    php.net в помощь по составлению регулярного выражения

    спасибо большое! Но заменились все изображения в развёрнутой странице, не только те что в теге more, подскажите что поменять?

    я так понимаю условие «/<img .*>/mU», выделяет все картинки в статье и заменяет на то что я задам, слово реклама и т.д.
    как завязать что бы выделялись не все картинки в single а только те которые до тега more и не ниже.
    Спасибо!

    Юрий вот поглядите сайт «http://omelchuck.ru/category/domashnie-dela/bitovie-pribori/&#187; на общей странице картинка, а при переходе там реклама. Никак не могу повторить(((((

    https://codex.wordpress.org/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA_%D0%BF%D0%BE_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F%D0%BC/get_extended

    // Fetch post content
    $content = get_post_field( 'post_content', get_the_ID() );
    
    // Get content parts
    $content_parts = get_extended( $content );
    
    // Output part before <!--more--> tag
    echo $content_parts['main'];

    а как его срастить с add_filter ?

    Если честно я на 98% по выражениям туп ( Но обратиться некуда, нет ни друзей ни знакомых кто в этом шарит. Одна надежда на вас.
    add_filter от Юрия работает так как нужно! Но заменяет все изображения на странице. и до и после тега more. как фильтр завязать с тегом? возможно ли это?

    add_filter('the_content','my_dummy_function');
    function my_dummy_function($content) {
       if ( ! is_single() ) return $content;
       $content_parts = get_extended( $content );
       $content = preg_replace("/<img .*>/mU", "РЕКЛАМА", $content_parts['main']);
       return $content;
    }

    не проверял, но вроде так.

    а на указанном вами сайте никаких замен нет — там на главной выводятся миниатюры записей, а в single.php миниатюр нет, зато прописан код рекламы.

    ааа вот оно что! спасибо за столь быстрый и разъеснённый ответ! Сейчас попробую фильтр

    Модератор Yuri

    (@yube)

    как завязать что бы выделялись не все картинки в single а только те которые до тега more и не ниже.

    Подсказка: в том месте, где в исходном тексте было <!--more-->, при выводе поста целиком обычно появляется <span id="more-NNN"></span> (где NNN — ID поста). Можно разбить контент на две части по этому «маркеру», заменить в первой части картинку на рекламку, а затем обратно склеить эти две части.

    Кстати, такую подмену в части контента можно делать не только фильтром, но и непосредственно в шаблоне, пользуясь глобальной переменной $more и аргументом stripteaser функций the_content/get_the_content.

    Попробовал вашу замену, ничего не происходит и фотку не заменяет и на убирает её, не оперирует.

    Попробовал вашу замену, ничего не происходит и фотку не заменяет и на убирает её, не оперирует.

    оно работает при использовании more тега в записи.
    как вы и просили.
    сейчас проверил на тестовом сервере — все работает.

    сейчас попробовал так:

    add_filter('the_content', 'add_adv');
    function add_adv($content) {
    	$BANNER = <<< BANNER
    <div>
    КОД рекламы
    </div>
    BANNER;
    	if (is_single()) $content = preg_replace('|<span id="more-\d+"></span>|', $BANNER, $content);
    	return $content;
    }

    сразу в расширенной статье где я обрезал статью тегом море появляется реклама, таким методом работает, но там она не нужна а нужна именно вместо картинки.

    Flector забыл запятую, поправил, сработало, но опять на все картинки всего поста.

Просмотр 15 ответов — с 1 по 15 (всего 17)
  • Тема «внедрить в functions.php запрос» закрыта для новых ответов.