2012-08-26 12 views
6

ben şöyle bir ajax api için bir güzergah oluşturmaya çalışıyorum. Wordpress bunu uygulamak için bana bir kanca mı veriyor? İyi yer neresi?WordPress'te bir 'rota' nasıl oluşturabilirim? Ben bu yolu işleyebilir ve <code>do_action</code> ile uygun eylem temsilci wordpress istiyorum</p> <pre><code>/api/<action> </code></pre> <p>: Kendi aklı için

+0

Buna benzer bir soru 'wordpress.stackexchange.com' üzerinde var. http://wordpress.stackexchange.com/questions/26388/how-to-create-custom-url-routes – ckpepper02

cevap

1

Kullandığınız güzel yapılandırılmış eklentilerden biri olan wordpress json-api eklentisi gibi görünüyor, aynı zamanda çok kolay genişletilebilir. İyi şanslar.

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' 
); 

} 

Bu /tus-fotos/mas-votadas ve /tus-fotos/mas-votadas/page/{number} oluşturur, ben pre_get_posts filtresinde işlemek özel bir bir, için orderby sorgu Var değiştirir:

10

Sen gibi add_rewrite_rule

Something kullanmak zorunda.

query_vars filtreleri kullanılarak ve yeniden yazma kuralına ekleyerek yeni değişkenler de eklenebilir.

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' 
); 

} 

Sonra özel isteği yerine:

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 

    } 

} 

Sadece /wp-admin/options-permalink.php ziyaret veya bunun önemsiz bir süreç değil, çünkü yalnızca gerektiğinde flush_rewrite_rules arayarak kuralları yeniden temizlemek unutmayın.

+0

İşte wordpress tarafından gerçek ve eksiksiz bir çözüm: https://codex.wordpress.org/Rewrite_API/add_rewrite_rule –

+0

Yanıtın ilk sencenteinde aynı URL kullanılıyor mu? – davidmh

+0

Üzgünüm adamım, ama benim için çalışılan şeyi paylaştım, böylece gelecekte başkalarına yardım edebilir :) –

İlgili konular