wordpress 插件开发 - 自定义URL的问题
程序员文章站
2024-01-03 16:49:40
...
描述你的问题
我参考json-api这个插件的写法,想要自己实现一些数据接口,但是在自定义路由的时候一直不起作用。(我想自定义一个类似 '/api3/controlName' 这样的url接口)
贴上相关代码
flush_rules();
}
function my_plugin_template_rewrite(){
global $myPluginBase;
if( isset( $_REQUEST[ $myPluginBase ] ) ){
echo $_REQUEST[ $myPluginBase ];
exit;
}
}
function my_plugin_activation() {
// Add the rewrite rule on activation
global $wp_rewrite;
add_filter('rewrite_rules_array', 'my_plugin_rewrites');
$wp_rewrite->flush_rules();
}
function my_plugin_deactivation() {
// Remove the rewrite rule on deactivation
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
function my_plugin_rewrites($wp_rules) {
global $myPluginBase;
if (empty($base)) {
return $wp_rules;
}
$my_plugin_rules = array(
"$myPluginBase\$" => "index.php?{$myPluginBase}=info",
"$myPluginBase/(.+)\$" => "index.php?{$myPluginBase}=\$matches[1]"
);
return array_merge($my_plugin_rules, $wp_rules);
}
// Add initialization and activation hooks
add_action('init', 'my_plugin_init');
register_activation_hook( __FILE__, 'my_plugin_activation');
register_deactivation_hook( __FILE__, 'my_plugin_deactivation');
?>
template_redirect
这个action应该是生效了,比如访问 /api3=hello
能正常返回 hello
,但是如果尝试访问 /api3/hello
则总是返回首页。
回复内容:
描述你的问题
我参考json-api这个插件的写法,想要自己实现一些数据接口,但是在自定义路由的时候一直不起作用。(我想自定义一个类似 '/api3/controlName' 这样的url接口)
贴上相关代码
flush_rules();
}
function my_plugin_template_rewrite(){
global $myPluginBase;
if( isset( $_REQUEST[ $myPluginBase ] ) ){
echo $_REQUEST[ $myPluginBase ];
exit;
}
}
function my_plugin_activation() {
// Add the rewrite rule on activation
global $wp_rewrite;
add_filter('rewrite_rules_array', 'my_plugin_rewrites');
$wp_rewrite->flush_rules();
}
function my_plugin_deactivation() {
// Remove the rewrite rule on deactivation
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
function my_plugin_rewrites($wp_rules) {
global $myPluginBase;
if (empty($base)) {
return $wp_rules;
}
$my_plugin_rules = array(
"$myPluginBase\$" => "index.php?{$myPluginBase}=info",
"$myPluginBase/(.+)\$" => "index.php?{$myPluginBase}=\$matches[1]"
);
return array_merge($my_plugin_rules, $wp_rules);
}
// Add initialization and activation hooks
add_action('init', 'my_plugin_init');
register_activation_hook( __FILE__, 'my_plugin_activation');
register_deactivation_hook( __FILE__, 'my_plugin_deactivation');
?>
template_redirect
这个action应该是生效了,比如访问 /api3=hello
能正常返回 hello
,但是如果尝试访问 /api3/hello
则总是返回首页。
我的天哪,你的写的让我有点看不懂。
不过既然你提到你访问 /api3=hello可以正常返回hello 。首先请问它是一个什么类型的地址?
page?post?cat? 建议你先试试下面的代码
// 注册一个链接
add_action( 'init', 'api3_rewrites_init' );
function api3_rewrites_init(){
add_rewrite_rule(
'api3/(.+)\$',
'index.php?&api3=$matches[1]',
'top'
);
}
你的代码,我有一行不太了解
"$myPluginBase/(.+)\$" => "index.php?{$myPluginBase}=\$matches[1]"
推荐阅读
-
wordpress 插件开发 - 自定义URL的问题
-
site-求教php问题,如何在wordpress主题里输出插件的内容
-
开发中解决Access-Control-Allow-Origin跨域问题的Chrome神器插件,安装及使用
-
vant 解决tab切换插件标题样式自定义的问题
-
WordPress开发中自定义菜单的相关PHP函数使用简介
-
wordpress自定义url参数实现路由功能的代码示例
-
wordpress插件开发中的plugins_url步骤
-
个人笔记 -- Axios封装原理、console.log()和console.dir()的区别、开发环境解决跨域问题、Vue设置全局自定义指令、cookies和localstorage区别
-
wordpress插件开发中的plugins_url步骤
-
WordPress 技巧:如何添加自定义类型的URL的固定链接