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

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

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

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

PHP

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

Q&A

解決済

1回答

2324閲覧

Advance Custom Fieldの繰り返しをカレンダーと紐づけしたいです

gurmu222

総合スコア14

WordPress

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

PHP

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

0グッド

0クリップ

投稿2019/07/15 00:30

Advance Custom Fieldのデイピッカーを使い、繰り返しで日付を選び、
カレンダーにリンクを表示させたいです。

カレンダーにはwp-includesのgeneral-template.phpのカレンダーになる部分からfunctions.phpにコピーし、カレンダーとカスタムフィールド(値が単)を表示することが出来たのですが、カスタムフィールドが繰り返しになるとmeta_keyの部分やmeta_valueの部分をどう書けばいいのかわからず困っております。

現状はカスタムフィールドは単の_custom_event_dateというkeyで設定しています。
そこを繰り返しのdate_repeatのdate(複数設定)に変更しても表示できるように変更したいです。。

// カレンダーの日付の部分 $dayswithposts = $wpdb->get_results("SELECT DISTINCT DAYOFMONTH(meta_value) FROM $wpdb->posts as p left outer join $wpdb->postmeta as pm on p.id = pm.post_id WHERE pm.meta_key = '_custom_event_date' AND pm.meta_value >= '{$thisyear}-{$thismonth}-01 00:00:00' AND post_type = 'event' AND post_status = 'publish' AND pm.meta_value <= '{$thisyear}-{$thismonth}-{$last_day} 23:59:59'", ARRAY_N); if ( $dayswithposts ) { foreach ( (array) $dayswithposts as $daywith ) { $daywithpost[] = $daywith[0]; } } else { $daywithpost = array(); } // See how much we should pad in the beginning $pad = calendar_week_mod( date( 'w', $unixmonth ) - $week_begins ); if ( 0 != $pad ) { $calendar_output .= "\n\t\t".'<td colspan="'. esc_attr( $pad ) .'" class="pad">&nbsp;</td>'; } $newrow = false; $daysinmonth = (int) date( 't', $unixmonth ); for ( $day = 1; $day <= $daysinmonth; ++$day ) { if ( isset($newrow) && $newrow ) { $calendar_output .= "\n\t</tr>\n\t<tr>\n\t\t"; } $newrow = false; if ( $day == gmdate( 'j', $ts ) && $thismonth == gmdate( 'm', $ts ) && $thisyear == gmdate( 'Y', $ts ) ) { $calendar_output .= '<td id="today">'; } else { $calendar_output .= '<td>'; } if ( in_array( $day, $daywithpost ) ) { // any posts today? $date_format = date( _x( 'F j, Y', 'daily archives date format' ), strtotime( "{$thisyear}-{$thismonth}-{$day}" ) ); /* translators: Post calendar label. 1: Date */ $label = sprintf( __( 'Posts published on %s' ), $date_format ); $searchUrl = esc_url( home_url( '/' ))."event/?meta_key=_custom_event_date&meta_value=".$thisyear."-".$thismonth."-".str_pad($day, 2, 0, STR_PAD_LEFT); $calendar_output .= sprintf( '<a href="%s" aria-label="%s">%s</a>', $searchUrl, esc_attr( $label ), $day ); } else { $calendar_output .= $day; } $calendar_output .= '</td>'; コード

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

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

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

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

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

guest

回答1

0

ベストアンサー

ACFの日付けの保存フォーマットとかで違いはあると思いますが、こんな感じでgurmu222さんがやりたがっていることと同じことをやっています。

PHP

1//例えば$targetyear, $targetmonthにセミナーイベントがある投稿を取得するならば、 2 3 $cpt = 'hogehoge';//カスタム投稿タイプ 4 $targetmonth_last_day = date('t', mktime(0, 0 , 0, $targetmonth, 1, $targetyear) ); 5 6 $wpdb->prepare( 7 "SELECT 8 $wpdb->posts.ID, 9 $wpdb->posts.post_title, 10 substring( $wpdb->postmeta.meta_value, 7, 2) 11 12 FROM 13 $wpdb->posts 14 LEFT JOIN 15 $wpdb->postmeta 16 ON 17 $wpdb->posts.ID = $wpdb->postmeta.post_id 18 WHERE 19 $wpdb->posts.post_type = '$cpt' 20 AND 21 post_status = 'publish' 22 AND 23 $wpdb->postmeta.meta_key like 'セミナー日程_%_セミナー開催日' 24 AND 25 $wpdb->postmeta.meta_value >= %s 26 AND 27 $wpdb->postmeta.meta_value <= %s", 28 $targetyear . $targetmonth . "01", 29 $targetyear . $targetmonth . $targetmonth_last_day 30); 31 32

投稿2019/07/15 05:51

yukikp

総合スコア797

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問