日付形式のアーカイブページを階層タクソノミーに変更
作成日:
2019年1月27日
の改変。
どうせなら、イベントアーカイブも「年」「月」で階層アーカイブにした方が管理しやすいと思い直しまして、以下のように修正です。
[php]register_taxonomy('event_archive',
'event',
array(
'labels' => $event_archive_labels,
'hierarchical' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_rest' => true,
'rest_base' => 'event_archive',
'update_count_callback' => '_update_post_term_count',
'query_var' => true,
'rewrite' => array(
'slug' => 'event_archive',
),
)
);[/php][php]'hierarchical' => true,[/php]で、カテゴリーのように親子関係を持つ階層に変更
そしてイベント投稿時のアクションも下記のように変更。[php]function presave_option() {
global $post;
if ( 'event' === $post->post_type ) {
$from_date = get_post_meta( $post->ID, 'from_date', true );
$archive_parent_name = date( 'Y年', strtotime( $from_date ) );
$archive_parent_slug = date( 'Y', strtotime( $from_date ) );
if ( ! term_exists( $archive_parent_slug, 'event_archive' ) ) {
wp_insert_term( $archive_parent_name, 'event_archive', $args = array( 'slug' => $archive_parent_slug ) );
}
$archive_parent_id = get_term_by( 'slug', $archive_parent_slug, 'event_archive' )->term_id;
$archive_name = date( 'Y年n月', strtotime( $from_date ) ) . 'のイベント';
$archive_slug = date( 'Y-n', strtotime( $from_date ) );
if ( ! term_exists( $archive_slug, 'event_archive' ) ) {
wp_insert_term( $archive_name, 'event_archive', $args = array( 'slug' => $archive_slug, 'parent' => $archive_parent_id ) );
}
wp_delete_object_term_relationships( $post->ID, 'event_archive' );
wp_set_object_terms( $post->ID, array( $archive_slug ), 'event_archive', true );
}
}
add_action( 'save_post', 'presave_option', 999 );[/php] [php]$archive_parent_name = date( 'Y年', strtotime( $from_date ) );
$archive_parent_slug = date( 'Y', strtotime( $from_date ) );
if ( ! term_exists( $archive_parent_slug, 'event_archive' ) ) {
wp_insert_term( $archive_parent_name, 'event_archive', $args = array( 'slug' => $archive_parent_slug ) );
}[/php]で親階層にあたる「年」のイベントアーカイブのタームを作成
[php]$archive_parent_id = get_term_by( 'slug', $archive_parent_slug, 'event_archive' )->term_id;[/php]で親階層のタームIDを取得
[php]wp_insert_term( $archive_name, 'event_archive', $args = array( 'slug' => $archive_slug, 'parent' => $archive_parent_id ) );[/php]で親子関係を付けてタームを追加
です。
物草 灸太郎
WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。
関連投稿
コメントをどうぞ
- メールアドレスが公開されることはありません。
- コメント欄にURLは入力できません。
- このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシーと利用規約が適用されます。
コメント
2019年1月28日 11:50 AM