ludo
  • 0
Новичок

Add_rewrite_rule и проблема с нумерацией страниц

  • 0

У меня проблема, написание правильного правила перезаписи.

В основном, вот примеры URL, которые я хочу:

/myPage/mySuPage

Затем то же самое с пагинацией

/myPage/mySuPage/page/3

Затем базовая страница с 2 параметрами, без пагинации.

/myPage/mySuPage/param1/param2

Затем тот, у которого 2 параметра и нумерация страниц

/myPage/mySuPage/param1/param2/page/3

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

Вот правила, которые я написал:

add_rewrite_rule(
    'myPage/mySuPage/([^/]*)/([^/]*)/?',
    'index.php?pagename=myPage/mySuPage&param1=$matches[1]&param2=$matches[2]',
    'top' );

add_rewrite_rule(
    'myPage/mySuPage/([^/]*)/([^/]*)/page/([0-9]{1,})?',
    'index.php?pagename=myPage/mySuPage&param1=$matches[1]&param2=$matches[2]&pageds=$matches[3]',
    'top' );


add_rewrite_rule(
    'myPage/mySuPage/(.+?)(/page/([0-9]+))?/?$',
    'index.php?pagename=myPage/mySuPage&param1=$matches[1]&param2=$matches[2]',
    'top' );
Share
  1. Ваши первые два правила перезаписи не заканчиваются на $, что указывает на то, что на этом URL-адрес должен заканчиваться. Так myPage/mySuPage/param1/param2/page/3 что все равно будет соответствовать первый шаблон, потому что он может просто игнорировать /page/3 часть в конце. После этого следующие правила перезаписи никогда не будут использоваться.

    С помощью моего плагина анализатора перезаписи я смог упростить ваши правила перезаписи до этих двух: одно без параметров и только необязательное разбиение по страницам, а другое с параметрами и необязательным разбиением по страницам. Объединение этих двух параметров в один не сработало, потому что необязательные параметры «съели» пейджинговую часть.

    add_rewrite_rule(
        'myPage/mySuPage(/page/([0-9]+)?)?/?$',
        'index.php?pagename=myPage/mySuPage&pageds=$matches[2]',
        'top'
    );
    
    add_rewrite_rule(
        'myPage/mySuPage/([^/]*)/([^/]*)(/page/([0-9]+)?)?/?$',
        'index.php?pagename=myPage/mySuPage&param1=$matches[1]&param2=$matches[2]&pageds=$matches[4]',
        'top'
    );
    
    • 0

Оставить ответ

You must login to add an answer.