Ich habe diesen Beitrag gelesen
http://wordpress.org/support/topic/query-vars-in-admin
und obwohl es eine ziemlich alte Frage ist, passt es mir perfekt. Ich versuche zu erreichen, was ich bereits hier gepostet habe:
Schreibe die Regel für admin-ajax.php um
Im folgenden Code wird jedoch nur der erste Filter in wp-admin aufgerufen:
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);
Ich kann das nicht zum Laufen bringen. Es sieht so aus, als würden die beiden letzten Filter beim Navigieren in wp-admin nicht aufgerufen. Ist das wahr? Wie kann ich das umgehen?
Ich denke, das macht das, was Sie erreichen wollen. In Bezug auf Multisite-404s müssen Sie Schreibregeln löschen an jeder Site innerhalb von Multisite, an der diese Regel hinzugefügt werden soll. Eine schnelle Methode zum Testen ist der Besuch der Seite mit den Einstellungen für Permalinks für jede Website, die Sie testen. Beachten Sie auch, dass ich die Erweiterung .php
aus Ihrer Regel entfernt habe. Ich denke, Sie werden sonst seltsames Verhalten bekommen - REQUEST
wird seltsamerweise ein leeres Array sein.
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' );