Добавление класса или id для div внутри the_content()

21 мая 2011 г., 23:41:25
Просмотры: 27.7K
Голосов: 4

Я пытаюсь создать рекламный блок для размещения в записи (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 отображается либо в начале, либо в конце содержимого записи.

Может кто-нибудь подсказать, какие файлы нужно изучить, чтобы добавить это?

1
Комментарии

Разобрался. Проблема была в плагине для расшаривания постов. Пришлось отключить автоматическое добавление к посту и использовать ручную вставку.

swordfish81 swordfish81
21 мая 2011 г. 23:57:12
Все ответы на вопрос 3
0

Почему бы просто не подключиться к хуку фильтра 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' );

Возможно, вам потребуется сделать функцию немного сложнее, но этот пример передаёт общую идею.

22 мая 2011 г. 02:41:50
5

Вам необходимо разместить рекламный блок непосредственно перед <?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;
}
22 мая 2011 г. 00:05:28
Комментарии

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

swordfish81 swordfish81
22 мая 2011 г. 00:11:19

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

Roman Roman
22 мая 2011 г. 00:20:21

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

fuxia fuxia
22 мая 2011 г. 01:01:27

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

fuxia fuxia
22 мая 2011 г. 01:05:46

Спасибо, toscho.. Ваш код сработал. Буду иметь это в виду в следующий раз.

swordfish81 swordfish81
22 мая 2011 г. 10:00:42
0

Пример добавления классов к тегу <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');
?>
10 июн. 2021 г. 14:04:07