我有一个页面显示我当前的帖子。在帖子循环中,我想在其中显示另一个循环,其中显示了其他3篇按标题排列的相关帖子,它们与字段名“category”中的当前帖子共享相同的文本。
这是我目前拥有的代码示例。我让循环中的循环工作,但它仍然没有显示相关的帖子。
<!-- View Work -->
<section class="work-single">
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<div class="row">
<div class="medium-12 columns">
<!-- Work Title -->
<div class="intro">
<h1 class="main-title"><?php echo get_the_title(); ?></h1>
</div>
</div>
</div>
<div class="work-show">
<div class="row">
<!-- Slide Show Image -->
<div class="medium-12 columns">
<img src="<?php the_field(\'large_image\'); ?>" alt="">
</div>
<!-- Description -->
<div class="medium-8 columns">
<?php the_field(\'description\'); ?>
</div>
<!-- Information -->
<div class="medium-4 columns">
<ul class="side-info">
<li class="client"><h4><?php the_field(\'client\'); ?></h4></li>
<li class="date"><?php the_field(\'date\'); ?></li>
<li class="category"><?php the_field(\'category\'); ?></li>
<li class="leader"><?php the_field(\'leader\'); ?></li>
</ul>
<!-- Related Posts Loop -->
<ul>
<li>SIMILAR CASE STUDIES</li>
<?php
// args
$args = array(
\'post_type\' => \'case-studies\',
\'posts_per_page\' => 3,
\'meta_key\' => \'category\',
\'orderby\' => \'meta_value\',
\'order\' => \'rand\'
);
$theposts = get_posts( $args );
foreach($theposts as $post) :
setup_postdata($post);
?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php
endforeach;
wp_reset_postdata();
?>
</ul>
</div>
</div>
</div>
<?php endwhile; else: ?>
<p>Sorry, no posts matched your criteria.</p>
<?php endif; ?>
SO网友:Steven Jones
查询中没有meta\\u值。
从您的代码中,我无法判断您正在使用元数据做什么,但您应该能够做到这一点:
// Store this BEFORE you go into the second loop.
$category = get_field(\'category\');
// The arguments for the second loop
\'post_type\' => \'case-studies\',
\'showposts\' => 3,
\'meta_key\' => \'category\',
\'meta_value\' => $category,
\'orderby\' => \'rand\'
因此,您要做的是匹配类别元键的值。
理想情况下,您可以使用分类法来完成上述操作—这就是它们的作用所在。
http://codex.wordpress.org/Function_Reference/register_taxonomy