gpt4 book ai didi

.htaccess - 在插件文件夹或使用 WordPress 功能的插件 : with . htaccess 中添加重写规则

转载 作者:行者123 更新时间:2023-12-01 00:26:50 24 4
gpt4 key购买 nike

我需要在我的插件中添加重写规则,并将其与我的代码一起分发。如果我将规则放在 WordPress 根文件夹的 .htaccess 中,一切正常,但我需要使用我的规则分发插件。

我尝试将 .htaccess 放入插件文件夹并尝试使用 add_rewrite_rule功能,但也不起作用。

此处的 .htaccess 代码在 WordPress 根文件夹中可以正常工作,但在我的插件文件夹中不起作用:

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteRule my-plugin/pages/tp(.*)\.php$ wp-content/plugins/my-plugin/pages/request.php?pid=$1

</IfModule>

我在我的插件中尝试了以下代码,但也不起作用:

add_filter( 'query_vars', 'add_query_vars' );
function add_query_vars( $query_vars )
{
$query_vars[] = 'pid';
return $query_vars;
}
add_action( 'init', 'add_init' );
function add_init()
{
$plugin_url = 'the-path-to-my-plugin-folder';
add_rewrite_rule('my-plugin/pages/tp(.*)\.php'
, $plugin_url . 'pages/request.php?pid=$matches[1]','top');

global $wp_rewrite;
$wp_rewrite->flush_rewrite_rules(); // I know this should be called only one time, but I put it here just to keep simple the sample code
}

但我总是收到找不到 URL 的错误。我做错了什么?我怎样才能做我需要的?我搜索了类似的问题,但没有一个能解决我的问题。

我的插件文件夹结构是:

主文件夹:/wp-content/plugins/my-plugin------/pages(子文件夹)--------------/request.php(应该接收请求的脚本)

最佳答案

NOTE: WordPress Rewrite API is not the same as Apache Rewrite module. WP Rewrite API doesn't redirect a request to another URL, it used to parse current URL and fill query_vars array.

问题出在您 add_rewrite_rule 函数调用的第二个参数中。它必须从 index.php? 开始,然后应该有您的参数,例如 pid,例如:

"index.php?pid=$matches[1]...."

所以你的add_init函数应该是这样的:

add_action( 'init', 'wpse8170_add_init' );
function wpse8170_add_init()
{
add_rewrite_rule('my-plugin/pages/tp(.*)\.php', 'index.php?pid=$matches[1]', 'top');
}

不要忘记通过访问 Settings » Permalinks 页面刷新重写规则。

进一步阅读:

关于.htaccess - 在插件文件夹或使用 WordPress 功能的插件 : with . htaccess 中添加重写规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14619333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com