Wordpress:归档多种帖子类型

Posted

技术标签:

【中文标题】Wordpress:归档多种帖子类型【英文标题】:Wordpress: archive multiple post types 【发布时间】:2013-02-19 11:32:36 【问题描述】:

我正在尝试确定是否可以在一个页面上存档多个帖子类型,我为每个帖子类型都有一个单独的存档,工作正常,但我还想要另一个可以存档它们的页面。我对 WP 还是很陌生,所以我完全不确定这是否可行,但到目前为止我所做的工作并不正常:

    <?php query_posts('post_type=type01'); ?>

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

    <a href="<?php the_permalink(); ?>">
    <div class="type01-div" data-value="<?php
$date = DateTime::createFromFormat('dnY', get_field('type01_date_select'));
echo $date->format('dnY');
?>">STUFF HERE</div>
    </a>

    <?php endwhile; endif; ?>


    <?php query_posts('post_type=type02'); ?>

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

    <a href="<?php the_permalink(); ?>">
    <div class="type02-div" data-value="<?php
$date = DateTime::createFromFormat('dnY', get_field('type02_date_select'));
echo $date->format('dnY');
?>">STUFF HERE</div>
    </a>

    <?php endwhile; endif; ?>

所以'type01' 的所有帖子都显示出来了,但'type02' 的帖子却没有。可以同时存档吗?但在单独的循环中,因为每种帖子类型都将包装在不同的 div 类中。

【问题讨论】:

我不确定.. 但是尝试在 endif 之后添加 wp_reset_query();在您的新 query_posts 之前。作为旁注,请查看此链接:codex.wordpress.org/Function_Reference/wp_reset_query 它建议您使用另一种方法来查询帖子。 仅供参考,有一个 WP 特定的 StackExchange 站点:wordpress.stackexchange.com - 尽管据我所知,这些问题在这里也很受欢迎(只要与编程相关) 【参考方案1】:

您需要为下一个循环重置查询,在循环之间添加:

<?php wp_reset_query(); ?>

我有一个类似的页面,并使用此代码来做到这一点:

<h2>type01</h2>
<?php
$args = array(
    'post_type' => array( 'type01' ),
    'order' => 'asc',
    'orderby' => 'title',
    'posts_per_page' => -1
);

$loop = new WP_Query( $args );?>
<?php while ( $loop->have_posts() ) : $loop->the_post();?>

        <li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>

<?php endwhile; ?>

<?php wp_reset_query(); ?>

</ul>

<h2>type02</h2>
<ul>
<?php
$args = array(
    'post_type' => array( 'type02' ),
    'order' => 'asc',
    'orderby' => 'title',
    'posts_per_page' => -1
);

$loop = new WP_Query( $args );?>
<?php while ( $loop->have_posts() ) : $loop->the_post();?>

        <li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>

<?php endwhile; ?>

查看此链接了解更多信息:http://codex.wordpress.org/Function_Reference/wp_reset_query

【讨论】:

啊,成功了!有一个小问题,因为我在页面上有 2 个&lt;?php $date = DateTime::createFromFormat('dnY', get_field('field_name')); echo $date-&gt;format('dnY'); ?&gt;,取出第二个修复了它,但我需要它们两个,因为它们引用不同的日期? 你能再贴一些你的代码吗?你用的是什么PHP版本? 我已经编辑了帖子以添加到 php 日期函数中,顺便说一下,我的新代码现在采用您的格式,我只是想向您展示如何使用 php 日期标签以及为什么他们可能不工作? 我已将 php 放入 jsfiddle:jsfiddle.net/UVeNK 就像我说的将 $date 的第二个实例修复它,但我需要它们,因为它们引用来自不同帖子的不同日期类型。有没有他们两个都在那里?

以上是关于Wordpress:归档多种帖子类型的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress - 用于多种帖子类型的分类法 - 如何仅为一个获取_terms / get_categories?

javascript WordPress查询多种帖子类型(REST API),对REST API的请求 - 查询多个帖子类型并按ACF字段对数据排序

php 查询帖子类型wordpres

从帖子标题获取 WordPress 帖子 ID

PHP WordPress - 当搜索查询返回单个结果时,重定向到帖子而不是归档页面

Wordpress 搜索功能仅搜索帖子