有没有更好的方法来处理wordpress中的两个查询?

时间:2019-08-30 00:37:09

标签: wordpress wordpress-theming

在我的自定义主题主页(页面)中,我将显示博客中的四篇最新文章,其中一篇带有突出的亮点(不同的CSS等),另一篇作为普通的引导卡。由于我不习惯进行WP开发,因此我有点陷入查询和循环中。我得到第一个查询,但随后添加第二个查询似乎无法正常工作-因为,原因是我做错了。

现在,主要思想是编写两个单独的查询,分别是:$query_destaque$query_seguinte。在其中的每一个中,我都设置了不同的参数,因此我可以选择要加载的帖子以及加载的位置。突出显示的将是最新的,其余的将跟随。 就是说,我想到了要用类别标记突出显示的那个类别,这样我就只能在第一个查询中加载该cat-id并将其限制为显示单个帖子。然后,我将在第二个类别中没有针对类别的过滤器,允许它显示三个帖子并将其偏移一个,这样就可以避免第一个。 我意识到无论如何,如果要加载四个最新的,无论是先加载一个,然后在第二个块上进行偏移,它都可以工作。但问题是我不确定将来是否足够,因为我们可以选择突出显示某个特定的内容,即使有新帖子也不会改变。

我正在使用presspack,这是一个基于Webpack的带有引导程序的Docker映像。主页中的代码是这样的:

<div class="row mt-5"> <!-- ROW START -->
      <?php // FIRST QUERY - DESTAQUES
      $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
      $args_destaque = array(
        'post_type' => array('post'), 
        'category__in' => array('23'), 
        'post_status' => 'publish', 
        'order' => 'DESC', 
        'orderby' => 'date', 
        'posts_per_page' => 1, 
        'paged' => $paged, 
      );

      // WP_Query
      $query_destaque = new WP_Query( $args_destaque );
      if ($query_destaque->have_posts()) : // The First Loop
      ?>
      <div class="col-lg-7 mb-3 mb-lg-0 D-animated D-wow fadeInLeft">

      <?php 
      while ($query_destaque->have_posts()): $query_destaque->the_post();
      ?>
        <div class="blog-post-destaque rounded">
          <div class="post-img rounded">
            <?php the_post_thumbnail('medium_large', array('class' => 'w-100 img-fluid')); ?>
            <h5 class="destaque-tag mt-n3 mt-lg-0">Em destaque</h5>
            <h3 class="post-title"><a href="<?php the_permalink(); ?>"><?php echo home_post_title('76'); ?></a></h3>
          </div>
          <div class="post-card pb-3">
            <h4 class="post-category">Em: <a href="">Fisioterapia Obstétrica</a> - <?php the_time("F d, Y"); ?></h4>
            <p class="post-resumo"><?php the_excerpt(); ?></p>
          </div>     
        </div>
        <?php endwhile; wp_reset_query(); ?> <?php endif; ?>
      </div>

      <?php
      $args_seguintes = array(
        'post_type' => array('post'), 
        'post_status' => 'publish', 
        'order' => 'DESC', 
        'orderby' => 'date', 
        'posts_per_page' => 3, 
        'paged' => $paged, 
        'offset' => -1,
      );

      $query_seguintes = new WP_Query( $args_seguintes );
      if ($query_seguintes->have_posts()) : // Second Loop
      ?>
      <div class="col-lg-5 D-animated D-wow fadeInRight">
      <?php 
      while ($query_seguintes->have_posts()): $query_seguintes->the_post();
      ?>
        <div class="blog-post-normal mb-3 rounded">
          <div class="card-horizontal">
          <div class="post-img float-left">
          <?php the_post_thumbnail('medium_large', array('class' => 'h-100 img-fluid')); ?>
          </div>
          <div class="post-card float-right p-3">
            <h5 class="post-category ">
              <a href="<?php get_category_link(); ?>"><?php get_category(); ?></a>
            </h5>
            <h2 class="post-title"><a href="<?php the_permalink(); ?>"><?php echo home_post_title('76'); ?></a></h2>
            <p class="post-resumo"><?php the_excerpt(); ?></p>
              <a href="#" class="btn btn-warning float-right d-none d-lg-block">Clique para ler mais</a>
              <a href="#" class="float-right d-lg-none">Clique para ler mais</a>

          </div>
        </div>
      <?php endwhile; wp_reset_query(); ?> 
      <?php endif; ?>
      </div>

    </div> <!--- ROW END ---->

请注意,我正在获得带有自定义句柄的帖子标题,该句柄会计算原始帖子标题字符的长度,如果大于传递的值,它将加载一个自定义字段,我可以在其中设置一个较小的标题。这样我们可以避免省略号。

您会看到第一个查询和第二个查询之间的一些差异,例如:第二个查询没有这个$paged,因为我试图解决它的出现。

Screenshot

如您在上图中所看到的,页面在左列中以高亮显示了一个帖子,然后在右边的一个帖子中加载了一个帖子,应该是三个,只是图像,没有文本或链接。页脚也消失了。我猜循环有问题,因此会杀死其余的代码。控制台上没有任何显示。

不确定发生了什么,但是我很奇怪,我一直在看这段代码很久了,以至于我看不到任何错误。

0 个答案:

没有答案