Como posso obter os primeiros 50% de todas as postagens (dentro de um tipo de postagem personalizado)?

Estou tentando fazer um layout de várias colunas. Visto como a adoção CSS3 de layouts de colunas ainda é magra no chão, eu estava pensando que talvez eu pudesse pegar a primeira metade de todas as minhas postagens (e depois a segunda) e adicioná-las em seus próprios elementos UL.

Não tenho certeza de como / se isso é possível com um Wp_Query?

Quero terminar com minhas postagens em ordem alfabética, mas dividido em duas listas (usando duas perguntas, eu acho), assim:

  • a
  • . . . m
  • n
  • . . . z

Eu poderia então desenhar cada lista com CSS e obter um tipo de layout como um layout de várias colunas no CSS3.

Alguém tem alguma idéia sobre como estruturar minhas consultas aqui?

Edite para explicar como isso não é uma duplicação

Trata-se de formar um layout de duas colunas com certeza , mas a questão é muito diferente: “como obter metade de todas as postagens”, não como resolver um caso de uso de layout muito específico, como é o “duplicado” vinculado. (o que não encontrei por causa da não ser a mesma pergunta).

Além disso, eu estava procurando postagens ordenadas alfabeticamente, descendendo verticalmente, não A | B, C | D como no exemplo.

Solutions Collecting From Web of "Como posso obter os primeiros 50% de todas as postagens (dentro de um tipo de postagem personalizado)?"

Se quiser dividi-lo em duas listas, você pode usar wp_count_posts() para contar o número de suas postagens publicadas

 $total_cpt = wp_count_posts('cpt')->publish; 

divida-o por 2:

 $half_of_cpt = sprintf( '%d', $total_cpt / 2 ); 

e então você poderia usar esse número no loop para dividir sua lista.

Os seguintes

  • funcionará para cada consulta (mesmo com paginação), por isso é mais flexível
  • precisa apenas de um loop (como a melhor implementação de wp_count_posts )
  • não ligue para outra consulta db adicional, como wp_count_posts , então é mais rápido
  • não precisa de nenhum outro loop variável, então é mais simples

     $args = array('post_type'=>'cpt', 'orderby'=>'title', 'order'=>'ASC'); // any args here $query = new WP_Query($args); if ( $query->have_posts() ) : echo '
      '; while ( $query->have_posts() ) : $query->the_post(); echo '
    • ' . get_the_title() . '
    • '; if ( ( $query->current_post + 1 ) == ceil($query->post_count / 2) ) echo '
      '; endwhile; echo '
    '; endif;