WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Формирование страницы «на лету»

Делаю плагин, в котором предполагается переход на страницу /rt/123-456, где 123 и 456 - переменные параметры. Как правильно выполнить задачу, чтобы в настройках плагина администратор вводил только путь /rt/ (или другой), но не создавал специальную страницу и ничего больше, но страница загружалась, формируясь "на лету". Как сделать такую динамическую страницу? Движок предполагается установленным по умолчанию без дополнений и особых настроек.

0
Mobel
2 года назад 3
  • 0
    Kama9619

    Сделать это можно многими вариантами, некоторые из них:

    Вариант 1. С помощью хука request можно изменить параметры запроса. Затем на хуке template_include проверить измененные параметры и если они есть, то изменить путь к файлу шаблона. А в этом файле уже обрабатывать все что нужно.

    Вариант 2. Создать свое правило ЧПУ с помощью функции add_rewrite_rule(). В правиле указать свой паттерн ЧПУ для URL вида /rt/123-456. Далее опять же на хуке template_include проверить параметры запроса, если они наши, то изменить путь к файлу шаблона. В файле обрабатывать все параметры.

    Вариант 3. Создать реальную страницу в админке (или кодом). Создать для нее ЧПУ правила с помощью функции add_rewrite_rule(). Далее опять же на хуке template_include проверить наша ли это страница is_single() и изменить файл шаблона. В файле шаблона обрабатывать все параметры.

    Я бы выбрал 3 вариант, все же у страницы должна быть сущность в БД. К которой могут подключатся плагины и прочее. Например, чтобы считать просмотры этой страницы. Чтобы указать, изменить заголовок, метаданные и т.д. Чтобы в конце концов в админке было видно что есть такая вот страница на сайте. Чтобы для нее из админки можно было чуть что указать контент какой-то. Чтобы не ловить баги при обработке запроса. Чтобы проще было идентифицировать эту страницу в твоем же плагин, с помощью условных тегов типа is_single(). И если подумать можно еще много плюсов найти. Минус тут только один, эту страницу нужно создать, желательно программно и удалить при удалении плагина...

    Mobel 2 года назад

    Поскольку плагин может оказаться в среде, когда используются ссылки вида /?page_id=1, то все rewrite_rule в .htaccess отсутсвуют (.htaccess пустой). И все попытки достучаться по несуществующим адресам нарываются на 404 от вебсервера.

    Поэтому решил, что для моей задачи все-таки нужно придерживаться стандартных подходов. Правильно ли я понимаю, что при инициализации плагина надо программно завести специальный вид поста с post_type = "rt", создать одну страницу данного типа и далее использовать ее как шаблон, в зависимости от параметров "123-456". Вид ссылок на нее формировать в зависимости от настроек get_option( 'permalink_structure' ). Запретить как-то удалять эту страницу из админки и запретить показывать при вызовах без параметров.

    Я правильно все понял? Может что-то упустил?

    Kama 2 года назад

    Во-первых, я ниразу не видел чтобы не использовали ЧПУ.

    Во-вторых не нужно создавать тип записи для одной страницы. Я же выше написал. Создай программно просто стандартную страницу и используй её! Для нее же через стандартные функции ВП создай дополнительные правила чпу, в которые включи нужные тебе параметры! Действуй потопорному через рычаги самого ВП.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация