reescreva o arquivo para wordpress

Eu tenho no meu plugin dir um endpoint.php e preciso rewrite assim:

http://domain.com/API/endpoint.php 

Este é o código que usei:

 add_rewrite_rule( 'API/endpoint.php', 'myplugin-path/endpoint.php', 'top' ); 

Quando eu imprimo o $wp_rewrite global, entendi isso:

 [non_wp_rules] => Array ( [API/endpoint.php] => http://mydomain/myplugin-path/endpoint.php ) 

Mas ainda não funciona, alguma Idéias?

Solutions Collecting From Web of "reescreva o arquivo para wordpress"

O mecanismo de reescrita WordPress funciona de maneira diferente, e não como regras de reescrita .htaccess. Mais informações sobre isso que você pode encontrar no codex ( Rewrite API , WP_Rewrite , etc.). Mas o trabalho rápido pode ser o seguinte:

Em primeiro lugar, precisamos registar a nossa consulta var e rewrite a regra:

 function myplugin_add_query_var( $vars ) { $vars[] = 'myplugin_api'; return $vars; } add_filter( 'query_vars', 'myplugin_add_query_var' ); function myplugin_update_rewrite_rules( $rules ) { $newrules = array(); $newrules['api\/endpoint\.php$'] = 'index.php?pagename=api&myplugin_api=1'; return $newrules + $rules; } add_filter( 'rewrite_rules_array', 'myplugin_update_rewrite_rules' ); 

Para completar o registro da regra de reescrita, precisamos descartar as regras de ativação / desativação do seu plugin:

 function myplugin_activate() { flush_rewrite_rules(); } register_activation_hook( __FILE__, 'myplugin_activate' ); function myplugin_deactivate() { flush_rewrite_rules(); } register_deactivation_hook( __FILE__, 'myplugin_deactivate' ); 

Um pedaço de magia para que as regras de reescrita funcionem corretamente: D

 function myplugin_a_piece_of_magic_on_init() { global $wp_rewrite; $wp_rewrite->use_verbose_page_rules = !preg_match( "/api\/endpoint\.php$/i", $_SERVER['REQUEST_URI'] ); } add_action( 'init', 'myplugin_a_piece_of_magic_on_init' ); 

E, finalmente, verifique se a nossa consulta var apresenta na ação wp:

 function myplugin_check_query_var( $wp ) { if ( array_key_exists( 'myplugin_api', $wp->query_vars ) ) { // do api stuff here ... exit; } } add_action( 'wp', 'myplugin_check_query_var' );