wordpress 外掛程式開發 - 自訂URL的問題

來源:互聯網
上載者:User
  1. 描述你的問題

我參考json-api這個外掛程式的寫法,想要自己實現一些資料介面,但是在自訂路由的時候一直不起作用。(我想自訂一個類似 '/api3/controlName' 這樣的url介面)

  1. 貼上相關代碼

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 則總是返回首頁。

回複內容:

  1. 描述你的問題

我參考json-api這個外掛程式的寫法,想要自己實現一些資料介面,但是在自訂路由的時候一直不起作用。(我想自訂一個類似 '/api3/controlName' 這樣的url介面)

  1. 貼上相關代碼

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]"
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.