在基本wp-admin和登录上重定向wp_

时间:2017-02-20 作者:CGriffin

UPDATE: 我对我的问题做了更多的研究,并进一步缩小了问题的范围。下面的问题是从原来的问题改写过来的。

我正在尝试设置一个插件,将所有页面请求(前端、管理、登录等)重定向到一个额外的代码验证页面(无论这是否可取,都没有实际意义,这是客户端想要的)。根据我需要使用的函数、钩子和过滤器,我已经确定可以将重定向函数绑定到的最早钩子是wp:

add_action(\'wp\', \'cg_check_validation\');

该函数经历了一些$_COOKIE$_POST 最终之前的验证:

wp_redirect(add_query_arg(\'validate-access\', 1, $_SERVER[\'REQUEST_URI\']));

已设置以下筛选器和操作来处理重定向:

add_filter(\'query_vars\', \'cg_redirect_query_vars\');

function cg_redirect_query_vars($query_vars)
{
    $query_vars[] = \'validate-access\';
    return $query_vars;
}

add_action(\'parse_request\', \'cg_redirect_parse_request\');

function cg_redirect_parse_request(&$wp)
{
    // if our custom access validation query var exists, load our custom plugin view
    // then exit the script
    if (array_key_exists(\'validate-access\', $wp->query_vars)) {
        include(plugin_dir_path(__FILE__) . \'views/validate-access.php\');
        exit();
    }
    return;
}
重定向和代码验证几乎适用于每个页面,但是登录页面和基本管理页面(/wp-admin/) 根本没有被重定向。是什么导致这些页面被豁免?

EDIT: 另一个更新!重定向仅适用于具有查询字符串的管理页面。例如,重定向在wp-admin/edit.php?post_type=page, 但不是/wp-admin/edit-comments.php. 虽然已经确定了问题,但我还没有接近解决它--我最好的猜测是parse_requestquery_vars 没有在没有查询字符串的页面上激发?

1 个回复
SO网友:C C

挂钩到admin_init 是您想要的,用于在admin内部执行重定向。所以你需要这两样东西-一个,一个template_redirect 对于前端处理程序。

相关推荐

CUSTOMIZE_PREVIEW_INIT:监听来自Customizer预览区域的任何更改

我知道我可以通过将以下JS添加到customize_preview_init 挂钩:wp.customize( \'setting-ID\', function ( value ) { value.bind( function( val ) { // things go here } ); } ); 但我能轻松地听到任何变化吗?还是一组变化?例如,我有大量的设置,它们的名称如下:my_settings[setting_a], m