我非常感谢任何可以对此有所了解的人 - 我研究了文档,我不明白为什么这不起作用。
我正在尝试创建一个如下所示的导航列表:
<ul>
<li> COUNTRY
<ul>
<li>CITY</li>
<li>CITY</li>
<li>CITY</li>
</ul>
<ul>
<li>TOWN</li>
<li>TOWN</li>
<li>TOWN</li>
</ul>
</li>
</ul>
它需要3个循环:乡村循环,然后是城市循环和城镇循环(列出国家内的城镇)。
我正在使用以下代码:
<ul>
<?php
# GET Countries
$countryArgs = array(
'category_name' => 'country',
'posts_per_page' => -1,
'meta_key' => 'country-menu-order',
'orderby' => 'meta_value_num',
'order' => 'ASC'
);
$sidebar_nav_loop = new WP_Query($countryArgs);
if( $sidebar_nav_loop->have_posts() ):
while( $sidebar_nav_loop->have_posts() ): $sidebar_nav_loop->the_post();
?>
<li class="<?php echo basename(get_permalink()); ?>"> <a href="<?php echo get_permalink(); ?>"> <?php the_title(); ?> </a>
<?php
# GET RELATED Cities
$cityArgs = array(
'post_type' => 'post',
'posts_per_page' => -1,
'meta_key' => 'city-group',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'city-country',
'value' => '"' . get_the_ID() . '"',
'compare' => 'LIKE'
)
)
);
$city_loop = new WP_Query($cityArgs);
if( $city_loop->have_posts() ):
?>
<ul>
<li><a href="<?php the_permalink(); ?>" class="sub"><?php the_title(); ?></a></li>
<?php
while( $city_loop->have_posts() ): $city_loop->the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php
endwhile;
echo "</ul>";
endif;
wp_reset_postdata();
?>
<?php
# GET RELATED towns
$townArgs = array(
'post_type' => 'post',
'posts_per_page' => -1,
'meta_key' => 'town-group',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'town-country',
'value' => '"' . get_the_ID() . '"',
'compare' => 'LIKE'
)
)
);
$town_loop = new WP_Query($townArgs);
if( $town_loop->have_posts() ):
?>
<ul>
<li><a href="<?php the_permalink(); ?>" class="sub"><?php the_title(); ?></a></li>
<?php
while( $town_loop->have_posts() ): $town_loop->the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php
endwhile;
echo "</ul>";
endif;
wp_reset_postdata();
?>
</li>
<?php
endwhile;
endif;
wp_reset_postdata();
?>
</ul>
我可以让国家和城市工作,或乡村和城镇,但我不能得到这三个!据我所知,我已经遵循了文档并重置了查询,因此它们不应该发生冲突。
非常感谢您的任何帮助!
答案 0 :(得分:0)
我怀疑您的问题是使用wp_reset_postdata(),并尝试使用它来第二次获取国家/地区ID。 wp_reset_postdata()将发布数据设置为MAIN查询。您可能已经将其解释为您的主要查询(即国家/地区),但事实并非如此。你实际上有多个嵌套......
主要查询 - &gt;国家/地区查询 - &gt;城市查询和城镇查询
试试这个:
在第一次使用之后,将变量设置为countryId。
$countryId = get_the_ID();
然后,在cityArgs和townArgs中使用变量。
最后,在国家/地区循环完成后,只使用wp_reset_postdata ONCE ....