2010-12-22 8 views
1

Ich bin ziemlich hoffnungslos bei PHP, also dachte ich, ich würde um ein bisschen Hilfe bitten!multiple wordpress benutzerdefinierte Post-Meta-Werte

Ich verwende WordPress als CMS für eine Musikagentur-Website unter daviesmusic.com und habe viele zusätzliche Informationen für die verschiedenen Künstler über benutzerdefinierte Felder. Bisher habe ich nur das benutzerdefinierte Feld eins nach dem anderen Werte abgerufen, etwa so:

<?php 
    //audio title 
    $audio_title = get_post_meta($post->ID, 'audio_name', true); 
    if ($audio_title) : 
?> 

    <p><?php echo $audio_title; ?></p> 

Dies funktioniert gut, nur ich habe viele benutzerdefinierte Felder, die alle verschiedene Ausgänge erfordern. Ich habe zum Beispiel ein Foto für den Künstler, eine Audiodatei, den Titel der Audio-Datei und ein paar Notizen über die Audio-Datei, etwa so:

<?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; 
    ?> 

Viele Code. Ich bin sicher, dass es einen effizienteren Weg geben muss, um die Werte zu erhalten! Irgendwelche Ideen?!

Prost

+0

Wickeln Sie es in eine Funktion, die ein Array von Schlüsseln akzeptiert und das entsprechende HTML abhängig vom Schlüssel ausgibt? Willst du ein Beispiel? – t31os

Antwort

3

Nehmen Sie dieses Beispiel aus here:

$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 />"; 
} 

Dies wird durch alle angegebenen benutzerdefinierten Werte für die Post (id # 72 in diesem Beispiel können Sie Ihr $post->ID verwenden, wie Sie haben in deinem Code). Sie können $key verwenden, um den Feldnamen zu drucken, und $value, um den Wert dieses Felds zu drucken. Sie können detailliertere Informationen über die Anzeige erhalten, indem Sie eine if elseif else-Anweisung oder eine switch-Anweisung verwenden.

+0

Es tut mir leid, dass ich 6 Monate gebraucht habe, um zu antworten! Danke für deine Antwort! –

Verwandte Themen