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_link
qué usos global $wp_query
.
¿Hay alguna forma de reasignar global $wp_query
con mi cadena SQL o $wpdb->get_results
resultados 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 why
en este caso, por qué next_posts_link
no 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_Query
clase ya que necesito construir mi propio SQL personalizado. Llegué al final, vea mi respuesta si está interesado :)Modelo:
fuente
query_posts
y otra con?WP_Query