Добавление класса или id для div внутри the_content()
Я пытаюсь создать рекламный блок для размещения в записи (single.php) так, чтобы div с классом или id был выровнен по левому краю, а контент записи обтекал его. Я проверил файл single.php, и это единственный фрагмент кода, который отображает запись.
<div class="entry entry-content">
<?php the_content(); ?>
<?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Pages:', 'themejunkie' ), 'after' => '</div>' ) ); ?>
Я пытался добавить код как над div 'entry-content', так и после the_content, но в обоих случаях div отображается либо в начале, либо в конце содержимого записи.
Может кто-нибудь подсказать, какие файлы нужно изучить, чтобы добавить это?

Почему бы просто не подключиться к хуку фильтра the_content
и не добавить ваш код к the_content()
? Например:
function mytheme_content_ad( $content ) {
$myadcode = '<div class="someclas">';
$myadcode .= 'какой-то текст с рекламным кодом';
$myadcode .= '</div>';
$filteredcontent = $myadcode . $content;
return $filteredcontent;
}
add_filter( 'the_content', 'mytheme_content_ad' );
Возможно, вам потребуется сделать функцию немного сложнее, но этот пример передаёт общую идею.

Вам необходимо разместить рекламный блок непосредственно перед <?php the_content(); ?>
в отдельном div-слое и добавить немного CSS. Например:
single.php
<div class="entry entry-content">
<div class="advertisement">
<p>Ваша реклама</p>
</div>
<?php the_content(); ?>
</div>
CSS
div.advertisement {
float: left;
width: 150px;
padding: 0px 10px 10px 0px;
}

Спасибо, roman. Теперь у меня новая проблема. Блок div выравнивается по левому краю в начале тегов <p> в посте. Есть ли способ сдвинуть этот блок, скажем, на 200px вниз и сделать так, чтобы контент WordPress обтекал эту рекламу? Если я использую margin-top: 200px, остается пустое пространство.

На этот раз CSS недостаточно. Если вы хотите разместить рекламу внутри вашего контента, вам нужно: а) включить рекламу в пост во время редактирования с помощью шорткода или б) добавить фильтр для the_content()
, который разобьет контент на части, добавит вашу рекламу и выведет новый контент.

@Sledge81 Новая проблема не должна быть в комментариях. Пожалуйста, используйте Задать вопрос для этого. Иначе никто не найдет решение. Вопросы по чистому CSS относятся к StackOverflow, однако...

Добавьте перед div.advertisement
еще один div.spacing
и задайте .spacing{float:left;width:1px;height:200px}
. Затем для div.advertisement
нужно указать clear:left
. Я сомневаюсь, стоит ли так сильно менять ваш ответ.

Пример добавления классов к тегу <p> и тегу <h2>.
<?php
function replace_content($text_content)
{
if (is_page()) {
$text = array(
'<p>' => '<p class="text-danger">',
'<h2>' => '<h2 class="h2">',
);
}
$text_content = str_ireplace(array_keys($text), $text, $text_content);
return $text_content;
}
add_filter('the_content', 'replace_content');
?>
