Привет, ребята. Сегодняшний пост родился, можно сказать, не случайно. Не подумайте, что я вдруг решил написать баян, который и так все знают и, что не раз уже писалось на различных блогах. Вовсе нет, и приставка «Правильная» в названии поста кое-что обозначает.
Все началось с того, что некоторые системы анализа сайтов мне показывали полные дубли некоторых страниц блога (например, https://alaev.info/blog
и https://alaev.info/blog/
, https://alaev.info/blog/category/seo
и https://alaev.info/blog/category/seo/
и др.), притом, что этих страниц я не мог найти в упор, да и сами дублирующие адреса автоматически редиректились на правильные (правильные у меня это без слеша на конце). Я не мог понять откуда это берется и где робот-анализатор мог их находить. Ночами перестал спокойно спать из-за этого…
Я начал очень тщательно просматривать все внутренние ссылки блога, вдруг я где-то сам установил такие ссылки и не заметил. Но как вы уже, наверное, поняли из заголовка поста, я нашел проблему в постраничной навигации моего WP.
Первая мысль – кривой плагин WP-Pagenavi, не иначе. Пошел делать «распил» файлов плагина, там оказалось все не просто и очень запутано, но я разобрался с проблемой за полчаса. Но это не главное.
Я вспомнил, что когда-то слышал, что можно сделать постраничную навигацию для WordPress и без всяких плагинов – пошел искать и тут же нашел множество вариантов. У меня была надежда, что если делать все самому и вручную без плагинов, то таких косяков быть не должно. Оказалось иначе – некоторые «самопалы» на деле оказались еще хуже, и вместо того чтобы показывать ссылку на основную страницу и без слеша, как мне надо, они показывали /page/1, что является полным дублем основной страницы, при этом реально существующим.
Чтож, опять придется «пилить» — мне не в первой. Для этого я выбрал самое адекватное из найденных решений (вот оно) за что большое спасибо блогу wp-kama.ru. Кстати, проблема постраничной навигации в этом варианте такая же как и в плагине WP-Pagenavi – лишний слеш для первой страницы. Но есть несомненный плюс – мы избавимся от плагина!
Итак, несколько причин, по которым стоит отказаться от плагина WP-Pagenavi в пользу альтернативы, предложенной в этом посте:
- За удобство настроек в админ панели приходится платить ценой лишних запросов, так как эти настройки сохраняются в БД, а затем от туда и берутся, хотя это в теории, а на практике они берутся из кэша опций WordPress, но тем не менее…
- В продолжение первого пункта – удобство в данном случае дело сомнительное – постраничная навигация, это такое дело, что настроил однажды и забыл. А заменить несколько значений в коде (в котором, кстати, есть все пояснения) не составит труда даже новичку.
- Если вы продвинутый пользователь и не впервые слышите слово «php», то при желании что-то изменить (будь то внешний вид или что-то еще) это ни составит никакого труда – код простой, понятный и лаконичный.
- При написании кода, его автор kama использовал те же css стили, что и использует плагин Pagenavi, так что вам даже не придется заново все оформлять.
- Ну и последний пункт, самый важный, ради которого все и затевалось – будут нормальные ссылки на первую страницу, не возникнет никаких дублей и лишних редиректов.
Меньше слов, больше дела – рассмотрим код и что с ним делать.
Открываем в админке «Внешний вид -> Редактор» и выбираем Функции темы (functions.php). В самое начало этого файла вставляем следующий код:
/*** Альтернатива wp_pagenavi (без лишних обращений к данным) ***/ function kama_pagenavi($before='', $after='', $echo=true) { /* ================ Настройки ================ */ $text_num_page = ''; // текст для количества страниц. {current} заменится текущей, а {last} последней. Пример: 'Страница {current} из {last}' = Страница 4 из 60 $num_pages = 10; // сколько ссылок показывать $stepLink = 10; // после навигации ссылки с определенным шагом (значение = число (какой шаг) или '', если не нужно показывать). Пример: 1,2,3...10,20,30 $dotright_text = '…'; // промежуточный текст "до". $dotright_text2 = '…'; // промежуточный текст "после". $backtext = '«'; // текст "перейти на предыдущую страницу". Ставим '', если эта ссылка не нужна. $nexttext = '»'; // текст "перейти на следующую страницу". Ставим '', если эта ссылка не нужна. $first_page_text = ''; // текст "к первой странице" или ставим '', если вместо текста нужно показать номер страницы. $last_page_text = ''; // текст "к последней странице" или пишем '', если вместо текста нужно показать номер страницы. /* ================ Конец Настроек ================ */ global $wp_query; $posts_per_page = (int) $wp_query->query_vars[posts_per_page]; $paged = (int) $wp_query->query_vars[paged]; $max_page = $wp_query->max_num_pages; if($max_page <= 1 ) return false; //проверка на надобность в навигации if(empty($paged) || $paged == 0) $paged = 1; $pages_to_show = intval($num_pages); $pages_to_show_minus_1 = $pages_to_show-1; $half_page_start = floor($pages_to_show_minus_1/2); //сколько ссылок до текущей страницы $half_page_end = ceil($pages_to_show_minus_1/2); //сколько ссылок после текущей страницы $start_page = $paged - $half_page_start; //первая страница $end_page = $paged + $half_page_end; //последняя страница (условно) if($start_page <= 0) $start_page = 1; if(($end_page - $start_page) != $pages_to_show_minus_1) $end_page = $start_page + $pages_to_show_minus_1; if($end_page > $max_page) { $start_page = $max_page - $pages_to_show_minus_1; $end_page = (int) $max_page; } if($start_page <= 0) $start_page = 1; $out=''; //выводим навигацию $out.= $before."<div class='wp-pagenavi'>\n"; if ($text_num_page){ $text_num_page = preg_replace ('!{current}|{last}!','%s',$text_num_page); $out.= sprintf ("<span class='pages'>$text_num_page</span>",$paged,$max_page); } if ($start_page >= 2 && $pages_to_show < $max_page) { $out.= '<a href="'.rtrim(get_pagenum_link(), '/').'">'. ($first_page_text?$first_page_text:1) .'</a>'; if($dotright_text && $start_page!=2) $out.= '<span class="extend">'.$dotright_text.'</span>'; } if ($backtext && $paged!=1) $out.= '<a href="'.rtrim(get_pagenum_link(($paged-1)), '/').'">'.$backtext.'</a>'; for($i = $start_page; $i <= $end_page; $i++) { if($i == $paged) { $out.= '<span class="current">'.$i.'</span>'; } else { $out.= '<a href="'.rtrim(get_pagenum_link($i), '/').'">'.$i.'</a>'; } } if ($nexttext && $paged!=$end_page) $out.= '<a href="'.get_pagenum_link(($paged+1)).'">'.$nexttext.'</a>'; //ссылки с шагом if ($stepLink && $end_page < $max_page){ for($i=$end_page+1; $i<=$max_page; $i++) { if($i % $stepLink == 0 && $i!==$num_pages) { if (++$dd == 1) $out.= '<span class="extend">'.$dotright_text2.'</span>'; $out.= '<a href="'.get_pagenum_link($i).'">'.$i.'</a>'; } } } if ($end_page < $max_page) { if($dotright_text && $end_page!=($max_page-1)) $out.= '<span class="extend">'.$dotright_text2.'</span>'; $out.= '<a href="'.get_pagenum_link($max_page).'">'. ($last_page_text?$last_page_text:$max_page) .'</a>'; } $out.= "</div>".$after."\n"; if ($echo) echo $out; else return $out; } |
Далее во всех файлах шаблона, в которых требуется добавить навигацию, необходимо в удобное место вставить:
<?php if (function_exists('kama_pagenavi')) kama_pagenavi(); ?> |
Если вы затрудняетесь с тем куда это надо вставлять, просто ищите что-то подобное:
<?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?> |
И заменяйте на указанную выше строку.
Вот и все готово, друзья!
Теперь остается открыть файл /wp-content/plugins/wp-pagenavi/pagenavi-css.css
скопировать оттуда весь код и вставить его в свой css файл (обычно это style.css и лежит в папке с вашей темой оформления).
Ну и последний шаг – деактивируем плагин WP-Pagenavi в админке и удаляем полностью его папку с сервера ;)
PS Ради интереса проверил первые пришедшие в голову блоги – на всех имеется такая проблема, решение которой я описал :)
Удачи вам, друзья, и помните – в SEO не бывает мелочей!
Задавайте вопросы, комментируйте. До связи.
Под самопалом, я так понимаю, ты имеешь в виду функцию типа этой — http://dimox.name/wordpress-pagination-without-a-plugin/
Если бы у тебя ЧПУ был со слешем на конце, тогда обозначенной тобой проблемы не было бы (даже при использовании WP-Pagenavi). Когда есть слеш на конце, то при переходе по ссылке вида site.ru/page/1/ происходит автоматический редирект на site.ru/, так что в этом случае никакого дублирования нет. Можешь увидеть это на моем сайте.
Дима, да, под "самопалом" я подразумевал и твой вариант, я его, кстати, тоже испробовал у себя на блоге. Но ты не обижайся, "самопал" это и то, что написано выше, да и вообще все остальные мои (и не только мои) разработки под WordPress.
Так исторически сложилось, что ЧПУ у меня без слеша, и я прекрасно понимаю, что если бы он, слеш, был, то проблема бы не существовала.
Опять же, не только в этом дело. Редирект у меня есть (со страниц со слешем на страницы без него), но вот он мне и не давал спокойствия, и цель была избавиться от этого лишнего редиректа. Я, конечно, заморочился сильно, но зато теперь сплю спокойно ;)
Да я не обижаюсь =) Главное, что ты решил проблему.
Да уж, у меня как всегда все нетривиально получается и так же точно решается ;)
PS Спасибо тебе за интересные публикации на твоем блоге, особенно про css мне нравится, буду ждать чего-нибудь новенького.
Пожалуйста. И тебе спасибо за отзыв ;)
Очень даже убедительно! Вообще я уже давно хочу отказаться от этого плагина, всё никак руки не доходят, но раз уж всё разжёвано, то остаётся лишь в ротик положить :)
Я же правильно понял, после обновления WordPress ничего не слетает?
Давно пора ;)
Да, после обновления ничего не испортится. Испортиться может только после смены темы оформления, именно в файлах темы хранятся все необходимые функции.
Проблем на сайте у меня, конечно, не мало, но постраничная навигация пока основная в моей голове. Я даже придумал себе оправдание, что так люди хоть поплутают немного у меня :) Все, пора их выводить из сумрака!
спасибо пригодилось очень, а то с плагином как то с костылем а так хорошо.
Спасибо! Пролазил по интернету и ничего не нашел (везде плагины суют), а тут все просто и со вкусом)
Классный способ! Берем на вооурежение. Я уже давно пользуюсь камовскими хаками, отличные идеи предлагают!
Саша, спасибо. Классный пост. Вставил твой код себе на блог. Правда внешний вид не такой, как у тебя :-). А вид твоей навигации ты настраивал в таблице стилей?
Буду читать твой блог — очень уютненький. Чувствуется, что сделано с любовью. Скажи, а как ты сделал, что у тебя в блоге сайдбар есть, а в самих постах нет?
Да, внешний вид настраивается в css-стилях темы.
Сайдбар выводится у меня везде, кроме записей. Кстати, в разных разделах сайдбар разный ;) Это все сделано с помощью дополнительных файлов шаблонов.
Саша, привет. Слушай а ты не сталкивался с такой ситуацией. Есть сайт на WP. На нем продвигаются категории.Текст на странице с определенной категорией выводиться с помощью echo category_description (); т.е. тот что в описании для категории каждой. И есть постраничная навигация на категориях. Т.е. заходим в раздел, там заголовок, потом текст, потом список товаров и навигация. Переходим на вторую страницу — там соответственно также, только к тайтлу добавляется бла бла — Страница 2. Так вот, вопрос вот в чем — можно ли как то написать условие , чтобы при переходе на страницу, отличную от страницы 1 категории, текст не выводился? Т.е. на первой странице к примеру есть текст, а нажимаем на вторую и далее, то показывается просто список товаров. На мой взгляд так с точки зрения SEO будет лучше, чтобы дубли не плодить.
Да, такое можно сделать очень просто.
Если для вывода используется только echo category_description (); тогда заменим это на:
if ($paged==1) echo category_description ();
И все должно работать, должно выводиться описание только на первой странице.
Ооо, спасибо. Работает, только изменил на 0 if ($paged==0) echo category_description (); У меня код постраничной немного другой (dimox), может из за этого. Ну а так проверил все работает.
Ну да, у кого то отсчет с нуля начинается, у кого то с единицы. Но главное, что принцип ясен, и что все работает!
Привет! Можете помочь написать такую пагинацию для конкретного плагина?
Плагин я написал(задача с новой работы), осталось только пагинацию написать. Плагин для регистрации работников(создает в базе новую таблицу для сохранении данных о работников: Worker_id, Name, Mail), на админ странице надо вывести список работников по 10 штук, и чтобы были ссылки Next, Prev, Last, First. Заранее большое спасибо ! ! !
Нет, не могу, я не занимаюсь кодингом на заказ. Но а вам стыдно спрашивать, я считаю, если вы написали плагин (ведь сами написали?), то прикрутить пагинацию проще простого, тем более есть мой пример.
Я не специалист в php, но если не сложно объясните, почему в одном случае вы используете
$out.= '<a href="'.rtrim (get_pagenum_link ($i), '/').'">'.$i.'</a>';
а в другом $out.= '<a href="'.get_pagenum_link ($i).'">'.$i.'</a>';
Просто так получается ссылка на страницу 2 выглядит /page/2 (без слеша),
а ссылка "следующая страница" выглядит /page/2/ (со слешем).
Разве не от подобных дублей вы пытались избавится?
Я делал для себя — а у меня нет ссылок "вперед" и "назад" — у меня только нумерация страниц, а с ней все в порядке.
Честно говоря, я уже не очень помню, что я тут мутил, но я точно знаю, что я все проверял и все было окей.
Не первый блог уже вижу, что пишут о постраничной навигации, а на собственном блоге ее нет. Вы пишете, что делали для себя, а где же она? Или на другом блоге?
Смотрите внимательно и не позорьтесь больше =)
Александр, ну может и я слепая? Но в упор никакой постраничной навигации на сайте не вижу. Могу скриншотик предоставить ;) (захожу с гугл.хрома) А мне нужна позарез. У меня ни плагина, ничего такого нет. Вы адрес сайта видите мой... Вот вопрос: тогда у меня стоит перелистывание на предыдущую статью видимо (назад и вперед это наверное правильно назвать) не будут они конфликтовать? если я сначала (как я поняла) установлю плагин постраничной навигации пагенави, потом пропишу код и удалю плагин... Как оно будет?
По коду вебмастера Максима у меня ничего не получилось например. Не было тех файлов, куда код вставить чтоб постраничка заработала (тема такая)(так и называется сайт вебмастер Максим)
Еще вопрос, Может подскажете как шапку сайта поправить может и не шапку, а основную часть. При установке кода постранички (с вебмастера Максим) сильно поднялась шапка над содержимым — там лишняя строка видимо. Я не разобралась где нашкодила :( Максим не поможет...
Ну, может быть забыли кеш почистить после правок — это надо делать обязательно. И какой еще Максим?
Вы меня не поняли. У меня то ее точно нет, я ее не смогла поставить... А кеш я начищаю через каждый раз как что-то сделаю (наверное слишком часто даже ;) Я конкретно у Вас не вижу, что есть постраничная навигация. Если есть — то ее не видно. На главную ходила...тоже нет!
А попытки поставить код веду прочитав код с сайта вебмастер Максим. Ну раз просите, вот адресок (в ТОПЕ он первый, вы третий) по запросу "постраничная навигация по сайту без плагина": webmastermaksim.ru/wordpress/postranichnaya-navigaciya-wordpress-bez-plaginov.html если зайдете мои комменты увидите ;)
Снова поясню, раз не понятно. У меня нет некоторых страниц, описанных в статье Максима, а может еще какая причина. Но код у меня не заработал, а шапка сайта (у меня) поднялась. Надеюсь понятно объяснила.
У вас уже 2 кода с вашего сайта (другие) были использованы и отлично прижились (о чем я писала в комментах у вас на сайте и даже давала рекомендации на ваш сайт у себя друзьям), потому вся надежда на ваш код.
А вместо постраничной навигации сейчас у меня стоит (вперед/назад) следущие/предыдущие и все. Этого мало! Надо чтоб 1,2,3,45,20 и т.д. листать, сами понимаете, сложновато, лучше чтоб на цифру и вперед.
У меня есть постраничная навигация, ну как ее можно не заметить?! Тут https://alaev.info/blog в самом низу как раз то, о чем данный пост.
Все должно работать. Большой код из поста надо вставить в файл functions.php сразу после
<?php
(или<?
).А после этого в файле index.php (например, после
<?php endif; ?>
) добавить<?php if (function_exists('kama_pagenavi')) kama_pagenavi(); ?>
Может, что-то кардинально в шаблонах изменилось в новых версиях WP — я не знаю, какая у вас версия, у меня 2.8.x.
Алексндр, привествую! Буду пробовать код в действии раз все нормально и конфликтов быть не должно. а вот почему я вашу постраничную навигацию не видела. Я смотрела в статьях и вот здесь https://alaev.info/ на ГЛАВНОЙ, а она у вас оказывается с БЛОГА начинается. Я то думала Главная это и есть начало. Мне это не очень понятно почему так и зачем у вас главная отдельно от всего блога как бы. У меня самая последняя версия вордпресс. Все обновляю и плагины и сам вордпресс. Может оно конечно и не надо (обновляться), но я еще это мозгом своим не поняла — мне до вашего уровня расти и расти. Напишу позже что получится у меня.
Сразу вопрос есть ли у вас рецепт использования вывода (тут я уже теряюсь как правильно) с Главной анонсов, в которых не будут видны ссылки. Так чтоб ссылки проявлялись только когда в саму статью зайдешь. Функция вывода the_excerpt. Что я хочу: Чтоб был на главной анонс статьи с картинкой и тегом мор (читать делее) и число знаков такое как мне надо, а не железное например 100 или 150 — то есть по сути как сейчас, только чтоб вот ссылок не было видно. Это плохо когда на главной очень много внутренних ссылок. Не более 100 ведь рекомендуют... А так мне приходится то меньше 5 статей на главную выводить ... вообщем проверять все время и не красиво с ссылками смотрится... Еще бы ссылки научится делать не подчеркнутыми :)
Странно, коммент отправлял еще на прошлой неделе — куда-то подевался :( А я такой большой коммент написал... Расстроился, поэтому ниже напишу кратко.
Ерунда это все про количество ссылок на главной, используйте как и прежде вывод публикации до тега <!--more--> — тут и количество знаков регулировать можно и картинка будет.
А чтобы ссылки подчеркивались, необходимо в style.css прописать:
a, a:link, a:active, a:hover, a:visited {text-decoration:underline;}
Да, жаль что коммент длинный не сохранился... я ждала подробностей ;)
Александр, мне наоборот чтоб ссылки НЕ подчеркивались — чтоб сливались с основным текстом.
Чтобы ссылки не подчеркивались:
a, a:link, a:active, a:hover, a:visited {text-decoration:none;}
Спасибо огромное!!! Сделала всё по вашей "инструкции" — приятно избавляться от лишних плагинов сохраняя при этом функциональность. Буду почаще заглядывать, а то только "начинающая" веб-мастер. :-)
Александр, по поводу подчеркивания ссылок : Не разобралась куда именно в стилях вставить.
Есть вот такие строки: img {
border:0px;
padding:5px;
max-width: 100%; /* not working in IE6*/
}
a {color:#000000;text-decoration: none;}
a:hover {color: #7A5336;text-decoration: underline;}
h1 {font-size:22px;}
далее размеры заголовков, а больше с началом на "a" ничего и нет, может даже и не сюда надо?
Строчку под a:hover {color: #7A5336;text-decoration: underline;}
добавила как у вас a, a:link, a:active, a:hover, a:visited {text-decoration:none;}, но ничего не получилось, также пробовала попеременно вместо своих строк вставлять эту, тоже не вышло.
А больше для линков (ссылок) Я НЕ ВИЖУ КУДА МОЖНО ВСТАВИТЬ ЕЕ?
может у меня в шаблоне отсутсвует и надо прописать целый столбик с командами?
Найдите у себя в style.css этот код:
.entry a{
text-decoration:underline;
}
Замените на:
.entry a{
text-decoration:none;
}
Александр. Ну вообщем то получилось, но получилось фигово. С плагином номерки были красиво в квадратики обрамлены, а сейчас уродский набор цифр — это ж еще надо догадаться по ним клацнуть... :( Что делать? хочу квадратики и без плагина!
Там еще в стиле из плагина вот так начинается: Default style for WP-PageNavi plugin
Может в стиле надо менять? Но почему и что? Его же скопировала и полностью вставила, до этого было очень красиво.
На всякий случай даю продолжение кода стиля: (ссылка там еще имеется ее не даю)
Надо в этом коде менять что то чтоб квадратиками с растоянием эти цифры страниц показывались?
Я еще поэкспериментировала. Вернула обратно стили.ксс без стиля пагенави встроенного — такой же вид. Ничего не отпало и не поменялось. Странно.
Как я и писал в посте — надо стили плагина pagenavi скопировать в свой основной style.css. Вот как раз этот код, что указали в комменте выше и надо вставить в style.css. Кеш почистить не забыть, и страницу сайта обновить, нажав несколько раз ctrl+f5.
Александр, сегодня в браузере другом (гуглхром) обнаружила, что у меня оказывается очень симпатичная постраничная навигация — так как с плагином и была. Я вшоке от яндекс,интернет браузера. сколько дней прошло, кэш начищаю по 25 раз на день, компьютер перезагружала, а он все набор циферок показывает и еще сегодня пыталась шаблончик править — смотрю нефига не меняется. Думаю странно, пошла в гугл хром и там ужас увидела, а тот (яндекс,интернет) ничего не показывает — так и обнаружила что браузер показывает ерунду. :( Так что все отлично получилось по вашему коду и рецепту. А почему после всех чисток (включая СисиКлинер) браузер не обновляет морду не понимаю. Если не трудно посмотрите сами — у вас же есть адрес сайта — чтоб быть увереннее, что мне не показалось на этот раз. Спасибо!
Да, все выглядит красиво и как надо :)
Большое спасибо, Александр!
Рекомендую Ваши записи своим друзьям :)
Добрый день. Подскажите где здесь Плагин вставлять?
<?php get_header (); ?>
<div id="content" class="clearfix">
<div id="main" class="col620 clearfix" role="main">
<?php if ( have_posts () ) : ?>
<header class="page-header">
<h1 class="page-title">
<?php
if ( is_day () ) :
printf ( __ ( 'Daily Archives: %s', 'online-marketer' ), '<span>' . get_the_date () . '</span>' );
elseif ( is_month () ) :
printf ( __ ( 'Monthly Archives: %s', 'online-marketer' ), '<span>' . get_the_date ( 'F Y' ) . '</span>' );
elseif ( is_year () ) :
printf ( __ ( 'Yearly Archives: %s', 'online-marketer' ), '<span>' . get_the_date ( 'Y' ) . '</span>' );
else :
_e ( 'Archives', 'online-marketer' );
endif;
?>
</h1>
</header>
<?php rewind_posts (); ?>
<?php onlinemarketer_content_nav ( 'nav-above' ); ?>
<?php /* Start the Loop */ ?>
<?php while ( have_posts () ) : the_post (); ?>
<?php get_template_part ( 'content', get_post_format () ); ?>
<?php endwhile; ?>
<?php onlinemarketer_content_nav ( 'nav-below' ); ?>
<?php else : ?>
<article id="post-0" class="post no-results not-found">
<header class="entry-header">
<h1 class="entry-title"><?php _e ( 'Nothing Found', 'online-marketer' ); ?></h1>
</header><!-- .entry-header -->
<div class="entry-content">
<p><?php _e ( 'It seems we can’t find what you’re looking for. Perhaps searching can help.', 'online-marketer' ); ?></p>
<?php get_search_form (); ?>
</div><!-- .entry-content -->
</article><!-- #post-0 -->
<?php endif; ?>
</div>
<?php get_sidebar (); ?>
</div>
<?php get_footer (); ?>
</article><!-- #post-0 -->
<?php endif; ?>
***Например здесь***
</div>
<?php get_sidebar (); ?>
Здравствуйте!
У меня вот какой вопрос. Если постраничная навигация выводилась не плагином WP-Pagenavi а плагином WP Page Numbers.
В этом случаи мне надо сначала заменить плагин WP Page Numbers на WP-Pagenavi а потом выполнять все последующие действия?
Спасибо!
Незачем так сложно делать. Просто установи мой вариант, когда он заработает, снесешь свой WP Page Numbers и все окей будет :)
Выложи в коменте стили с WP-Pagenavi пожалуйста.
У меня их нет :) Скачай плагин WP-Pagenavi, открой файл со стилями и скопируй их оттуда.
Добрый день. А возможно ли сделать, чтобы выводилось число страниц не на новые посты, а на популярные? Популярные посты я вывожу без плагина — кодом на отдельной странице.
в functions.php:
# Displays a list of popular posts
function sky_popular_posts ($num) {
global $wpdb;
$querystr = "SELECT $wpdb->posts.post_title, $wpdb->posts.comment_count, $wpdb->posts.ID FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' ORDER BY $wpdb->posts.comment_count DESC LIMIT $num";
$popposts = $wpdb->get_results ($querystr, OBJECT);
if (count ($popposts)>0) {
$count = 0;
foreach ($popposts as $post) {
$count++;
$class = 'item';
if ($count==$num) $class = 'last';
?><li><a href="<?php echo get_permalink ($post->ID); ?>"><?php echo $post->post_title; ?></a></li><?php
}
}
}
на странице:
<ul>
<?php sky_popular_posts (1000); ?>
</ul>
То есть мне нужно, чтобы популярные посты выводились в виде ссылок по 100 штук на страницу
Может и можно сделать то, что вам надо, но это не относится к данному посту. Так что я не знаю :(
Здравствуйте! У меня проблема в том, что постраничная навигации совсем не работает. 2,3 и др страницы открывая, выдает ошибку 404. Pagenavi активировала, но результатов не дает. В настройках постоянные ссылки /%postname%/. Как я поняла Ваши рекомендации по постраничной навигации, для тех случаев когда Pagenavi работает нормально. Для такого "тяжелого" случая как у меня вышеперечисленное решение расчитано?
Да, по сути мои рекомендации относятся к сайтам у которых нормально работает Pagenavi.
Что у вас за случай, сказать по комментарию невозможно, тут надо разбираться индивидуально.
Здравствуйте! Поставил Ваш код (всё по инструкции), но ничего не работает, а в explorer ещё и предупреждение появилось о том что на сайте обнаружен вредоносный код! Как-то сразу перехотелось дальше экспериментировать. После удаления кода — исчезло и предупреждение.
Оставил плагин пока.
Мой код никак не может быть как-то связан с какими-то вредоносными штуками.
Здравствуйте, скажите, пожалуйста, как исправить следующее:
Если я нахожусь на первой странице сайта и нажимаю в навигации на последнюю страницу, то попадаю не на последнюю а на последняя-2, то есть например не на 15 страницу, а на 13.
А если нахожусь на любой другой странице, кроме первой(главной), то последняя, является последней, а не пред, пред последней.
Как это исправить? Пробовал разные функции, в том числе и ваш. Везде одно и тоже.
Буду благодарен за ответ.
И с прошедшими праздниками, вас.)
Похоже, что дело тут не в кодах и плагинах, а в сайте где-то сбой. Если это было бы распространенной проблемой, то ее бы уже давно решили.
Не вышло, весь код вставленный в functions.php — тихо-мирно водрузился над шапкой блога и в самой админке...
Что за косяк?
Вставлять-то надо после <?php или <?, а не перед.
АлаичЪ — респект и большое спасибо! Наконец то нормальный, не глючный, работающий код. Всех благ!
Вопрос не в тему поста.Подскажи как ты реализовал "вверх" с левой стороны?
Здравствуйте. Может подскажите советом. Вопрос в следующем:
И с плагином page navi и без него с этим кодом — построчная навигация работает без проблем.
Но не работает она в обоих случаях только в архиве автора. То есть: сайт.ру/автор/имя автора/page/2 и так далее (page/3...page/5).
Навигация выводится благодаря файлу loop.php и там заменял строки:
<div id="nav-below" class="navigation">
<div class="nav-previous"><?php next_posts_link ( __ ( '<span class="meta-nav"></span> ', 'slidingdoor' ) ); ?></div>
<div class="nav-next"><?php previous_posts_link ( __ ( ' <span class="meta-nav"></span>', 'slidingdoor' ) ); ?></div>
</div><!-- #nav-below -->
Соответственно на строки плагина: <?php wp_pagenavi (); ?>
Или когда делал без плагина, то заменял на: <?php if (function_exists ('kama_pagenavi')) kama_pagenavi (); ?>
Всё прекрасно работает. Только в архиве автора нет. Когда переходишь на страница 2 (или любую другую), то выдаёт: такой страницы нет.
Если можно, то выскажите пару мыслей, где мне копать, чтобы исправить это?
Честно, даже предположить не могу. Страницами автора никогда не пользовался. А может быть это не в навигации дело, а в движке где-то баг закрался?
Если напишите — как искать баги в движке, то почитаем )). А так понять, где там баг или нет невозможно.
Самый простой вариант — установить чистую версию движка на локальный хост и проверить работает или нет. Разумеется, надо ставить такую же версию, как и та, что на рабочем сайте. Если на локалке не работает — значит баг текущей версии движка. Если работает — значит что-то в файлах на сервере накосячили. Можно, например, перезалить файлы на сервере файлами из чистого дистрибутива. Если и это не помогает — отключить все плагины.
В общем — какого-то пошагового алгоритма поиска багов не существует, приходится всегда импровизировать.
Спасибо за советы.
Спасибо, все получилось. У меня вопрос — оранжевые кнопки соц. сетей под статьей плагин? И если да, можно название. Спасибо.
Нет, оранжевые кнопки — это хенд-мейд чистой воды :)
У меня вопрос, как сделать так, чтобы выводилось не 10 статей на главной странице, а скажем 5. Нигде в настройках скрипта не могу это найти.
Настройки -> Чтение (или site.ru/wp-admin/options-reading.php).
Здравствуйте, тезка.
Подобный вопрос наверное уже задавал тов. "Простой".
Попытаюсь изложить.
Сразу напишу, что данный снипет заработал на главной странице (index.php).
Но задача привязать постраничную навигацию к кастомному шаблону страницы
с кастомными типами постов.
Взят за основу loop-page.php:
<?php if ( have_posts () ) while ( have_posts () ) : the_post (); ?>
...
<?php if (is_page ('post_type_1'))
$args = array (
...
elseif (is_page ('post_type_2')) $args = array (
...
?>
<?php $loop = new WP_query ($args);
<?php if ($loop->have_posts ()) { //Вывод постов по порядку.?>
<?php while ( $loop->have_posts () ) : $loop->the_post (); ?>
...
<?php if (function_exists ('kama_pagenavi')) kama_pagenavi (); ?>
После последней строки должна появиться навигация, но увы.
Нужно копать глубже.
Новые типы постов создал при помощи планига Easy Post Types.
Спасибо за вашь труд.
Здравствуйте!
Столкнулся с такой проблемой. На главной странице навигация работает, переключает на следующие страницы, а вот на страницах категории выдает ошибку 404
Вод код category.php:
Пришлось помучаться, но я уже знаю решение этой проблемы. Нужно установить другой плагин: http://www.fortress-design.com/konflikt-wp-pagenavi-i-seo-without-category/
Добрый день. Существует тема для Вордпресс — Parabola. У нее большие проблемы с навигацией и с системными файлами. Сама тема многофункциональна и есть большой выбор настроек. При выборе главной странице сайта (frontpage) — в качестве страницы презентаций со всякими слайдерами и т.п., настройка подразумевает вывод определенного количества статей (от 10 — ...) без навигации.
С помощью не хитрых манипуляций и плагина pagenavi, у меня получилось добавить навигационное меню, НО. при включении второй страницы навигации page2 у меня появляется то же, что и на первой — главной странице.
Попробовал добавить Ваш код в файл функции — идет какой-то конфликт. Видимо нужно найти другой файл темы Paradola, отвечающий за эти функции.
Не могли бы вы помочь?
Присоединяюсь к вопросу!
Такая же ерунда на теме Parabola происходит с плагином pagenavi. Как бы его подкрутить под эту тему, или её под плагин?
Добрый День!
Есть проблема с вашим кодом?
Установил все по инструкции, лог на хосте пишет ошибки в этих строках:
$posts_per_page = (int) $wp_query->query_vars[posts_per_page];
$paged = (int) $wp_query->query_vars[paged];
часть лога на хосте
[Sat Dec 06 13:06:23 201] [error] [client 207.46.13.111] PHP Notice: Use of undefined constant posts_per_page — assumed 'posts_per_page' in /home/srv52262/ site.ru/wp-content/themes/NicePen/functions.php on line 19
[Sat Dec 06 13:06:23 201] [error] [client 207.46.13.111] PHP Notice: Use of undefined constant paged — assumed 'paged' in /home/srv52262/site.ru/wp-content/themes/NicePen/functions.php on line 20
Подскажите как поправить, очень понравилась ваша навигация.
Если не трудно ответьте на почту.
Здравствуйте! Вот мой файл functions.php, куда вставлять код? Куда бы не вставил, сайт закрывается (белый фон).
<?php
...
Есть еще один похожий файл, theme-functions.php
Тема моего блога — "Graphene"
Вставляйте сразу после первой строки <?php
Добрый день. Стоит такая задача, ломаю голову который день. Готов даже заплатить за помощь в создании этой функции.
Вот пример: http://pyz.am/omg/bindi-irwin-named-one-australias-sexiest-women/
Описываю, что нужно. — Сделать такую же пагинацию в постах.
Но там есть одна хитринка. Когда ты находишься на последней странице, нужно чтобы кнопка "дальше" оставалась но уже перебрасывала на предыдущую статью. То есть по сути бесконечная пагинация.
И как убирать лишние кнопки из пагинации? например страницы, кнопку назад и т.д.
Буду очень благодарен за помощь.
Заранее спасибо.
Вот мой вариант пагинации:
function myawesometheme_pagination ( $current_page, $page_count, $side_page_count = 1 ) {
if ( $page_count === 1 ) {
return;
}
$side_page_count_double = $side_page_count * 2;
$visible_page_count = $side_page_count_double + 1;
if ( $page_count > $side_page_count_double ) {
if ( $page_count — $current_page > $side_page_count ) {
if ( $visible_page_count — $current_page < $side_page_count ) {
$begin_page = $current_page — $side_page_count;
$end_page = $current_page + $side_page_count;
} else {
$begin_page = 1;
$end_page = $visible_page_count;
}
} else {
$begin_page = $page_count — $side_page_count_double;
$end_page = $page_count;
}
} else {
$begin_page = 1;
$end_page = $page_count;
}
$pagination_layout = '<ul class="pagination">';
for ( $i = $begin_page; $i < $end_page + 1; $i++ ) {
if ( $i === $current_page ) {
$pagination_layout .= '<li class="pagination-item active">' . $i . '</li>';
} else {
$pagination_layout .= '<a href="'.rtrim (get_pagenum_link ($i), '/').'">'.$i.'</a>';
//$pagination_layout .= '<li class="pagination-item"><a href="' . get_pagenum_link ( $i ) . '">' . $i . '</a></li>';
}
}
$pagination_layout .= '</ul>';
echo $pagination_layout;
}
Привет, АлаичЪ, подскажи, что нужно дописать в твоей функции, чтобы при возврате на главную страницу сайта с её второй, третьей и т.д. страницы ставилась ссылка на домен со слешем. Например, вот так, с этой http://site.com/page/10 на http://site.com/ Сейчас у тебя, при возврате на главную срабатывает http://site.com, а мне нужно со слешем (это касается только главной страницы сайта, в рубриках без слеша, как мне и надо).
Здравствуйте. Такой же вопрос как в комменте 30597
"Установил все по инструкции, лог на хосте пишет ошибки в этих строках:
$posts_per_page = (int) $wp_query->query_vars[posts_per_page];
$paged = (int) $wp_query->query_vars[paged];
часть лога на хосте
[Sat Dec 06 13:06:23 201] [error] [client 207.46.13.111] PHP Notice: Use of undefined constant posts_per_page — assumed 'posts_per_page' in /home/srv52262/ site.ru/wp-content/themes/NicePen/functions.php on line 19
[Sat Dec 06 13:06:23 201] [error] [client 207.46.13.111] PHP Notice: Use of undefined constant paged — assumed 'paged' in /home/srv52262/site.ru/wp-content/themes/NicePen/functions.php on line 20
Подскажите как поправить, очень понравилась ваша навигация."
Отвечать в личку — это зло!
Я заменила строки на которые ругается на
$posts_per_page = (int) $wp_query->query_vars ('posts_per_page');
$paged = (int) $wp_query->query_vars ('paged');
Навигация работает, но со статусом Эктив всегда 1 страница, даже если я зашла на 3-ю.
Кнтент выводится правильно. Подскажите, пожалуйста, что поправить?