ACF的中继器字段不渲染子字段

时间:2017-04-04 13:28:29

标签: php wordpress variables advanced-custom-fields

我正在编写一个代码,每次在自定义帖子类型上编辑帖子时都可以收到通知。

它工作正常,但ACF的转发器字段没有在电子邮件中呈现其子字段。

我想知道我做错了什么。电子邮件附带帖子中的确切行数,只显示字段。

其他一切似乎都运转良好。

function send_mails_on_update( $new_status, $old_status, $post )
{
    if ( $new_status != $old_status or 'form_caravanas' !== get_post_type( $post ) )
        return 'text/html';

    $subscribers = get_users( array ( 'role' => 'administrator' ) );
    $emails      = array ();

    foreach ( $subscribers as $subscriber )
    $emails[] = $subscriber->user_email;

    $nome = get_field('nome', $post);
    $sobrenome = get_field('sobrenome', $post);
    $ddd_celular = get_field('ddd_celular', $post);
    $email = get_field('email', $post);
    $nome_da_igreja = get_field('nome_da_igreja', $post);
    $tipo_de_transporte = get_field('tipo_de_transporte', $post);
    $cidade_e_estado_de_origem = get_field('cidade_e_estado_de_origem', $post);

    $repeater = get_field('participantes', $post);

    $participantes = '';

    if( have_rows('participantes', $post) ):
    while( have_rows('participantes', $post) ): the_row();
    $nome_participante = the_sub_field('nome', $post);
    $sobrenome_participante = the_sub_field('sobrenome', $post);
    $ddd_celular_participante = the_sub_field('telefone', $post);
    $email_participante = the_sub_field('email', $post);

    $participantes.= sprintf( '<ul>
        <li>Nome: ' . $nome_participante . '</li>
        <li>Sobrenome: ' . $sobrenome_participante . '</li>
        <li>Celular: ' . $ddd_celular_participante . '</li>
        <li>Email: ' . $email_participante . '</li>
    </ul>' ); endwhile; endif;

    $participantes.= '';

    $body = sprintf( '<html><head><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"></head><body>
    <div class="container"><p><h3>Responsável</h3></p>
    <p><strong>Nome:</strong> ' . $nome . '<br>
    <strong>Sobrenome:</strong> ' . $sobrenome . '<br>
    <strong>DDD + Celular:</strong> ' . $ddd_celular . '<br>
    <strong>Email:</strong> ' . $email . '<br>
    <strong>Nome da Igreja:</strong> ' . $nome_da_igreja . '<br>
    <strong>Tipo de Transporte:</strong> ' . $tipo_de_transporte . '<br>
    <strong>Cidade e Estado de Origem:</strong> ' . $cidade_e_estado_de_origem . '<br>
    </p>
    <p><h3>Participantes</h3></p>
    <p>' . $participantes . '</p>
    </div></body></html>' );


    wp_mail( $emails, 'A caravana "' . get_the_title( $post ) . '" foi atualizada!', $body );
}

1 个答案:

答案 0 :(得分:1)

首先,确保participantes是转发器的名称。然后,删除每个$post中的the_sub_field()变量。

更改

$nome_participante = the_sub_field('nome', $post);
$sobrenome_participante = the_sub_field('sobrenome', $post);
$ddd_celular_participante = the_sub_field('telefone', $post);
$email_participante = the_sub_field('email', $post);

$nome_participante = the_sub_field('nome');
$sobrenome_participante = the_sub_field('sobrenome');
$ddd_celular_participante = the_sub_field('telefone');
$email_participante = the_sub_field('email');

您已经提到了要获取的转发器的值(并且您在转发器中处于循环中),因此您不需要再次在子字段上插入它。

此外,您可能需要使用get_sub_field()而不是the_sub_field()。不同之处在于the_sub_field()回应了值,而get_sub_field()没有。