高级自定义字段 - 仅在第一次提取的帖子对象的自定义字段

问题描述:

我有2个posttypes书籍和商店,商店被分配为书籍的postobject。高级自定义字段 - 仅在第一次提取的帖子对象的自定义字段

的bookcode和一个BookInfo是posttype书和storeurl的领域是的CustomField posttype-店

什么,我试图做...基于在图书的下拉选择的店,我想显示的存储以及来自后书店的相应书店以及书的书码和书籍信息。

在所有帖子下面

显示...用正确的STORENAME的bookcode &的BookInfo所有职位,但storeurl只为我如何得到它提取的所有帖子的lastpost正确提取正确

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

<div class="bookindex"> 

    <div class="bookdata"> 
     <?php    
     $storelist = get_field('storelist');    

     foreach ($storelist as $post) : setup_postdata($post); 
     $storename = get_the_title($post->id); 
     $storelink = strip_tags(get_field('storelink',$post->id)); 
     //var_dump($storelink);  
     ?> 

     <div class="storename"> 
      <?php echo $storename;?> 
    </div> 

     <?php endforeach; wp_reset_postdata(); ?> 

    <?php 
     $bookinfo = get_field('bookinfo',$post->id); 
     ?> 

    <div class="bookinfo"> 
      <?php echo $bookinfo; ?> 
    </div> 

    <?php 
    $bookcode = get_field('bookcode',$post->id); 
    ?> 

    <div class="clickbtn"> 
      <a href="<?php echo $storelink; ?>"> 
        <?php echo $bookcode; ?> 
      </a> 
    </div> 

    </div>  
</div> 

<?php endwhile; ?> 

新代码

<?php 

while (have_posts()): the_post(); 

?> 
<div class="bookindex"> 

    <div class="bookdata">   
     <?php  
     $bookinfo = get_field('bookinfo',$post->ID); 
     $bookcode = get_field('bookcode',$post->ID); 

     $storelist = get_field('storelist'); 
     $stores=array(); 
     foreach ($storelist as $store): 
     $stores[] = array(
     'name' => get_the_title($store->ID), 
     'link' => strip_tags(get_field('storelink', $store->ID)) 
    ); 
    endforeach; ; 
     ?> 
     <div class="storename"> 
      <?php echo $stores[$post->ID];?> 
    </div> 

    <div class="bookinfo"> 
      <?php echo $bookinfo; ?> 
    </div> 

    <div class="clickbtn"> 
      <a href="<?php echo $stores[$post->ID]; ?>"> 
        <?php echo $bookcode; ?> 
      </a> 
    </div> 

    </div>  
</div> 

<?php endwhile; ?> 

它不返回无论是STORENAME或storeurl

+0

comeon没有一个单一的回复 – user3449454

+0

如果我移动点击btn之下的艺术家然后也没有提取除了最后一个帖子外的所有storelink加上bookinfo并点击btn重复不止一次为书中的每个帖子 – user3449454

您在foreach ($storelist as $post)循环中定义了$storelink,但在循环结束之前不会使用它,这意味着只有最后定义的$ storelink可用。如果您需要积累一堆商店名称和标题你可能会考虑这样的:

$stores = array(); 
foreach (get_field('storelist') as $store) { 
    $stores[] = array(
    'name' => get_the_title($store->ID), 
    'link' => strip_tags(get_field('storelink', $store->ID)) 
); 
} 

那么你就必须存储阵列购买,你可以用它来构建链接(如果我的书理解你的用法是正确的;无论哪种方式,$storelink的唯一正确的循环中的最后一项是因为该变量从未使用,直到循环后)。

编辑:您的更新版本尝试引用不存在的特定数组键;我担心我可能会对我的数组建议感到困惑。如果我理解你正在试图做正确的东西,这样的事情应该符合该法案:

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

    <div class="bookindex"> 
    <?php 
     // Since $bookinfo and $bookcode don't appear to change, we'll get them once and save it 
     $bookinfo = get_field('bookinfo', $post->ID); 
     $bookcode = get_field('bookcode', $post->ID); 
    ?> 

    <?php foreach (get_field('storelist') as $store) : ?> 

     <div class="bookdata"> 
     <div class="storename"> 
      <?php echo get_the_title($store->ID);?> 
     </div> 

     <div class="bookinfo"> 
      <?php echo $bookinfo; ?> 
     </div> 

     <div class="clickbtn"> 
      <a href="<?php echo strip_tags(get_field('storelink', $store->ID)); ?>"><?php echo $bookcode; ?></a> 
     </div> 

     </div><!-- .bookdata --> 

    <?php endforeach; ?> 

    </div><!-- .bookindex --> 

<?php endwhile; ?> 

编辑2:显然我没有得到正是你打算如何呼应链接,但原始问题的答案(“为什么$storelink只对$storelist循环的最后一次迭代是正确的?”)保持不变 - 变量被重写多次,在迭代之间没有任何操作。

+0

steve我更新了代码...使用由u建议的修改,但现在我不返回商店名称或商店。 – user3449454

+0

它不会回显商店名称或店铺网址,现在它也会重复发布次数。发送截图http://s100.photobucket.com/user/littledevil2014/media/4-14-20149-30-13AM_zps9838c7b9 .png.html – user3449454

+0

bookdata似乎在书籍索引中多次重复自己 – user3449454