[英]Foreach loop not looping through
我有一個 foreach 循環,它只返回最新帖子的title
。 例如,我將 post test
作為products
中的最新帖子,並且在下面定義的循環中,當執行var_dump
時,它只會轉儲名為“test”的最新帖子的標題。
為什么是這樣?
方法:
<?php
$args = array(
'post_type' => 'products',
'post_parent' => 0,
'posts_per_page' => 15,
);
$products = get_posts( $args );
if ($products){
foreach ($products as $product) : setup_postdata( $product );
var_dump(get_the_title());
endforeach;
wp_reset_postdata();
}
?>
foreach ($products as &$product) : setup_postdata( $product );
請在您的 foreach 循環中嘗試此操作。
用這個
if ($products){
foreach ($products as $product) : setup_postdata( $product );
echo get_the_title($product->ID));
// or echo $product->post_title;
endforeach;
wp_reset_postdata();
}
這很奇怪,但是當您想將模板標簽與setup_postdata()
一起使用時,您需要使用全局$post
變量。 setup_postdata()
實際上並沒有設置該變量,它設置了一些相關的全局變量並運行the_post
操作。 你可以看到這里發生了什么
要為每個模板 function 調用傳遞 id 等,您需要像這樣設置循環。
global $post;
foreach ( $products as $post ) {
setup_postdata( $post );
// Your code here.
}
wp_reset_postdata();// Reset the global $post variable and re-setup postdata.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.