web-dev-qa-db-fra.com

Meta Key Valeur dans la boucle réservée à l'utilisateur actuel

J'ai créé une boucle pour les utilisateurs connectés uniquement qui fonctionne parfaitement pour toutes les données, à l'exception des clés méta. J'aimerais pouvoir également extraire des méta-clés mais je n'ai pas eu de chance jusqu'à présent.

Ceci est ma boucle (basé sur ce post ):

<?php add_shortcode( 'current-userposts' , 'show_userposts' );
function show_userposts(){
$user_id = get_current_user_id();
$loop = new WP_Query( array( 'post_type' => 'photo-spot', 'author' => $user_id ) ); 
if ( $loop->have_posts() ) {    
?>
<form class="pps-results"><?php
        while ( $loop->have_posts() ) : $loop->the_post(); ?>
                <fieldset>
                    <legend class="title-block">
                        <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
                    </legend>
                    <div class="category-block">
                        <?php $categories = get_the_category(); 
                        if ( ! empty( $categories ) ) {
                            echo esc_html( $categories[0]->name );   
                        }
                        ?>
                    </div>
                    <?php
                    if ( has_post_thumbnail() ) { // check if the post has a Post Thumbnail assigned to it.
                        ?><div class="image-block"><?php
                    the_post_thumbnail( 'thumbnail' );
                        ?></div><?php
                    } 
                    ?>
                    <div class="address-block">
                        <?php echo get_post_meta($post->ID, '_cf_address', true); ?>
                    </div>
                    </div>
                </fieldset>
            <div class="clear"></div>     
<?php endwhile; ?>
        </form>
        <?php
}
wp_reset_postdata();
} ?>

La fonction est appelée via un shortcode

Lorsque j'utilise exactement la même boucle dans un modèle search.php, la valeur personnalisée ('_cf_address') s'affiche parfaitement, mais pas avec le shortcode ...

Une idée de ce qui pourrait mal se passer?

PS> L'écran d'aperçu ne montre pas mon code html - j'espère qu'il s'affiche correctement.

1
Chris Homan

Il n'y a pas de $post var local dans votre fonction, vous devez d'abord utiliser global $post ou get_the_ID().

get_post_meta( get_the_ID(), '_cf_address', true );
1
Milo