Valores de repetidor de bucle ACF con get_field

2 minutos de lectura

Avatar de usuario de Maki
Maki

Creé un campo personalizado con el diseño de repetidor para agregar texto de entrada. Me gustaría mostrar todos los valores. Encontré un código en la documentación de ACF pero no puedo entender cómo funciona

<?php 
$rows = get_field('repeater_field_name');
if($rows)
{
    echo '<ul>';

    foreach($rows as $row)
    {
        echo '<li>sub_field_1 = ' . $row['sub_field_1'] . ', sub_field_2 = ' . $row['sub_field_2'] .', etc</li>';
    }

    echo '</ul>';
}
?>

http://www.advancedcustomfields.com/resources/repeater/

No sé cuántos campos crearé con el repetidor y me gustaría hacer un bucle de todos los valores con foreach. ¿Es eso posible?

Gracias de antemano

ingrese la descripción de la imagen aquí
ingrese la descripción de la imagen aquí

  • el código que encontró hará un bucle de todos los valores del campo repetidor, simplemente cambie field_name con sus nombres de campo (nombres de slug) y funcionará.

    – Christophvh

    25 de enero de 2016 a las 10:44

  • ¡No funciona! 🙁 pongo mi repeater_field_name: get_field('MY_repeater_field_name'); y mi nombre_de_campo: $row['MY_sub_field_1'] pero no funciona Me devuelve esto: sub_field_1 = , sub_field_2 = , etc sub_field_1 = , sub_field_2 = , etc

    – Maki

    25 de enero de 2016 a las 10:55

  • tal vez una pregunta estúpida, pero ¿has agregado algo en tu publicación? porque parece que funciona pero no hay valor en los campos?

    – Christophvh

    25 de enero de 2016 a las 10:59

  • Si seguro. Puse algunos valores en los campos personalizados. Con el repetidor creo dos campos personalizados. ¿Hay otra forma de mostrar estos valores?

    – Maki

    25 de enero de 2016 a las 11:15

  • Encontré también este código: Enlace En Trabajar con valores de matriz. Pongo mi Repeater_field_name y me devuelve esto: array(2) { [0]=> array(1) { ["testo"]=> string(10) "My Value 1" } [1]=> array(1) { ["testo"]=> string(10) "My Value 2" } } Entonces, ¿puede este código ayudarme?

    – Maki

    25 de enero de 2016 a las 11:20

Versión Foreach:

<?php 

$rows = get_field('repeater');
if($rows)
{
    echo '<ul>';

    foreach($rows as $row)
    {
        echo '<li>sub_field_1 = ' . $row['text'] . '</li>';
    }

    echo '</ul>';
}

Mientras que la versión:

<?php

// check if the repeater field has rows of data
if( have_rows('repeater') ):

    // loop through the rows of data
    while ( have_rows('repeater') ) : the_row();

        // display a sub field value
        the_sub_field('text');

    endwhile;

else :

    echo 'nothing found';

endif;

?>

Avatar de usuario de Fuzail Akhtar
Fuzail Akhtar

yo lo arreglaria asi:

<?php
if( have_rows('slide') ): 
  $l= 1;
  while( have_rows('slide') ): the_row();       
    $l++;
  endwhile; 
endif;  
?>

¿Ha sido útil esta solución?