使用简码显示 ACF 中继器字段

问题描述 投票:0回答:1

我有ACF pro和Divi,我很难展示一个中继器的字段。 所以我尝试在 function.php 文件中添加函数以通过简码显示我的字段。

我对 php 不太了解,抱歉,但我尝试获取一些信息来构建我自己的函数。

你能帮我吗?

我的中继器有 7 个子字段,一行的结果如下: 巴黎,4 月 11 日 11 点 30 分 马赛,4月11日至4月13日,10:00

因此编辑器可以添加一个城镇,并包含开始日期和结束日期(如果有),然后是一小时。文本“from”、“to”和“at”在条件下显示(例如结束日期不为空)。

这是我的代码,但我的 WordPress 出现了严重错误。

// ########### récupérer ACF repeater lieu_date_heure
function get_lieu_date_heure()
{
  if (have_rows('lieu_date_heure')): /* this is repeater field */
    while (have_rows('lieu_date_heure')):
        the_row();
        $ville = the_sub_field('ville'); /* this is repeater subfield */
        $du = the_sub_field('du'); /* this is repeater subfield */
        $date_debut = the_sub_field('date_debut'); /* this is repeater subfield */
        $au = the_sub_field('au'); /* this is repeater subfield */
        $date_fin = the_sub_field('date_fin'); /* this is repeater subfield */
        $a = the_sub_field('a'); /* this is repeater subfield */
        $heure = the_sub_field('heure'); /* this is repeater subfield */
   endwhile;
    echo '<div class="lieu_date_heure"><p>' . $ville . ', ' . $du. ' ' . $date_debut . ' au ' . $date_fin . ' à ' . $heure</p></div>';
  return ob_get_clean();
}

add_shortcode('show_lieu_date_heure', 'get_lieu_date_heure');

谢谢 卡罗琳

php wordpress advanced-custom-fields shortcode divi
1个回答
0
投票

我试过这个。我没有更严重的错误,但也没有内容。

function get_lieu_date_heure()
{
  ob_start(); // Initialiser le tampon de sortie

  if (have_rows('lieu_date_heure')): /* this is repeater field */
    while (have_rows('lieu_date_heure')):
        the_row();
        $ville = the_sub_field('ville'); /* this is repeater subfield */
        $du = the_sub_field('du'); /* this is repeater subfield */
        $date_debut = the_sub_field('date_debut'); /* this is repeater subfield */
        $au = the_sub_field('au'); /* this is repeater subfield */
        $date_fin = the_sub_field('date_fin'); /* this is repeater subfield */
        $a = the_sub_field('a'); /* this is repeater subfield */
        $heure = the_sub_field('heure'); /* this is repeater subfield */
        echo '<div class="lieu_date_heure"><p>' . $ville . ', ' . $du . $date_debut . ' ' . $au . $date_fin . ' ' . $a . $heure . '</p></div>';
    endwhile;
  endif;

  return ob_get_clean(); // Récupérer et nettoyer la sortie du tampon
}

add_shortcode('show_lieu_date_heure', 'get_lieu_date_heure');

我也用

get_sub_field
代替
the_sub_field
,结果是一样的:没有内容显示

卡罗琳

© www.soinside.com 2019 - 2024. All rights reserved.