Wp-admin上的自定义查询变量和解析请求

时间:2014-03-14 作者:arnaldo2204

我读过这篇文章

http://wordpress.org/support/topic/query-vars-in-admin

虽然这是一个很老的问题,但它非常适合我。我正在努力完成我在这里发布的内容:

Rewrite rule for admin-ajax.php

但在下面的代码中,在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中导航时,似乎没有调用最后两个过滤器。这是真的吗?我怎么才能避开这个?

1 个回复
SO网友:Milo

我认为这正是你想要实现的。关于multisite 404,您必须flush rewrite rules 在多站点中希望添加此规则的每个站点上。测试目的的一种快速方法是访问要测试的每个站点的permalinks设置页面。另请注意,我删除了.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\' );

结束

相关推荐