WordPress重写URL以访问插件页面
您好,我试图通过自定义URL访问我的插件,但我无法使插件重定向,它只是出现404页未找到,而我想要的是调用page.php。我的插件代码如下(激活和停用插件功能): 你知道我做错了什么吗 提前感谢,WordPress重写URL以访问插件页面,wordpress,url,plugins,rewrite,Wordpress,Url,Plugins,Rewrite,您好,我试图通过自定义URL访问我的插件,但我无法使插件重定向,它只是出现404页未找到,而我想要的是调用page.php。我的插件代码如下(激活和停用插件功能): 你知道我做错了什么吗 提前感谢, Chris不重定向到Wordpress index.php文件的重写规则将写入.htaccess文件。我认为它们从未存储在数据库中。因此,看看你的代码,如果你的.htaccess文件在插件激活时不可写,那么你的重写规则永远不会被添加 正如Amereservant编写的,您需要在init(或者gen
Chris不重定向到Wordpress index.php文件的重写规则将写入.htaccess文件。我认为它们从未存储在数据库中。因此,看看你的代码,如果你的.htaccess文件在插件激活时不可写,那么你的重写规则永远不会被添加
正如Amereservant编写的,您需要在
init
(或者generate\u rewrite\u rules
)操作中添加您的重写规则,否则它将在刷新规则时被删除(因为如上所述,规则未存储在数据库中).不重定向到Wordpress index.php文件的重写规则将写入.htaccess文件。我认为它们从未存储在数据库中。因此,看看你的代码,如果你的.htaccess文件在插件激活时不可写,那么你的重写规则永远不会被添加
正如Ameservant编写的,您需要在
init
(或者generate\u rewrite\u rules
)操作中添加您的重写规则,否则它将在刷新规则时被删除(因为如上所述,规则未存储在数据库中)。首先,以这种方式给出路径是个坏主意,因为如果出于任何原因发生任何更改,您的插件/主题将中断。Ozh在这一节下提出了一个很好的建议,就这些建议而言 其次,使用*query\u vars*可能会更好。请看一看,甚至可能看一看如何做到这一点的例子 另外,请检查,因为它提供了在WordPress中处理URL重写的最佳信息 第三,您需要将
setRewriteRules()
函数挂钩到init挂钩,因为第一次刷新规则时,您的规则将被删除
因此,您的代码看起来像这样(没有任何其他更正):
重写规则刷新 下面是一些刷新重写规则的提示
- 只要您访问设置>永久链接或在管理区域中进行更改并保存更改,就会自动刷新重写规则
- 添加
可能也很有用,因此在加载管理页面时,它们会被刷新add_操作('admin_init','deactivate')
Ozh在这一节下提出了一个很好的建议,就这些建议而言 其次,使用*query\u vars*可能会更好。请看一看,甚至可能看一看如何做到这一点的例子 另外,请检查,因为它提供了在WordPress中处理URL重写的最佳信息 第三,您需要将
setRewriteRules()
函数挂钩到init挂钩,因为第一次刷新规则时,您的规则将被删除
因此,您的代码看起来像这样(没有任何其他更正):
重写规则刷新 下面是一些刷新重写规则的提示
- 只要您访问设置>永久链接或在管理区域中进行更改并保存更改,就会自动刷新重写规则
- 添加
可能也很有用,因此在加载管理页面时,它们会被刷新add_操作('admin_init','deactivate')
register_activation_hook(__FILE__,'activate');
register_deactivation_hook(__FILE__,'deactivate');
function setRewriteRules()
{
add_rewrite_rule( 'plugin-url/$', '/wp-content/plugins/my-plugin/page.php', 'top' );
}
function activate()
{
setRewriteRules();
global $wp_rewrite;
$wp_rewrite->flush_rules(true);
}
function deactivate()
{
global $wp_rewrite;
$wp_rewrite->flush_rules(true);
}
register_activation_hook(__FILE__,'activate');
register_deactivation_hook(__FILE__,'deactivate');
add_action('init', 'setRewriteRules');
function setRewriteRules()
{
add_rewrite_rule( 'plugin-url/$', '/wp-content/plugins/my-plugin/page.php', 'top' );
}
function activate()
{
setRewriteRules();
global $wp_rewrite;
$wp_rewrite->flush_rules(true);
}
function deactivate()
{
global $wp_rewrite;
$wp_rewrite->flush_rules(true);
}