密码保护网络上的单个站点

时间:2015-01-27 作者:Theo Leep

我想限制对单个(子域)子网站的访问,因此它需要一个插件来查看该网站。。。不影响任何其他子网站。

例如,如果我有3个子网站像这样。。。

隐藏mydomain。可计算1。mydomain。可计算2。mydomain。com公司

我怎样才能隐藏和密码保护只是隐藏。mydomain。com?

有人能帮我吗?我正在努力寻找解决方案,主要是因为似乎很难处理子域,而不是子文件夹。

1 个回复
SO网友:Adal

您可以使用功能强大的插件,如Multisite Privacy by WPMUDEV, 或者您可以使用我为自己的项目开发的以下代码。

要使用此代码,可以使用它创建一个插件,您只能在站点上激活该插件以进行保护,或者如果这听起来太困难,您可以将其粘贴到主题的功能中。php并使用条件语句包装add\\u操作调用,如下所示:

if ( get_current_blog_id() = 2 )  // Only apply privacy to blog ID 2
  add_action(\'wp\', \'private_site\');

function private_site() {

    if( $_GET[\'home\'] == \'fix\' ) { return; }

    $isLoginPage = strpos($_SERVER[\'REQUEST_URI\'], "wp-login.php") !== false;
    $isPhoneApp = strpos($_SERVER[\'REQUEST_URI\'], "xmlrpc.php") !== false;
    $wpe_cookie = \'wpe-auth\';

    if( !is_user_logged_in() && !is_admin() && !$isLoginPage && !$isPhoneApp ) {

        // WPE: If not-authenticated, delete our cookie in case it exists.
        if ( isset($_COOKIE[$wpe_cookie]) ) setcookie($wpe_cookie,\'\',time()-1000000,\'/\');

        $shareKey = get_post_meta( get_the_ID(), \'key\', true );

        if( $_GET[\'key\'] && is_single && $_GET[\'key\'] == $shareKey ) {
            return;
        } else {
            $location = get_login_redirect_url( get_bloginfo( \'url\') . $_SERVER[\'REQUEST_URI\'] );
            header( \'Location: \' . $location );
            exit();
        }
    } else {
        // WPE: Authenticated, so set the cookie properly.  No need if it\'s already set properly.
        $cookie_value = md5(\'wpe_auth_salty_dog|\'.WPE_APIKEY);
        if ( ! isset( $_COOKIE[$wpe_cookie] ) || $_COOKIE[$wpe_cookie] != $cookie_value )
            setcookie($wpe_cookie,$cookie_value,0,\'/\');
    }
}

// Returns the login URL with a redirect link.

function get_login_redirect_url( $url = \'\' ) {

    $url = esc_url_raw( $url );
    if ( empty( $url ) ) return false;

    // setup query args
    $query_args = array(
        \'redirect_to\' => urlencode( $url )
    );
    return add_query_arg( $query_args, apply_filters( \'ass_login_url\', wp_login_url() ) );
}

结束

相关推荐

如何将WP MultiSite配置为使用/Blog/作为路径结构的一部分?

我正在使用子目录将现有的一组站点迁移到多站点,需要精确匹配url路径,并且与根安装上默认插入的/blog/路径发生冲突。我已经梳理了所有关于这个问题的帖子,但还没有找到我的具体问题的答案,所以就这样。我正在努力实现以下目标:示例。com/blog(英语博客)示例。com/fr/blog(法语)示例。com/ja/blog(日语)等。默认情况下,在根安装路径中插入/blog/时,多站点会限制您使用它,在子路径(即/fr/blog)中使用它也是如此。有什么想法吗?我完全被难住了。谢谢