Перейти к содержимому



Ошибка 404 в пагинации тегов

#1

Поделиться сообщением #1



Вячеслав

Вячеслав
  • Пользователь
  • 375 сообщений
  • Репутация: 2
0

Отправлено 14 Октябрь 2016 - 06:36

Здравствуйте! Помогите понять причину 404 ошибки при переходе на 2, 3, 4 ... 20 страницы при пагинации тега

 

для оформления пагинации в стиле бутсрапп использую не стандартную функцию:

/*** PAGINATION ***/
function wp_corenavi() {
  global $wp_query;
  $pages = '';
  $max = $wp_query->max_num_pages;
  if (!$current = get_query_var('paged')) $current = 1;
  $a['base'] = str_replace(999999999, '%#%', get_pagenum_link(999999999));
  $a['total'] = $max;
  $a['current'] = $current;

  $total = 1; //1 - выводить текст "Страница N из N", 0 - не выводить
  $a['mid_size'] = 3; //сколько ссылок показывать слева и справа от текущей
  $a['end_size'] = 1; //сколько ссылок показывать в начале и в конце
  $a['prev_text'] = '«'; //текст ссылки "Предыдущая страница"
  $a['next_text'] = '»'; //текст ссылки "Следующая страница"

  if ($max > 1) echo '<div class="over"><ul class="pagination">';
  if ($total == 1 && $max > 1) //$pages = '<span class="pages">Страница ' . $current . ' из ' . $max . '</span>'."\r\n";
  echo str_replace("</span>", "</span></li>", str_replace("<span", "<li class=\"active\"><span", str_replace("</a>", "</a></li>", str_replace("<a", "<li><a", paginate_links($a)))));

  paginate_links($a);

  if ($max > 1) echo '</ul></div>';
}
/*** END PAGINATION ***/

также у меня есть 2 нестандартных типов записей (post_type) : video и robo_gallery_table

 

пробовал в этом направлении, но  не помогло:

function category_set_post_types( $query ){
    if( is_tag() && is_paged() ):
    	//print_r($query);
    	//die();
        //$query->set( 'post_type', 'post' );
        $query->set( 'post_type', 'any' );
    	//$query->set( 'post_type', array('post', 'any', 'video', 'robo_gallery_table') );
    endif;
    return $query;
}
add_action( 'pre_get_posts', 'category_set_post_types' );

Вот пример такой страницы http://podvoh.tv/tag...aya-oxota-2016/ с 200

а вот уже 404 http://podvoh.tv/tag...ta-2016/page/3/

 

В прикрепленных файлах распечатаны объекты $query я их сохранил для сравнения, но в них разница только в наличии paged для страницы у которой 404

Прикрепленные файлы

  • Прикрепленный файл  200.txt   4,79К   Количество загрузок: 48
  • Прикрепленный файл  404.txt   4,82К   Количество загрузок: 36

 

 

Сообщение отредактировал Вячеслав: 14 Октябрь 2016 - 06:38

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. .htaccess и ErrorDocument при закрытом индексе
  2. Пагинация в Joomla. Проблемы.
  3. Пагинация попадает в индекс
  4. Как привязать страницу 404 в MODx ?
  5. Вопрос о пагинации

#2

Поделиться сообщением #2



Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 375 сообщений
  • Репутация: 2

Отправлено 13 Сентябрь 2017 - 09:50

Эххх, ну где же вы гуру WP?

Что ни кто не знает даже примерно в какую сторону копать?


  • 0

#3

Поделиться сообщением #3



AKharitonov

AKharitonov
  • Пользователь
  • 17 сообщений
  • Репутация: 6

Отправлено 14 Сентябрь 2017 - 07:07

@Вячеслав, смотрел сейчас с телефона, может быть не до конца правильно понял причину, но по-моему дело кроется именно в query. Вот здесь Кама как раз пишет, что может ломаться пагинация: https://wp-kama.ru/f...ion/query_posts
  • 0

#4

Поделиться сообщением #4



Sosnovskij

Sosnovskij
  • Администратор
  • 4 229 сообщений
  • Репутация: 639

Отправлено 14 Сентябрь 2017 - 12:34

@Вячеслав, у него же есть свой вариант пагинации https://wp-kama.ru/i...-ili-keshu.html . Ее посоветовали в твиттере.


  • 1

Не стесняйтесь ставить оценки темам :) Правила форума. Мой блог http://sosnovskij.ru/.



#5

Поделиться сообщением #5



Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 375 сообщений
  • Репутация: 2

Отправлено 14 Сентябрь 2017 - 20:13

Спасибо что ответили!

 

Не помогает его функция, она вообще не вводит ничего... Проверял, запускается но навигацию не выводит.

 

В этой статье указывается что появилась стандартная функция <?php the_posts_pagination(); ?>

 

Ну вот я ее использовал, она вывела те же ссылки на страницы /page/2/ и т.п При переходе на которые я получаю 404 !!!

 

Дело не в функции видимо, а в чем то другом... и я не знаю в чем..

 

файл страницы выводящей список постов по тегу находится в папке темы сайта и называется tag.php

<?php
/*
Template Name: Page Front
*/
?>
<?php get_header(); ?>

<?php 
    global $wp_query;

    $tag_id = get_query_var('tag_id'); 
    $term = &get_tag( $tag_id );

    //debug($term);
    //die();
?>
    
<div class="container-fluid browse-page browse-page-tag"><!-- START content-block (end from footer.php) -->
    
    
    <div class="row">
        <div class="col-lg-12">
            <article>
                <h1><?php echo mb_ucfirst(single_tag_title()); ?></h1>
                <div class="plusone"><div class="g-plusone" data-size="small" data-annotation="inline" data-width="300"></div></div>
                <p class="clr"></p>
                <br/>
            </article>
        </div>
    </div>

    <!-- Widjet List top banner -->
    <?php /*if(is_active_sidebar('list-top')): ?>
    <div class="row">
        <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
                <?php dynamic_sidebar('list-top'); ?>
        </div> 
    </div>
    <?php endif;*/ ?>
    <!-- END Widjet List top banner -->


    <?php if($term): ?>

        <?php 
            $args = array(
                'post_type' => array('video', 'post'),
                'tax_query' => array(
                    array(
                        'taxonomy' => 'post_tag',
                        'field' => 'slug',
                        'terms' => $term->slug
                    )
                ),
                'order' => 'DESC',

                //order by date publish in youtube
                //'orderby'   => 'meta_value_num',
                //'meta_key'  => 'DaydatePublished',
                //'meta_key'  => 'MonthdatePublished',
                //'meta_key'  => 'YeardatePublished',

                //'orderby'  => array( 'meta_value_num' => 'ASC'),
                //'meta_key'  => 'YeardatePublished',

                'post_status' => 'publish',
                'posts_per_page' => 20,
                'paged' => get_query_var('paged')
            );

            //$wp_query = query_posts($args);
            $wp_query = new WP_Query($args); 
        ?>

        <div class="row">
            <?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?>

                <?php //the_content(); ?>
                <?php get_template_part( 'content', 'tag' ); ?>
            <?php endwhile; ?>
        </div>



        <div class="row">
            <div class="col-lg-12">
                <div class="tag_description">
                    <?=tag_description($tag_id);?>
                </div>
            </div>
        </div>



        <div class="row">
            <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">

                
                <?php the_posts_pagination(); ?>
                
                <?php //wp_reset_query(); ?>
                <?php //if (function_exists('wp_corenavi')) wp_corenavi();  ?>

                
                <?php echo kama_pagenavi(); ?>
                <?

                if(function_exists('wp_pagenavi')) {
                    wp_pagenavi( '<center>', '</center>' );
                }

                ?>

            </div>
        </div>



    <?php endif; ?>


    <!-- Widjet Video Bottom -->
    <?php if(is_active_sidebar('video-bottom')): ?>
        <?php dynamic_sidebar('video-bottom'); ?>
    <?php endif; ?>
    <!-- END Widjet Video Bottom -->

<?php get_footer(); ?>

https://podvoh.tv/ta...novinki/page/2/

 

вот по таким адресам 404 ...

может нужно что то а .htaccess прописать? Хотя блин это ж все стандартный функционал, элементарно вывести список постов по тегу с постраничной навигацией..


  • 0

#6

Поделиться сообщением #6



TimurR

TimurR
  • Пользователь PRO
  • 873 сообщений
  • Репутация: 198

Отправлено 15 Сентябрь 2017 - 00:48

Что там по постоянным ссылкам? Стоит какой-либо SEO плагин? 


  • 0

Просто хостинг www.ihc.ru



#7

Поделиться сообщением #7



Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 375 сообщений
  • Репутация: 2

Отправлено 15 Сентябрь 2017 - 10:38

@TimurR,  

 

Вот все то что стоит:

 

Yet Another Related Posts Plugin

WP-RecallWP-PostViews

WP-Mail-SMTP

WP Super Minify

WP Memcached Manager

WP Admitad GoodsVideo

UpdraftPlus - Backup/Restore

Subscribe2

Social Login

SitemapSearch & Replace

RusToLatRobo Gallery

Rich Text Tags, Categories, and TaxonomiesNinjaFirewall (WP Edition)

Login-LogoutImage Watermark

Hyper CacheGoogle XML Sitemaps

Google Captcha (reCAPTCHA) by BestWebSoft

EC Stars RatingDisable / Hide Comment URL

Contact Form 7

 

 

По постоянным ссылкам вот так:  https://yadi.sk/i/GUbvjPw83MuTFr


  • 0

#8

Поделиться сообщением #8



Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 375 сообщений
  • Репутация: 2

Отправлено 01 Октябрь 2017 - 14:32

Помог автор на WP-KAMA.RU https://wp-kama.ru/i...9#comment-21118

 

Прописал стандартный  код в файл tag.php (взял из темы twentyfourteen) но не выводились записи.

 

После чего Добавил в обработчик в functions.php

add_action( 'pre_get_posts', 'action_function_query' );
function action_function_query( $query ) {
if($query->is_tag){
$query->set( 'post_type', array('video', 'post') );
$query->set( 'order', 'DESC' );
$query->set( 'post_status', 'publish' );
$query->set( 'posts_per_page', 20 );
}
}

И заработало со стандартным кодом tag.php https://podvoh.tv/tag/podvodnaya-oxota-video-2017-novinki/page/3/

Спасибо всем огромное! Долго не мог решить данную ошибку!


  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru