【发布时间】:2014-07-14 13:56:32
【问题描述】:
我有一个自定义帖子类型(称为“折扣”),我想在第 23 个主题中显示它。我创建了一个名为 discount-page.php 的自定义页面文件来为此帖子类型创建我自己的模板。但是,我不确定我需要在哪里放置 wp_query 代码。这是默认 page.php 的外观,并添加了新模板名称:
<div id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php /* The loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<header class="entry-header">
<?php if ( has_post_thumbnail() && ! post_password_required() ) : ?>
<div class="entry-thumbnail">
<?php the_post_thumbnail(); ?>
</div>
<?php endif; ?>
<h1 class="entry-title"><?php the_title(); ?></h1>
</header><!-- .entry-header -->
<div class="entry-content">
<?php the_content(); ?>
<?php wp_link_pages( array( 'before' => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentythirteen' ) . '</span>', 'after' => '</div>', 'link_before' => '<span>', 'link_after' => '</span>' ) ); ?>
</div><!-- .entry-content -->
<footer class="entry-meta">
<?php edit_post_link( __( 'Edit', 'twentythirteen' ), '<span class="edit-link">', '</span>' ); ?>
</footer><!-- .entry-meta -->
</article><!-- #post -->
<?php comments_template(); ?>
<?php endwhile; ?>
</div><!-- #content -->
</div><!-- #primary -->
现在,我很确定为了让我的帖子真正显示其内容,我需要将此代码块添加到 discount-page.php:
<?php
$query = new WP_Query( array('post_type' => 'discount', 'posts_per_page' => 5 ) );
while ( $query->have_posts() ) : $query->the_post(); ?>
// Your code e.g. "the_content();"
<?php endif; wp_reset_postdata(); ?>
<?php endwhile; ?>
我只是不知道在哪里添加它?无论我在哪里添加它似乎都会破坏页面。
【问题讨论】:
-
您需要将它放在主循环之外,无论是之前还是之后。所以在此之前:
<?php /* The loop */ ?>或在此之后:<?php endwhile; ?>。 -
另外,将
endif;从这一行<?php endif; wp_reset_postdata(); ?>与endwhile;并删除自定义循环中的最后一行,即:<?php endwhile; ?>。 -
太棒了,谢谢。所以这就是我最终得到的代码:pastebin.com/VNnukriV 但它似乎破坏了我的页面。知道我做错了什么吗?
-
您的 pastebin 代码不正确,请给我几分钟时间整理一下,我会再次发布。
-
除了自定义循环之外,您还希望拥有主循环,还是只有自定义循环?