Les snippets pour ACF.

Obtenir tous les paramètres de tous les champs ACF d’un contenu

PHP
                    <?php
$field = get_field_objects(123); // post_ID
/* retour :
array(
    "my_field" => array(
        'ID'                => 0,
        'key'               => '',
        'label'             => '',
        'name'              => '',
        'prefix'            => '',
        'type'              => 'text',
        'value'             => null,
        'menu_order'        => 0,
        'instructions'      => '',
        'required'          => 0,
        'id'                => '',
        'class'             => '',
        'conditional_logic' => 0,
        'parent'            => 0,
        'wrapper'           => array(
            'width'             => '',
            'class'             => '',
            'id'                => ''
        )
    ),
    ...
);
*/
                

Obtenir le slug de la ligne courant dans un contenu flexible

PHP
                    <?php 
if( have_rows('blocs') ) {
    while( have_rows('blocs') ) {
        the_row();

        // Permet d'obtenir le slug du bloc courant
        $layout = get_row_layout();
    }
}
                

Obtenir la valeur d’un sous-champs

PHP
                    <?php
if( have_rows('parent_field') ):
    while ( have_rows('parent_field') ) : the_row();
        $sub_value = get_sub_field('sub_field');
    endwhile;
endif;
                

Vérifier si un repeater à des lignes de données

PHP
                    <?php
if( have_rows('repeater') ):
    while ( have_rows('repeater') ) : the_row();
        // Il y a bien des lignes de données
    endwhile;
else :
    // Aucune ligne sur le repeater
endif;
                

Supprimer la valeur d‘un sous-champs

PHP
                    <?php
// Suppression de la valeur du champs ‘field_key' de la première ligne du repeater ‘repeater‘
delete_sub_field(array('repeater', 1, 'field_key'));

// Suppression de la valeur du champs ‘field_123456' de la première ligne du repeater ‘repeater‘ avec la clé de champs
delete_sub_field(array('repeater', 1, 'field_123456'));

$post_id = 1; // ID du post
$post_id = "user_2"; // ID de l'utilisateur = 2
$post_id = "category_3"; // ID du terme de taxonomie {taxonomy}_{term_id}
$post_id = "option"; // options page
$post_id = "options"; // same as above

delete_sub_field( array('repeater', 1, 'field_key'), $post_id );
                

Obtenir la valeur d’un sous-champs

PHP
                    <?php if( have_rows('todo') ): ?>
    <ul>
    <?php while ( have_rows('todo') ) : the_row(); ?>
        <li><?php the_sub_field('item'); ?></li>
    <?php endwhile; ?>
    </ul>
<?php else : ?>
    <p>No todos found.</p>
<?php endif; ?>
                

Supprimer la valeur d‘un champs

PHP
                    <?php
// Suppression depuis la clé du champs
delete_field('field_key');

// Suppression depuis l'ID du champs
delete_field('field_123456');

$post_id = 1; // ID du post
$post_id = "user_2"; // ID de l'utilisateur = 2
$post_id = "category_3"; // ID du terme de taxonomie {taxonomy}_{term_id}
$post_id = "option"; // options page
$post_id = "options"; // same as above

delete_field( 'field_key', $post_id );
                

Ajouter une nouvelle ligne de données à un sous-champ de répéteur ou de contenu flexible

PHP
                    <?php
$row = [
    'name'   => 'John Doe',
    'age'      => 30
];

// Ajouter une ligne de membres sur la première ligne du repeater staff
add_sub_row(array('staff', 1, 'members'), 1, $row);

// Mettre à jour la ligne 1 des membres de la première ligne du repeater staff en définissant un post_id
add_sub_row(array('staff', 1, 'members'), 1, $row, 123);
                

Ajouter une nouvelle ligne de données à un répéteur ou un contenu flexible

PHP
                    <?php
$row = [
    'name'   => 'John Doe',
    'age'      => 30
];

// Ajout d'une ligne sur le repeater ‘members‘
add_row('members', 1, $row);

// Ajout d'une ligne sur le repeater ‘members‘ en définissant un post_id
add_row('members', 1, $row, 123);
                

Obtenir un champs ACF depuis un shortcode

Texte
                    Ce shortcode affiche le champs ‘field_name‘ du post 123 : [acf field="field_name" post_id="123"]

Ce shortcode affiche le champs ‘field_name‘ de l‘utilisateur 123 : [acf field="field_name" post_id="user_123"]

Ce shortcode affiche le champs ‘field_name‘ du terme 123 de la taxonomie ‘category‘ : [acf field="field_name" post_id="category_123"]

Ce shortcode affiche le champs ‘field_name‘ d'une page d'options : [acf field="field_name" post_id="options"]
                

Créer un type de bloc personnalisé dans l‘éditeur Gutenberg

PHP
                    <?php
add_action('acf/init', function() {

    // On vérifie si la fonction existe (car inexistante sur les anciennes versions d'ACF)
    if( function_exists('acf_register_block_type') ) {

        // Register a testimonial block.
        acf_register_block_type(array(
            'name'                      => 'testimonial',
            'title'                         => __('Témoignage'),
            'description'            => __('Un bloc de témoignage personnalisé'),
            'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
            'category'                => 'formatting',
        ));
    }
}
                

Vous permettra d’ajouter des champs ACF sur le nouveau bloc.

PHP
                    <?php
add_action('acf/init', function() {
    // On vérifie si la fonction existe (donc si ACF est installé)
    if( function_exists('acf_add_options_sub_page') ) {

        // On ajoute la page parente
        $parent = acf_add_options_page(array(
            'page_title'  => __('Options du site'),
            'menu_title'  => __('Options'),
            'redirect'    => false,
        ));

        // On ajoute la sous page avec le slug de page parente
        $child = acf_add_options_sub_page(array(
            'page_title'  => __('Réseaux sociaux'),
            'menu_title'  => __('Réseaux sociaux'),
            'parent_slug' => $parent['menu_slug'],
        ));
    }
});
                
PHP
                    <?php
add_action('acf/init', function() {
    // On vérifie si la fonction existe (donc si ACF est installé)
    if( function_exists('acf_add_options_page') ) {

        // On ajoute la page d'options
        $option_page = acf_add_options_page([
            'page_title'     => __('Options du site'),
            'menu_title'    => __('Options'),
            'menu_slug'   => 'options',
            'capability'     => 'manage_options',
            'redirect'        => false
        ]);
    }
});
                

Mettre à jour une ligne de données pour une valeur de champ d‘un répéteur ou d‘un contenu flexible

PHP
                    <?php
$row = [
    'name'   => 'John Doe',
    'age'      => 30
];

// Mettre à jour la ligne 1 des membres de la première ligne du repeater staff
update_sub_row(array('staff', 1, 'members'), 1, $row);

// Mettre à jour la ligne 1 des membres de la première ligne du repeater staff en définissant un post_id
update_sub_row(array('staff', 1, 'members'), 1, $row, 123);
                

Mettre à jour la valeur d‘une ligne de données d‘un répéteur ou d‘un contenun flexible

PHP
                    <?php
$row = [
    'name'   => 'John Doe',
    'age'      => 30
];

// Mettre à jour la ligne 1 du repeater members
update_row('members', 1, $row);

// Mettre à jour la ligne 1 du repeater members en définissant un post_id
update_row('members', 1, $row, 123);
                

Mettre à jour la valeur d‘un sous-champs

PHP
                    <?php
// Depuis une loop
if( have_rows('repeater') ) {
    while( have_rows('repeater') ) {
        the_row();
        update_sub_field('caption', 'new value');
    }
}

// En une ligne, mettre à jour le champs caption de la première ligne du repeater
update_sub_field( array('repeater', 1, 'caption'), 'new value');

// En définissant le post_ID
update_sub_field( array('repeater', 1, 'caption'), 'new value', 123);
                

Mettre à jour la valeur d‘un champs ACF pour un terme de taxonomie

PHP
                    <?php
// À partir de l'id du terme de taxonomie
$pid = 'category_123'; // {taxonomy}_{term_id}
// À partir d'un objet de taxonomie
$pid = get_queried_object(); // objet WP_Term

// Mise à jour à partir de la clé du champs
update_field('phone', '06 01 01 01 01', $pid); 


// Mise à jour à partir de la clé du champs
update_field('field_123456', '06 01 01 01 01', $pid); // fonctionne aussi avec 'option'
                

Mettre à jour la valeur d‘un champs ACF pour une page d’options

PHP
                    <?php
// Mise à jour à partir de la clé du champs
update_field('phone', '06 01 01 01 01', 'options'); // fonctionne aussi avec 'option'


// Mise à jour à partir de la clé du champs
update_field('field_123456', '06 01 01 01 01', 'options'); // fonctionne aussi avec 'option'
                

Mettre à jour la valeur d‘un champs ACF pour un post (article, page…)

PHP
                    <?php
// Mise à jour à partir de la clé du champs
update_field('phone', '06 01 01 01 01'); // dans une loop
update_field('phone', '06 01 01 01 01', 123); // en définissant un post_id


// Mise à jour à partir de la clé du champs
update_field('field_123456', '06 01 01 01 01'); // dans une loop
update_field('field_123456', '06 01 01 01 01', 123); // en définissant un post_id
                

Mettre à jour la valeur d‘un champs ACF pour un utilisateur

PHP
                    <?php
// Mise à jour à partir de la clé du champs
update_field('phone', '06 01 01 01 01', 'user_1'); // user_{userID}


// Mise à jour à partir de la clé du champs
update_field('field_123456', '06 01 01 01 01', 'user_1'); // user_{userID}
                

Supprimer une ligne de données d‘une valeur de sous-champ de répéteur ou d‘un contenu flexible

PHP
                    <?php 
// On loop sur les membres
if( have_rows('members') ) {
    while( have_rows('members') ) {
        the_row();

        // On supprime le premier champs des images du membre courant.
        delete_sub_row('images', 1);
    }
}

// Autre exemple, on supprime la deuxième image du membre 1
delete_sub_row( array('members', 1, 'images'), 2 );

                

Obtenir l’objet de paramètre d’un champs ACF

PHP
                    <?php
$field = get_field_object('field_key'); // return array
/*
array(
    'ID'                => 0,
    'key'               => '',
    'label'             => '',
    'name'              => '',
    'prefix'            => '',
    'type'              => 'text',
    'value'             => null,
    'menu_order'        => 0,
    'instructions'      => '',
    'required'          => 0,
    'id'                => '',
    'class'             => '',
    'conditional_logic' => 0,
    'parent'            => 0,
    'wrapper'           => array(
        'width'             => '',
        'class'             => '',
        'id'                => ''
    )
);
*/
                

Obtenir tous les champs ACF depuis un post (articles, pages…)

PHP
                    <?php
// Dans une loop 
$field = get_fields('field_key'); // array

// Résultats identiques
echo $field;
the_field('field_key'); // ne nécessite pas d'echo


// récupération d'un champs depuis le post_ID
$pid = 123;
$field = get_fields('field_key', $pid); // array
                

Obtenir tous les champs ACF depuis un terme de taxonomie

PHP
                    <?php
// récupération de tous champs depuis un terme de taxonomie
$pid = 'category_123'; // {taxonomy}_{term_id}
$pid = get_queried_object(); // objet WP_Term
$field = get_fields('field_key', $pid); // array
                

Obtenir tous les champs ACF depuis un utilisateur

PHP
                    <?php
// récupération de tous les champs depuis un utilisateur
$pid = 'user_123'; // user_{user_id}
$field = get_fields('field_key', $pid); // array
                

Obtenir tous les champs ACF depuis une page d’options

PHP
                    <?php
// récupération de tous les champs depuis une page d'options
$field = get_fields('field_key', 'options'); // fonctionne aussi avec 'option' (array)
                

Obtenir un champs ACF depuis une page d’options

PHP
                    <?php
// récupération d'un champs depuis une page d'options
$field = get_field('field_key', 'options'); // fonctionne aussi avec 'option'

// Résultats identiques
echo $field;
the_field('field_key', 'options'); // ne nécessite pas d'echo
                

Obtenir un champs ACF depuis un utilisateur

PHP
                    <?php
// récupération d'un champs depuis un utilisateur
$pid = 'user_123'; // user_{user_id}
$field = get_field('field_key', $pid);

// Résultats identiques
echo $field;
the_field('field_key', $pid); // ne nécessite pas d'echo
                

Obtenir un champs ACF depuis un terme de taxonomie

PHP
                    <?php
// récupération d'un champs depuis un terme de taxonomie
$pid = 'category_123'; // {taxonomy}_{term_id}
$pid = get_queried_object(); // objet WP_Term
$field = get_field('field_key', $pid);

// Résultats identiques
echo $field;
the_field('field_key', $pid); // ne nécessite pas d'echo
                

Obtenir un champs ACF depuis un post (articles, pages…)

PHP
                    <?php
// Dans une loop 
$field = get_field('field_key');

// Résultats identiques
echo $field;
the_field('field_key'); // ne nécessite pas d'echo


// récupération d'un champs depuis le post_ID
$pid = 123;
$field = get_field('field_key', $pid);

// Résultats identiques
echo $field;
the_field('field_key', $pid); // ne nécessite pas d'echo