Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rsvaz83

Queries duplicadas ao usar dois Loops em páginas de categorias

Recommended Posts

Nas página de categorias do meu site Wordpress, uso dois Loop, o padrão e abaixo dele um new WP_Query. No primeiro é exibido posts que ainda vão expirar ou que não contenham expiração, enquanto no segundo eu só mostro os posts expirados.

 

Ao usar os dois loops, quando uso o plugin Query Monitor, ele me diz que há Queries duplicadas, mostrando a seguinte mensagem:

 

Query

 

SELECT term_taxonomy_id
FROM wp_4sy3yu_term_taxonomy
WHERE taxonomy = 'category'
AND term_id IN (26)

 

Callers

 

W3_Db->default_query

2 calls

 

Potential Troublemakers

 

WP->query_posts

1 call
WP_Query->__construct
1 call

 

 

Como faço para corrigir isso?

 

Abaixo estão os loops que uso:

 

PRE GET POSTS
-------------
    // Pre Get Posts _Expiration-Date
    add_action( 'pre_get_posts', function( $q ) {
    if ( (is_home() || is_category() || is_tag() || is_search()) && $q->is_main_query() && !is_admin() ){
    $q->set( 'post_type', array( 'post', 'post-cp' ) );
    $date_now = date_i18n('Y-m-d H:i:s');
    $meta_query = array(
    'relation' => 'OR',
    array(
    'key'     => '_expiration-date',
    'compare' => 'NOT EXISTS',
    ),
    array(
    'key'     => '_expiration-date',
    'value'   => strtotime($date_now),
    'compare' => '>=',
    'type' => 'NUMERIC',
    ),
    );
    $q->set( 'meta_query', $meta_query );
   
    return $q;
    }
    });
    // End
new WP_Query
------------

 

   <?php
    $date_now = date_i18n('Y-m-d H:i:s');
    $meta_query = array(
      'post_type'  => array('post','post-cp'),
      'category__in' => get_queried_object()->term_id,
      'meta_key'   => '_expiration-date',
      'posts_per_page' => '20',
      'orderby' => 'meta_value_num',
      'meta_query' => array(
      'key'     => '_expiration-date',
      'value'   => strtotime($date_now),
      'compare' => '<',
      'type' => 'NUMERIC',
    ));
    
    $query = new WP_Query( $meta_query );
      if ( $query->have_posts() ) : 
    
     while ( $query->have_posts() ) : $query->the_post();
   
    get_template_part( 'content', get_post_format() );; 
   
     endwhile;
    
    wp_reset_postdata();
   
      endif; 
    ?>

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.