Несколько архивных страниц для пользовательских типов сообщений и таксономий

Это как «как я?» и «как я должен?» вопрос, поскольку я думаю о способах достижения своей цели, но они кажутся довольно грязными, поэтому я надеюсь, что есть более аккуратный способ.

В настоящее время у меня есть пользовательский тип сообщения, к которому привязана пользовательская таксономия и использует настраиваемое поле даты (например, «дата события»).

То, что я хотел бы сделать, это иметь целевую страницу для типа сообщения и как-то сочетание следующих (в идеале всех сгруппированных по месяцам):

  • Просмотреть сообщения из пользовательского типа сообщения, таксономический термин A, с датой события в будущем
  • Просмотр сообщений из пользовательского типа сообщения, таксономия A, с датой события в прошлом
  • Просмотр сообщений из пользовательского типа сообщения, таксономия B, с датой события в будущем
  • Просмотр сообщений из пользовательского типа сообщения, таксономия B, с датой события в прошлом

Я предпочел бы избегать 4 страниц, возможно, имея страницу, в которой отображаются сообщения с датой события в текущем месяце, и навигацией для перехода вперед или назад в месяц.

У меня есть запросы, которые сравнивают дату события с текущей датой, отличая ее в будущем от тех, что были в прошлом, но я не уверен, а) как отображать текущий месяц как с прямой, так и с обратной навигацией, и б) как группировать сообщения по месяцам (с именем месяца в заголовке).

Я также не уверен, как создавать соответствующие шаблоны и связывать их вместе. В настоящее время у меня есть шаблон archive-{custom post type} .php, но какие другие файлы мне нужно создать (если есть) и назначить им URL?

Все советы были оценены. Благодарю.

Вы можете создать таксономию – {$ custom_taxonomy} .php, которая будет обрабатывать весь запрос для вашей пользовательской таксономии и полагаться на строку запроса, чтобы показывать события в зависимости от месяца.

URL-адрес может измениться в зависимости от настроек, но должен выглядеть примерно так:

http://yourdomain.com/custom-taxonomy/term-a/?month=2013-07

pre_get_posts действию pre_get_posts ( код поиска), вы можете изменить запрос для этой таксономии и используя параметры настраиваемых полей WP_Query, вы можете показывать сообщения в требуемом месяце.

Чтобы указать месяц как заголовок страницы, вы можете использовать:

 $m = isset( $_GET['month'] ) ? substr($_GET['month'], 5, 2) : date('n'); echo date_i18n('F', mktime(12, 0, 0, (int)$m, 1) ); 

с некоторой логикой вы можете создать ссылку для показа следующего и предыдущего месяца:

 $url = get_term_link( get_queried_object()->term_id, 'your-custom-tax'); $m = isset( $_GET['month'] ) ? substr($_GET['month'],5,2) : date('n'); $y = isset( $_GET['month'] ) ? substr($_GET['month'], 0,4) : date('Y'); $ts = mktime(12, 0, 0, (int)$m, (int)$y, 2); $next_m_ts = $ts + (30*3600*24); $prev_m_ts = $ts - (3*3600*24); $next_url = add_query_arg( array('month' => date('Y-m', $next_m_ts) ), $url ); $prev_url = add_query_arg( array('month' => date('Y-m', $prev_m_ts) ), $url ); 

Надеюсь, это может вам помочь, но, пожалуйста, обратите внимание, что весь код здесь не проверен.