J'utilise actuellement un type d'article personnalisé, avec un champ personnalisé qui est une case à cocher. La case à cocher contient plusieurs valeurs, notamment: Ordinateur portable, Nouveau, Texte non marketing et plusieurs autres. Si No-marketing-text est le seul sélectionné, cela ne pose pas de problème de faire ce que je veux. Si plusieurs cases à cocher sont sélectionnées, seul le premier sélectionné est affiché. Que dois-je changer pour que cela fonctionne même si plusieurs cases sont cochées?
<?php
//REMOVES BACK TO TOP BUTTON FOR PROGRAMS THAT HAVE NO MARKETING BLURB - JUNE 27, 2013 - Brandon Carson
if("No-marketing-text" == get_post_meta($post->ID, 'program_flags', true)){
echo "";
}else{
echo "<div class='content-block'>";
the_content();
echo "<a class='back-to-top-link' href='#top'>Back to Top</a></div>";
}
?>
En vertu du principe , vos entrées de base de données sont correctement enregistrées et votre problème ne survient que lors de l'extraction:
Si plusieurs boîtes ont été sélectionnées, les valeurs doivent vivre dans la base de données sous forme de tableaux sérialisés.
Heureusement, get_post_meta
les désérialise pour nous, mais ce sont toujours des tableaux.
Par conséquent, votre conditionnel devrait être modifié comme suit:
$program_flags = get_post_meta( $post->ID, 'program_flags', true );
if(
'No-marketing-text' === $program_flags
||
( is_array( $program_flags ) && in_array( 'No-marketing-text', $program_flags ) )
){
// do your thing
}