студия занимательная МИХАЛИКА
! Михалика - запросто с WordPress:
доступная ручная работа по правилам оптимального интернет(а)
Здравствуйте !

издатель:   в теме: В теме: Без плагинов
студия занимательная МИХАЛИКА

Постраничная навигация php WordPress

навигация php вордпресс

Сегодня мы настроим постраничную навигацию посредством PHP Что это!?

В финале дам ссылки на несколько плагинов, это тем, кто ещё пока затрудняется с прописью в скриптах. Но это ничего, активируете плагин, а потом – да не переживайте… в любой момент всё это можно будет поправить… читайте наш блог, по статьям которого мы всему и выучимся.



«Какая постраничная навигация лучше? …с плагином или без…»? спрашивают. Множество мнений, говорю я. Но, на мой взгляд, политика должна быть такова: Я, – как и не ярый противник плагинов, так и не сторонник беспорядочного захламления блога этими примочками. И в сегодняшней статье, наша постраничная навигация wordpress и будет настраиваться с точки зрения этой политики.

 

 

Настраиваем постраничную навигацию

 

 

О других политиках )) читайте Плагины WordPress и их настройка

 

 

Постраничная-навигация-WordPress

 

 

 

 

 

А пока взгляните на вариант РЕЧНОЙ *music* навигации по страницам у меня на сайте. И если это подходит, то начнём наше путешествие.
Первое: зайдите в консоль управления и припомните, установлен ли у вас плагин Exclude Pages from Navigation – если установлен, прекрасно. Если нет – установите. Это полезный механизм для распорядка меню.

 

Но сейчас не об этом. Об этом в других статьях.

 

 

Ну, а теперь, как и обычно, заходим в редактор WordPress и открываем документ functions.php и… прописываем в самый его конец (перед знаком «?>») следующую функцию.

(она несколько длинновата, но полезна…))

 

 

Тольче не забудьте свои файлы, которые редактируете куда-нибудь копировать и сохранять, на всякий мухоморный,. чтобы всегда можно было вернуться к прежнему… если напортачите))

 

 

Тут-Тайна

// ================ Настройки ================
	$text_num_page = 'Страница {current} из {last}'; // текст для количества страниц. {current} заменится текущей, а {last} последней. Пример: 'Страница {current} из {last}' = Страница 4 из 60
	$num_pages = 5; // сколько ссылок показывать от этих цифр зависит работа надписи ПЕРВАЯ и Последняя страни
	$stepLink = 5; // после навигации ссылки с определенным шагом (значение = число (какой шаг) или '', если не нужно показывать). Пример: 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;
}
//  Финал навигации

 

 

Теперь, как только прописали, тут же всё сохраняем и открываем следующие документы: search.php, archive.php и index.php – в них мы сделаем следующее… Откроем, например, index.php и отыщем строчки:

 

 

<div class="navigation">
<div class="navleft">
<?php next_posts_link('&laquo; Предыдущие записи') ?>
</div> <div class="navright">
<?php previous_posts_link('Следующие записи &raquo;') ?>
</div> </div>

 

 

 

или такие… вариантов много. Главное принципиально понять, найти и выбрать… ))

 

 

<div class="navigation">
<?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } else { ?>
  <div class="alignleft"><?php next_posts_link('&laquo; Предыдущие записи') ?></div>
  <div class="alignright"><?php previous_posts_link('Следующие записи &raquo;') ?></div>
<?php } ?>
</div>

 

 

!! Но, внимание !! этих строк может и не быть, если у вас был установлены плагины WP-PageNavi или WP Page Numbers и вы их подстраивали. Припомните!..
Тогда, скорее всего, в этих ваших файлах будут строчки похожие на эти:

 

<?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?>

 

 

– их меняем на следующую ниже:

 

<?php if (function_exists('kama_pagenavi')) kama_pagenavi(); ?>

 

 

 

Не забываем сохранить index.php. И открываем search.php, archive.php… редактируем аналогично.
,,,
…проверим то, что получилось…
Полюбовались?.. а теперь, дорогие товарищи, откроем документ style.css и пропишем в нём следующий код:

 

 

.wp-pagenavi {
clear: both;
margin: 5px;
}

.wp-pagenavi a, .wp-pagenavi span {
text-decoration: none;
border: 2px solid #BFBFBF;
padding: 3px 12px;
margin: 2px;
background-clip:padding-box;
border-bottom-left-radius: 50px; /*Форма кнопки*/
border-bottom-right-radius: 10px;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
box-shadow:4px 3px 3px #666666;
-webkit-box-shadow 5px 5px 15px #666666;
-moz-box-shadow: 5px 5px 15px #666666;
}

.wp-pagenavi a:hover, .wp-pagenavi span.current {
border-color: #BFBFBF;
}

.wp-pagenavi span.current {
font-weight: bold;
}

 

 

Взгляните на свою работу…

И в заключение, если у вас уже была какая-то «навигация» то, возможно были и стили CSS – регулируйте их… а если боитесь запутаться, то просто скопируйте и пропишите у себя следующий код:

 

 

.wp-pagenavi a:hover {
background:none repeat scroll 0 0 #032DFF!important;
border:0 none!important;
color:#FFF!important;
}

.wp-pagenavi {
clear: both;
margin: 5px;
}

.wp-pagenavi span.extend {
background:none repeat scroll 0 0 transparent!important;
border:0 none!important;
color:#232323!important;
font-size:15px!important;
padding:4px 8px!important;
}

.wp-pagenavi span.current {
background:none repeat scroll 0 0 #032DFF!important;
border:0 none!important;
color:#FFF!important;
font-size:15px!important;
font-weight:700;
padding:4px 8px!important;
}

 

 

 

Ну, давайте на этом сегодня остановимся, ибо всю эту систему навигации вам ещё предстоит подстраивать в плане css, — сами понимаете, данные выше селекторы стопроцентно соответствовать стилистике вашего сайта не будут

 

 

Удачи в отточиях стиля ))

…и, конечно же, стоит прочесть статью о том, как закрывать всевозможными способами ссылки от индексации в предоставленном коде навигации.

 

 

К сведению:

Проверьте ваш блог на предмет безошибочной работы шаблона, ибо система WordPress, по умолчанию, запрещает отработку в виджете кода PHP !! и часто бывает так, что, в выбранной теме, разработчик не позаботился о «включателе» полезных разрешений, это очень и очень неудобно для администратора ! Отработка PHP кода в виджете

 

 


подписка feedburner МИГ подписки - ВРЕМЯ знаний!!

 

 


Если что-то не ясно, спрашивайте. Помогу… в чём дюжу.
Вместе мы многое сможем! Берегите себя и свой век - mihalica.ru


Нажатия на кнопочки определяют Ваше высокое гражданское сознание
Удачи в работе и творчестве..!


меточная навигация:

Поделитесь соображениями: Ваши мысли очень важны! $ правила комментирования ©

Ваш e-mail не будет опубликован. Обязательные поля помечены *