Jump to content
  • 0

Проблема с пагинацией


nightgremlin
 Share

Question

Здравствуйте! Помогите, пожалуйста. Бьюсь уже неделю. У меня не работает пагинация в шаблоне категории. Когда нажимаю на кнопки пагинации у меня открывает шаблон index.php, но посты не открываются. Дело в том, что у меня 7 категорий, для каждой категории сделан свой шаблон. Я подозреваю, что в цикле Loop ему не откуда брать записи. Вот код:

<?php if(have_posts()) : ?><?php while(have_posts()) : the_post(); ?>	   <article>	   <header><h2><?php the_title(); ?></h2><time pubdate><?php the_time('j M Y'); ?></time></header>	   <div class="avtor">Автор: <?php the_author(); ?></div>	   <?php if ( has_post_thumbnail() ) {	the_post_thumbnail();}  ?><?php the_excerpt(); ?>	 <footer><mark><?php the_tags(); ?> </mark><a href="<?php the_permalink(); ?>">Читать далее</a></footer>	 </article>      <?php endwhile; ?><?php the_posts_pagination(); ?><?php endif; ?>

Все записи распределены по категориям т.е. имеют такой вид мой сайт/название категории/ Когда перехожу на другую страничку с помощью пагинации открывается вот, что мой сайт/название категории/page/2/.
И почему он ссылается на шаблон index.php когда мне надо на текущий с недостающими записями. Может в цикле надо уточнять что записи берутся из такой-то категории с помощью $wp_query? Тогда почему при открытии странички  мой сайт/название категории/ открывается нужный шаблон с 10 записями, как и указано в настройках, а пагинация ссылается на левый шаблон? Пожалуйста помогите кто сталкивался с подобного рода проблемой.

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0
 

Попробуйте в category.php

<section>	<h1><?php wp_title(''); // category title ?></h1>	<?php if (have_posts()) : while (have_posts()) : the_post(); // if posts exist - start cycle ?>		<?php get_template_part('loop'); // to output posts get loop template (loop.php) ?>	<?php endwhile; // cycle end	else: echo '<h2>Sorry, posts not found</h2>'; endif; // if posts not exist, show message ?>	 	<?php pagination(); // show pagination, located in function.php ?></section>

а в loop.php

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <?php // post container with id and classes ?>		<span><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></span> <?php // post title and link to single post page (single.php) ?>		<div class="meta">			<p>Posted: <?php the_time('F j, Y'); ?> at <?php the_time('g:i a'); ?></p> <?php // created date and time ?>			<p>Categories: <?php the_category(',') ?></p> <?php // links to categories ?>			<?php the_tags('<p>Tags: ', ',', '</p>'); // links to tags ?>		</div>		<?php if ( has_post_thumbnail() ) the_post_thumbnail(); // show thumbmail if exist ?>		<?php the_content(''); // post content before more line ?>	</article>

И в functions.php

function pagination() {	global $wp_query; // wp_query must be global	$big = 999999999; // uniq num for replace	echo paginate_links(array(		'base' => str_replace($big,'%#%',esc_url(get_pagenum_link($big))), // what replace in format		'format' => '?paged=%#%', // format of pagination, %#% will be replaced		'current' => max(1, get_query_var('paged')), // current page, 1 if $_GET['page'] is not set		'type' => 'list', // links in ul list		'prev_text'    => 'prev', // prev text    	'next_text'    => 'next', // next text		'total' => $wp_query->max_num_pages, // total amount of pages in pagination list		'show_all'     => false, // do not show all links, otherwise end_size and mid_size will be ignored		'end_size'     => 15, // how many numbers on either the start and the end list edges (12 ... 4 ... 89)		'mid_size'     => 15, // how many numbers to either side of current page, but not including current page (... 123 5 678 ...).		'add_args'     => false, // array of GET parameters to add in href		'add_fragment' => '',	//string to append to each href in links		'before_page_number' => '', // string to appear before the page number		'after_page_number' => '' // string to appear after the page number	));}
Edited by jdk
Link to comment
Share on other sites

  • 0

У меня возник другой вопрос, я плохо разбираюсь в php, но может кто подскажет. в index.php я задаю условие: 

<?php if ($_SERVER['REQUEST_URI'] == "/optimization/page/2/"){		$query = new WP_Query(array(	 'category_name' => optimization,    'posts_per_page' => 10,    'paged' => 2,));} 

т.е. если страница такая, то выполняется такое условие, но мне надо доработать с помощью (я так понимаю регулярных выражений), чтобы при открытии страницы ​/optimization/page/(любой номер)выполнялось условие 'paged' => 2 только не вторая страница с записями, а следующая. Кто поможет буду премного благодарен.

Link to comment
Share on other sites

  • 0

Задам вопрос немного по-другому, а то что-то никто не отвечает.

Например, у меня есть шаблон категории для вывода записей из этой же категории, условно назовём его category-{slug}.php

В нем есть такой код:

<?php if(have_posts()) : ?><?php while(have_posts()) : the_post(); ?>	   <article>	   <header><h2><?php the_title(); ?></h2><time pubdate><?php the_time('j M Y'); ?></time></header>	   <div class="avtor">Автор: <?php the_author(); ?></div>	   <?php if ( has_post_thumbnail() ) {	the_post_thumbnail();}  ?><?php the_excerpt(); ?>	 <footer><mark><?php the_tags(); ?> </mark><a href="<?php the_permalink(); ?>">Читать далее</a></footer>	 </article><?php endwhile; ?><?php the_posts_pagination(); ?> // ну или любой вызов функции, плагина и т.п.<?php endif; ?>

Пагинация видна на страничке категории - здесь, всё отлично! Как только я нажимаю на кнопку пагинации открывается страничка мой_сайт/{SLUG}/page/2/ // цифра "2" условная, может быть другая, в зависимости какой № кнопки нажат при пагинации
Какой при этом шаблон должен использоваться? 
Скорее всего должен использоваться шаблон category-{slug}.php, но у меня почему-то используется при любых раскладах index.php в котором в принципе, неоткуда взяться записям, если их там не прописать.
В чём может быть причина открытия неправильного файла шаблона и как это можно исправить?

Link to comment
Share on other sites

  • 0

 Я наконец-то решил проблему. Методом "танца с бубном". Короче, рассказываю. В админке в настройках Постоянных ссылок
добавил префикс для рубрик category и во всех шаблонах изменил ссылки типа 

<a href="<?php bloginfo('url') ?>/optimization/" ></a>

на 

<a href="<?php bloginfo('url') ?>/category/optimization/" ></a>

И о чудо! Ссылка  мой_сайт/{SLUG}/page/2/, которая не выводила пагинацию и нужный шаблон стала работать немного под другим именем
мой_сайт/category/{SLUG}/page/2/  хотя по сути ничего не поменялось, видно в самом движке прописано как распознавать нужный шаблон (по умолчанию категории должны быть в категориях) Это я считаю недоработка движка. Вопрос решен можете закрывать тему.

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By web-monster
      Доброго времени суток, уважаемые форумчане!
      На одной странице выводятся все метки сайта. Но меток очень много и нужно реализовать для этого постраничную навигацию. В сети только решения для постраничногоо вывода записей, вроде PageNavi и т.д.
      Как это возможно реализовать?
      Спасибо!
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy