J'ai lu ce post
http://wordpress.org/support/topic/query-vars-in-admin
et bien que ce soit une question assez ancienne, elle me convient parfaitement. J'essaie d'accomplir ce que j'ai déjà posté ici:
Règle la règle pour admin-ajax.php
Mais dans le code ci-dessous, seul le premier filtre est appelé dans wp-admin:
add_action('init', array('MYCLASS', 'add_custom_rewrite_rules'), 10, 1);
add_action('query_vars', array('MYCLASS', 'add_custom_query_vars'), 10, 1);
add_action('parse_request', array('MYCLASS', 'add_custom_parse_request'), 10, 1);
Je n'arrive pas à faire fonctionner ça. Il semble que les deux derniers filtres ne soient pas appelés lors de la navigation dans wp-admin. Est-ce vrai? Comment puis-je contourner cela?
Je pense que cela fait ce que vous essayez d'atteindre. En ce qui concerne les 404 multisites, vous devez supprimer les règles de réécriture sur chaque site du multisite où vous souhaitez que cette règle soit ajoutée. Une méthode rapide à des fins de test consiste à visiter la page des paramètres de permaliens pour chaque site que vous testez. Notez également que j'ai supprimé l'extension .php
de votre règle. Je pense que vous obtiendrez un comportement étrange - REQUEST
sera curieusement un tableau vide.
function wpd_api_rule(){
add_rewrite_rule( 'my-api/?$', 'index.php?my-api=1', 'top' );
}
add_action( 'init', 'wpd_api_rule' );
function wpd_query_vars( $query_vars ){
$query_vars[] = 'my-api';
return $query_vars;
}
add_filter( 'query_vars', 'wpd_query_vars' );
function wpd_parse_request( $wp ){
if( array_key_exists( 'my-api', $wp->query_vars ) ) {
// AJAX API example -
// you might want to whitelist actions here
// use wp_ajax_nopriv_ if not logged in
do_action( 'wp_ajax_' . $_REQUEST['action'] );
die(0);
}
}
add_action( 'parse_request', 'wpd_parse_request' );