WordPress:根据自定义字段true / false隐藏用户

时间:2014-06-21 14:35:26

标签: php wordpress

我已经将一些代码组合在一起,为WordPress创建一个侧边栏小部件,在列表中显示所有非订阅者用户(即编辑,贡献者和管理员)。

它还会显示用户职位的自定义字段。

user_role

自定义字段是通过高级自定义字段插件创建的。

目前这种方法很有效,但现在要求从列表中隐藏特定用户。我已经实施了另一个领域;一个真/假的盒子。勾选时,它应该在列表中显示用户。

user_hide

目前,我尝试的所有内容都会导致不显示任何用户或所有用户。

以下是处于原始状态的foreach用户,该状态仅向用户显示没有#34;用户"。

foreach($allUsers as $currentUser)
{
    if(!in_array( 'subscriber', $currentUser->roles ))
    {
        $users[] = $currentUser;
    }
}

现在不知何故,它还需要"如果自定义字段为真,那么#34;但是我不知道怎么做才能工作。在数据库中,在用户元下,键" author_hide"显示了标签" 1"为真,或" 0"为假。

我已经尝试了下面的内容,但它仍然显示与原始用户列表相同的用户列表,尽管已经通过所有用户并在适当的时候打勾/保存:

$user_query = new WP_User_Query( array( 'meta_key' => 'author_hide', 'meta_value' => '1','meta_compare' => '==' ) );

foreach($allUsers as $currentUser)
{
    if(!in_array( 'subscriber', $currentUser->roles ) && $user_query)
    {
        $users[] = $currentUser;
    }
}

有什么想法吗?

以下是当前的功能:

function contributors() {

$allUsers = get_users('orderby=name&order=ASC');
$users = array();

echo '<ul class="authors-list">';

foreach($allUsers as $currentUser)
{
    if(!in_array( 'subscriber', $currentUser->roles ))
    {
        $users[] = $currentUser;
    }
}

foreach($users as $user)
    {
        ?>
        <li class="author-left author-light rounded-corners">
            <div class="rounded-corners">               
                <div class="rounded-corners">
                    <a href="<?php echo get_author_posts_url( $user->ID ); ?>">
                        <strong><?php echo $user->display_name; ?></strong>
                        <br>
                        <?php $user_role = get_user_meta($user->ID, 'author_role', true); if($user_role != '') { echo $user_role; } ?>
                    </a>
                </div>
            </div>

            <div class="pic">
                <a href="<?php echo get_author_posts_url( $user->ID ); ?>"><?php echo get_avatar( $user->user_email, '50' ); ?></a>
            </div>

        </li>
        <?php
    }
echo '</ul>';

}

1 个答案:

答案 0 :(得分:1)

您可以使用高级自定义字段API在循环中为每个用户获取自定义字段。以下是我将如何做到这一点:

foreach($allUsers as $currentUser) {

    $hide = get_field('user_hide', 'user_' . $currentUser->ID);

    if(!in_array( 'subscriber', $currentUser->roles ) && !$hide ) {
        $users[] = $currentUser;
    }

}

请注意,当您致电user_时,高级自定义字段要求您使用字符串get_field()添加用户ID,以便该功能知道您并未尝试提取帖子。

可以找到更多信息in their documentation