Tôi có chuỗi SQL riêng để chọn các bài đăng Loại bài tùy chỉnh với mệnh đề WHERE cụ thể. Tôi đã sử dụng phần bù và giới hạn để trả về các bài đăng phù hợp tùy thuộc vào một trang được hiển thị. Điều đó làm việc tốt.
Bây giờ, tôi muốn làm cho previous_posts_link()
và các next_posts_link()
chức năng hoạt động. Cả hai đều được gọi từ get_posts_nav_link
đó sử dụng global $wp_query
.
Có cách nào tôi có thể gán lại global $wp_query
với chuỗi SQL hoặc $wpdb->get_results
kết quả của tôi hoặc bất cứ điều gì khác không? Vì vậy, các chức năng gốc previous_posts_link()
và next_posts_link()
WP sẽ hoạt động.
Nếu không, làm thế nào tôi có thể tái tạo các chức năng liên kết bài trước và tiếp theo?
Tôi thực sự sẽ đánh giá cao bất kỳ sự giúp đỡ và lời khuyên! Tôi hoàn toàn bế tắc với điều này.
Cảm ơn :)
LƯU Ý: Tôi vừa nhận thấy rằng previous_posts_link()
nó hoạt động chính xác trên tất cả các trang, nhưng no idea why
trong trường hợp này, tại sao next_posts_link
không hoạt động: S
Đây là mã:
$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>
}