Saya memiliki string SQL saya sendiri untuk memilih posting Jenis Posting Kustom dengan klausa WHERE tertentu. Saya telah menggunakan offset dan batas untuk mengembalikan posting yang sesuai tergantung pada halaman yang ditampilkan. Itu bekerja dengan baik.
Sekarang, saya ingin membuat previous_posts_link()
dan next_posts_link()
fungsi berfungsi. Mereka berdua dipanggil dari get_posts_nav_link
yang menggunakan global $wp_query
.
Apakah ada cara saya dapat menetapkan ulang global $wp_query
dengan string SQL saya atau $wpdb->get_results
hasil atau yang lainnya? Jadi fungsi asli previous_posts_link()
dan next_posts_link()
WP akan berfungsi.
Jika tidak, bagaimana saya bisa mereproduksi fungsi tautan postingan dan post selanjutnya?
Saya akan sangat menghargai bantuan dan saran! Saya benar-benar terjebak dengan ini.
Terima kasih :)
CATATAN: Saya baru saja memperhatikan bahwa previous_posts_link()
berfungsi dengan benar di semua halaman, tetapi no idea why
dan dalam hal ini, mengapa next_posts_link
tidak berfungsi: S
Ini kodenya:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$post_per_page = intval(get_query_var('posts_per_page'));
$offset = ($paged - 1)*$post_per_page;
$sql = "
SELECT SQL_CALC_FOUND_ROWS wp_posts.*, wp_postmeta.*
FROM wp_posts
INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)
INNER JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id)
WHERE 1=1
AND wp_posts.post_type = 'movie'
AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')
AND ((wp_postmeta.meta_key = '_expiry_date' AND CAST(wp_postmeta.meta_value AS DATE) >= '".$current_date."')
OR (mt1.meta_key = '_expiry_date' AND CAST(mt1.meta_value AS CHAR) = ''))
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC
LIMIT ".$offset.", ".$post_per_page;
$movies_all_current = $wpdb->get_results( $sql, OBJECT);
if($movies_all_current) {
global $post;
//loop
foreach( $movies_all_current as $key=>$post ) {
setup_postdata($post);
//display each post
//...
} //end foreach ?>
//navigation
<div class="navigation">
<div class="previous panel"><?php previous_posts_link('« newer') ?></div>
<div class="next panel"><?php next_posts_link('older »') ?></div>
</div>
}
sumber
Lihatlah Permintaan Khusus - yang memungkinkan Anda untuk memodifikasi panggilan wp_query dalam banyak cara yang menarik dan berguna, dan mendorong hasilnya kembali ke objek permintaan global Anda.
sumber
Memperluas jawaban Anu. Alih-alih mengandalkan kueri sql khusus Anda, Anda bisa menggunakan kelas WP_Query dan membiarkan WordPress menangani semua pengangkatan SQL yang berat. Ini pasti akan menyelesaikan masalah navigasi Anda.
Contoh kueri untuk jenis posting film di dalam meta_key _expiry_date Anda:
sumber
WP_Query
kelas karena saya perlu membuat SQL sendiri. Saya sampai di sana pada akhirnya, lihat balasan saya jika tertarik :)Templat:
sumber
query_posts
dan satu denganWP_Query