Náhledový obrázek pod perexem

Úvodní stránka Fórum podpory WordPressu Problémy s WordPressem Náhledový obrázek pod perexem

Zvolené téma obsahuje celkem 5 odpovědí. Do diskuze (3 účastníci) se naposledy zapojil uživatel  admin a poslední změna je stará 8 let, 11 měsíců.

Aktuálně je na stránce zobrazeno 6 příspěvků - 1. až 6. (z celkem 6)
  • Autor
    Příspěvky
  • #1206

    Lajka
    Participant
    Web

    Dobrý večer, celé odpoledne se pídím po tom, jak přesunout v detailu článku náhledový obrázek pod text perexu. Ve wp-includes/post-template.php se mi už podařilo na místo, kde by měl být obrázek, vložit libovolný text. Jakmile se tam snažím vloži obrázek s pomocí the_post_thumbnail() nebo get_the_post_thumbnail(), tak se mi sice zobrazuje, ale z nepochopitelných důvodů skočí zase nahoru nad perex.

    Můžete mi poradit, v čem je problém? Nebo rovnou jak ten obrázek nacpat pod perex (nejlíp už v šabloně, jestli to vůbec nějak jde)?

    Rovnou kód – ve funkci get_the_content():

    if (is_single()) {
    $output .= '<div class="perex">'.$teaser;
    if(has_post_thumbnail()) {
    $obrazek=the_post_thumbnail(
    array(470, 260),
    array("class" => "aligncenter featured_image")
    );
    }
    $output.='</div>';
    $output.=$obrazek; //tady vložené XXX se zobrazí správně
    }

    Předem moc děkuju za jakoukoli radu.

    #9453

    neteyescz
    Participant

    Zdravím,

    Ze zásady nedoporučuji editovat ( pokud to daná situace nevyžaduje ) jiné soubory, než umístěné ve wp-content/themes/<name>/ . Pokud si rozumíme, chcete pod except( dobře, perex ) umístit náhledový obrázek. Najdu si tedy soubor loop.php v šabloně, a zde pod funkci the_excerpt() napíšu ještě funkci pro zobrazení náhledového obrázku the_post_thumbnail(). Tipuji, že si nerozumíme :-)

    Neteyes.cz

    #9454

    Lajka
    Participant
    Web

    Děkuju.

    Já bych do toho post-template.php nelezla, ale jiný použitelný návod se mi nepodařilo najít :-)

    V šabloně jsem pátrala v single.php, tam jsem zvládla upravit velikost toho náhledového obrázku, případně zarovnání, ale pořád je nad celým textem článku. Funkce the_excerpt() tam nikde není, ani v loop.php jsem ji nenašla, mám tam jen the_content().

    Taky si nejsem jistá, jestli mluvíme o tomtéž. Ve výpisu článků v rubrice a archivu ten thumbnail neřeším, jde mi jen o otevřený celý článek – to jsem myslela, že v šabloně řeší soubor single.php…???

    #9455

    Lajka
    Participant
    Web

    Tak už jsem na to přišla, děkuju za nakopnutí :-)

    Vpodstatě tam bude:

    the_excerpt();

    the_post_thumbnail();

    the_content();

    … přičemž teda nebudu používat pro oddělení excerptu (perexu) <!–more–> v textu, ale dám ho rovnou v administrace do pole Stručný vvýpis příspěvku.

    Teď akorát přesunout ty úvody u vložených článků, ale to už snad nějak půjde… (ale kdyby se to dalo nějak šikovně obejít nebo existoval nějaký plugin, tak si nechám poradit ;-)).

    #9456

    neteyescz
    Participant

    Pěkně jste to vyřešila :-)

    Bohužel jsem nenašel žádný odpovídající plugin.

    #9457

    admin
    Keymaster
    Web

    1) Jak už upozornil neteyescz: “Nikdy (!) neupravovat zdrojové soubory WordPressu. Vždy existuje jiné řešení.”

    2) O žádném pluginu nevím, ale pokud se vám nechce vyplňovat pole pro stručný výpis u všech příspěvků (výše uvedené řešení samozřejmě také funguje), tak si můžete napsat vlastní funkci s využitím filtru the_content, kde bude vkládán náhledový obrázek automaticky bez úprav (vložte do souboru functions.php v adresáři šablony):

    add_filter( 'the_content', 'separatista_obrazek_za_uvod', 10 );
    function separatista_obrazek_za_uvod( $content ) {
    global $post;
    if( has_post_thumbnail() && is_single() ) {
    $pokracovani_textu = '<span id="more-' .$post->ID. '"></span>';
    $nahledovy_obrazek = get_the_post_thumbnail( null, array( 300, 225 ), array( "class" => "alignleft featured_image" ) );
    $content = str_replace( $pokracovani_textu, $pokracovani_textu . $nahledovy_obrazek, $content, $count = 1 );
    }
    return $content;
    }

    Toto řešení vyhledá pomocí PHP funkce str_replace() značku pro pokračování textu a doplní za ní automaticky náhledový obrázek. Protože ho budeme používat v proměnné, tak budeme využívat funkci get_the_post_thumbnail(). Je to vlastně nezávislé řešení v podobě pluginu.

    3) Existuje ale i další řešení pomocí funkce get_extended(), která rozděluje obsah příspěvku na úvodník (před značkou pro pokračování textu) a zbytek. V tomto případě ale budete muset zasáhnout do souboru single.php a nahradit původní volání funkce the_content() následujícím kódem s funkcí the_post_thumbnail():

    $content = get_extended( $post->post_content );
    $content['main'] = $content['main'] . '<span id="more-' . $post->ID . '"></span>';
    $uvodnik = apply_filters( 'the_content', $content['main'] );
    $zbytek = apply_filters( 'the_content', $content['extended'] );
    echo $uvodnik;
    the_post_thumbnail( array( 300, 225 ), array( "class" => "alignleft featured_image" ) );
    echo $zbytek;

    Fungovat by to mělo také, ale toto řešení není tak elegantní… Funkce apply_filters() je tam použita proto, že by mohly některé pluginy využívat filtru the_content, který by pak nemusel fungovat.

Aktuálně je na stránce zobrazeno 6 příspěvků - 1. až 6. (z celkem 6)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.