plusieurs valeurs postales personnalisées wordpress méta
Question
Je suis assez désespéré à PHP, donc je pensais que je vous demande un peu d'aide!
J'utilise WordPress comme un CMS pour un site de l'agence de musique daviesmusic.com et ont beaucoup d'informations supplémentaires pour les différents artistes via les champs personnalisés. Jusqu'à présent, je viens de récupérai les valeurs de champ personnalisé, un par un, comme suit:
<?php
//audio title
$audio_title = get_post_meta($post->ID, 'audio_name', true);
if ($audio_title) :
?>
<p><?php echo $audio_title; ?></p>
Cela fonctionne bien, que j'ai beaucoup de champs personnalisés qui nécessitent toutes les sorties différentes. J'ai par exemple une photo pour l'artiste, un fichier audio, le titre du fichier audio et quelques notes sur le fichier audio, comme suit:
<?php
//profile image
$profile_pic = get_post_meta($post->ID, 'profileimage', true);
if($profile_pic) :
?>
<img class="post-thumb-single" src="<?php bloginfo('template_directory'); ?>/timthumb.php?src=<?php echo $profile_pic; ?>&a=t&h=278&w=278&zc=1" alt="<?php the_title(); ?>" />
<?php
endif;
//photographer
$photographer = get_post_meta($post->ID, 'photographer', true);
if($photographer) :
?>
<p id="photographer">Photographer: <b><?php echo $photographer; ?></b></p>
<?php
endif;
//audio title
$audio_title = get_post_meta($post->ID, 'audio_title', true);
if ($audio_title) :
?>
<h4 class="nsmb">Audio files</h4>
<p><?php echo $audio_title; ?></p>
<?php
//audio file
$audio = get_post_meta($post->ID, 'audiofile', true);
if ($audio) :
?>
<p class="audio" id="audioplayer_1">Sorry, there was a problem loading the file.</p>
<script>AudioPlayer.embed("audioplayer_1", {soundFile: "<?php echo $audio; ?>"});</script>
<?php
$audio_credits_1 = get_post_meta($post->ID, 'audio_credits_1', true);
if ($audio_credits_1) :
?>
<p class="audio_cred"><?php echo $audio_credits_1; ?></p>
<?php
endif; endif; endif;
?>
Beaucoup de code. Je suis sûr qu'il doit y avoir un moyen plus efficace de récupérer les valeurs! Toutes les idées?!
Vive
La solution
$custom_fields = get_post_custom(72);
$my_custom_field = $custom_fields['my_custom_field'];
foreach ( $my_custom_field as $key => $value ){
echo $key . " => " . $value . "<br />";
}
Ce cycle permet de faire défiler toutes les valeurs personnalisées spécifiées pour le poste (id # 72 dans cet exemple, vous pouvez obtenir le vôtre en utilisant $post->ID
que vous avez dans votre code). Vous pouvez utiliser $key
pour imprimer le nom du champ et $value
d'imprimer la valeur de ce champ. Vous pouvez obtenir plus granulaire avec la façon dont ils sont affichés en utilisant une instruction if elseif else
ou un switch
.