對於我自己的理智,我試圖創建一個AJAX API看起來像一個路線:如何在wordpress中創建'路線'?
/api/<action>
我想WordPress的處理這條路線,並委託與do_action
適當的行動。 wordpress會給我一個鉤子來實現這個嗎?一個好地方在哪裏?
對於我自己的理智,我試圖創建一個AJAX API看起來像一個路線:如何在wordpress中創建'路線'?
/api/<action>
我想WordPress的處理這條路線,並委託與do_action
適當的行動。 wordpress會給我一個鉤子來實現這個嗎?一個好地方在哪裏?
好像你正在尋找wordpress json-api插件,這是我用過的很好的插件之一,也很容易擴展。好運。
你必須使用add_rewrite_rule
喜歡的東西:
add_action('init', 'theme_functionality_urls');
function theme_functionality_urls() {
/* Order section by fb likes */
add_rewrite_rule(
'^tus-fotos/mas-votadas/page/(\d)?',
'index.php?post_type=usercontent&orderby=fb_likes&paged=$matches[1]',
'top'
);
add_rewrite_rule(
'^tus-fotos/mas-votadas?',
'index.php?post_type=usercontent&orderby=fb_likes',
'top'
);
}
這將創建/tus-fotos/mas-votadas
和/tus-fotos/mas-votadas/page/{number}
,改變了排序依據查詢VAR爲一個自定義的,這是我在pre_get_posts過濾處理。
也可以使用query_vars
過濾器添加新變量並將其添加到重寫規則中。
add_filter('query_vars', 'custom_query_vars');
add_action('init', 'theme_functionality_urls');
function custom_query_vars($vars){
$vars[] = 'api_action';
return $vars;
}
function theme_functionality_urls() {
add_rewrite_rule(
'^api/(\w)?',
'index.php?api_action=$matches[1]',
'top'
);
}
然後,處理自定義請求:
add_action('parse_request', 'custom_requests');
function custom_requests ($wp) {
$valid_actions = array('action1', 'action2');
if(
!empty($wp->query_vars['api_action']) &&
in_array($wp->query_vars['api_action'], $valid_actions)
) {
// do something here
}
}
只要記住訪問/wp-admin/options-permalink.php
或需要只有當,因爲它不是一個簡單的過程調用flush_rewrite_rules刷新重寫規則。
下面是WordPress的實際和完整的解決方案:https://codex.wordpress.org/Rewrite_API/add_rewrite_rule –
與我的迴應的第一個sencente使用的是不是相同的URL嗎? – davidmh
對不起,但我分享了什麼爲我工作,以便它可以幫助其他任何未來:) –
在wordpress.stackexchange.com上有類似的問題。 http://wordpress.stackexchange.com/questions/26388/how-to-create-custom-url-routes – ckpepper02