Die benutzerdefinierten Felder werden immer wieder gern eingesetzt, manchmal auch außerhalb des Loop und damit kommt man nicht ohne weiteres an die Daten. Eine Möglichkeit ist das Nutzen eines kleines SQL-Queries und schon stehen die Daten außerhalb des Loop zur Verfügung und die Werte, die man zum Beitrag pflegt, können auch außerhalb des Loop genutzt werden.
Das folgende simple Beispiel dient als Basis und muss an die Bedürfnisse angepasst werden, ebenso kann man eine Funktion dafür erstellen – viel Spaß damit. Genügend Raum zum Ausbau also und eher eine Ablage für mich und andere, als ein Tutorial, wie ich es sonst gern pflege und erkläre.
<ul>
<?php
global $wpdb;
$sql = "SELECT wpposts.*
FROM $wpdb->posts wpposts, $wpdb->postmeta wppostmeta
WHERE wpposts.ID = wppostmeta.post_id
AND wppostmeta.meta_key = 'my-image'
AND wpposts.post_status = 'publish'
AND wpposts.post_type = 'post'
ORDER BY wpposts.post_date DESC LIMIT 3";
$pageposts = $wpdb->get_results($sql, OBJECT);
foreach ($pageposts as $post) : setup_postdata($post); ?>
<li><a href="<?php the_permalink(); ?>" title="Link to <?php echo get_the_title(); ?>">
<img src="<?php echo get_post_meta($post->ID, "my-image", $single = true); ?>" alt="<?php echo get_the_title(); ?>" /></a>
</li>
<?php endforeach; ?>
</ul>
Insofern man über WordPress Zugriff verfügt, also innerhalb WordPress arbeitet oder die wp-load.php eingebunden hat, reicht ein kleiner Zugriff auf den Query von WordPress mit der ID und man kann die Inhalte der benutzerdefinierten Felder laden und sich den umständlichen Select sparen.
global $wp_query;
$post_id = $wp_query->post->ID;
$value = get_post_meta( $post_id, 'Name_of_custom_Field', TRUE );
echo $value; // Ausgabe des Wert zum benutzerdef. Feld