2015-11-13 77 views
0

在下面的代碼中,我調用了高級自定義字段插件的字段,只有前兩個顯示'home_title'和'home_content'。在這兩個之後,我運行了兩個不同的循環來顯示給定類別中的最新帖子。在這些循環運行之後,還有4個ACF調用的字段。 'donate_title','donate_content','mission_title','mission_content'。沒有顯示出來(根本不拉取任何內容)。運行循環後沒有顯示ACF

如果我在運行這些循環之前移動這些ACF,它們都會正確顯示。所以我想象下面的循環有一個問題,但找不到原因。

<div class="main-site"> 
<div class="home-title-1"> 
<?php the_field('home_title'); ?> 
</div> 
<div class="home-content-1"> 
<?php the_field('home_content'); ?> 
</div> 

<div class="home-boxes-cont"> 
<div class="box-left"> 
<?php 
query_posts('cat=4&posts_per_page=1'); 
while (have_posts()) : the_post(); ?> 
    <div class="bl-img"> 
    </div> 
    <div class="bl-title"> 
    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 
    </div> 
    <div class="bl-content"> 
    <?php the_excerpt(); ?> 
    </div> 
<?php endwhile; ?> 
</div> 

<div class="box-middle"> 
<?php 
query_posts('cat=5&posts_per_page=1'); 
while (have_posts()) : the_post(); ?> 
    <div class="bm-img"> 
    </div> 
    <div class="bm-title"> 
    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 
    </div> 
    <div class="bm-content"> 
    <?php the_excerpt(); ?> 
    </div> 
<?php endwhile; ?> 
</div> 

<div class="box-right"> 
    <div class="br-img"> 
    </div> 
    <div class="br-title"> 
    <?php the_field('donate_title'); ?> 
    </div> 
    <div class="br-content"> 
    <?php the_field('donate_content'); ?> 
    </div> 
</div> 
</div> 

<div class="mission-title"> 
    <?php the_field('mission_title'); ?> 
</div> 
<div class="mission-content"> 
    <?php the_field("mission_content"); ?> 
</div> 

+0

是否在選項頁上設置了最後四個字段中的任何一個? – danjah

+0

他們都有相同的設置,前兩個 – Ryeboflaven

+0

好的。嘗試將它們全部存儲在代碼頂部的變量中,然後在需要它們的地方回顯出來。 – danjah

回答

0

爲了使用query_posts()調用更改全局發佈數據後從原始帖子中獲取自定義字段數據,您需要使用wp_reset_query()函數重置發佈數據。在每個循環之後放置此功能 -

<?php while (have_posts()) : the_post(); ?> 

... 

<?php endwhile; wp_reset_query(); ?> 
+0

謝謝約翰尼,我正在嘗試一些其他的選擇,但這是最簡單的,並得到我所需要的。 – Ryeboflaven

0

您正在改變全球wp_query變量。當你這樣做,結果不是is_single(),那麼你不能再拉任何ACF設置。

無論是wp_query恢復到初始設置爲頁面或VARS存儲在數組中所做的任何wp_query變化中,如在後面的代碼需要檢索它們。

0

雖然我同意Scriptonomy,但您應該只使用get_posts()。這正是這個功能設計的目的......在主循環之外的自定義循環。您幾乎不需要修改全局wp_query變量。

如果你仍然想使用the_permalink()the_title()沒有通過文章ID,然後頁面向下滾動到標有節「訪問所有數據後」,你會看到如何使用setup_postdata(),使其更容易。