Úvodní stránka › Fórum podpory WordPressu › Problémy s WordPressem › Náhledový obrázek pod perexem
Štítky: get_extended(), get_the_post_thumbnail(), Náhledové obrázky, perex, Stručný výpis, the_content(), the_excerpt(), the_post_thumbnail()
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á 13 let, 3 měsíce.
-
AutorPříspěvky
-
26. září 2011 (18:50) #1206
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.
26. září 2011 (19:18) #9453Zdraví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 funkcithe_excerpt()
napíšu ještě funkci pro zobrazení náhledového obrázkuthe_post_thumbnail()
. Tipuji, že si nerozumíme :-)Neteyes.cz
26. září 2011 (19:34) #9454Dě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…???
26. září 2011 (19:48) #9455Tak 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 ;-)).
26. září 2011 (20:16) #9456Pěkně jste to vyřešila :-)
Bohužel jsem nenašel žádný odpovídající plugin.
28. září 2011 (9:48) #94571) 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.
-
AutorPříspěvky
Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.