WP URL重写插件

时间:2012-02-29 23:11:29

标签: php wordpress url-rewriting

我正在尝试将一些非wordpress PHP页面集成到现有的Wordpress站点中。理想情况下,我想重写任何看起来像这样的请求:'domain.com/books/bookname'到'domain.com/catalog.php?title=bookname'。我一直在乱搞WP Rewrite API几个小时,但我无法得到任何工作。这是我目前的插件代码:

register_activation_hook( __FILE__, 'wbm_catalog_activate' );
function wbm_catalog_activate() {
    wbm_catalog_add_rules();
    flush_rewrite_rules();
}

// Flush when deactivated
register_deactivation_hook( __FILE__, 'wbm_catalog_deactivate' );
function wbm_catalog_deactivate() {
    flush_rewrite_rules();
}

add_action( 'init', 'wbm_catalog_add_rules' );
function wbm_catalog_add_rules() {
    add_rewrite_rule( 'books/([^/]+)/?',
        'catalog.php?title=$matches[1]', 'top' );
}

我甚至可以检查$ wp_rewrite对象并看到我的新规则被添加,但每当我尝试访问一个重写的url时,wordpress就好像规则不存在一样。

我一直在撞墙撞墙,我很感激你能给予的任何帮助!

2 个答案:

答案 0 :(得分:1)

问题是:

语句flush_rewrite_rulesadd_rewrite_rule之前执行,因此生成的新缓存不会在add_rewrite_rule中包含您的内容。

您可以使用数据库中的值进行验证

select option_name, option_value from wp_options where option_name = 'rewrite_rules';

答案 1 :(得分:0)

我无法解决此问题。我正在处理的网站是旧WordPressMU设置(2.8)的一部分,其中包含许多网站。我无法访问MU安装使用的.htaccess,并且没有将任何请求传递给我可以编辑的.htaccess文件。