私はログインユーザーのみのループを作成しました。これはメタキーを除くすべてのデータに対して完璧に機能します。メタキーも抽出できるようにしたいのですが、これまでのところ運がありませんでした。
これは私のループです( この投稿に基づいて ):
<?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コードが表示されない - うまく表示されることを願っています。
あなたの関数にローカルな$post
変数はありません、あなたは最初にglobal $post
、またはget_the_ID()
を使う必要があります。
get_post_meta( get_the_ID(), '_cf_address', true );