Tengo mi propia cadena SQL para seleccionar publicaciones de tipo de publicación personalizada con una cláusula WHERE específica. He usado el desplazamiento y el límite para devolver las publicaciones apropiadas según la página que se muestre. Eso está funcionando bien.
Ahora, me gustaría hacer previous_posts_link()y next_posts_link()funciones de trabajo. Ambos se llaman de get_posts_nav_linkqué usos global $wp_query.
¿Hay alguna forma de reasignar global $wp_querycon mi cadena SQL o $wpdb->get_resultsresultados o cualquier otra cosa? Entonces las funciones nativas previous_posts_link()y next_posts_link()WP funcionarían.
Si no es así, ¿cómo puedo reproducir las funciones del enlace anterior y siguiente?
Realmente agradecería cualquier ayuda y consejo! Estoy totalmente atrapado con esto. 
Gracias :)
NOTA: Acabo de notar que previous_posts_link()funciona correctamente en todas las páginas, pero no idea whyen este caso, por qué next_posts_linkno funciona: S
Aquí está el código:
$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>
}fuente

Eche un vistazo a las consultas personalizadas , que le permiten modificar la llamada wp_query de muchas maneras interesantes y útiles, y devolver los resultados a su objeto de consulta global.
fuente
Ampliando la respuesta de Anu. En lugar de confiar en su consulta SQL personalizada, puede usar la clase WP_Query y dejar que WordPress maneje todo el pesado levantamiento de SQL. Esto seguramente resolvería su problema de navegación.
Ejemplo de consulta para el tipo de publicación de película dentro de su _expiry_date meta_key:
fuente
WP_Queryclase ya que necesito construir mi propio SQL personalizado. Llegué al final, vea mi respuesta si está interesado :)Modelo:
fuente
query_postsy otra con?WP_Query