Я хотел бы реализовать функциональность архива на основе даты (аналогично оригинальной функциональности виджета WP Archives) для пользовательского типа записи (CPT). Сложность заключается в том, что мне нужно группировать и архивировать события не по дате публикации, а по event_date
сохраненному мета-значению.
Например, у меня event
CPT зарегистрирован следующим образом:
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'has_archive' => 'past-events',
'rewrite' => array('slug' => 'event','with_front' => false),
'query_var' => true,
'capability_type' => 'post',
'hierarchical' => false,
'show_in_nav_menus' => false,
'menu_position' => 15,
'supports' => array(
'title',
'editor',
'author',
'revisions'
)
);
register_post_type('event',$args);
Я хотел бы создавать ссылки на архивы, такие как /past-events/2011/04
, аналогичные функциональности виджета WP Archives. Однако мои события должны быть заархивированы event_date
мета-значением. Кроме того, если, скажем, на апрель 2011 года событий больше, чем у меня Blog pages show at most
установлено, я хотел бы иметь правильную нумерацию страниц для страниц. И в идеале, при просмотре одного события у меня были бы правильные ссылки на предыдущее и следующее событие на этой странице архива. Надеюсь, это имеет смысл.
Я использую WP3.1. Я дошел до has_archive
настройки CPT. Я огляделся, но запутался, как действовать дальше. Это что-то, что я должен написать сам, или это можно сделать с помощью функций или плагинов WP?
Был бы очень признателен за любую помощь и советы.
Большое спасибо, Даша
Вы не можете добиться этого с помощью встроенных функций, и я не знаю ни одного плагина, который помог бы вам в этом, и для написания такой функциональности потребовалось бы много кода…. но может быть более простое решение, поэтому в каком формате ваше
event_date
мета значение?@Bainternet, он хранится в виде строки
"YYYY-MM-DD"
.Итак, предлагаемое решение состоит в том, чтобы изменить
post_date
поле на основе вашего мета-значения «event_date» вsave_post
хуке действия, чтобы вы могли использовать все встроенные функции обычным образом.@Bainternet повлияет ли это на появление событий на сайте? Я имею в виду, что когда я создаю будущее событие, скажем, на 2 месяца вперед, я хочу, чтобы оно отображалось на сайте. Я думаю, что если я изменю
post_date
событие, оно будет опубликовано в этот день и не будет видно до этого?Не уверен, что это произойдет, я просто попытался изменить post_date на 22-03-2012, и все отлично.
Это не полностью отвечает на ваш вопрос, но это попытка помочь.
Взгляните на: http://seebz.net/notes/#note-145 Настраивает CPT с архивами дат и устанавливает все необходимые правила перезаписи.
Что касается использования
wp_get_archives()
, у него нет необходимых хуков фильтров для работы с CPT, поэтому я рекомендую вам скопировать функцию и изменить ее по своему вкусу.