我有自己的SQL字符串,可以选择带有特定WHERE子句的Custom Post Type帖子。我使用了offset和limit根据所显示的页面返回适当的帖子。很好
现在,我想提出previous_posts_link()
和next_posts_link()
功能的工作。它们都被称为get_posts_nav_link
从哪使用global $wp_query
。
有没有一种方法可以重新分配global $wp_query
我的SQL字符串或$wpdb->get_results
结果或其他任何内容?因此,本机previous_posts_link()
和next_posts_link()
WP函数将起作用。
如果没有,我该如何重现上一个和下一个后链接功能?
我将不胜感激任何帮助和建议!我完全坚持了这一点。
谢谢 :)
注意:我刚刚注意到previous_posts_link()
在所有页面上都可以正常工作,但是no idea why
在这种情况下,为什么next_posts_link
不起作用:S
这是代码:
$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>
}