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

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

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

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

PHP

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

Q&A

解決済

2回答

1230閲覧

WP 複数投稿タイプの記事をループでまとめて表示し、N番目の記事だけデザインを変えたい

tak1979

総合スコア1

WordPress

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

PHP

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

0グッド

0クリップ

投稿2021/06/23 01:40

編集2021/06/23 02:45

前提・実現したいこと

現在フューチャーショップ内でWPを運営しています。

WPでカスタムポストを複数作っております。
トップページでそれらをまとめて表示する必要があり、
最新の1件のみをデザインや表示項目を変更したいと思っています。

1)複数のカスタムポストタイプ、投稿の記事をまとめて同じループで表示
2)1)の中の1件目だけ、項目やデザインを変更したい
3)デザインの都合上 2つ処理を作って
1番目の処理では1件目だけを表示、2番目のものは2件目以降で6件表示
という形にして、1番目 2番目の処理の間にサイドバーを挟み込めるのがベストです。

というのがやりたいこととなります。

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

通常のサイトだとおそらく真っ白になるのだろうと思いますが、フューチャーショップだと混雑しています。
という表示になります。

該当のソースコード

PHP
エラーが起こったソースコードは破棄してしまったので現状が下記となります。(この状態で1番までは達成しています)

<?php $wp_query = new WP_Query(); $my_posts = array( 'post_type' => array('media', 'article','post'),//表示したい投稿タイプ 'posts_per_page'=> '7', //1ページ当たりの表示件数 'paged' => $paged, //ページャーを動作させるための記述 ); $wp_query->query( $my_posts ); if( $wp_query->have_posts() ): while( $wp_query->have_posts() ) : $wp_query->the_post(); $obj = get_post_type_object( $post->post_type ); //投稿タイプ情報を取得 ?> <a href="<?php the_permalink(); ?>" target="_parent"> <?php the_post_thumbnail('thumbnail'); ?> <p><?php the_title(); ?></p> <span><?php echo mb_substr(get_the_excerpt(), 0, 60, 'UTF-8'); echo $content.'…'; ?></span> </a>
<?php endwhile; endif; wp_reset_postdata(); ?>

試したこと

N番目の記事だけを表示させるを2つ組み合わせる。
https://wp-master.club/post-n
指定したN番目だけ処理を加える
https://www.radia.jp/archives/1257

補足情報(FW/ツールのバージョンなど)

WP バージョン5.7.2

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

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

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

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

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

guest

回答2

0

ベストアンサー

まず、$wp_wuery は、WordPress 本体で使用していますので、勝手に値を代入したりすると誤動作の原因になります。

ご自身のテーマ等で記載するPHPコードの中では、$my_query 等の重複しない変数名にしましょう。

以下、$my_query として記載。


ループ内では、$my_query->current_post で、ループ内の何番目の投稿かが判別できます。

current_post は、別ページに移動するとリセットされて 0 からになりますが、ページ数を示す $paged と組み合わせることで、全体のどの部分を処理しているか判別が可能です。

これらの方法で、条件分岐して処理できないでしょうか。

投稿2021/06/23 03:47

CHERRY

総合スコア25218

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

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

tak1979

2021/06/23 05:30

ありがとうございます。 いただいたヒントとは違う方法で解決できました。 変数の箇所はご指摘通り変更しました。 1件目の処理で1件だけ記事を表示 2件目の処理で2件目~ 6つ記事を表示という形で処理したらいけました。 offsetで対応できました。
guest

0

下記のようにしてうまく動きました。
自己解決で申し訳ないですが、考えてくださった方々ありがとうございます。

<?php $my_query = new WP_Query(); $my_posts = array( 'post_type' => array('media', 'article','post'),//表示したい投稿タイプ 'posts_per_page'=> '1', //1ページ当たりの表示件数 'paged' => $paged, //ページャーを動作させるための記述 ); $my_query->query( $my_posts ); if( $my_query->have_posts() ): while( $my_query->have_posts() ) : $my_query->the_post(); $obj = get_post_type_object( $post->post_type ); //投稿タイプ情報を取得 ?> <a href="<?php the_permalink(); ?>" target="_parent"> <?php the_post_thumbnail('thumbnail'); ?> <p><?php the_title(); ?></p> <span><?php echo mb_substr(get_the_excerpt(), 0, 60, 'UTF-8'); echo $content.'…'; ?></span> </a>
<?php endwhile; endif; wp_reset_postdata(); ?> <?php $my_query = new WP_Query(); $my_posts = array( 'post_type' => array('media', 'article','post'),//表示したい投稿タイプ 'posts_per_page'=> '6', //1ページ当たりの表示件数 'paged' => $paged, 'offset' => 1, //ページャーを動作させるための記述 ); $my_query->query( $my_posts ); if( $my_query->have_posts() ): while( $my_query->have_posts() ) : $my_query->the_post(); $obj = get_post_type_object( $post->post_type ); //投稿タイプ情報を取得 ?> <a href="<?php the_permalink(); ?>" target="_parent"> <?php the_post_thumbnail('thumbnail'); ?> <p><?php the_title(); ?></p> </a> <?php endwhile; endif; wp_reset_postdata(); ?>

投稿2021/06/23 05:32

編集2021/06/23 06:32
tak1979

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問