【问题标题】:Foreach loop only works inside wordpress loop, but echoes 6 times. Can I use it outside the loop?Foreach 循环仅在 wordpress 循环内有效,但会回显 6 次。我可以在循环外使用它吗?
【发布时间】:2012-10-19 02:33:10
【问题描述】:
<?php $terms = wp_get_post_terms($post->ID,'category');  
            foreach ($terms as $term) {  
            $termcomp = $term->taxonomy . '_' . $term->term_id; } ?>


            <?php the_field('tagline' , $termcomp); ?>

如何在 wordpress 上使用此代码而不回显 6 次,因为我在该类别中有 6 个帖子..

http://pastebin.com/ijqwA5SK

完整的页面模板在那里,foreach也在底部,这个工作正常,只根据需要输出一次。

【问题讨论】:

  • 这将是预期的行为...如果Loop 中有 6 个帖子,那么您预计标签会发布 6 次。请注意,这些术语是使用 $post-&gt;ID 获取的,它特定于每个循环加载的 $post
  • 我可以使用其他方法获取条款吗?
  • 哪些条款?这些术语特定于帖子,在循环的每次迭代中都会发生变化,听起来你只是碰巧在每个帖子上都有相同的术语。你能举例说明你看到的输出和你想要什么吗?
  • 我认为这里可能存在一些混淆......自定义字段是帖子上的元字段,而术语/标签是应用于帖子的分类法(这就是调用该函数的原因wp_get_post_terms 并将 $post_ID 作为参数)。两者都不适用于类别,因为并非一个类别中的所有帖子都保证具有相同的元字段或术语。您可以只显示第一个帖子的条款,或者适用于所有帖子的所有条款...是您要查找的内容吗?
  • 我认为这不是正确的图像... ACF 只是发布元数据的包装器... 它不适用于类别。 the_field() 要么使用当前的 $post_ID,要么将另一个帖子的 ID 作为第二个参数。

标签: wordpress foreach custom-post-type


【解决方案1】:

使用高级自定义字段,您可以使用get_field('field', 'category_'.$cat_id)the_field() 获取类别分类自定义字段的字段,如果您想自动回显结果。在您的情况下,您首先需要确定当前的类别 ID,然后调用 the_field() 将其用作您想要的字段名称 tagline。这应该在Loop之外加载:

// only show on category pages
if(is_category()){
    global $wp_query;
    // get category id from query variables
    $cat_ID = get_query_var('cat');
    the_field('tagline', 'category_'.$cat_ID);
}

【讨论】:

  • @BenjiSmalley 很好 - 只是为了清楚起见,假设前缀为 wp_,这些值存储在 wp_options 中,而不是像真正的帖子元字段那样存储在 wp_postmeta 中。此功能仅受高级自定义字段支持。
  • 我发现高级自定义字段是一个了不起的插件,唯一的缺点是有时像这样检索字段!除了他们绝对出色的努力!幸运的是有像你这样的人知道他们在做什么!
  • 我在所有网站上都使用 ACF,并编写了一个包装器附加字段来进行 Wordpress 存储库中的验证:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-19
  • 2016-05-22
  • 2015-07-15
  • 2018-02-18
  • 2016-12-31
  • 2014-03-15
  • 1970-01-01
相关资源
最近更新 更多