Les hooks pour ACF.

Toutes les actions et filtres disponibles dans l’extension ACF spécialisée dans l’ajout de champs personnalisés dans WordPress.

Modifier la valeur d’un champs ACF avant qu’il ne soit sauvegardé

PHP
                    <?php
function undfnd_update_value( $value, $post_id, $field, $original ) {
    // Votre code
    return $value;
}

// Pour tous les champs
// add_filter('acf/update_value', 'undfnd_update_value', 10, 3);

// Pour tous les champs en filtrant par type
add_filter('acf/update_value/type={$type}', 'undfnd_update_value', 10, 3);

// Pour tous les champs en filtrant par le slug du champs
// add_filter('acf/update_value/name={$name}', 'undfnd_update_value', 10, 3);

// Pour tous les champs en filtrant par l'identifiant du champs
// add_filter('acf/update_value/key=field_123456', 'undfnd_update_value', 10, 3);
                

Filter la valeur d’un champs ACF après qu’il soit chargé (admin)

PHP
                    <?php
function undfnd_load_value( $value, $post_id, $field ) {
    // Votre code
    return $value;
}

// Pour tous les champs
// add_filter('acf/load_value', 'undfnd_load_value', 10, 3);

// Pour tous les champs en filtrant par type
add_filter('acf/load_value/type={$type}', 'undfnd_load_value', 10, 3);

// Pour tous les champs en filtrant par le slug du champs
// add_filter('acf/load_value/name={$name}', 'undfnd_load_value', 10, 3);

// Pour tous les champs en filtrant par l'identifiant du champs
// add_filter('acf/load_value/key=field_123456', 'undfnd_load_value', 10, 3);
                

Modifier les réglages d’un champs ACF après qu’il soit chargé

PHP
                    <?php
function undfnd_load_field( $field ) {
    $field['required'] = true;
    $field['choices'] = array(
        'custom'    => 'My Custom Choice',
        'custom_2'  => 'My Custom Choice 2'
    );
    return $field;
}

// Pour tous les champs
// add_filter('acf/load_field', 'undfnd_load_field', 10, 3);

// Pour tous les champs en filtrant par type (ici : select)
add_filter('acf/load_field/type=select', 'undfnd_load_field', 10, 3);

// Pour tous les champs en filtrant par le slug du champs
// add_filter('acf/load_field/name={$name}', 'undfnd_load_field', 10, 3);

// Pour tous les champs en filtrant par l'identifiant du champs
// add_filter('acf/load_field/key=field_123456', 'undfnd_load_field', 10, 3);
                

Filtrer la valeur d’un champs ACF chargé depuis une fonction de template

PHP
                    <?php
function undfnd_format_value( $value, $post_id, $field ) {
    return do_shortcode( $value );
}

// Pour tous les champs
// add_filter('acf/format_value', 'undfnd_format_value', 10, 3);

// Pour tous les champs en filtrant par type
add_filter('acf/format_value/type={$type}', 'undfnd_format_value', 10, 3);

// Pour tous les champs en filtrant par le slug du champs
// add_filter('acf/format_value/name={$name}', 'undfnd_format_value', 10, 3);

// Pour tous les champs en filtrant par l'identifiant du champs
// add_filter('acf/format_value/key=field_123456', 'undfnd_format_value', 10, 3);
                

Filter les termes de taxonomie dans un champs ACF

PHP
                    <?php
function undfnd_fields_taxonomy_query( $args, $field ) {

    // Order by most used.
    $args['orderby'] = 'count';
    $args['order'] = 'DESC';

    return $args;
}
add_filter('acf/fields/taxonomy/wp_list_categories', 'undfnd_fields_taxonomy_query', 10, 2);

// Pour un champs en particulier (en définissant le slug du champs)
add_filter('acf/fields/taxonomy/wp_list_categories/name={$name}', 'undfnd_fields_taxonomy_query', 10, 2);

// Pour un champs en particulier (en définissant l'identifiant du champs)
add_filter('acf/fields/taxonomy/wp_list_categories/key=field_123456', 'undfnd_fields_taxonomy_query', 10, 2);
                

Modifier le titre de la taxonomie affiché dans un champs ACF de type Taxonomy

PHP
                    <?php
function undfnd_fields_taxonomy_result( $text, $term, $field, $post_id ) {
    $text .= ' (' . $term->slug .  ')';
    return $text;
}
add_filter('acf/fields/taxonomy/result', 'undfnd_fields_taxonomy_result', 10, 4);

// Pour un champs en particulier (en définissant le slug du champs)
add_filter('acf/fields/taxonomy/result/name={$name}', 'undfnd_fields_taxonomy_result', 10, 4);

// Pour un champs en particulier (en définissant l'identifiant du champs)
add_filter('acf/fields/taxonomy/result/key=field_123456', 'undfnd_fields_taxonomy_result', 10, 4);
                

Filtrer la requête qui affiche les taxonomies d’un champs ACF de type Taxonomy

PHP
                    <?php
function undfnd_fields_taxonomy_query( $args, $field, $post_id ) {

    // Show 40 terms per AJAX call.
    $args['number'] = 40;

    // Order by most used.
    $args['orderby'] = 'count';
    $args['order'] = 'DESC';

    return $args;
}
add_filter('acf/fields/taxonomy/query', 'undfnd_fields_taxonomy_query', 10, 3);

// Pour un champs en particulier (en définissant le slug du champs)
add_filter('acf/fields/taxonomy/query/name={$name}', 'undfnd_fields_taxonomy_query', 10, 3);

// Pour un champs en particulier (en définissant l'identifiant du champs)
add_filter('acf/fields/taxonomy/query/key=field_123456', 'undfnd_fields_taxonomy_query', 10, 3);
                

Filtrer la requête qui affiche les posts d’un champs ACF de type Relationship

PHP
                    <?php
function undfnd_fields_relationship_query( $args, $field, $post_id ) {

    // Modifier le nombre de résultats par page
    $args['posts_per_page'] = 40;

    // Choisir un parent pour le post
    $args['post_parent'] = $post_id;

    return $args;
}
add_filter('acf/fields/relationship/query', 'undfnd_fields_relationship_query', 10, 3);

// Pour un champs en particulier (en définissant le slug du champs)
add_filter('acf/fields/relationship/query/name={$name}', 'undfnd_fields_relationship_query', 10, 3);

// Pour un champs en particulier (en définissant l'identifiant du champs)
add_filter('acf/fields/relationship/query/key=field_123456', 'undfnd_fields_relationship_query', 10, 3);
                

Modifier le titre du post affiché dans un champs ACF de type Relationship

PHP
                    <?php
function undfnd_fields_relationship_result( $text, $post, $field, $post_id ) {
    $text .= ' (' . $post->post_type .  ')';
    return $text;
}
add_filter('acf/fields/relationship/result', 'undfnd_fields_relationship_result', 10, 4);

// Pour un champs en particulier (en définissant le slug du champs)
add_filter('acf/fields/relationship/result/name={$name}', 'undfnd_fields_relationship_result', 10, 4);

// Pour un champs en particulier (en définissant l'identifiant du champs)
add_filter('acf/fields/relationship/result/key=field_123456', 'undfnd_fields_relationship_result', 10, 4);
                

Modifier le titre du post affiché dans un champs ACF de type Post Object

PHP
                    <?php
function undfnd_fields_post_object_result( $text, $post, $field, $post_id ) {
    $text .= ' (' . $post->post_type .  ')';
    return $text;
}
add_filter('acf/fields/post_object/result', 'undfnd_fields_post_object_result', 10, 4);

// Pour un champs en particulier (en définissant le slug du champs)
add_filter('acf/fields/post_object/result/name={$name}', 'undfnd_fields_post_object_result', 10, 4);

// Pour un champs en particulier (en définissant l'identifiant du champs)
add_filter('acf/fields/post_object/result/key=field_123456', 'undfnd_fields_post_object_result', 10, 4);
                

Filtrer la requête qui affiche les posts d’un champs ACF de type Post Object

PHP
                    <?php
function undfnd_fields_post_object_query( $args, $field, $post_id ) {

    // Modifier le nombre de résultats par page
    $args['posts_per_page'] = 40;

    // Choisir un parent pour le post
    $args['post_parent'] = $post_id;

    return $args;
}
add_filter('acf/fields/post_object/query', 'undfnd_fields_post_object_query', 10, 3);

// Pour un champs en particulier (en définissant le slug du champs)
add_filter('acf/fields/post_object/query/name={$name}', 'undfnd_fields_post_object_query', 10, 3);

// Pour un champs en particulier (en définissant l'identifiant du champs)
add_filter('acf/fields/post_object/query/key=field_123456', 'undfnd_fields_post_object_query', 10, 3);
                

Définir la clé d’API Google Maps

                    <?php
function undfnd_google_map_api( $args ) {
    $args['key'] = 'XXX_VOTRE-CLE_XXXX';

    return $args;
}
add_filter('acf/fields/google_map/api', 'undfnd_google_map_api');
                

Surcharger le titre d’un bloc de contenu flexible

                    <?php
function undfnd_on_fields_flexible_content_layout_title( $title, $field, $layout, $i ) {

    if($layout == 'bloc-name')
        $title = 'Votre nouveau titre !';

    return $title;
}
add_filter('acf/fields/flexible_content/layout_title', 'undfnd_on_fields_flexible_content_layout_title', 10, 4);

// Pour le contenu flexible avec "blocs" comme identifiant
add_filter('acf/fields/flexible_content/layout_title/name=blocs', 'undfnd_on_fields_flexible_content_layout_title', 10, 4);
                

Effectuer une action à la validation des champs

                    <?php
function undfnd_on_validate_save_post() {

    // Suppression de toutes les erreurs sur l'utilisateur a les droits de gérer les options du site
    if( current_user_can('manage_options') ) {
        acf_reset_validation_errors();
    }

    // Ajout d'une erreur si le champs "phone" est vide
    if( empty($_POST['phone']) ) {
        acf_add_validation_error( 'my_input', 'Please check this input to proceed' );
    }
}
add_action('acf/validate_save_post', 'undfnd_on_validate_save_post');
                

Ajouter une du contenu à l’affichage d’une valeur de champs

PHP
                    <?php
function undfnd_on_render_field( $field ) {
    echo '<p>Du HTML supplémentaire</p>';
}

// Apply to all fields.
add_action('acf/render_field', 'undfnd_on_render_field');

// Uniquement pour les champs image
add_action('acf/render_field/type=image', 'undfnd_on_render_field');

// Uniquement pour les champs avec le slug "hero_text"
add_action('acf/render_field/name=hero_text', 'undfnd_on_render_field');

// Uniquement pour le champs avec l'identifiant "field_123abcf".
add_action('acf/render_field/key=field_123abcf', 'undfnd_on_render_field');
                

Effectuer une action à la sauvegarde des champs ACF d’un post

PHP
                    <?php
function undfnd_on_save_post( $post_id ) {
    $phone = get_field('phone', $post_id);
    if( $phone ) {
        // Do something...
    }
}
add_action('acf/save_post', 'undfnd_on_save_post');
                

Effectuer une action à l’initialisation d’ACF

PHP
                    <?php
function undfnd_on_acf_init() {
    // votre code
}
add_action('acf/init', 'undfnd_on_acf_init');