私はこの記事を読みました
http://wordpress.org/support/topic/query-vars-in-admin
それはかなり古い質問ですが、それは私にぴったりです。私はすでにここに投稿したことを達成しようとしています。
しかし、以下のコードでは、最初のフィルタのみが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);
これがうまくいかない。 wp-admin内を移動している間、最後の2つのフィルタは呼び出されないようです。本当?どうすればこれを回避できますか。
私はこれがあなたが達成しようとしていることだと思います。マルチサイト404に関しては、このルールを追加したいマルチサイト内のすべてのサイトで 書き換えルール をフラッシュする必要があります。テスト目的の簡単な方法は、テストしている各サイトのパーマリンク設定ページにアクセスすることです。また、私はあなたのルールから.php
拡張子を削除しました。 REQUEST
は奇妙なことに空の配列になるでしょう。
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' );