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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

1122閲覧

Wordpressの記事一覧を分割して表示したい

homepage-site

総合スコア28

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/11/29 14:04

編集2021/11/30 01:54

固定ページを作成中ですが1ページにつき15件表示する設定で、記事を3分割にして表示したいと思ってます。

画像、タイトル、記事のアップロード日付け、コメントの抜粋、続きを読む
それぞれループするように組んでます。
3件ずつ新しい投稿から表示したいのですが3分割にするためにはどうすればよいのでしょうか?

<!--ループ1--> <hr> <?php $wp_query = new WP_Query(); $args = array( 'post_type' => "post", //投稿タイプ設定 'posts_per_page' => 2, // 表示する投稿数(-1を指定すると全投稿を表示) ); $wp_query->query($my_posts); if ($wp_query->have_posts()) : $i = 0; $i <= 10; while ($wp_query->have_posts()) : $wp_query->the_post(); ?> <?php /**** ▼1件分の投稿内容HTML ****/ ?> <ul class="newarrival_list"> <li class="custom"><a href="<?php echo get_permalink(); ?>"> <span class="img-wrap"> <!--画像を追加--> <?php // アイキャッチ画像の確認 if (has_post_thumbnail()) { // 存在する the_post_thumbnail(); } else { // 存在しない echo '<img src="noimage.jpg">'; } ?> </span> <!--リンククラスつきのタイトルを追加--> <div class="img-wrap2"> <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> </div> <!--日付けを追加--> <div class="post-meta2"><div class="img-wrap3"> <?php the_time('Y/m/d'); ?></div> <!--リンククラス付きのカテゴリーを追加--> <?php $categories = get_the_category(); if ($categories) { echo '<ul>'; foreach ($categories as $category) { echo '<li class="cat1"' . $category->slug . '"><a href="' . esc_url(get_category_link($category->term_id)) . '">' . $category->name . '</a></li>'; } echo '</ul>'; } ?>    <!--リンククラス付きのコメント数を追加--> <?php $num_comments = get_comments_number(); if ($num_comments == 0) { $comments = __('No Comments'); // 댓글이 없을 경우 } elseif ($num_comments > 1) { $comments = $num_comments . __(' Comments'); // 댓글이 2개 이상일 경우 } else { $comments = __('1 Comment'); // 댓글이 1개일 경우 } $write_comments = '<span class="singlecomments"><a href="' . get_comments_link() . '">' . $comments . '</a></span>'; echo $write_comments; ?></div>                    <!--リンククラス付きのコメントの抜粋を追加--> <div class="img-wrap4"> <?php the_excerpt(); ?></div> <!--リンククラス付きの記事を読むを追加--> <div class="img-wrap5"> <a href="<?php the_permalink(); ?>">記事を読む</a> </div> </li></ul> <?php $i++; ?> <?php if ($i >= 3) break; ?> <?php endwhile; ?> <?php endif; ?> <!--//ループ1--> <!--ループ2--> <?php $wp_query = new WP_Query(); $args = array( 'post_type' => "post", //投稿タイプ設定 'posts_per_page' => 2, // 表示する投稿数(-1を指定すると全投稿を表示) ); $wp_query->query($my_posts); if ($wp_query->have_posts()) : while ($wp_query->have_posts()) : $i<=4; //iが4より小さい時は、while内のループ処理を実施する $i>3;break; //iが3より大きい時は、while文を強制終了する $wp_query->the_post(); ?> <hr> <?php /**** ▼1件分の投稿内容HTML ****/ ?> <ul class="newarrival_list"> <li class="custom"><a href="<?php echo get_permalink(); ?>"> <span class="img-wrap"> <!--画像を追加--> <?php // アイキャッチ画像の確認 if (has_post_thumbnail()) { // 存在する the_post_thumbnail(); } else { // 存在しない echo '<img src="noimage.jpg">'; } ?> </span> <!--リンククラスつきのタイトルを追加--> <div class="img-wrap2"> <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> </div> <!--日付けを追加--> <div class="post-meta2"><div class="img-wrap3"> <?php the_time('Y/m/d'); ?></div> <!--リンククラス付きのカテゴリーを追加--> <?php $categories = get_the_category(); if ($categories) { echo '<ul>'; foreach ($categories as $category) { echo '<li class="cat1"' . $category->slug . '"><a href="' . esc_url(get_category_link($category->term_id)) . '">' . $category->name . '</a></li>'; } echo '</ul>'; } ?>    <!--リンククラス付きのコメント数を追加--> <?php $num_comments = get_comments_number(); if ($num_comments == 0) { $comments = __('No Comments'); // 댓글이 없을 경우 } elseif ($num_comments > 1) { $comments = $num_comments . __(' Comments'); // 댓글이 2개 이상일 경우 } else { $comments = __('1 Comment'); // 댓글이 1개일 경우 } $write_comments = '<span class="singlecomments"><a href="' . get_comments_link() . '">' . $comments . '</a></span>'; echo $write_comments; ?></div>                    <!--リンククラス付きのコメントの抜粋を追加--> <div class="img-wrap4"> <?php the_excerpt(); ?></div> <!--リンククラス付きの記事を読むを追加--> <div class="img-wrap5"> <a href="<?php the_permalink(); ?>">記事を読む</a> </div> </li></ul> <?php $i++; ?> <?php endwhile; ?> <?php endif; ?> <!--//ループ2-->

前提・実現したいこと

3件目以降出力されないので4件目から出力したい

ヘディングのテキスト

$i <=4; $i <= 10; while ($wp_query->have_posts()) : $wp_query->the_post(); continue; echo $i; //以降の処理をスキップして、次のループ処理を行う。

発生している問題・エラーメッセージ

なし

試したこと

変数 i の値が 0 から → $i = 0
10 未満の間は、 → $i <= 10
i の値を1づつ加算しながら → i++
以下の命令文を実行する。
continue; echo $i; //以降の処理をスキップして、次のループ処理を行う。
0から3まででbreakして,
$i<=4; //iが4より小さい時は、while内のループ処理を実施する
$i>3;break; //iが3より大きい時は、while文を強制終了する

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

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

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

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

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

homepage-site

2021/11/29 15:45

<?php $wp_query = new WP_Query(); $args = array( 'post_type' => "post", //投稿タイプ設定 'posts_per_page' => 2, // 表示する投稿数(-1を指定すると全投稿を表示) ); $wp_query->query($my_posts); if ($wp_query->have_posts()) : $i = 4; while ($wp_query->have_posts()) : $wp_query->the_post(); ?> //内容 ?php $i++; ?> <?php if ($i >= 3) break; ?> <?php endwhile; ?> <?php endif; ?> で最新記事から3件を表示して、4件目から7件目まで追加で表示したいのですが、 <?php rewind_posts(); ?> <!--記事タイトル1-2--> <hr> <?php $wp_query = new WP_Query(); $args = array( 'post_type' => "post", //投稿タイプ設定 'posts_per_page' => 2, // 表示する投稿数(-1を指定すると全投稿を表示) ); $wp_query->query($my_posts); if ($wp_query->have_posts()) : $i = 4; while ($wp_query->have_posts()) : $wp_query->the_post(); ?> <?php $i++; ?> <?php if ($i >= 7) break; ?> <?php endwhile; ?> <?php endif; ?> としても同じものが表示されます。<?php rewind_posts(); ?>でリセットしたつもりなのですが。うまくいきません。新たに4から7まで表示するにはどうすればよいのでしょうか?
CHERRY

2021/11/30 07:42

` $wp_query->query($my_posts); ` の $my_posts は、どこかで定義されているのでしょうか?
homepage-site

2021/11/30 13:02

https://okwave.jp/qa/q9948344.html?create_answer=true こちらでも指摘をいただいたのですが、$my_postsは先頭に戻るんですね… ページャーを利用する際にコードを作り替えたので、<?php if (have_posts()) : ?>と差し替えたんですがどこが原因かわからず困っておりました。 <?php $my_query = new WP_Query( $args ); ?><!-- クエリの指定 -->のようにするべきですかね?
homepage-site

2021/11/30 13:24

$wp_query->query($my_posts);で投稿ページの画像やコメントなどの情報を取得しており、 $my_postsで巻き戻るようなので、continue; // 以降の処理をスキップし、次の回(条件2)に移る などが必要なようです…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問