我有两个wordpress查询,如果有办法将它们组合成一个,我很好奇吗? 我试过了,但是无济于事。
<?php
$posts = get_field('appeal_forms', 'options');
if( $posts ): ?>
<ul>
<?php foreach( $posts as $post): // variable must be called $post (IMPORTANT) ?>
<?php setup_postdata($post); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endforeach; ?>
</ul>
<?php wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly ?>
<?php endif; ?>
这里是第二个:
<?php
$posts = get_field('misc', 'options');
if( $posts ): ?>
<ul>
<?php foreach( $posts as $post): // variable must be called $post (IMPORTANT) ?>
<?php setup_postdata($post); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endforeach; ?>
</ul>
<?php wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly ?>
<?php endif; ?>
答案 0 :(得分:0)
你需要将两个帖子数组合成一个数组,然后像你一样循环遍历它。
在下面的示例中,我得到两个数组,使用is_array
检查它们是否有效,然后使用array_merge
将它们合并为一个。
<?php
// Get both post arrays.
$appeal_forms = get_field('appeal_forms', 'options');
$misc = get_field('misc', 'options');
// Check both are arrays.
if ( is_array( $appeal_forms ) && is_array( $misc ) ) {
// Combine the posts into a single array.
$posts = array_merge( $appeal_forms, $misc ); ?>
<ul>
<?php foreach ( $posts as $post ) {
setup_postdata( $post ); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php } ?>
</ul>
<?php wp_reset_postdata(); ?>
<?php } ?>
如果两个阵列都不会总是有帖子,那么代码需要进行调整。我执行的检查意味着如果appeal_forms或misc为空,则不显示任何内容。
如果是这种情况,我建议的解决方案是:
$posts = array();
// Check each array individually and add their contents to the post array.
if ( is_array( $appeal_forms ) ) {
$posts = array_merge( $posts, $appeal_forms );
}
if ( is_array( $misc ) ) {
$posts = array_merge( $posts, $misc );
}
if ( $posts ) {…