簡體   English   中英

Foreach 循環不循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM