Afficher des champs ACF en fonction du template de la page parent

Posté par le

0 commentaires :(

Afficher des champs ACF en fonction du template de la page parent

Vous avez besoin d’afficher des champs ACF en fonction du template de la page parent ? Voilà un snippet qui vous sera utile.

Ce bout de code vous permet de créer une nouvelle règle d’affichage à votre groupe de champs :

Nouvelle règle d'affichage pour un groupe de champs ACF.

Concrètement, vous allez pouvoir choisir d’afficher votre groupe de champs en fonction du template de la page parent. Ça peut vous être utile pour afficher une sidebarre, un CTA ou du contenu additionnel pour les pages enfants.

Pour faire apparaître cette nouvelle option, vous devez le coller dans votre fichier function.php :

// Ajouter tempate parent aux choix acf
add_filter('acf/location/rule_types', 'acf_location_rules_types');
function acf_location_rules_types( $choices ) {
$choices['Parent']['parent_template'] = 'Parent Template';
return $choices;

}

add_filter('acf/location/rule_values/parent_template', 'acf_location_rules_values_parent_template');
function acf_location_rules_values_parent_template( $choices ) {
$templates = get_page_templates();
if ( $templates ) {
foreach ( $templates as $template_name => $template_filename ) {
$choices[ $template_filename ] = $template_name;
}
}
return $choices;
}

add_filter('acf/location/rule_match/parent_template', 'acf_location_rules_match_parent_template', 10, 3);
function acf_location_rules_match_parent_template( $match, $rule, $options ) {
$selected_template = $rule['value'];
global $post;
$template = get_page_template_slug( $post->post_parent );
if( $rule['operator'] == "==" ) {
$match = ( $selected_template == $template );
} elseif($rule['operator'] == "!=") {
$match = ( $selected_template != $template );
}
return $match;
}

See ya’ space integrateur

Tu kiffes ? Alors partage avec tes potes !

Sois pas timide, lâche tes com’ !

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.