web-dev-qa-db-fra.com

Champs personnalisés avancés: instruction conditionnelle avec sélection

J'ai configuré un champ de sélection intitulé "type_actif" avec deux valeurs: "image" et "vidéo". J'ai ensuite deux champs qui dépendent de la logique conditionnelle à afficher. Si "image" est sélectionné dans la sélection, le champ "image_asset" est affiché et si "vidéo" est sélectionné dans la sélection, le champ "vidéo_asset" est sélectionné. En lisant la documentation et quelques autres questions sur la pile, je pensais avoir correctement configuré la logique, mais pour la vie de moi, je ne peux pas obtenir le contenu à afficher. Voici à quoi ressemble mon code:

<?php if(get_sub_field('asset_type') == "image") { ?>

    <div><?php the_sub_field('image_asset'); ?></div>

<?php } ?>

<?php if(get_sub_field('asset_type') == "video") { ?>

    <div><?php the_sub_field('video_asset'); ?></div>

<?php } ?>

Toute aide ou conseil est grandement apprécié, merci!

1
Darren

Juste pour clore la question:

<?php if(get_sub_field('asset_type') == "Image") { ?>
  <div><?php the_sub_field('image_asset'); ?></div>
<?php } ?>
<?php if(get_sub_field('asset_type') == "Video") { ?>
  <div><?php the_sub_field('video_asset'); ?></div>
<?php } ?>
1
pcarvalho

Si vous souhaitez utiliser la variable value de votre champ de sélection au lieu de l'étiquette dans votre déclaration, vous pouvez le faire dans ACF:

image : Image
video : Video

Et ceci dans votre modèle (en utilisant la valeur et non l'étiquette lisible par l'homme):

<?php if(get_sub_field('asset_type', '') == "image") { ?>
  <div><?php the_sub_field('image_asset'); ?></div>
<?php } ?>
<?php if(get_sub_field('asset_type', '') == "video") { ?>
  <div><?php the_sub_field('video_asset'); ?></div>
<?php } ?>

Ici get_sub_field('asset_type') a été remplacé par get_sub_field('asset_type', '')

C'est une option beaucoup plus propre face aux étiquettes longues, par exemple.

video : First Event Video 1920x1080

Cela vous permet également de changer rapidement l'étiquette pour l'utilisateur sans avoir à retravailler votre code.

0
Jake