je suis en train de coder une fonction de type 'render' concernant ACF (Advanced Custom Field pour Wordpress).
si certain d'entre vous ont des idées pour l'améliorée je suis preneur.
notamment :
- - je cherche a insérer la possibilité d'afficher le label pour chaque champ via une option (surement via une condition sur chaque type de champ)
- je cherche a favoriser la clarté du HTML qui va être généré par cette fonction et a le structuré de telle sorte qu'il soit facilement customisable en CSS
- et enfin j’hésite a créer une classe pour mes objet groupe et une pour mes objets fields afin d’améliorer la clarté du code
function render_acf_fields_2()
{
//initialisation de la liste des groupes
$groups = acf_get_field_groups(array('post_id' => get_the_ID()));
$i = 0;
// var_dump($groups);
while ($i < count($groups)) {
//initialisation de la liste des champs du groupe
$array = acf_get_fields($groups[$i]['key']);
$j = 0;
// var_dump($array);
echo '<div class="' . $groups[$i]['key'] .' '.strtolower(str_replace(" ","-", $groups[$i]['title'])). '">';
echo 'i = ' . $i . '<br/>';
//traitement et affichage des champs
while ($j < count($array)) {
echo 'j = ' . $j . '<br/>';
//champs de type image
if($array[$j]['type']==='image'){
$thumbnail = get_field($array[$j]['key']);
$size = 'full';
if ( $thumbnail ){
echo wp_get_attachment_image( $thumbnail, $size );
}
}
//champs de tgype fichier
elseif($array[$j]['type']==='file'){
$file = get_field( $array[$j]['key'] );
if ( $file ){
echo '<a href="'. esc_url( $file['url'] ).'">'. esc_html( $file['filename'] ).'</a>';
}
}
//champs de type post_object !!! => ce type est particulier et je manque d'information a son sujet pour le moment
//le code source de la condition est commenter, je l'ai repris sur le site d'ACF et il ne fonctionne pas
elseif($array[$j]['type']==='post_object')
{
// $pub = get_field( $array[$j]['key'] );
// if ( $pub ){
// $post = $pub;
// setup_postdata( $post );
// var_dump('<a href="'.the_permalink().'">'. the_title().'</a>');
// wp_reset_postdata();
// }
}
else
{
the_field($array[$j]['key']);
}
$j++;
}
$i++;
echo '</div>';
}
}