Поддержка Проблемы и решения Если убрать из URL «category» то не работает pagination

  • Здравствуйте, после долгих поисков решил всё таки задать вопрос тут…

    Убрал из URL вывод category, выводилось так: http://mysite.com/category/mycategory/page

    Стало так: http://mysite.com/mycategory/page

    Решил этот вопрос добавив в function.php :
    add_filter('category_link', create_function('$a', 'return str_replace("category/", "", $a);'), 9999);
    Плюс в .htaccess добавил:

    <IfModule mod_rewrite.c>
    RedirectMatch 301 /category/(.*) http:/mysite.com/$1
    </IfModule>

    Но перестала работать pagination в рубриках везде, можно ли как то решить эту проблему без плагинов??? Как вы её решили?

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • без плагинов подобное не решается.
    ставьте нормальный плагин удаления category и не ломайте себе голову.

    Модератор Yuri

    (@yube)

    Как вы её решили?

    Включил соотв. опцию в Yoast SEO. Все равно он стоит, так пусть еще и пользу приносит 🙂

    Yoast SEO ? Стоит такой, да, он может помочь?
    Я с ним почти не знаком, что именно нужно там включить?

    Нашел что то похожее на решение:

    //Для работы пагинации
    function remove_page_from_query_string($query_string)
    { 
    	if ($query_string['name'] == 'page' && isset($query_string['page'])) {
    		unset($query_string['name']);
    		list($delim, $page_index) = split('/', $query_string['page']);
    		$query_string['paged'] = $page_index;
    	}      
    	return $query_string;
    }
    add_filter('request', 'remove_page_from_query_string');
    
    function fix_category_pagination($qs){
    	if(isset($qs['category_name']) && isset($qs['paged'])){
    		$qs['post_type'] = get_post_types($args = array(
    			'public'   => true,
    			'_builtin' => false
    		));
    		array_push($qs['post_type'],'post');
    	}
    	return $qs;
    }
    add_filter('request', 'fix_category_pagination');

    Но некорректно работают переходы пагинации, скрин: http://prntscr.com/gxc373

    откуда такое ненормальное желание все сделать кодом?
    wordpress обновляется, механика его работы изменяется — поддерживать работоспособность всех вручную установленных хаков со временем становится весьма и весьма сложно.

    ставьте плагин https://wordpress.org/plugins/no-category-base-wpml/
    и не ломайте себе голову.

    Эх… на каждую проблему отдельный плагин…

    и чем, по вашему, плагин хуже кода в functions.php?

    Модератор Yuri

    (@yube)

    Ёст:
    Админка → SEO → Дополнительно → Постоянные ссылки → Изменить URL-адреса → Базовая полоска категории (как правило /category/) в записи URL → Убрать.

    Ага, перевод зачетный 🙂

    Flector
    Есть мнение что плагины не больше дают нагрузку чем код в function.php, по идее так и есть, тем более если код плагина качественный.
    … Но я всё таки считаю что на каждую проблему и задачу даже самую маленькую не стоит сразу стремится плагин ставить, как то это неправильно, это мне не даёт покоя.

    No Category Base (WPML) поставил, всё работает, но мне интересно, может есть другие решения, может кто отпишется.

    • Ответ изменён 6 лет, 6 месяцев назад пользователем mazletop.

    Есть мнение что плагины не больше дают нагрузку чем код в function.php,

    Есть логика и здравый смысл, которые говорят, что functions.php служит для функций темы. Ещё раз: функции только для темы.
    А всё, что не не должно зависеть от темы (и что нельзя потерять при её смене) должно находиться в плагинах.

    это мне не даёт покоя.

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

    SeVlad
    Спасибо за идею)

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Тема «Если убрать из URL «category» то не работает pagination» закрыта для новых ответов.