Utilizarea funcției the_excerpt() pe o pagină

15 mai 2012, 00:50:17
Vizualizări: 985
Voturi: 0

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>
0
Toate răspunsurile la întrebare 2
19

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ă:

  1. Creați propria interogare de pagină pentru a prelua cel mai recent articol
  2. Afișați articolul
  3. 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>
15 mai 2012 01:16:57
Comentarii

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

Charles Charles
15 mai 2012 16:02:57

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

EAMann EAMann
15 mai 2012 16:41:38

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ă?

Charles Charles
17 mai 2012 02:26:31

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

EAMann EAMann
17 mai 2012 06:46:02

bine–deci înlocuiesc ID-ul cu numărul postului?

Charles Charles
17 mai 2012 15:50:31

Cum găsesc ID-ul numeric al paginii specifice?

Charles Charles
17 mai 2012 16:01:46

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

EAMann EAMann
17 mai 2012 18:19:23

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

Charles Charles
17 mai 2012 20:22:35

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.

EAMann EAMann
17 mai 2012 21:38:38

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?

Charles Charles
18 mai 2012 00:53:44

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

EAMann EAMann
18 mai 2012 00:59:01

Aplic codul în cadrul unei pagini. În secțiunea HTML.

Charles Charles
18 mai 2012 17:31:09

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.

EAMann EAMann
18 mai 2012 18:34:42

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

Charles Charles
18 mai 2012 21:15:39

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

EAMann EAMann
18 mai 2012 21:16:35

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.

Charles Charles
19 mai 2012 17:14:23

Citește despre Controlul lungimii rezumatului folosind filtre.

EAMann EAMann
19 mai 2012 19:15:38

Î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?

Charles Charles
20 mai 2012 02:31:40

Nu ... dar asta nu înseamnă că nu poți afișa o imagine în miniatură + un fragment într-un șablon. Dar aceasta este o întrebare separată, așa că ar trebui să deschizi o nouă întrebare ...

EAMann EAMann
20 mai 2012 07:02:12
Arată celelalte 14 comentarii
0

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.

18 mai 2012 22:08:53