循环遍历POST中的定制分类并显示POST中的定制字段

时间:2016-11-06 作者:2by

我将尝试详细说明标题。我想发表一篇文章,在这篇文章中,我想循环浏览来自自定义分类法的所有文章,并提取自定义字段。

如何以最有效的方式做到这一点?

我想的是使用模板层次结构:单post-{slug}。php

在此范围内,我使用以下方法获取内容:

<?php get_template_part( \'content\', \'{custom template}\' ); ?>
因此,在内容自定义模板中。php我将循环遍历所有自定义分类法。

正如您所看到的,这将需要为我要使用的每个自定义分类法添加2个额外的模板文件(因为我需要为每个自定义分类法发布帖子)。

我需要知道的是:

有没有更有效/更好的方法

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

您需要在content-*.php 使用正确的参数,以便将其发送到循环中。

<?php
   $args = array(
     \'tax_query\' => array(
             array(
                    \'taxonomy\' => \'recipes\',.
                    \'field\'    => \'slug\',
                    \'terms\'    => \'dessert\'
   )));

   $your_posts = new WP_Query( $args );
?>
您可以添加此查询所需的任何其他参数。您可以在WordPress Codex页面上找到有关参数的更多参考WP_Query 并将其添加到$args 大堆

在我的例子中,WP_Query 将要查看recipes 分类学,它会发现recipes 通过查看slug,找到所有具有该值的帖子dessert.

设置好新的WP\\U查询后,将其发送到WordPress循环:

<?php
    if ( $your_posts->have_posts() ) : while ( $your_posts->have_posts() ) : $your_posts->the_post();
?>
// Your Post Stuff Goes Here
<?php endwhile; else: ?> <p>Sorry, there are no posts to display</p>
<?php endif; ?>
<?php wp_reset_query(); ?>
为了获取自定义字段,我建议在functions.php 文件来处理此问题,并在循环中调用它。如果您可以更轻松地在整个主题中使用它,那么就可以这样做。

<?php
   function my_custom_field( $id, $field_name ) {
      return get_post_meta( $id, $field_name, true );
   }
?>
此函数的作用是访问帖子的元数据,查找指定的字段名,并返回单个值。如果有多个值使用同一个键,则省略true 函数将返回一个数组,然后可以使用foreach() 来处理这个问题。

例如,假设您的自定义字段是\'mood\' 那么对该函数的调用将是:

<?php my_custom_field( $post->ID, \'mood\' ); ?>