J'ai ma propre chaîne SQL pour sélectionner les publications de type de publication personnalisé avec une clause WHERE spécifique. J'ai utilisé le décalage et la limite pour renvoyer les messages appropriés en fonction de la page affichée. Ça marche bien.
Maintenant, je voudrais faire fonctionner previous_posts_link()
et les next_posts_link()
fonctions. Ils sont tous deux appelés à partir de get_posts_nav_link
quelles utilisations global $wp_query
.
Existe-t-il un moyen de réaffecter global $wp_query
ma chaîne SQL ou mes $wpdb->get_results
résultats ou autre chose? Ainsi, les fonctions natives previous_posts_link()
et next_posts_link()
WP fonctionneraient.
Sinon, comment puis-je reproduire les fonctions de lien précédent et suivant?
J'apprécierais vraiment toute aide et conseil! Je suis totalement coincé avec ça.
Merci :)
REMARQUE: je viens de remarquer que cela previous_posts_link()
fonctionne correctement sur toutes les pages, mais no idea why
dans ce cas, pourquoi next_posts_link
ne fonctionne pas: S
Voici le code:
$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>
}