ワードプレスでカスタム投稿記事を取得している内容(the_content)から、ショートコードを呼び出して、別のカスタム投稿の内容を表示する状態を作っています。
ショートコードは動作していて、別の投稿の内容も出ているのですが、元のループに戻ったときにクエリがうまく初期の状態に戻っていないのか、それ以降のカスタムフィールド内容が出てきません。
現状下記のようなコードになっています。
ショートコード内容 functions.php
function shortcode_popFunc($atts) {
extract(shortcode_atts(array(
'click' => '',
), $atts));
$args = array(
'post_type' => 'word',
'posts_per_page' => 1,
'meta_key' => 'yougo',
'meta_value'=> $click
);
query_posts( $args );
while ( have_posts() ) :
the_post();
$num =mt_rand(1, 150);
$text = get_field('imi');
$html = '<div class="md"><a class="js-modal-open" href="" data-target="moda'.$num.'">'.$click.'</a><div id="moda'.$num.'" class="modal js-modal"><div class="modal__bg js-modal-close"></div><div class="modal__content"><p>'.$text.'</p><a class="js-modal-close" href="">×Close</a></div></div></div>'. "\n";
endwhile;
wp_reset_query();
return $html;
}
add_shortcode('popFunc', 'shortcode_popFunc');
元の投稿を取得するテンプレート内容
<?php $param = array( 'posts_per_page' => -1, 'post_status' => 'publish', 'post_type' => 'products' ); $my_query = new WP_Query($param); ?> <?php if($my_query->have_posts()): ?> <?php while($my_query->have_posts()):$my_query->the_post(); ?> <?php $num++; ?> <section id="<?php echo 'item'.$num; ?>"> <h2><?php the_title(); ?></h2> <?php the_content(); ?> <!--ここから下が取得できない--><table class="table-1 jirei-photo"> <tr><th><img src="<?php the_field('画像1'); ?>" class="fluid"></th><td><?php the_field('画像1テキスト'); ?></td></tr> <tr><th><img src="<?php the_field('画像2'); ?>" class="fluid"></th><td><?php the_field('画像2テキスト'); ?></td></tr> <tr><th><img src="<?php the_field('画像3'); ?>" class="fluid"></th><td><?php the_field('画像3テキスト'); ?></td></tr> </table> </section> <?php endwhile; endif; ?> <?php wp_reset_postdata() ?>
クエリのリセットの仕方が、ちゃんとわかってないような気がします。ご教授お願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。