• Почему wordpress не отдает 404 по определенному url?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Внимательно посмотрите на регулярку слева, и на маппинг справа:
    (.?.+?)(?:/([0-9]+))?/?$ -> index.php?pagename=$matches[1]&page=$matches[2]


    Это - основное правило (rewrite rule) для страниц WordPress. Как оно работает:

    - /page-name/ - страница первого уровня
    - /page-name/sub-page-name/ - страница второго уровня (дочерняя, вложенная)
    - /page-name/sub-page-name/sub-sub-page-name/ - страница третьего уровня (и это не предел)

    В этих случае маппинг выдаст, соответственно:
    pagename=page-name
    page=
    
    pagename=page-name/sub-page-name
    page=
    
    pagename=page-name/sub-page-name/sub-sub-page-name
    page=


    и WP_Query будет запрашивать такие страницы. В вашем случае страница uslugi/asdfdsf, как дочерняя страницы uslugi – не существует. Отсюда и 404, все логично. Вот пример:

    5a134b88e6c47515219426.jpeg

    Если же ввести число, сработает другая часть регулярки:

    - /page-name/123/

    будет замаплен в:
    pagename=page-name
    page=123


    Чувствуете разницу? Вторая переменная, $page теперь заполнилась. Это нужно для разбивки контента страницы. WordPress позволяет вам разместить на странице какой-то длинный текст/контент, и разбить его на странички. Именно эта часть регулярки отвечает за постраничный вывод.

    Но поскольку в сам WP_Query отправляется запрос на получение контента страницы целиком, а постраничная разбивка происходит уже на лету, то и ответ 200 вполне логичен. Как и вывод одного и того же контента, независимо от номера страницы.

    Вот пример такого запроса. Обратите внимание на установленные переменные:

    5a134cea181ae872567841.jpeg

    Так работают стандартные rewrite rules WordPress. Что делать? Можно хукнуться в один из ранних хуков, например template_redirect, проверить контент на предмет постранички, и сделать редирект на 404. Но, зачем?
    Ответ написан
    5 комментариев
  • Как релизовать такую рамку чтобы сохранилась адаптивность?

    @Alexandr59
    Надо сделать второй div с {border: 1px solid #цвет} и задать всем position.
    Чтобы были друг над другом.
    Вот примерно https://jsfiddle.net/Mesuti/dbvpL46n/3/
    Ответ написан
    2 комментария
  • Как реализовать такие линии у списка?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Ответ написан
    Комментировать
  • Как реализовать такие линии у списка?

    alsolovyev
    @alsolovyev
    Предположим через псевдоэлементы
    Каждый li имеет ::after, который высотой 1-2px. Это будет горизонтальная линия.
    У ul left-border или ::after будет вертикальной линией.

    ps вот пример https://jsfiddle.net/s7hysyL1/
    Ответ написан
    Комментировать