WordPress разрешение URL страниц из плагина - PullRequest
2 голосов
/ 31 января 2009

Скажем, у меня есть страница "foo" в WordPress, так что http: /www.blah.com/foo поднимает ее.

Скажем, у этой страницы есть триггер в своем контенте, такой как <! - foo -!>, Который отслеживается моим плагином через фильтр add_filter ('the_content', ..). Таким образом, все вызовы на http: www.blah.com/foo и http://www.blah.com/foo?var=bar принимаются плагином и обрабатываются.

Теперь существует способ, с помощью которого плагин может сообщить WordPress, что он хочет обрабатывать все URL типа http://www.blah.com/foo/bar http://www.blah.com/foo/bar/morefoo и т. Д. «без» необходимости создавать страницы / подстраницы для каждого из них, так как эти URL будут создаваться динамически?

Кроме того, существует ли в любом случае, кроме использования фильтра add_content для the_content на странице, который можно захватить контроль из плагина, в идеале с ключом URL, так что все вызовы http://www.blah.com/foo обрабатываются плагином.

Ответы [ 3 ]

2 голосов
/ 01 февраля 2009

Отвечая на мой вопрос:

Указатели в ответах, приведенных выше, были полезны и заставили меня пойти по правильному пути, но я продолжал сталкиваться с тем, что всякий раз, когда URL-адрес вызывался, он продолжал вызывать index.php.

Я тогда наткнулся http://mikeschinkel.com/blog/restful-web-services-in-wordpress-plugin/ где он идет в объяснение и дает ответ, который требует действия template_redirect, чтобы гарантировать, что элемент управления находится там, где вам нужно.

2 голосов
/ 31 января 2009

Да, вы можете получать ссылки URL (или запросы) и анализировать их, не создавая подстраниц.

Последовательность событий описана на странице Обзор запросов . Вы хотите взглянуть, в частности, на действие parse_request.

1 голос
/ 31 января 2009

Я делаю нечто очень похожее на то, что вы описываете, используя пользовательское правило mod_rewrite. Следуя вашему примеру, у меня есть страница Foo, которая использует шаблон foo.php. Шаблон foo.php принимает переменную запроса, скажем «путь», которая определяет оставшуюся часть URL. В моем файле .htaccess у меня есть следующее правило (будьте осторожны, поместите его вне WordPress 'автоматически сгенерированных правил!):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^foo/(.+) /foo/?path=$1 [L] 
</IfModule>

Вашему плагину также может потребоваться отключить плагин "redirect_canonical", который может неожиданно перехватывать ваши URL.

remove_action('template_redirect', 'redirect_canonical');

Я думаю, что возможно сделать что-то подобное, используя template_redirect hook и WP_Rewrite , но я не пробовал сам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...