Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 高级自定义字段-仅第一次提取的post对象的自定义字段_Php_Wordpress_Advanced Custom Fields - Fatal编程技术网

Php 高级自定义字段-仅第一次提取的post对象的自定义字段

Php 高级自定义字段-仅第一次提取的post对象的自定义字段,php,wordpress,advanced-custom-fields,Php,Wordpress,Advanced Custom Fields,我有两个PostType books和stores,其中stores被指定为books的postobject bookcode和bookinfo是posttype book的字段,storeurl是posttype stores的customfield 我想做的是…根据在books下拉列表中选择的商店,我想显示每本书的商店和posttype store中对应的storeurl,以及书的bookcode和bookinfo 在下面显示的所有帖子中,所有帖子都显示了正确的storename bookc

我有两个PostType books和stores,其中stores被指定为books的postobject

bookcode和bookinfo是posttype book的字段,storeurl是posttype stores的customfield

我想做的是…根据在books下拉列表中选择的商店,我想显示每本书的商店和posttype store中对应的storeurl,以及书的bookcode和bookinfo

在下面显示的所有帖子中,所有帖子都显示了正确的storename bookcode和bookinfo,但storeurl仅针对最后一篇帖子正确提取,如何才能正确提取所有帖子

<?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; ?>

新代码



它不会返回您在
foreach($storelist as$post)
循环中定义的
$storelink
的storename或storeurl,但在结束循环之前不会使用它,这意味着只有最后定义的$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
循环的最后一次迭代正确?”)保持不变-在迭代之间,变量被多次覆盖,但没有对其执行任何操作。

Come没有一个回复如果我将endeach移动到click btn下方,则也不会提取除最后一篇文章外的所有内容的storelink加上bookinfo和click btn,在中的每篇文章都会重复多次bookssteve我更新了代码…使用u建议的修改,但现在我发现它既不返回storename也不返回storeurl。它不回显storename或storeurl,现在还重复post numerpus次数。发送屏幕截图bookdata似乎在bookindexanswer中重复多次以进行编辑2:我使用的是代码u在没有任何更改的情况下给出了在book post中选择的storename,然后在posttype stores中搜索storename并回显相应的storelink字段Hey我已将其排序…我只是将$store->ID更改为$store,它很有效…thanx太多steve了
<?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; ?>