【问题标题】:Get ID of Page in ACF获取 ACF 中页面的 ID
【发布时间】:2018-08-28 06:07:39
【问题描述】:

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

现在为我的自定义帖子类型创建此 ACF 字段后,我可以从 Metabox 中选择我想要的产品(我需要 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(); ?>
        <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>

虽然 a href 链接使用自定义字段工作,但我目前试图解决的问题是获取产品的实际 ID,因为它似乎需要使用 data-id .我尝试添加 get_permalink($postID);但是,这似乎不起作用。非常感谢一些专家的建议,谢谢。

【问题讨论】:

    标签: php wordpress advanced-custom-fields


    【解决方案1】:

    只需使用当前循环元素 ID。(默认 WordPress 帖子对象 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 字段类型更改为帖子对象,按帖子类型设置过滤器(对于产品 -> 帖子类型 product)并将返回类型设置为帖子对象,然后执行 ->

    $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 属性内容

    【讨论】:

    • 谢谢。然而,这给了我自定义帖子的完整网址(不是 ID),而不是我链接到的产品的 ID
    • @David,已编辑答案,只是更改为 data-id="&lt;?php echo $id; ?&gt;" 而不是 echo permalink
    • 谢谢@vlandja - 我现在得到了一个 ID - 但不是我的链接产品的 ID。相反,我得到了自定义帖子类型的 ID。我还编辑了我的第一篇文章以进一步澄清这一点
    • @David,看看更新的答案,如果你有任何问题,尽管问
    • 哇太棒了 - 请让我试试。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 2011-12-04
    • 2019-03-09
    相关资源
    最近更新 更多