특정 WHERE 절이있는 사용자 정의 게시물 유형 게시물을 선택하는 자체 SQL 문자열이 있습니다. 표시되는 페이지에 따라 오프셋과 제한을 사용하여 적절한 게시물을 반환했습니다. 잘 작동합니다.
지금, 나는하고 싶습니다 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
작동하지 않습니다.
코드는 다음과 같습니다.
$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>
}