Checking url from plugin

时间:2012-06-25 作者:Matthew

我正在尝试更改wp login的登录url。php只需“登录”。我一直在寻找另一个插件源代码来找到实现它的方法。

到目前为止,我已经掌握了一些适用的部分:

register_activation_hook( __FILE__, \'my_plugin_activate\' );
register_deactivation_hook( __FILE__, \'my_plugin_deactivate\' );

add_action( \'init\', \'my_plugin_rewrite\' );
add_action( \'login_init\', \'my_plugin_login_init\' );
add_action( \'template_redirect\', \'my_plugin_display\' );

function my_plugin_activate() {
    add_rewrite_tag( \'%login%\', \'([^/]+)\');
    add_permastruct( \'login\', \'/%login%\' );
    flush_rewrite_rules();
}

function my_plugin_login_init() {
    if ( \'/wp-login.php\' == $_SERVER[\'PHP_SELF\'] ) {
        header( \'HTTP/1.0 404 Not Found\' );
        global $wp_query;
        $wp_query->set_404();
        require TEMPLATEPATH . \'/404.php\';
        exit;
    }
}

function my_plugin_display() {
    global $wp_query;
    switch( $wp_query->query_vars[\'pagename\'] ) {
        case \'login\' :
            include( ABSPATH . \'/wp-login.php\' );
            exit;
            break;
    }
}
我遇到的问题是“my\\u plugin\\u display”函数。

$wp_query->query_vars[\'pagename\'] 碰巧是空的。如何测试url是否位于/login? 这是要用的钩子吗?

1 个回复
SO网友:Sarathi

您可以尝试使用“query\\u vars”筛选器添加查询变量,如下所示:

add_filter(\'query_vars\', \'my_plugin_query_vars\');
function my_plugin_query_vars($vars) {
    $vars[] = \'login\';
    return $vars;
}
这可能会填充$wp\\u query->query\\u var,如果我没有在我的一个项目中成功使用get\\u query\\u var函数,请尝试以下操作:

function my_plugin_display() {
    if(get_query_var(\'login\')) {
        include( ABSPATH . \'/wp-login.php\' );
        exit;
    }
}

结束

相关推荐

多个单个站点,一个插件目录-调整plugins_url()

[这不是一个多站点问题]更新:这个问题在逻辑上是不可能的,或者是思维循环,如果你愿意的话,请检查下面的更新。技术是laid out here in WPEngineer.它允许有一个插件文件夹来为运行在同一服务器上的多个WordPress站点提供服务。所以,我所有的开发站点都在wp配置中有这个。phpdefine( \'WP_PLUGIN_DIR\', \'/www_dev/base-site/wp-content/plugins\' ); define( \'WP_PLUGIN_URL\', \