为登录用户设置特定主页

时间:2016-04-28 作者:mpsbhat

谷歌搜索之后,我有了一段代码,可以在wordpress中将特定页面设置为主页。密码上说,

add_action(\'init\', \'loginCheck\');

function loginCheck() {

    if (is_user_logged_in()) {
        $page = get_page_by_title(\'My Account\');
    } else {
        $page = get_page_by_title(\'Shop\');
    }

      update_option(\'page_on_front\', $page->ID);
      update_option(\'show_on_front\', \'page\');
}
但我自己对上述代码考虑很少。

根据我的说法,上述代码将在每次加载页面时更新数据库,而不考虑登录

1 个回复
最合适的回答,由SO网友:Sumit 整理而成

关于您的注意事项:-

是的,真的!它将在每次访问时更新页面template_include 滤器分配一个静态首页,然后通过检查用户是否登录,将模板应用于该页。因此,您可以向登录的用户和访问者显示不同的布局/设计参见此示例:-

add_filter( \'template_include\', \'home_page_template\', 99 );
/**
 * Home page Template based on user
 * @param type $template
 * @return type
 */
function home_page_template( $template ) {
    if (!is_front_page()) {
        return $template; //Return if not home page
    }

    $new_template = false;

    if (is_user_logged_in()) {
        $new_template = locate_template( array( \'logged-in-users.php\' ) );
    } else {
        $new_template = locate_template( array( \'not-logged-in-users.php\' ) );
    }

    if ( !empty($new_template) ) {
        return $new_template ; //Only return if template exist
    }

    return $template; //Always return value from filter
}
对于其余内容,您可以为登录用户和来宾用户创建两个菜单,并在头文件中有条件地调用它们。要撤消来宾用户对某些页面/帖子的访问权限,请使用init 钩住is_user_logged_in() 然后做temporary 重定向到某个页面。您可以在此网站上搜索此方法的示例。