获取ACF中的页面ID

时间:2018-08-28 06:07:39

标签: php wordpress advanced-custom-fields

我有一个非常简单的循环,我想在其中显示一些海报,并单击以显示相关产品的弹出窗口。我已经使用自定义帖子类型和ACF页面链接作为字段类型创建了此页面。

enter image description here

现在为我的自定义帖子类型创建此ACF字段后,我可以从Metabox中选择所需的产品(需要提供ID)

enter image description here

我当前的循环

    <ul class="products columns-5">
        <?php $args = array('post_type' => 'posters'); ?>
        <?php $loop = new WP_Query($args); ?>
        <?php if ( $loop->have_posts() ) : while ( $loop->have_posts() ) : $loop->the_post(); ?>
        <li class="product" style="width: 330px;">
           <div class="product-inner clearfix">
              <div class="mf-product-thumbnail">
                 <a href="<?php the_field('my_link'); ?>" data-id="<?php echo get_permalink($postID); ?>" class="mf-product-quick-view" tabindex="0"><img width="300" height="450" src="<?php echo get_the_post_thumbnail_url($post_id, 'full'); ?>" class="" alt=""></a>
              </div>
           </div>
        </li>
        <?php endwhile; ?>
        <?php else: ?>
        <?php endif; ?>
        <?php wp_reset_postdata(); ?>
    </ul>

尽管href链接使用自定义字段有效,但是我当前要解决的问题是获取产品的实际ID,因为使用 data-id 。我试图添加get_permalink($ postID);但是,这似乎不起作用。非常感谢您提供一些专家意见。

1 个答案:

答案 0 :(得分:1)

只需使用当前循环元素ID。(默认的WordPress post对象ID)
代码应如下所示:

<ul class="products columns-5">
        <?php $args = array('post_type' => 'posters'); ?>
        <?php $loop = new WP_Query($args); ?>
        <?php if ( $loop->have_posts() ) : while ( $loop->have_posts() ) : $loop->the_post(); 
 $id = $loop->post->ID;
?>
        <li class="product" style="width: 330px;">
           <div class="product-inner clearfix">
              <div class="mf-product-thumbnail">
                 <a href="<?php the_field('my_link'); ?>" data-id="<?php echo $id; ?>" class="mf-product-quick-view" tabindex="0"><img width="300" height="450" src="<?php echo get_the_post_thumbnail_url($post_id, 'full'); ?>" class="" alt=""></a>
          </div>
       </div>
    </li>
    <?php endwhile; ?>
    <?php else: ?>
    <?php endif; ?>
    <?php wp_reset_postdata(); ?>
</ul>

更新
要获得链接的产品链接和ID,只需将您的ACF字段类型更改为Post Object,按发布类型设置过滤器(对于产品->发布类型product),然后将返回类型设置为Post对象,然后执行-> < / p>

$linked_product = get_field('my_link');
$id = $linked_product->$post_id;
$link = $linked_product-> (i dont know what object returned exactly just do "var_dump($linked_product)" to chek what is inside).

然后更改href和data-id属性内容 ACF field settings