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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

WordPress

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

PHP

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

1回答

677閲覧

WordPressで投稿を日付ごとにブロック化して出力したい

退会済みユーザー

退会済みユーザー

総合スコア0

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

WordPress

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

PHP

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/12/18 11:50

編集2021/12/18 12:18

#最初に

閲覧ありがとうございます。
webサイトをの投稿ページをカスタム投稿で作成しておりまして、その出力方法について質問させてください。

現状のループ文は以下になります

#現状

PHP

1<h3></h3> 2 <div> 3 <?php 4 $month = date("m"); 5 $day = date("d"); 6 $custom_posts = get_posts(array( 7 'post_type' => 'event', 8 'posts_per_page' => 6, 9 'orderby' => array( 10 'event_month' => 'ASC', 11 'event_day' => 'ASC', 12 ), 13 'meta_query' => array( 14 'relation' => 'AND', 15 array( 16 'event_month' => array( 17 'key' => 'event_month', 18 'type' => 'DECIMAL(2,0)', 19 'compare' => '>=', 20 ), 21 ), 22 array( 23 'event_day' => array( 24 'key' => 'event_day', 25 'type' => 'DECIMAL(2,0)', 26 'compare' => '>=', 27 ), 28 ), 29 array( 30 'event_week' => array( 31 'key' => 'event_week', 32 ), 33 ), 34 array( 35 'relation' => 'AND', 36 array( 37 'key' => 'event_month', 38 'value' => $month, 39 'type' => 'DECIMAL(2,0)', 40 'compare' => '>=' 41 ), 42 array( 43 'key' => 'event_day', 44 'value' => $day, 45 'type' => 'DECIMAL(2,0)', 46 'compare' => '>=' 47 ), 48 ) 49 ), 50 51 'tax_query' => array( 52 array( 53 'taxonomy' => 'event-tag', 54 'field' => 'slug', 55 'terms' => array('accepting'), 56 'operator' => 'IN' 57 ), 58 ) 59 )); 60 global $post; 61 if ($custom_posts) : foreach ($custom_posts as $post) : setup_postdata($post); 62 ?> 63 <div class="block"> 64 <?php 65 $search = array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"); 66 $replace = array("日", "月", "火", "水", "木", "金", "土"); 67 $week = get_post_meta($post->ID, 'event_week', true); 68 $weekJP = str_replace($search, $replace, $week); 69 $weekClass = str_replace($search, $replace, $week); 70 71 if ($week == 'Sun') : 72 $weekClass = 'sun'; 73 elseif ($week == 'Sat') : 74 $weekClass = 'sat'; 75 else : 76 $weekClass = 'others'; 77 endif; 78 ?> 79//ここから日付の取得 80 <span class="month"><?php echo get_post_meta($post->ID, 'event_month', true); ?>/</span> 81 <span class="<?php echo $weekClass ?>"> 82 <span class="day"><?php echo get_post_meta($post->ID, 'event_day', true); ?></span> 83 (<?php echo $weekJP; ?>) 84 </span> 85//ここまで 86 <a href="<?php the_permalink(); ?>"> 87 <?php 88 setup_postdata($post); 89 echo the_post_thumbnail(array(200, 250)); 90 ?> 91 <p class="title"><?php the_title(); ?></p> 92 </a> 93 </div> 94 <?php 95 endforeach; 96 wp_reset_postdata(); 97 endif; 98 ?> 99 </div> 100

出力内容は日付とサムネイル、タイトルのみで、以下のようになっています

HTML5

1<h3></h3> 2<div> 3   <div class="block"> 4     <span class="month">12/23(金)</span>//省略して表記しています 5 <a href="#"><img><p class="title">タイトル</p></a> 6 </div> 7   <div class="block"> 8     <span class="month">12/23(金)</span> 9 <a href="#"><img><p class="title">タイトル</p></a> 10 </div>  11 <div class="block"> 12     <span class="month">12/24(土)</span> 13 <a href="#"><img><p class="title">タイトル</p></a> 14 </div> 15 <div class="block"> 16     <span class="month">12/24(土)</span> 17 <a href="#"><img><p class="title">タイトル</p></a> 18 </div>

#実現したいこと

同じ日付が連続で並ぶのは正直見栄えが良くないので、できれば下記のように
日付ごとにブロック化して出力したいと考えております。

HTML5

1<h3>12/23(金)</h3> 2<div> 3   <div class="block"> 4 <a href="#"><img><p class="title">タイトル</p></a> 5 </div> 6   <div class="block"> 7 <a href="#"><img><p class="title">タイトル</p></a> 8 </div>   9 10<h3>12/24(土)</h3> 11<div class="block"> 12 <a href="#"><img><p class="title">タイトル</p></a> 13 </div> 14<div class="block"> 15 <a href="#"><img><p class="title">タイトル</p></a> 16 </div>

#試したこと
ループを使って出力を制御すれば良いのかな...と思いましたが、あまりうまくいきません。
どなたかご教授いただける方、よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

WordPressを普段使っていないためどう書くかまではわかりかねますが、
foreachループで記事出力後に記事の日付を別途変数に保持しておき、
直前の出力した日付と今回の日付とを比較すればよいだけではないでしょうか。
日付部分のみの比較ができるよう、フォーマットして日付文字列として保持すれか、
phpのDateTimeクラスとか使ってもいいでしょうし。

ループ開始時、日付が変わったあとの記事出力前に、
ブロック(?)の区切りを出力して、
ループ終了時に最後の日付区切りを出力するようなイメージです。

投稿2021/12/21 00:51

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問