Posts WordPress randoms fora do loop principal sem posts duplicados. Como?

Bem, eu não consigo entender isso …

Eu tenho esse WordPress que uso como blog de galeria de fotos.

Eu tenho uma configuração básica usando o loop padrão principal para posts.

Como isso:

 //the post  Not Found  

Na barra lateral e em qualquer lugar, eu quero aparecer posts randoms.

Eu consegui fazer isso. Com isso:

   //the post  

Parece incrível! Em teoria.

Há posts duplicados em todo o lugar. E isso só parece estúpido.

Eu li muitos artigos, mas eu simplesmente não consigo conseguir que ele funcione 🙁

Qualquer ajuda será muito apreciada.

 Try this code for random post. 
    5, 'orderby' => 'rand' ); $rand_posts = get_posts( $args ); foreach( $rand_posts as $post ) : ?>
Or You can get help from this url mention below http://codex.wordpress.org/Template_Tags/get_posts

Depois de uma boa noite de sono, aqui está o que fiz:

Criando matriz com ID de postagem:

  

O loop principal onde no final eu gravar o ID da postagem para a matriz:

  //the post ID; endwhile; ?>  Not Found  

E o código postal random usando post__not_in para evitar duplicatas e novamente a gravação da ID da publicação:

  1, 'orderby' => 'rand', 'post__not_in' => $already_posted ); $rand_posts = get_posts( $args ); foreach( $rand_posts as $post ) : ?> //the post ID; endforeach; ?> 

Funciona sempre!

Você pode fazer coisas incríveis com isso 🙂

Obrigado a paislee e a Arvind Pal por ajudar.

Ignorar as duplicatas possíveis lembrando as IDs exibidas do primeiro loop

 $displayed = array(); // create an array that we'll use associatively 

No seu primeiro ciclo, cada vez:

 $displayed[get_the_ID()] = TRUE; // <-- save all post IDs in here 

Mude sua abertura de loop aleatória como esta:

  

Devido à aleatoriedade no número de duplicatas, você pode querer alterar a sua consulta para que ela obtenha todas as postagens e mude o segundo loop para break uma vez que o número desejado de posts randoms seja atingido.

Notas

  • showposts é depraçado. Substitua showposts=1 por posts_per_page=-1