Related Posts loop – offset

Eu tenho trabalhado nisso por muitas, muitas, muitas semanas já. Eu já fiz perguntas semelhantes aqui e em outros lugares, mas ninguém parece ser capaz de resolver esse problema. Talvez ainda não seja possível?

Minhas postagens relacionadas são baseadas em tags e o código se parece com isto:

ID); if ($tags) { $tag_ids = array(); foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id; $args=array( 'tag__in' => $tag_ids, 'post__not_in' => array($post->ID), 'showposts'=>4, // Number of related posts that will be shown. 'caller_get_posts'=>1 ); $my_query = new wp_query($args); if( $my_query->have_posts() ) { while ($my_query->have_posts()) { $my_query->the_post(); ?> 

Eu quero que os usuários possam se deslocar para as próximas 4 postagens relacionadas depois disso, e novamente para o próximo 4. Um total de 12 posts. Estou usando jQuery Tools ‘Scrollable para fazer isso.

Cada loop irá sentar-se entre divs de modo que scrollable seja onde cortar o conteúdo e onde rolar.

Tudo o que eu pude encontrar sobre compensar seu loop foi o seguinte:

  // FIRST LOOP: display posts 1 thru 4        // SECOND LOOP: display posts 5 thru 8        // THIRD LOOP: display posts 9 thru 12        

Eu tentei, mas continuo recebendo mensagens de erro. Basicamente eu não tenho idéia de como combinar meu código original com aquele.

Ou existe uma solução mais elegante?

EDITAR: ACTUALIZAÇÃO 17 de outubro

O código basicamente funciona, há apenas um PROBLEMA ENORME. Ele agora produz as mesmas postagens relacionadas em cada input, mesmo em postagens que nem possuem tags. Além disso, confunde os comentários também! Não exibe o número correto de comentários e mostra os pingbacks de outra postagem em vez disso. Alguma idéia de por quê?

 

Related Posts

$tag_ids, 'post__not_in' => array($post->ID), 'showposts'=>12, // get all the posts at once, then split them up afterwards. 'ignore_sticky_posts' => 1 ); $posts_per_block = 4; $my_query = new wp_query($args); ?>
have_posts() ) : while ($my_query->have_posts()) : $my_query->the_post(); if ( ($my_query->current_post) == 0 ) { echo '
'; } elseif ( ( $my_query->current_post ) % $posts_per_block == 0 ) { echo '
'; //close and open a new div every nth post } elseif ( ( $my_query->current_post + 1) == ( $my_query->post_count ) ) { echo '
'; //close the div if you run out of posts } ?>

Eu realmente espero que finalmente alguém possa me ajudar a descobrir isso.

Muito bem adiantado.

Solutions Collecting From Web of "Related Posts loop – offset"

Quer dizer que você deseja exibir três blocos de quatro posts relacionados e virar entre os três blocos usando scrollable?

Em caso afirmativo, a ajuda abaixo (não testada)? Supondo que o scrollable precisa de seu conteúdo em divs separados, você poderia fazer algo assim. Deve produzir uma div divisória com até três divs dentro, cada uma contendo 4 posts … supondo que você tenha 12 posts para exibição. se não, deve morrer graciosamente sem deixar nenhum divs pendurados abertos.

 < ?php $args=array( 'tag__in' => $tag_ids, 'post__not_in' => array($post->ID), 'showposts'=>12, // get all the posts at once, then split them up afterwards. 'ignore_sticky_posts' => 1 ); $posts_per_block = 4; $my_query = new wp_query($args); ?> 
< ?php if( $my_query->have_posts() ) : while ($my_query->have_posts()) : $my_query->the_post(); if ( ($my_query->current_post) == 0 ) { echo '
'; } else if ( ( $my_query->current_post ) % $posts_per_block == 0 ) { echo '
'; //close and open a new div every nth post } the_title(); the_content(); //any other post stuff here if ( ( $my_query->current_post + 1) == ( $my_query->post_count ) ) { echo '
'; //close the div if you run out of posts } endwhile; endif; ?>

NB Você está usando algum código obsoleto em seu exemplo, por exemplo, ‘caller_get_posts’ e wp_start () – você deve usar ‘ignore_sticky_posts’ e the_post (), respectivamente.

EDITAR : moveu o fechamento das divs internas para depois, não antes do conteúdo do post. oops

Você pode simplesmente tentar o código de aqui Mostrar postagem relacionada no WordPress

Eu acho que você não está terminando cada consulta por

 wp_reset_query(); 

Espero que ajude.