情報を追記している場合はありますが、古い情報を訂正はしていませんので、公開年月日を参照してください。プラグイン・タグ、いずれもワードプレス・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 Blocks VS ショートコード
- CF7 デートピッカーに休業日を設定
- スラッグ設定の関数
- ACF エディターの自動整形を止める
- カレンダー表示の日時予約サンプル
- ACF リピーターをカレンダーに出力するコードの解説の続き
- acf サブフィールドの合計を親フィールドに入れる
- ACF リピーターをカレンダーに出力するコードの解説など
- ブロックエディターでブロックを制限する
- ACF リピーターをカレンダーに出力するコード
- ACF 指定した年月のデータを一気にサブフィールドに入れる
- ワードプレスの最強ツール
- トップページのよくある要望
- ランダムな複数開催日のイベントをカレンダーに
- qtranslate の投稿を言語ごとに分ける
- ブロックエディターを一部オフに
- wpcf7_add_form_tag フィールドの出し分け
- お知らせのリンク先
- ACF リピーターとモーダルウィンドウ