質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Q&A

1回答

1004閲覧

Wordpress の2重ループ

KenjiTakeda

総合スコア9

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

0グッド

0クリップ

投稿2020/09/25 00:35

ワードプレスでカスタム投稿記事を取得している内容(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() ?>

クエリのリセットの仕方が、ちゃんとわかってないような気がします。ご教授お願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

query_postsの使用は非推奨です
wp_reset_queryはループをメインクエリに戻す関数です
元の投稿のループがメインクエリによるものでないなら元の投稿のループには戻りません

サブクエリは元の投稿の表示でやってるように
WP_Queryオブジェクトを作ってやるとかしましょう

投稿2020/09/25 02:34

KazuhiroHatano

総合スコア7804

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問