使用wp_Query为CPT修改index.php中的循环

时间:2016-10-14 作者:Ernie

我得到了一个基本的总括主题,可以根据个人需要进行处理和修改。我添加了一些自定义帖子类型。修改索引时遇到问题。php页面以使用我的新CPT。

例如,一个CPT被称为beach\\u clean页面。它在一个叫做beachclean的页面上。php并将其作为模板页,如下所示:

<?php 
/*
  Template Name: Beach Clean Page
*/
get_header();  ?>
通常,我会像这样设置一个wp\\U查询来检索特定的CPT信息:

<?php
$args = array(
  \'post_type\' => \'beach_clean\'
);
$the_query = new WP_Query( $args );
?>
然后修改循环,如下所示:

<?php if ( have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
然而,我不确定如何根据原始代码的编写方式来完成。

有人能帮我看看如何在编写代码的方式中插入对我的CPT的查询吗?

请,谢谢!

这是索引。php页面:

<?php
    // Start the Loop.
    $index = 1;
    $total_results = $wp_query->post_count;
    while ( have_posts() ) : the_post();
     if ($index == 1):
        get_template_part(\'template-parts/post\', \'hero\');
        if ($total_results > 1):
        ?>
            <section class="panel">
                <div class="container">
                    <div class="row">
                        <div class="col-xs-12">
                        <div class="media-block-flex-wrap flex-top">


        <?php endif; ?>
     <?php else: ?>

          <?php if (has_post_thumbnail()) {
              get_template_part(\'template-parts/content\', \'media_block_top\');
          } else { get_template_part(\'template-parts/content\', \'media_block_no_img\');
            } ?>

     <?php endif; ?>
     <?php
     $index++;
     endwhile; 

         if ($total_results > 1): ?>
                </div> <!-- Media Block -->
            </div>
        </div> <!-- Row -->
        <div class="row">
            <div class="col-xs-12 center-containing-text">
                <?php
                // Previous/next page navigation.
                the_posts_pagination( array(
                    \'screen_reader_text\' => " ",
                    \'prev_text\'          => __( \'Previous page\', \'twentysixteen\' ),
                    \'next_text\'          => __( \'Next page\', \'twentysixteen\' ),
                    \'before_page_number\' => \'<span class="meta-nav screen-reader-text">\' . __( \'\', \'twentysixteen\' ) . \' </span>\',
                ) );
                 ?>
            </div>
        </div>
        </div>
    </section>
<?php endif; ?>

1 个回复
最合适的回答,由SO网友:stims 整理而成

我建议首先添加一个名为

archive-beach_clean.php

到您的主题根目录。

然后将该索引文件中的所有代码复制并粘贴到其中。

之后,如果您还没有这样做,请添加此参数,\'has_archive\' => true, 对于register\\u post\\u type函数和同一数组中使用的参数数组,请确保rewrite 未设置为false。

然后转到wordpress管理区域设置->永久链接,并确保Post name ,然后单击“保存”(这将刷新永久链接,以防帖子类型尚未注册,现在将注册)。

最后,您可以在此处访问新页面http://your_domain.com/beach_clean

如果你想把子弹换成beach_clean, 添加rewrite 参数,并使其值为array(\'slug\' => \'your-custom-slug\')