特定のWHERE句を含むカスタム投稿タイプの投稿を選択するためのSQL文字列があります。オフセットと制限を使用して、表示されているページに応じて適切な投稿を返しました。それはうまくいきます。
今、私はしたいと思いますprevious_posts_link()し、next_posts_link()機能の仕事。どちらもから呼び出されget_posts_nav_linkますglobal $wp_query。
global $wp_querySQL文字列や$wpdb->get_results結果などを使って再割り当てできる方法はありますか?したがって、ネイティブ関数previous_posts_link()とnext_posts_link()WP関数は機能します。
そうでない場合、prevおよびnext postリンク機能をどのように再現できますか?
私はどんな助けとアドバイスにも本当に感謝します!私はこれに完全にこだわっています。
ありがとう:)
注:私はちょうどそれ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>
}