Exibir post aleatório no WordPress sem repetições

  • Autor Autor YeltsinReyes
  • Data de início Data de início
Este tópico foi traduzido automaticamente do espanhol. Ver original
YeltsinReyes

YeltsinReyes

Mi
Verificación en dos pasos activada
Verificado por Binance
Olá... tenho o código que é mais ou menos este...
PHP:
<?php $recent = new WP_Query("showposts=1&orderby=rand"); while($recent->have_posts()) : $recent->the_post();?>

<?php the_permalink() ?>

<?php the_title(); ?>

<?php endwhile; ?>

O código eu tenho configurado para que só mostre 1 post aleatório, mas quero que ao recarregar a página não se possa repetir nenhum post... isso é possível fazer.????
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Guarde uma session array com os IDs dos posts e antes de mostrá-los verifique se já foi exibido 🙂
 
Guarde uma session array com os IDs dos posts e antes de mostrá-los verifique se já foi exibido 🙂

Pode publicar o código de como ficaria para testar se funcionou.??
é que não sou programador, só me viro um pouco.!!
 
A verdade é que não programo para WP. Se eu publicar em PHP você ficaria mais perdido, hehe.
Você teria que esperar alguém que saiba de WP aparecer. Eu não tenho ideia das funções que ele tem.
Mil desculpas
 
Sim, claro... Se você remover o wp supercache / w3 total cache, não vai se repetir. Se não, você pode tentar com esta solução, que chama uma página externa com AJAX e carrega o post:

Display a Random Post (with AJAX Refresh) | Digging into WordPress


Cara, olha, eu tenho um código que faz com que o post que é exibido aleatoriamente seja publicado automaticamente na minha fan page do Facebook e, a cada x tempo, a página é atualizada para carregar outro post e publicar novamente na fan page... então, às vezes, ele repete 1 post muito rapidamente e é por isso que não quero que se repitam tanto lolx XD
 
Vamos ver se entendi, o problema não é do cache, certo?

Quero dizer: O post é exibido de forma aleatória automaticamente, mas você não quer que ele se repita de jeito nenhum, estou errado?

Cara, olha, tenho um código que faz com que o post exibido de forma aleatória seja publicado automaticamente na minha fan page do Facebook e, a cada x tempo, a página é atualizada para carregar outro post e voltar a publicar na fan page... então, às vezes, ele repete 1 post muito rapidamente e por isso não quero que eles se repitam tanto lolx XD
 
Vamos ver se entendi, o problema não é do cache, não é?

Quero dizer: O post é exibido aleatoriamente de forma automática, mas você não quer que ele se repita de jeito nenhum, estou errado?


Exato, cara... tenho uma página única que mostra apenas 1 post e a recarrego através de um cron job do cPanel e, cada vez que a página é recarregada, ela mostra 1 post diferente que é publicado na minha fan page e, às vezes, eles se repetem muito seguidamente e é isso que não quero que aconteça.!!
 
Você poderia, por exemplo.

Exibir os posts em ordem de data ou por ordem alfabética.

Depois, você cria um transient ou uma opção no banco de dados, coloca um número (1), depois no loop, aumenta o valor com $numero++ cada vez que for exibido, e limita o loop para que só exiba um post.

Depois, você adiciona o offset, que seria o número no banco de dados, e também precisaria de algo, por exemplo, para resetar o número depois que ele ficar muito grande.

if ($offset > 1000) {
set_option('offset', 1);
}

É só um exemplo.

[MENTION=1597]YeltsinGraphs[/MENTION]
 
Última edição:
Você poderia, por exemplo.

Exibir os posts em ordem de data ou por ordem alfabética.

Depois, você cria um transient ou uma opção no banco de dados, coloca um número (1), depois no loop, aumenta o valor com $numero++ cada vez que for exibido, e limita o loop para que só exiba um post.

Depois, você adiciona o offset, que seria o número no banco de dados, e também precisaria de algo, por exemplo, para resetar o número depois que ele ficar muito grande.

if ($offset > 1000) {
set_option('offset', 1);
}

É só um exemplo.

[MENTION=1597]YeltsinGraphs[/MENTION]

ok cara, pode me ajudar com esse código? você tem ele completo à mão???
 
Seria necessário armazenar o ID do último post de alguma maneira (seja via get_option/add_option no banco de dados, ou via arquivo), e excluir esse último post na query.
 
Voltar
Topo