情報を追記している場合はありますが、古い情報を訂正はしていませんので、公開年月日を参照してください。プラグイン・タグ、いずれもワードプレス・PHPのバージョン等によって動作しない場合もあります。
とある施設の上演スケジュールをACFで作るという案件。投稿タイプはスケジュールとプログラムでスケジュールは1投稿で1月分。
タイトルとスラッグは年月で必ず半角数字でないといけないので、数値フィールドで年と月、
function my_post_title_updater( $post_id ) { $my_post = array(); $my_post['ID'] = $post_id; if ( get_post_type() == 'schedule') { $my_post['post_title'] = get_field('year')."年".get_field('month')."月"; } wp_update_post( $my_post ); } add_action('acf/save_post', 'my_post_title_updater', 20); function my_acf_update_value( $value, $post_id, $field ) { if(get_post_type( $post_id ) == 'schedule') { $month = get_field('month'); $value = get_field('year').sprintf('%02d', $month); } return $value; } add_filter('acf/update_value/name=slug', 'my_acf_update_value', 10, 3); function custom_post_title( $value, $post_id, $field ) { $type = get_post_type($post->ID); if ( 'schedule' == $type ) { if(isset($value) && $value != '') { $args = array( 'ID' => $post_id, 'post_name' => sanitize_title($value) ); wp_update_post( $args ); } return $value; } } add_filter('acf/update_value/name=slug', 'custom_post_title', 10, 3);
として、(*こちら参照)トップページで「今日」のスケジュールを取得する際はスラッグから「今日」を含む月の投稿を取得。
スケジュール用の繰り返しフィールドは予め31日分デフォルト値を設定(*こちら参照)
プログラムの選択は、投稿オブジェクトのほうがコードは楽だが、選択時に検索やタームの絞り込みができる関連フィールドを利用。
スケジュールの日付部分に関して、
スラッグ用のフィールドから年月$ym を取得、$date1 = get_sub_field(‘date’); で日付を取得、$date2 = $ym.sprintf(‘%02d’, $date1); で年月日を取得、$date3 = date(‘w’, strtotime($date2)); で日本語表記に変換するための曜日を取得、$date4 = date(‘l’, strtotime($date2)); でクラスに英字で入れるための曜日を取得。$date3 は$week = [ ‘日’, ‘月’, ‘火’, ‘水’, ‘木’, ‘金’, ‘土’,]; echo $week[$date3]; のように。
トップページでの当日分の取得に関して、
$ym = date(‘Ym’); $pid = $wpdb->get_var(“SELECT ID FROM $wpdb->posts WHERE post_name = $ym”); で当月分の投稿IDを取得して投稿IDからフィールドを取得、当日の日付とイコールの行から内容を取得という順。
2024.2 追記:
acf 年月から1月分のフィールドを自動で作成する関数、acf 年月から1月分のフィールドを自動で作成する関数2 参照
2024.11 追記:
ACF リピーターをカレンダーに出力(予約カレンダーの実装) 参照
その他のAdvanced Custom Fields に関する記事一覧
- ACF デートピッカーのフォーマット設定
- ACF リピーターをカレンダーに出力(予約カレンダーの実装)
- ACF 入れ子リピーターの内側だけループ
- WP REST API 独自エンドポイントとACF
- ACF 値の登録や保存
- REST API でACFの表示など
- Advanced Custom Fields の表示、まとめ
- PHP8以降で出るWarning
- イベントの開催期間の表示
- イベント終了時にタイトルに追加する
- アクセスランキング
- ワードプレスからメール送信
- CF7で予約した人にリマインドメールを送る
- ACF 設定ページ(オプションページ)
- ACF escape HTML
- 出勤・スケジュール管理の覚書2
- ACF 複数選択チェックボックスのチェックの有無
- Advanced Custom Fields で役立つ関数
- 日時予約簡易版
- ACF チェックボックス(複数選択)のアップデート