Модератор
Юрій
(@yube)
ну с тэгами и страницами автора разобрался без проблем, единственная загвозка, создать разный шаблоны вот таким адресам твой сайт/?m=20090724,\
твой сайт/?m=20090601, taxonomy.php что то не получается подкрутить,не понятно пока как прописать, если брать отсюда то куда не шло term_taxonomy_id, но это все равно немного не то, подскажи как сделать это
Нет или я торможу или действительно невозможно сделать это. Вот страницы типа /?page_id=,/?cat=,/?tag=,/?author без проблем можно создать что хочешь. А вот со страницами типа /?m= не могу никак разобраться, и в иерархии смотрел, может не то вижу, как говорят смотрю в книгу — вижу фигу. Подскажите, какой файлик править. Все перепробовал вроде, не получается, даже не получается вывести отдельный шаблон /?m=2009, все равно все /?m=любой какой есть, все завязаны на archive.php. Даже так пробовал archive-2009.php — нет, наверное не то не работает
P.S. Ю.Б. Ткни еще раз, где почитать,(иначе закрою сайт и напишу в закрытии сайта прошу винить Ю.Б. )
Модератор
Юрій
(@yube)
Одним больше, одним меньше — мне по барабану. Закрывайте хоть все, включая Фкантакте и Одноквасников :)))
Смотрим wp-includes/theme.php и видим:
function get_archive_template() {
return get_query_template('archive');
}
в то время как у, скажем, get_author_template() есть фрагмент
if ( $author )
$templates[] = "author-{$author}.php";
if ( $author_id )
$templates[] = "author-{$author_id}.php";
Из чего делаем вывод, что архив — он и в Африке архив.
Что делать? Копать глубже.
Смотрим на функцию get_query_template():
function get_query_template($type) {
$type = preg_replace( '|[^a-z0-9-]+|', '', $type );
return apply_filters("{$type}_template", locate_template(array("{$type}.php")));
}
и видим хук «{$type}_template». Учитывая, что для архива параметром является ‘archive’, делаем вывод, что повесив фильтр на хук ‘archive_template’, мы можем вместо archive.php подсовывать темплейтеру нужные нам файлы-шаблоны. Пишем фильтр в function.php Темы, ловим и душим багов и в конце концов наслаждаемся желанным результатом.
Урок окончен. Все свободны.
пробую через add_filter(«archive_template», «mifiltre»)? однако не могу правильно прописать сам фильтр(с утра мозги крутит) при каком значении он должен подсовывать один шаблон, а в каком другой, вот например /?m=2009 и другой /?m=20090101? как там прописать? что бы при выводе этих адресов он срабатывал. Что сложно пока в этом направлении у меня
Модератор
Юрій
(@yube)
Думаю, что нужно проверять что-то в $wp_query->query_vars. Что именно и как — разбирайтесь сами, иначе, если я начну копать, это уже будет не бесплатная консультация, а работа;)
Посмотрите внимательнее секцию «Отображение даты».
Что то трудновато у меня идет, ладно придется пока оставить, единственное, что можно пожелать разработчикам, что бы архивы были так же настраеваемы как категории или страницы автора. Спасибо всем, буду хоть примерно знать, где нужно копать. В отображениях даты ничего толком не нашел, сайт ищет archive.php и не могу прервать это, и тем более указать, что при этом надо искать это, а при том -то.Фильтр пробовал, то фатал выдает, то не работает вообще, а фильтр в function.php темы вообще никак не срабатывает. У архивов нет id и нет slug, в фильтре не к чему не привяжешься, может по месяцам,и годам, то тогда то же не выходит, например указать вывести то что меньше 2009 года это куда не шло, а вот если год на сайте архивов только один, а раскидать по месяцам не выходит, как прописать меньше 2 месяца. Блин, извините за флуд, что то загнался. Будем искать, в поиске решения пока не видел, ни на одном блоге.
P.S. Или я его подкручу или он меня скрутит окончательно, скорее всего второе.
Вы пробовали создать date.php
?
да я создал его положил в директории там где и archive.php но переход по этому адресу /?m=2009 никак не реагирует на это файл, или при создания файла data.php что то не так, может в него нужно что то определеное прописывать
data.php
— не то же самое, что date.php
.
Извини Сергей, тогда не пойму о каком файле идет речь, куда его поместить и что там должно быть прописано, я думал ты из иерархия шаблонов имеешь ввиду. Никакой другой файл я не создавал
Да, из иерархии шаблонов. Проверил на локальной установке:
1. Создал date.php
(не data.php
!) в каталоге текущей темы.
2. Убедился, что при открытии /?m=2009
отобразился именно он.
да отобразился именно он, все нормал,(действительно date.php совсем не data.php). Отобразился нормально, но вот что с другими подобными файлами делать типа /?m=20090301, как заставить его видеть другой шаблон, на рисунке в иерархии для него нет ни id ни slug, как же решить эту проблему без вмешательство в движок, или все равно придется прикручивать
Если нужны отдельные шаблоны для архивов за год, месяц и день, в этом же date.php
можно написать примерно так (предварительно создав файлы):
<?php
if ( is_year() )
include 'date-year.php';
elseif ( is_month() )
include 'date-month.php';
elseif ( is_day() )
include 'date-day.php';
?>