Собственное правило перезаписи для специальных URL в WordPress - PullRequest
0 голосов
/ 21 февраля 2012

У меня есть таблица базы данных с некоторым пользовательским контентом. Каждый контент-элемент доступен через / my-url / project / the-projects-name. Предметы не являются постами WordPress. Я создал индекс-скрипт, куда я перенаправляю при вызове такого URL. Затем скрипт извлекает имя проекта, помещает его в переменную и включает шаблон страницы. Моя страница и данные проекта отображаются хорошо, но WordPress генерирует состояние 404 для запрошенного веб-сайта, а также устанавливает заголовок «Not Found!». Как я могу подделать WordPress на выходе ??

Мой htaccess, который перенаправляет на мой index-projects.php-скрипт:

RewriteCond %{REQUEST_URI} ^/my-url/project/(.*)
RewriteRule . /index-project.php [L]

мой index-project.php:

ob_start();

define('WP_USE_THEMES', true);

$path = explode('/', $_SERVER['REQUEST_URI']);

while(empty($path[0]))
    array_shift($path);

while(empty($path[count($path)-1]))
    array_pop ($path);

if(count($path) >= 3 && !empty($path[2])) {

$postFound = false;                             // use this param to define if   requested post was found in DB
$post_name = $path[2];                          // get the post name from url

$args = parse_url($post_name);

$slug = $args['path'];   // extract the post slug from post name

if(!empty($slug)) {
    $wp_did_header = true;

    $_GET['page_id'] = SOME_ID_OF_MY_WP_PAGE;
    $_GET['main_page'] = 'page-project';
    require_once( dirname(__FILE__) . '/wp-load.php' );
    wp();

    include('./wp-content/themes/my-theme/page-project.php');
  } 
}

Ответы [ 2 ]

0 голосов
/ 22 февраля 2012

Wordpress по-прежнему выдает 404. Страница правильно загружена, и содержимое «перенаправлено» в мой index-project.php, но WP по-прежнему возвращает 404-заголовок в браузер:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^my-url/project/(.*) /index-project.php [L]
RewriteRule ^/index-project.php - [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
0 голосов
/ 21 февраля 2012
RewriteRule ^/my-url/project/(.*) /index-project.php [L]

RewriteRule ^/index-project.php - [L]

и убедитесь, что вы указали правила WP в вашем htaccess

...