WPMU如果MU站点没有管理员,则停用站点

时间:2013-06-15 作者:Roc

所以我一直在修正这个想法。使用WooCommerce订阅-如果用户是定期付费会员,他们可以创建和管理自己的子网站。

但是,如果定期付款已结束,则“管理员”中的用户角色将自动更改为“订阅者”。

由于每个子网站将只有一名管理员,并且该管理员的角色将更改为订阅者,因此有没有办法链接:

如果是订阅者,请停用其站点。否则,如果是管理员,请激活他们的站点。

我很想得到一些反馈!

谢谢Roc。

1 个回复
SO网友:Nikola Ivanov Nikolov

我会从调查set_user_role 行动挂钩。您将向回调函数传递3个参数—用户ID、新用户角色和一组旧用户角色(这对我来说似乎很奇怪,您无法传递一组角色,但很好)。

下面是一个示例代码-我不确定您将如何获得用户拥有的站点,但它应该给您一个大致的想法:

function my_set_user_role_callback( $user_id, $new_role, $old_roles ) {
    // Get the user sites here - not sure how you\'d do that, but there should be a way
    $user_sites = array();
    if ( $user_sites ) {
        if ( in_array( \'administrator\', $old_roles ) && $new_role == \'subscriber\' ) {
            foreach ( $user_sites as $site ) {
                // Archive the site
                $site->archived = true;
                update_blog_details( $site->userblog_id, (array) $site );
            }
        } elseif ( in_array( \'subscriber\', $old_roles ) && $new_role == \'administrator\' ) {
            foreach ( $user_sites as $site ) {
                // Un-archive the site
                $site->archived = false;
                update_blog_details( $site->userblog_id, (array) $site );
            }
        }
    }
}
add_action( \'set_user_role\', \'my_set_user_role_callback\', 10, 3 );
一旦您了解了如何获取用户站点,请修复$site 用正确的方法反对(这些方法有可能是正确的,但仍然如此)。

PS:您可以将所有代码放在一个插件中并通过网络激活它,或者将其放在wp内容/mu插件/目录中,以便始终为所有站点启用它。

结束

相关推荐

WordPress Multisite Dilemma!

过去三年来,我们一直以WordPress安装的形式运行我们的主域,并将子域添加为单独的WordPress安装。随着时间的推移,我们认为将我们的主域作为多站点,并将其他子域作为其子站点进行管理是一个更好的主意。但问题是——它值得吗?链接会发生什么情况?那么三年内建立起来的SEO呢?有什么需要担心的吗?如果你们中的任何人都能回答这个问题,那么要将已经运行的站点移动到多站点界面,需要做些什么?提前非常感谢。