Saya sedang membangun tema yang akan menunjukkan kutipan di beranda untuk berpotensi puluhan posting. Saya tidak memiliki kutipan manual di semua posting saya, jadi $post->post_excerpt
kosong untuk banyak posting. Jika tidak ada kutipan manual, saya ingin menggunakan fungsi get_the_excerpt () bawaan, tetapi tidak tersedia di luar loop.
Melacak fungsi, sepertinya menggunakan wp_trim_excerpt dari wp-include / formatting.php untuk membuat kutipan dengan cepat. Saya menyebutnya dalam kode saya seperti wp_trim_excerpt( $item->post_content )
, tetapi itu hanya mengembalikan konten lengkap. Apakah saya melakukan sesuatu yang salah?
Saya tahu bahwa saya dapat membuat fungsi saya sendiri untuk membuat kutipan, tetapi saya suka menggunakan fungsi bawaan jika memungkinkan, menjaga kode saya kompatibel dengan plugin / filter potensial lainnya.
http://adambrown.info/p/wp_hooks/hook/wp_trim_excerpt?version=3.0&file=wp-includes/formatting.php
$myvar = apply_filters( 'the_excerpt', $myvar );
Jawaban:
Sejak WP 3.3.0,
wp_trim_words()
sangat membantu jika Anda bisa mendapatkan konten yang Anda inginkan untuk menghasilkan kutipan. Semoga itu membantu seseorang dan menghemat membuat fungsi penghitungan kata Anda sendiri.http://codex.wordpress.org/Function_Reference/wp_trim_words
sumber
wp_trim_excerpt()
memiliki sedikit mekanisme penasaran - jika ada sesuatu yang diteruskan maka ia tidak melakukan apa-apa.Berikut ini logika dasar di baliknya:
get_the_excerpt()
memeriksa kutipan manual;wp_trim_excerpt()
berdentang jika tidak ada kutipan manual dan membuatnya dari konten atau penggoda.Keduanya terkait erat dengan variabel global dan juga Loop.
Di luar Loop Anda lebih baik mengambil kode dari
wp_trim_excerpt()
dan menulis fungsi trim Anda sendiri.sumber
Memperbarui:
Ini adalah turunan dari wp_trim_excerpt () yang saya gunakan. Bekerja dengan sempurna. Berasal dari Wordpress versi 3.0.4
sumber
Inilah pendapat saya tentang "trim_excerpt" yang mengambil objek posting atau ID posting sebagai parameter.
Jelas didasarkan pada apa yang ada di inti. Tidak tahu mengapa ini (dan get_the_author ()) tidak memiliki padanan non-loop.
sumber
+1 ke Rast. Sangat aneh bahwa tidak ada yang namanya get_the_excerpt ($ post-> ID), padahal seharusnya sudah jelas. Bagaimanapun, ini adalah wp_trim_excerpt () di wordpress versi 3.0.4:
http://core.trac.wordpress.org/browser/tags/3.0.4/wp-includes/formatting.php
Anda dapat melihat pada baris 1826 bahwa ia terhubung ke variabel global $ post melalui get_the_contents. Dan ya, saya tidak tahu apa yang mereka pikirkan. Tapi dari sini, ganti get_the_content dengan $ teks di my_excerpt Anda sendiri, dan itu harus berperilaku dengan cara yang sama.
sumber
Fungsi get_the_content () akan mengembalikan konten penuh jika $ lebih! = 0. Anda harus menetapkan variabel global $ lebih ke 0 untuk memastikan get_the_content () fungsi mengembalikan kutipan.
Fungsi wp_trim_excerpt () yang dimodifikasi:
sumber
Menggunakan jawaban orang lain di atas, inilah jawaban yang lebih sederhana yang tampaknya bekerja dengan baik:
Saya menggunakannya dalam
<meta>
tag dalam suatu fungsi untuk mendefinisikan deskripsi OpenGraph. Jadi saya tambahkan saja:sumber