Adăugarea unei clase div sau id în interiorul the_content()

21 mai 2011, 23:41:25
Vizualizări: 27.7K
Voturi: 4

Încerc să creez un bloc publicitar care să fie plasat într-o postare individuală (single.php) astfel încât clasa sau id-ul div să fie aliniat la stânga iar conținutul postării să fie aranjat în jurul lui. Am verificat fișierul single.php și acesta este singurul fragment de cod pe care l-am observat că afișează postarea.

<div class="entry entry-content">
                <?php the_content(); ?>
                <?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Pagini:', 'themejunkie' ), 'after' => '</div>' ) ); ?>

Am încercat să adaug codul atât deasupra div-ului 'entry-content' cât și după the_content, dar cu ambele metode acesta afișează div-ul fie la începutul, fie la sfârșitul conținutului postării.

Poate cineva să-mi spună în care fișiere trebuie să mă uit pentru a adăuga acest lucru?

1
Comentarii

Am rezolvat. A fost o problemă cu plugin-ul pentru partajarea postărilor. A trebuit să dezactivez opțiunea de adăugare automată în postare și să folosesc varianta de inserare manuală.

swordfish81 swordfish81
21 mai 2011 23:57:12
Toate răspunsurile la întrebare 3
0

De ce să nu folosești pur și simplu hook-ul de filtrare the_content și să adaugi codul tău la the_content()? De exemplu:

function mytheme_content_ad( $content ) {
    $myadcode = '<div class="someclas">';
    $myadcode .= 'un șir de caractere cu codul de reclamă';
    $myadcode .= '</div>';

    $filteredcontent = $myadcode . $content;

    return $filteredcontent;
}
add_filter( 'the_content', 'mytheme_content_ad' );

Poate fi nevoie să faci funcția puțin mai avansată decât aceasta, dar ar trebui să transmită ideea generală.

22 mai 2011 02:41:50
5

Trebuie să plasați blocul de publicitate chiar înainte de <?php the_content(); ?> într-un strat div separat și să adăugați niște CSS. De exemplu:

single.php

<div class="entry entry-content">
    <div class="advertisement">
        <p>Publicitatea dvs.</p>
    </div>

    <?php the_content(); ?>
</div>

CSS

div.advertisement {
    float: left;
    width: 150px;
    padding: 0px 10px 10px 0px;
}
22 mai 2011 00:05:28
Comentarii

Mulțumesc, Roman. Acum am o nouă problemă. Blocul div apare aliniat la stânga la începutul tag-urilor <p> din postare. Există o modalitate de a muta acest bloc, să zicem, la 200px mai jos și de a face postarea WordPress să se înfășoare în jurul acestui anunț? Dacă folosesc margin-top: 200px, lasă un spațiu gol.

swordfish81 swordfish81
22 mai 2011 00:11:19

De data aceasta, CSS-ul nu este suficient. Dacă dorești să plasezi un anunț în interiorul conținutului tău actual, trebuie să: a) incluzi anunțul în postarea ta în timpul editării folosind un shortcode sau b) să adaugi un filtru pentru the_content() care va împărți conținutul în părți, va adăuga anunțul tău și va afișa noul conținut.

Roman Roman
22 mai 2011 00:20:21

@Sledge81 O problemă nouă nu aparține unui comentariu. Te rog folosește opțiunea Pune o Întrebare pentru aceasta. Altfel, nimeni altcineva nu va găsi soluția. Întrebările pure despre CSS aparțin de StackOverflow...

fuxia fuxia
22 mai 2011 01:01:27

Adaugă înaintea div.advertisement un alt div.spacing și adaugă .spacing{float:left;width:1px;height:200px}. div.advertisement va avea nevoie apoi de clear:left. Ezit să modific atât de mult răspunsul tău.

fuxia fuxia
22 mai 2011 01:05:46

Mulțumesc toscho.. Codul tău a funcționat. O să țin cont de asta data viitoare.

swordfish81 swordfish81
22 mai 2011 10:00:42
0

Folosind exemplul pentru a adăuga clase la tag-ul p și tag-ul 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 iun. 2021 14:04:07