Saya memfilter konten dengan the_content
filter. Semuanya berfungsi dengan sempurna, petikan bahwa perubahan saya juga diterapkan pada permintaan khusus. Perubahan saya juga muncul di bilah sisi jika widget menggunakan kueri khusus
Untuk mengatasinya, saya menggunakan hanya is_main_query()
menargetkan permintaan utama, tetapi tidak berfungsi. Perubahan hanya masih diterapkan untuk semua permintaan sepanjang. Apa yang lucu, semua pemeriksaan bersyarat lainnya suka is_single()
dan is_category()
berfungsi jika saya menargetkan halaman tertentu, kecuali bahwa semua perubahan memengaruhi kueri khusus lainnya pada halaman itu, apakah saya menggunakan is_main_query()
atau tidak
Apakah saya melewatkan sesuatu di sini. Bagaimana cara menerapkan perubahan saya ke permintaan utama hanya menggunakan the_content
filter
add_filter('the_content', 'custom_content');
function custom_content($content){
if(is_main_query()){ // << THIS IS NOT WORKING
// My custom content that I add to the_content()
}
return $content;
}
sumber
is_main_query
, benar-benar berpikir tidak ada yang menguji ini secara menyeluruh. Terima kasih atas masukan Anda, sangat dihargaiis_main_query
itu bukan suatu hal.Ini hanyalah tambahan untuk jawaban @ Otto. Hanya agar sedikit lebih baik dimengerti. Pada dasarnya apa yang dikatakan @Otto, Anda harus membalikkan logikanya, yang berarti: jika Anda dapat menentukan permintaan utama dengan andal, maka Anda dapat menambahkan - dan menghapus - kaitan Anda ke dalam
the_content
filter.Misalnya kueri utama dapat dikenali saat
pre_get_posts
aksi, jadi ini akan bekerja:Karena Anda seharusnya menghapus filter ketika tidak lagi diperlukan, saya pikir
loop_end
tindakan harus menjadi tempat yang baik untuk itu dan sebagai mitra kami dapat digunakanloop_start
. Yang akan terlihat seperti ini:sumber
Anda menggunakan
is_main_query()
salah. Fungsi global is_main_query () mengembalikan true kecuali variabel global $ wp_query telah didefinisikan ulang.Mungkin tidak ada 100% cara andal untuk mengetahui, dari dalam filter the_content, apakah Loop saat ini yang Anda gunakan adalah pertanyaan utama atau tidak. Filter konten hanya menyaring konten. Itu tidak memiliki segala bentuk kemampuan untuk mengetahui untuk apa loop itu digunakan.
Alih-alih, Anda harus menambahkan filter saat dibutuhkan, lalu hapus ketika tidak diperlukan.
sumber
the_content
filter