Mam własny ciąg SQL, aby wybrać posty z niestandardowym typem postu z określoną klauzulą WHERE. Użyłem przesunięcia i limitu, aby zwrócić odpowiednie posty w zależności od wyświetlanej strony. To działa dobrze.
Teraz chciałbym zrobić previous_posts_link()
i next_posts_link()
praca funkcje. Oba są wywoływane z get_posts_nav_link
których zastosowań global $wp_query
.
Czy istnieje sposób, aby ponownie przypisać global $wp_query
ciąg SQL, $wpdb->get_results
wyniki lub cokolwiek innego? Więc działałyby funkcje natywne previous_posts_link()
i next_posts_link()
WP.
Jeśli nie, w jaki sposób mogę odtworzyć poprzedni i następny post link?
Byłbym wdzięczny za wszelką pomoc i porady! Utknąłem w tym całkowicie.
Dzięki :)
UWAGA: Właśnie zauważyłem, że previous_posts_link()
działa poprawnie na wszystkich stronach, ale no idea why
w tym przypadku, dlaczego next_posts_link
nie działa: S.
Oto kod:
$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>
}
źródło
Rzuć okiem na zapytania niestandardowe - które pozwalają modyfikować wywołanie wp_query na wiele interesujących i użytecznych sposobów, a następnie wypychać wyniki z powrotem do globalnego obiektu zapytania.
źródło
Rozwijanie odpowiedzi Anu. Zamiast polegać na niestandardowym zapytaniu SQL, możesz użyć klasy WP_Query i pozwolić WordPressowi obsługiwać wszystkie ciężkie zadania SQL. To z pewnością rozwiązałoby problem z nawigacją.
Przykładowa kwerenda dotycząca typu posta filmowego w twoim kluczu meta_data ważności:
źródło
WP_Query
zajęciach, ponieważ muszę zbudować własny niestandardowy kod SQL. Dotarłem tam na koniec, zobacz moją odpowiedź, jeśli zainteresowany :)Szablon:
źródło
query_posts
jednym, a drugie zWP_Query