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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

WordPress

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

ループ

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

1037閲覧

【Wordpress】ループ文の中にさらにループさせる方法

neue

総合スコア1

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

WordPress

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

ループ

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/09/23 09:20

初めてWordpressを使いポートフォリオサイトを作成しています。

メイン投稿で書いた記事のアイキャッチ画像をMasonryをつかってループで出力しているのですが、
その上に、投稿のカテゴリー(複数カテゴリー選択された記事も有)をCheckbox式でフィルター分けできるような構造で作ろうとしています。

現在ある程度出来上がってきてはいるのですが、どうしてもMasonryで出力された投稿のカテゴリーが一つしか出力されません。

どうしたら複数のカテゴリーが出力されるようにできますでしょうか...
※不慣れで提供する情報が足りないかもしれません...

html

1<ul class="category__list flex fadeIn"> 2 <?php 3 $cats = get_categories(); 4 foreach ($cats as $cat) : 5 $slug = $cat->slug; 6 $name = $cat->name; 7 $count = $cat->count; 8 $link = get_category_link($cat->cat_ID); 9 ?> 10 <!-- ループしたいHTMLをここに置く --> 11 <div class="portfolio_category_name"> 12 <input type="checkbox" id="checkbox_<?php echo $name;?>" value="<?php echo $slug;?>"> 13 <label class="button" for="checkbox_<?php echo $name;?>"> 14 <?php echo $name;?> 15 </label> 16 </div> 17 <?php endforeach; ?> 18 </ul> 19 </div> 20 <div class="portfolio__content fadeIn"> 21 <div class="grid" data-masonry='{ "itemSelector": ".grid-item",}'> 22 <?php 23 //$argsのパラメーターを変えていく 24 $args = array( 25 'post_type' => 'post', //投稿タイプ 26 'posts_per_page' => -1, //全ページを取得 27 ); 28 $the_query = new WP_Query($args); 29 if ($the_query->have_posts()) : 30 while ($the_query->have_posts()) : $the_query->the_post(); 31 // 投稿データのカテゴリーを取得 32 $cat = get_the_category(); 33 // カテゴリー名の取得 34 $cat_name = $cat[0]->name; 35 // スラッグの取得 36 $cat_slug = $cat[0]->slug; 37 ?> 38 <!-- ループしたいHTMLをここに置く --> 39 <div class="grid-item <?php echo $cat_slug;?>"> 40 <a href="<?php the_permalink(); ?>" class="portfolio__item__detail-link"> 41 <?php the_post_thumbnail(null, array('class' => 'grid-item__img')); ?> 42 </a> 43 </div> 44 <?php 45 endwhile; 46 else: 47 ?> 48 <div class="no-post__container"> 49 <p class="no-post__text">Coming soon...</p> 50 </div> 51 <?php endif; ?> 52 </div> 53 </div>

js

1var $container = $('.grid'); 2$container.multipleFilterMasonry({ 3 itemSelector: '.grid-item', 4 filtersGroupSelector: '.category__list' 5}); 6var $grid = $('.grid').imagesLoaded(function () { 7 // 全ての画像が読み込まれてからMasonryを動作させる 8 $grid.masonry({ 9 // ここにオプションを記述 10 }); 11});

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

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

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

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

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

guest

回答1

0

whileの中の方の話ですかね。
Codex get the categoryによると「カテゴリーのオブジェクトの配列」が返ってくるようなので、0を直接参照せずforeachすれば良いのでは?

「投稿データの」なら「投稿 ID」を引数に渡せば取得できるようです。

投稿2021/09/23 09:30

m.ts10806

総合スコア80861

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

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

neue

2021/09/23 10:05 編集

回答ありがとうございます! <div class="grid-item <?php echo $cat_slug;?>"> <a href="<?php the_permalink(); ?>" class="portfolio__item__detail-link"> <?php the_post_thumbnail(null, array('class' => 'grid-item__img')); ?> </a> </div> <?php endwhile; else: ?> この部分の grid-item のあとの <?php echo $cat_slug;?>にカテゴリーが一つしか表示されない状態を、ループで複数のカテゴリーがある場合は表示されるようにしたいと思っています... かなり初心者で検索しながらここまできたので、そもそものあってるかどうかもわからず... 恐れ入りますがもう少しだけ詳しくご教示いただけますか汗
m.ts10806

2021/09/23 10:07

既に自身でforeachで書かれてるので $cats = get_categories(); foreach ($cats as $cat) : これと同じように書けば良いと思います。whileで投稿IDが来ているならそちらを実行引数に指定してください。
neue

2021/09/23 11:06

何度も申し訳ありません... 上記で試してみたいのですが、そうすると存在している全てのカテゴリーで各カテゴリーごとに投稿されてしまうのですが... (例えば全部で5個カテゴリーがあると、記事の指定カテゴリーに関係なく5つ同じ投稿のアイキャッチ画像が並び、一つ一つに一個ずつカテゴリーがついている状態です。)
m.ts10806

2021/09/23 12:59

こちらの想定通りになっているか分からないので、質問本文に「回答を受けて試したこと」として追記してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問