Создать собственное правило перезаписи для моего плагина WordPress - PullRequest
0 голосов
/ 13 октября 2009

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

Прежде всего, я бы хотел, чтобы мой скрипт был доступен через www.mysite.com/order/ и, в соответствии с кодексом WordPress , я обнаружил, что мне нужно поместить следующий код в мой основной файл плагина:

add_action('init', 'ta_flush_rewrite_rules');

function ta_flush_rewrite_rules() 
{
  global $wp_rewrite;
  $wp_rewrite->flush_rules();
}

add_action('generate_rewrite_rules', 'ta_add_rewrite_rules');

function ta_add_rewrite_rules( $wp_rewrite ) {
  $new_rules = array("order/(.+)" => "/wp-content/plugins/my-plugin/order.php");
  $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}

Но это не работает, и я не хочу запачкаться при взломе .htaccess.

Кроме того, даже если это сработает, файл order.php является отдельным файлом от моего плагина. Это означает, что мне придется включить некоторые файлы WordPress, чтобы иметь доступ к базе данных и другим вспомогательным классам и функциям. Это подводит нас к вопросу № 2: есть ли способ, чтобы URL вызывал функцию моего плагина для отображения страницы заказа?

Ответы [ 2 ]

3 голосов
/ 22 марта 2010

оформить заказ wp_rewrite в плагине WordPress вы можете найти нужную вам информацию.

2 голосов
/ 22 октября 2010

не сбрасывайте правила для INIT, так как он будет выполнять множество запросов mysql на каждой странице и мешать другим плагинам, используя пользовательские правила перезаписи (например, те, которые создают пользовательские типы записей)

...