是否创建基于站点管理员角色来显示HTML/数据的函数?

时间:2015-11-25 作者:George B

我需要根据网站管理员的“角色”制作一个短代码,以便在页面上显示一些HTML?不是登录用户,而是站点管理员的角色。默认情况下,角色为“管理员”,唯一其他角色为“pro\\U用户”。因此,如果他们是“pro\\u用户”,我想回显第一个“HTML类型1”,如果不想输出“HTML类型2”,如下所示:

我试过了,但做错了&;获取页面上的空白输出。

add_shortcode( \'add_my_form\', \'get_form_on_role\' );
function get_form_on_role() {
    if( ! is_user_logged_in() ) {
        $user = new WP_User( get_current_user_id() );
        $roles = $user->roles;
        if( $roles[0] == \'pro_user\' ) {
            echo \'HTML type 1\';
        }elseif( $roles[0] == \'administrator\' ) {
            echo \'HTML type 2\';
        }
    }
}

2 个回复
SO网友:AddWeb Solution Pvt Ltd

我认为下面这行代码是不必要的,如果您查找登录的用户结果,这是错误的。

if( ! is_user_logged_in() )
请使用下面的代码,我为解决方案做了一些更改。

//Add a hook for a shortcode \'add_my_form\' tag...
add_shortcode( \'add_my_form\', \'get_form_on_role\' );

//Create sortcode API used function...
function get_form_on_role() {
    if(is_user_logged_in() ) {//If user is logged in...

        //Get current user role information...
        $user = new WP_User( get_current_user_id() );
        $roles = $user->roles;

        $returnTxt = \'\';//Initialize return text variable...

        if( $roles[0] == \'pro_user\' ) {//If user having \'pro_user\' role...
            $returnTxt = \'HTML type 1\';
        }elseif( $roles[0] == \'administrator\' ) {//If user having \'administrator\' role...
            $returnTxt =  \'HTML type 2\';
        }
        return $returnTxt;
    }
}


/*
    This will display \'HTML type 1\' is user logged in with \'pro_user\' role, 
    If logged in user with \'administrator\' then it will print \'HTML type 2\'...
*/
//You can use sortcode by API like... 
<?php echo do_shortcode("[add_my_form]");?>
参考号:Shortcode_API

如果对此有任何疑问/疑问,请告知我。

SO网友:George B

非常感谢。如果用户已登录,则此操作确实有效,但这是针对多站点设置中的公共页面,因此如果可能,我希望它显示给所有用户,并根据站点管理员/所有者角色输出。

很抱歉,如果我使用了错误的代码来检查是否登录,这误导了你我需要什么。

如果页面角色的站点管理员是“pro\\u user”,我希望上面的“HTML type 1”返回。它现在可以做到这一点,但前提是该管理员已登录。

然后,如果不是“pro\\u user”或如果角色=“admin”,则显示“HTML类型2”。

是否可以获取站点管理员角色而不是登录用户角色?在这种情况下,页面作者角色也不起作用。

谢谢你的帮助!!

相关推荐

Namespaced shortcode?

我正在改造一个旧的WP站点,该站点有许多自定义的短代码,显然由于代码当前的组织方式,这些短代码在性能方面付出了代价。当然,我可以修复优化不好的代码,使用十几个短代码,并且一天就可以完成,但我想知道如何更好地组织它们。根据WordPress\'documentation, 建议将它们放在插件中并在上初始化init. 我们可以通过这样“命名”它们来减少这个钩子中的负载吗?[com.company shortcode attr=\"attr\" prop=\"prop\"] 有人尝试过这样的解决方案吗