web-dev-qa-db-ja.com

現在のユーザーのみのループ内のメタキー値

私はログインユーザーのみのループを作成しました。これはメタキーを除くすべてのデータに対して完璧に機能します。メタキーも抽出できるようにしたいのですが、これまでのところ運がありませんでした。

これは私のループです( この投稿に基づいて ):

<?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();
} ?>

この関数はショートコードで呼ばれます

Search.phpテンプレートでまったく同じループを使用すると、カスタム値( '_cf_address')が完全に表示されますが、どういうわけかショートコードは含まれません.

何が問題になっている可能性がありますか?

PS>プレビュー画面に私のHTMLコードが表示されない - うまく表示されることを願っています。

1
Chris Homan

あなたの関数にローカルな$post変数はありません、あなたは最初にglobal $post、またはget_the_ID()を使う必要があります。

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