Wordpress template
2565 сообщений
#12 лет назад
Всем привет!Возникла такая проблема, в общем я учусь делать темы под wp, уже многое освоил и даже сверстал главную и страницу открытого поста + типовую страницу.
Все это дело на локалке.
Шаблон состоит пока из следующих файлов:
404.php
comments.php
footer.php
functions.php
header.php
home.php
index.php
page.php
sidebar.php
single.php
Так вот, дальше, ссылки выглядят таким образом (например на страницу открытого поста):
ссылка
Но вот в чем проблема, я начал делать главную страницу блога (где будут все посты), но страница не работает, даже если создан blog.php или archive.php, я имею ввиду не работает следующий адрес:
ссылка
ссылка
При заходе на них выпадает 404.
Помогите разобраться с недугом пожалуйста.
Всем добра)
10571 сообщение
10571 сообщение
#12 лет назад
http://сайт/materialy/interesnye-stati/buduschim-mamam.html - у меня /materialy/interesnye-stati/ категории и в них лежит уже по иерархии файл buduschim-mamam.html
935 сообщений
#12 лет назад
Цитата ("MatArt"):Шаблон состоит пока из следующих файлов:
404.php
comments.php
footer.php
functions.php
header.php
home.php
index.php
page.php
sidebar.php
single.php
а archive.php, где? Забыл? Вот тебе и 404 тогда, получай!Цитата ("MatArt"):
даже если создан blog.php
А не надо его создавать. Для блоговой страницы есть index.php вот там и создавай цикл вывода постов.
А вообще, если что-то не работает, подсматривай в родные wordpress темы, типа twentyeleven, и будет тебе счастье))
2565 сообщений
#12 лет назад
AlexsimA, Спасибо, попробую вариант с папками!Цитата ("radar0080"):
а archive.php, где? Забыл? Вот тебе и 404 тогда, получай!
Даже если есть archive.php, все равно выдает 404
Цитата ("radar0080"):
А не надо его создавать. Для блоговой страницы есть index.php вот там и создавай цикл вывода постов.
А вообще, если что-то не работает, подсматривай в родные wordpress темы, типа twentyeleven, и будет тебе счастье))
А для главной тогда что используется?
935 сообщений
#12 лет назад
То, что задано в админке (Параметры->Чтение).Если там на главной задана статичная страница, то выводится то, что в page.php,
иначе — то, что в index.php.
(По умолчанию index.php)
10571 сообщение
#12 лет назад

MatArt, Матвей, вот что к примеру получается в шаблоне. Иерархия. Остальное уже на сайте делается, если конечно вы не делаете шаблон - квик-старт

2565 сообщений
#12 лет назад
AlexsimA, radar0080, А если я делаю тему? Ну вот например я купил готовую тему, ставлю ее и у меня изначально главная страница - статическая, а блог уже соответственно на странице blog, как такое организовать?
10571 сообщение
#12 лет назад
MatArt, Я не понимаю у вас стоитДенвер, Апачи. На чем вы все делаете?
10571 сообщение
#12 лет назад
Просто многие страницы уже создают в админке системы, я с WP давно разбиралась. Работаю с Jоomla.Я думаю на ваш вопрос ответит блестяще - Hungry_Hunter
10571 сообщение
#12 лет назад
Или Artisteer приобретите или скачайте. Конструктор шаблонов
935 сообщений
#12 лет назад
Цитата ("MatArt"):и у меня изначально главная страница - статическая, а блог уже соответственно на странице blog, как такое организовать?
Все просто: вывод блоговой ленты — index.php, одного поста — single.php, статичной страницы — page.php.
Если эти файлы в теме есть (и код в них корректный), то проблем быть не должно, априори.
Чтобы вывести блоговую страницу по адресу: www.domen/blog, нужно создать произвольное меню (зарегистрировать его в functions.php, и написать код его вывода в index.php, single.php, page.php ). Потом в админке настроить это меню (назвать его, добавить пункты меню), потом добавить один из пунктов меню — Блог (выбрав его из выбора рубрик), перед этим создав рубрику Блог, и добавив в него пару постов для теста.
В итоге на странице www.domen/category/blog будет блоговая лента.
(category — wordpress вставит в обязательном порядке, т.к. это рубрика постов)
А один пост будет по адресу www.domen/название поста
Профит.
А со страницей архива то же самое, во-первых, нужно вывести ссылку на него (в коде темы или в админке из виджета, например), во-вторых, нужно чтобы было что, архивировать (посты, а не статичн. страницы).
2565 сообщений
#12 лет назад
radar0080, вы все перемешали в моей голове %)Сейчас буду дальше пробовать, буду описывать ситуацию тут)
AlexsimA, denwer'a на мак к сожалению нету, юзаю mamp
2565 сообщений
#12 лет назад
Блин, оказывается я просто опростоволосился...Незнал как сделать "хлебные крошки" и решил использовать решение найденное в интернете:
/* Хлебные крошки для WordPress (breadcrumbs)
* $sep - Pазделитель.
* $term - Eсли заранее определен массив терминов то передаем его. get_the_terms( $post->ID, array('category','new_tax') ); По умолчанию, первый попавшийся термин для отдельных записей и если это страница термина.
* $taxonomies - Таксономии, хлебные крошки для которых нужно показать (указываем только древовидные таксономии (как категорий)) array('category', 'new_tax'). По умолчанию, все публичные таксономии, включая category.
*/
function kama_breadcrumbs( $sep=' » ', $term=false, $taxonomies=false ){
global $post, $wp_query, $wp_post_types;
// для локализации
$l = array(
'home' => 'Главная'
,'paged' => 'Страница %s'
,'404' => 'Ошибка 404'
,'search' => 'Результаты поиска по зпросу - <b>%s</b>'
,'author' => 'Архив автора: <b>%s</b>'
,'year' => 'Архив за <b>%s</b> год'
,'month' => 'Архив за: <b>%s</b>'
,'day' => ''
,'attachment' => 'Медиа: %s'
,'tag' => 'Записи по метке: <b>%s</b>'
,'tax_tag' => '%s из "%s" по тегу: <b>%s</b>'
);
$w1 = '<div>';
$w2 = '</div>';
$patt1 = '<span typeof="v:Breadcrumb"><a href="%s" rel="v:url" property="v:title">';
$sep .= '</span>'; // закрываем span после разделителя!
$patt = $patt1.'%s</a>';
if( $paged = $wp_query->query_vars ){
$pg_patt = $patt1;
$pg_end = '</a>'. $sep . sprintf($l, $paged);
}
if( is_front_page() )
return print $w1.($paged?sprintf($pg_patt, get_bloginfo('url')):'') . $l . $pg_end .$w2;
elseif( is_404() )
$out = $l;
elseif( is_search() ){
$s = preg_replace('@<script@i', '<script>alert("запрос не верный!"); </script>', $GLOBALS);
$out = sprintf($l, $s);
}
elseif( is_author() ){
$q_obj = &$wp_query->queried_object;
$out = ($paged?sprintf( $pg_patt, get_author_posts_url($q_obj->ID, $q_obj->user_nicename) ):'') . sprintf($l, $q_obj->display_name) . $pg_end;
}
elseif( is_year() || is_month() || is_day() ){
$y_url = get_year_link( $year=get_the_time('Y') );
$m_url = get_month_link( $year, get_the_time('m') );
$y_link = sprintf($patt, $y_url, $year);
$m_link = sprintf($patt, $m_url, get_the_time('F'));
if( is_year() )
$out = ($paged?sprintf($pg_patt, $y_url):'') . sprintf($l, $year) . $pg_end;
elseif( is_month() )
$out = $y_link . $sep . ($paged?sprintf($pg_patt, $m_url):'') . sprintf($l, get_the_time('F')) . $pg_end;
elseif( is_day() )
$out = $y_link . $sep . $m_link . $sep . get_the_time('l');
}
// Страницы и древовидные типы записей
elseif( $wp_post_types->hierarchical ){
$parent = $post->post_parent;
$crumbs=array();
while($parent){
$page = &get_post($parent);
$crumbs = sprintf($patt, get_permalink($page->ID), $page->post_title);
$parent = $page->post_parent;
}
$crumbs = array_reverse($crumbs);
foreach ($crumbs as $crumb)
$out .= $crumb.$sep;
$out = $out . $post->post_title;
}
else // Таксономии, вложения и не древовидные типы записей
{
// Определяем термины
if(!$term){
if( is_singular() ){
if( !$taxonomies ){
$taxonomies = get_taxonomies( array('hierarchical'=>true, 'public'=>true) );
if( count($taxonomies)==1 ) $taxonomies = 'category';
}
if( $term = get_the_terms( $post->post_parent?$post->post_parent:$post->ID, $taxonomies ) )
$term = array_shift($term);
}
else
$term = &$wp_query->get_queried_object();
}
if( !$term && !is_attachment() )
return print "Error: Taxonomy isn`t defined!";
$pg_term_start = ($paged && $term->term_id) ? sprintf( $pg_patt, get_term_link( (int)$term->term_id, $term->taxonomy ) ) : '';
if( is_attachment() ){
if(!$post->post_parent)
$out = sprintf($l, $post->post_title);
else
$out = crumbs_tax($term->term_id, $term->taxonomy, $sep, $patt) . sprintf($patt, get_permalink($post->post_parent), get_the_title($post->post_parent) ).$sep.$post->post_title;
}
elseif( is_single() )
$out = crumbs_tax($term->parent, $term->taxonomy, $sep, $patt) . sprintf($patt, get_term_link( (int)$term->term_id, $term->taxonomy ), $term->name). $sep.$post->post_title;
// Метки, архивная страница типа записи, произвольные одноуровневые таксономии
elseif( !is_taxonomy_hierarchical($term->taxonomy) ){
// метка
if( is_tag() )
$out = $pg_term_start . sprintf($l, $term->name) . $pg_end;
// архивная страница произвольного типа записи
elseif( !$term->term_id )
$home_after = sprintf($patt, '/?post_type='. $term->name, $term->label). $pg_end;
// таксономия
else {
$post_label = $wp_post_types->labels->name;
$tax_label = $GLOBALS->labels->name;
$out = $pg_term_start . sprintf($l, $post_label, $tax_label, $term->name) . $pg_end;
}
}// Рубрики и таксономии
else
$out = crumbs_tax($term->parent, $term->taxonomy, $sep, $patt) . $pg_term_start . $term->name . $pg_end;
}
// ссылка на архивную страницу произвольно типа поста
if( !empty($post->post_type) && $post->post_type!='post' && !is_page() && !is_attachment() && !$home_after )
$home_after = sprintf($patt, '/?post_type='. $post->post_type, $wp_post_types->labels->name ). $sep;
$home = sprintf($patt, get_bloginfo('url'), $l ). $sep . $home_after;
return print $w1. $home . $out .$w2;
}
function crumbs_tax($term_id, $tax, $sep, $patt){
$termlink = array();
while( (int)$term_id ){
$term2 = &get_term( $term_id, $tax );
$termlink = sprintf($patt, get_term_link( (int)$term2->term_id, $term2->taxonomy ), $term2->name). $sep;
$term_id = (int)$term2->parent;
}
$termlinks = array_reverse($termlink);
return implode('', $termlinks);
}
Все проблемы были из-за этого куска вставленного в functions.php
Больше не использую готовые решения)
935 сообщений
#12 лет назад
Может, ошибка было в отсутствии <?php в самом вверху этого кода? (Автор этого кода мог это опустить, как элементарную вещь, которую все и так знают)
935 сообщений
#12 лет назад
Я сам использовал на одном сайте эти же хлебные крошки от этого же автора (не забыв о <?php вверху), все работает, без проблем.