Utilizarea funcției the_excerpt() pe o pagină
Am încercat să utilizez funcția PHP the_excerpt() pentru a afișa fragmente din postările recente de pe blog pe pagina principală, dar fără succes. Aveți sugestii?
<div id="home_news" class="prefix_9 grid_3">
<div id="newsbox" style="display: block;">
<div id="news">
<h2>Bine ați venit</h2>
<div id="news_content">Bine ați venit pe... reveniți în curând pentru o nouă selecție de picturi în ulei, cele mai recente printuri și felicitări</a>.
<?php
$my_query = new WP_Query('category_name=blog&posts_per_page=1');
while ($my_query->have_posts()) : $my_query->the_post();
$do_not_duplicate = $post->505;
the_excerpt();
endwhile; ?>
</div>
</div>
</div>
</div>
the_excerpt()
nu va funcționa pe o pagină de destinație. Trebuie utilizat în interiorul loop-ului articolului pentru a funcționa.
În interiorul loop-ului, WordPress populează o variabilă globală $post
cu informații despre articolul curent. Apoi, diverse etichete de șablon se referă la acea variabilă globală și afișează conținut.
Pe baza modificărilor tale de mai sus...
Aveți structurat loop-ul aproape corect. Dar în schimb, va trebui să:
- Creați propria interogare de pagină pentru a prelua cel mai recent articol
- Afișați articolul
- Restaurați interogarea originală
Codul de mai jos ar trebui să facă ceea ce aveți nevoie:
<div id="home_news" class="prefix_9 grid_3">
<div id="newsbox" style="display: block;">
<div id="news">
<h2>Bine ați venit</h2>
<div id="news_content">Bine ați venit la... reveniți în curând pentru o nouă selecție de picturi în ulei, cele mai recente imprimate și felicitări</a>.
<?php
// Creează o nouă interogare și preia ultimul articol din categoria "blog"
$my_query = new WP_Query( 'category_name=blog&posts_per_page=1' );
// Dacă avem un articol, populează variabilele globale necesare și rulează loop-ul
if ( $my_query->have_posts() ) : while ( $my_query->have_posts() ) : $my_query->the_post();
// Afișează rezumatul articolului pe pagină
the_excerpt();
endwhile; endif;
// Resetează datele loop-ului principal, astfel încât variabilele globale să aibă valorile corecte
wp_reset_postdata();
?>
</div>
</div>
</div>
</div>

Mulțumesc pentru răspuns. Este posibil să adaug loop-ul în cadrul unei pagini? Am încercat câteva variante... Încă fără succes.

Da. Aruncă o privire la exemplele cu loop-uri multiple din Codex.

Am editat întrebarea pentru că nu am reușit să afișez formatul markdown în comentariu. Este necesar să specific post->ID? ID-ul este o variabilă globală numită?

După ce apelezi the_post()
, populazi o variabilă globală $post
care are un membru ID
.

get_the_ID()
returnează ID-ul numeric al postării curente atunci când este utilizat în buclă.

Am adăugat valoarea numerică. Fără succes. Alte idei? Recomandări pentru depanare?

Vezi modificările mele. În interiorul buclei (unde am the_excerpt()
) poți rula oricare dintre tag-urile standard de șablon de care ai nevoie. Dacă ai nevoie de ID-ul numeric, folosește get_the_ID()
pentru a-l returna sau the_ID()
pentru a-l echo
. Dacă ai nevoie de titlu, folosește get_the_title()
ca de obicei.

Teoretic, codul de mai sus ar trebui să fie valid și să funcționeze. Am o categorie intitulată 'blog'. Sunt puțin reticent să modific orice editări. Am lăsat codul așa cum este și l-am introdus în pagină, dar tot nu se afișează. Mai este ceva ce trebuie să fac?

Analizând site-ul tău, se pare că PHP-ul nu este interpretat ... așa că întrebarea mea este unde introduci acest cod?

OK, de aceea nu funcționează. Codul PHP este eliminat în editorul HTML/Vizual din WordPress. Trebuie fie să adaugi acest cod direct în șablonul paginii folosit de pagina de destinație, fie să instalezi un plugin pentru execuție PHP în WordPress pentru a rula codul PHP inline.

Am înțeles. Aproape am reușit. Doar că acum primesc altă eroare... Păreri? http://www.chazsouthard.com/art/

Greșeală de scriere în codul meu (acum corectat mai sus). Ar trebui să fie wp_reset_postdata()

Acum funcționează–dar intră în conflict cu CSS-ul. Există vreo modalitate de a limita numărul de caractere din rezumat? Cred că asta este ceea ce deranjează codul.

Citește despre Controlul lungimii rezumatului folosind filtre.

În sfârșit am reușit să rezolv. Mulțumesc că ai rămas cu mine în mijlocul confuziei. Există vreo modalitate corectă de a adăuga o imagine în miniatură în rezumat?

Deși acest lucru nu a fost clar din prima în postarea inițială, cred că aceasta ar putea fi o soluție bună. Pur și simplu creează un shortcode pentru a plasa rezumatul în corpul paginii. (Aceasta este o idee proastă dacă dorești acest lucru pe fiecare pagină. Este o idee bună dacă dorești să-l folosești ocazional pe unele pagini în corp.)
Iată codul de adăugat în functions.php:
function the_excerpt_shortcode() {
return get_the_excerpt();
}
add_shortcode( 'the_excerpt', 'the_excerpt_shortcode' );
Odată ce ai adăugat codul, pur și simplu pune acest shortcode în corpul paginii:
[the_excerpt]
Și gata, ai terminat.
Dacă folosești Twenty Ten, Twenty Eleven sau alte teme care utilizează filtrul excerpt_more, poate fi necesar să modifici acest shortcode pentru a elimina link-ul automat generat "Citește mai mult...", dar pentru multe teme acest lucru nu este necesar. Consideră acest cod ca punct de plecare.
