Eu tenho minha própria string SQL para selecionar postagens de Tipo de Postagem Customizada com a cláusula WHERE específica. Usei o deslocamento e o limite para retornar as postagens apropriadas, dependendo da página exibida. Está funcionando bem.
Agora, eu gostaria de fazer previous_posts_link()
e next_posts_link()
funções de trabalho. Ambos são chamados a partir dos get_posts_nav_link
quais usos global $wp_query
.
Existe uma maneira de eu reatribuir global $wp_query
com minha string ou $wpdb->get_results
resultados SQL ou qualquer outra coisa? Portanto, as funções nativas previous_posts_link()
e next_posts_link()
WP funcionariam.
Caso contrário, como posso reproduzir as funções de link anterior e posterior?
Eu realmente aprecio qualquer ajuda e conselho! Estou totalmente preso a isso.
Obrigado :)
NOTA: Acabei de notar que previous_posts_link()
está funcionando corretamente em todas as páginas, mas, no idea why
nesse caso, por next_posts_link
que não funciona: S
Aqui está o 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>
}
fonte
Dê uma olhada em Consultas personalizadas - que permitem modificar a chamada wp_query de muitas maneiras interessantes e úteis, e enviar os resultados de volta ao seu objeto de consulta global.
fonte
Expandindo a resposta de Anu. Em vez de confiar na sua consulta sql personalizada, você pode usar a classe WP_Query e deixar o WordPress lidar com todo o trabalho pesado de SQL. Isso certamente resolveria seu problema de navegação.
Exemplo de consulta para o tipo de postagem de filme em sua meta_key _expiry_date:
fonte
WP_Query
classe, pois preciso construir meu próprio SQL personalizado. Eu cheguei lá no final, ver a minha resposta se interessado :)Modelo:
fonte
query_posts
e outra comWP_Query