Фото записи после первого абзаца с рекламой
Есть код
<?php if ( function_exists('has_post_thumbnail') and has_post_thumbnail()) { ?>
<figure class="entry-image imgholder">
<?php
if ( MultiPostThumbnails::has_post_thumbnail(get_post_type(), 'secondary-image') ) {
MultiPostThumbnails::the_post_thumbnail(get_post_type(), 'secondary-image', NULL, 'single_thumb');
} else {
the_post_thumbnail('single_thumb');
} ?>
</figure>
<?php } ?>
Он используется для вывода изображения постав в single.php
Мне же нужно его оттуда убрать и написать функцию, которая бы выводила этот код песле первого абзаца и добавляла после этого блока код рекламы.
Как это реализовать?
Полученный результат(миниатюры) в переменную, разбивать content и далее вставлять переменную между разбитым контентом.
Получите этот код в переменную (не выводите на экран).
Далее добавьте к нему код рекламы.
Далее используйте код из этой статьи, чтобы добавить все это в контент.
Можно так:
<?php ob_start(); ?> <?php if ( function_exists('has_post_thumbnail') and has_post_thumbnail()) { ?> <figure class="entry-image imgholder"> <?php if ( MultiPostThumbnails::has_post_thumbnail(get_post_type(), 'secondary-image') ) { MultiPostThumbnails::the_post_thumbnail(get_post_type(), 'secondary-image', NULL, 'single_thumb'); } else { the_post_thumbnail('single_thumb'); } ?> </figure> <?php } ?> <?php // получим все в переменную $moykod = ob_get_clean(); // Добавим рекламы $moykod .= 'Код рекламы';Теперь сунем все это в функцию kama_content_advertise()
<?php /** * Вставляет рекламный блок в первый перенос строки или первый закрывающий тег </p> или </table> * спустя определенное количество символов. * * @param number $nu - спустя сколько символов искать перенос строки и вставлять рекламу? 400 - по умолчанию. * * version: 0.2 */ function kama_content_advertise( $text, $nu = false ){ if( ! is_singular() ) return $text; // убедимся что мы на отдельной странице if( ! $nn ) $nu = 400; // Код рекламы ob_start(); ?> <?php if ( function_exists('has_post_thumbnail') and has_post_thumbnail()) { ?> <figure class="entry-image imgholder"> <?php if ( MultiPostThumbnails::has_post_thumbnail(get_post_type(), 'secondary-image') ) { MultiPostThumbnails::the_post_thumbnail(get_post_type(), 'secondary-image', NULL, 'single_thumb'); } else { the_post_thumbnail('single_thumb'); } ?> </figure> <?php } ?> <?php // получим все в переменную $adsense = ob_get_clean(); // Добавим рекламы $adsense .= 'Код рекламы'; // Раскомментируйте, если нужно вставить блок сразу перед тегом <!--more--> # return str_replace('<!--more-->', $adsense.'<!--more-->', $text); return preg_replace('~[^^]{'. $nn .'}.*?(?:\r?\n\r?\n|</p>|</table>)~s', "\${0}$adsense", trim( $text ), 1); } add_filter('the_content', 'kama_content_advertise', -10 );Разумеется то что получилось не тестировал, но делается примерно так, может где-то что-то подправить нужно будет...