Отображение выдержки после использования wpdb-запроса

Я использую модифицированную версию кода из вопроса (« Получать сообщения WordPress Grouped by Month» ) для группировки моих сообщений по годам.

Все работает нормально, но у меня возникли проблемы с получением отрывка для показа для сообщений. Вот мой текущий код: Pastebin

Мне удалось отобразить содержимое сообщения, используя post_content вместо post_excerpt как в запросе, так и на выходе, но выдержка просто не хочет появляться. Я также попробовал просто использовать the_excerpt(); и другие методы извлечения выдержки, без везения.

Я ценю любую помощь.

Solutions Collecting From Web of "Отображение выдержки после использования wpdb-запроса"

Я думаю, ваше поле post_excerpt пусто, и вам нужно создать выдержку из post_content .

Я согласен с @tf, используя общие WP_Query(), have_post(), the_post(), the_excerpt() .

Я просто хочу упомянуть, что WordPress поставляется с удобной wp_trim_words() которая может использоваться для сокращения текстовых строк.

Вне цикла можно также создать пользовательскую версию wp_trim_excerpt() :

 function my_trim_excerpt( $text, $length = 55, $more = ' […]' ) { $text = strip_shortcodes( $text ); $text = apply_filters( 'the_content', $text ); $text = str_replace(']]>', ']]>', $text); $excerpt = wp_trim_words( $text, $length, $more ); return $excerpt; } 

где его можно использовать так:

 echo my_trim_excerpt( $mylongtext ); 

или

 echo my_trim_excerpt( $mylongtext, 40, ' […]' ); 

Поэтому, если ваш текст:

Бэкон ipsum dolor сидеть amet барабанщик turducken sirloin бекон, jowl хвост колбаса ветчина hock фланга хвост свинина kielbasa говядина гамбургер leberkas. Язык говядины ребра ветчины гамбургер жираба чак свинина живот плечо biltong колбаса вырезка свиньи porchetta корова. Kielbasa kevin leberkas короткая поясница и свинина. Свиные свиные свиные короткие ребра бекона вяленая оленина, запасные ребра бочонки с колбасой. Kielbasa salami ham hock leberkas doner. Колбаса из говяжьей вырезки из оленины. Сосиска говяжий язык, свиная свиная индейка свинина landjaeger porchetta свинина живот biltong три-кончик.

тогда:

 echo my_trim_excerpt( $longbacontext, 10, ' [enough bacon]' ); 

сократит его до:

Бэкон ipsum dolor сидеть amet барабанщик turducken sirloin бекон, jowl [достаточно бекон]

Вы действительно должны использовать собственные функции WordPress ( WP_Query , have_posts , the_post the_excerpt и т. Д.)!

Однако, если вы хотите придерживаться своего текущего подхода, вы можете сделать это:

 echo apply_filters('the_excerpt', $theid->post_excerpt); 

Я сделал это по-другому. Я передал идентификатор сообщения, чтобы получить сообщение, а затем захватить post_excerpt. Наконец, проверено, есть ли какой-либо отрыв? Если это так, покажите выдержку, но если она не установлена, покажите содержимое сообщения, но контролируйте количество слов, используя wp_trim_words() .

 <?php //Post ID is stored in $post_id, was grabbed from a custom $wpdb query $queried_post = get_post( $post_id ); //get the specific post only $queried_excerpt = $queried_post->post_excerpt; // the excerpt $queried_content = $queried_post->post_content; // the content echo empty( $queried_excerpt ) ? wp_trim_words($queried_content, 20) : $queried_excerpt; ?> 

использование

 <?php echo $theid->post_excerpt; ?> 

вместо

 <?php echo $theid->the_excerpt; ?> 

Для этого вам нужно ввести текст фрагмента из Excerpt metabox в пост-редакторе. Если вы это сделаете, то в поле post_excerpt таблицы wp_posts будет сохранено только значение выдержки.