描述你的問題
我參考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 hooksadd_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 hooksadd_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]"