Obține fragmentul din $post->post_content

26 mai 2017, 03:51:11
Vizualizări: 16.4K
Voturi: 5

Modific rezultatul unui plugin folosind un filtru, iar variabila $post este disponibilă, așa că pot afișa conținutul postării astfel:

<h3><?php echo $post->post_title; ?></h3>
<?php echo apply_filters( 'the_excerpt', $post->post_excerpt ); ?>

Totuși, codul de mai sus afișează fragmentul doar dacă acesta a fost completat în câmpul dedicat. Nu afișează o versiune trunchiată a conținutului, așa cum ar face dacă ai putea folosi "the_excerpt" sau "get_the_excerpt". Am încercat și:

<?php echo apply_filters( 'the_excerpt', $post->post_content ); ?>

Dar asta returnează întregul conținut al postării.

Și am încercat și asta:

<?php echo apply_filters('the_excerpt', get_post_field('post_excerpt', $post->ID)); ?>

Dar nu returnează nimic.

Există vreo metodă prin care să obțin fragmentul din conținutul complet al postării când nu pot folosi the_excerpt sau get_the_excerpt?

Mulțumesc!

2
Comentarii

În mod implicit, WordPress ar trebui să ia primele 55 de cuvinte din the_content pentru a servi drept the_excerpt dacă nu este definit în mod explicit.

Cedon Cedon
26 mai 2017 04:07:20

Corect. Dar nu pot folosi the_content sau the_excerpt în acest caz. Trebuie să folosesc $post->post_content sau $post->post_excerpt.

LBF LBF
26 mai 2017 04:10:26
Toate răspunsurile la întrebare 1
0
10

Când sunteți în bucla principală, acest cod va genera un fragment din $post->post_content direct:

<?php echo wp_trim_excerpt(); ?>

Citiți mai multe AICI.

Soluție alternativă:

Dacă nu sunteți în bucla principală, atunci puteți folosi o implementare similară cu cea din funcția wp_trim_excerpt:

$text = strip_shortcodes( $post->post_content );
$text = apply_filters( 'the_content', $text );
$text = str_replace(']]>', ']]&gt;', $text);
$excerpt_length = apply_filters( 'excerpt_length', 55 );
$excerpt_more = apply_filters( 'excerpt_more', ' ' . '[&hellip;]' );
$text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
echo $text;
26 mai 2017 04:14:21