在输出 html 之前检查 wordpress 用户元键是否存在


Check if wordpress user meta key exists before outputting html

我有一个Wordpress用户查询,它从自定义角色的用户列表中回显出一堆信息。一切正常,但我正在努力为非常可能的结果做准备。代码从下面开始:

$args = array(
    'role' => 'BBCDirectory',
    'search' => ''
);
// The Query
$user_query = new WP_User_Query( $args );
// User Loop
if ( ! empty( $user_query->results ) ) {
    foreach ( $user_query->results as $user ) {
        echo '<div class="singleperson">'
         . '<div style="margin:50px 0; height:1px; line-height:1px; background:#CCCCCC;"></div><span class="bbcavatar" style="float:left; margin:0 20px 20px 0;"><a href="' . get_author_posts_url($user->ID) . '"><img src="' . get_author_image_url( $user->ID ) . '" alt="" /></a></span>'
         . '<h3 class="bbcname"><a href="' . get_author_posts_url($user->ID) . '">' . esc_html( $user->display_name ) . '</a></h3>'
         . '<span class="bbclocation"><em>' . esc_html( $user->bbccity ) . ', ' . esc_html( $user->bbcstate ) . '</em></span>'
         . '<span class="bbcabout"><strong style="text-transform:uppercase; font-size:1.25em;">About Me</strong><br />' . esc_textarea( $user->bbcabout ) . '</span>'
         . '<span class="bbcclassschedule"><strong style="text-transform:uppercase; font-size:1.25em;">My Class Schedule</strong><br />' . esc_html( $user->bbcclassschedule ) . '</span>'
         . '<span class="contactheader"><strong style="text-transform:uppercase; font-size:1.25em;">Contact ' . esc_html( $user->first_name ) . '</strong><br />'
         . '<span class="bbcwebsite"><a target="_blank" href="' . esc_html( $user->bbcwebsite ) . '"><i class="fa fa-globe fa-2x"></i></a></span>'
         . '<span class="bbcemail"><a href="mailto:' . esc_html( $user->bbcemail ) . '"><i class="fa fa-envelope-o fa-2x"></i></a></span>'
         . '<span class="bbcfacebook"><a target="_blank" href="' . esc_html( $user->bbcfacebook ) . '"><i class="fa fa-facebook fa-2x"></i></a></span>'
         . '<span class="bbctwitter"><a target="_blank" href="http://twitter.com/' . esc_html( $user->bbctwitter ) . '"><i class="fa fa-twitter fa-2x"></i></a></span>'
         . '<span class="bbcphone"><a id="bbcphone" href="#null"><i class="fa fa-phone fa-2x"></i></a><span class="bbcphonenumber">' . esc_html( $user->bbcphone ) . '</span></span>'
         . '</div>'
         ;
    }

因此,这拉出了各种各样的东西——电子邮件地址、网站、社交媒体资料等。我想做的实际上是测试以确保这些东西在数据库中,如果它们不在......不要试图呼应那部分。例如,如果他们没有Facebook页面,请不要回显

         . '<span class="bbcfacebook"><a target="_blank" href="' . esc_html( $user->bbcfacebook ) . '"><i class="fa fa-facebook fa-2x"></i></a></span>'

看起来很简单,但我回显内容的方式可能不是最有利于条件语句的方式。也许我应该尝试以不同的方式查询?

提前感谢您的帮助!

尝试这样做

// The Query
$user_query = new WP_User_Query( $args );
$return = '';
// User Loop
if ( ! empty( $user_query->results ) ) {
    foreach ( $user_query->results as $user ) {
        $user_id = $user->ID;
        $display_name = $user->display_name;
        $location = isset($user->bbcstate) && isset($user->bbccity);
        $about = $user->bbcabout;
        $schedule = $user->bbcclassschedule;
        $user_name = $user->first_name;
        $website = $user->bbcwebsite;
        $email = $user->bbcemail;
        $facebook = $user->bbcfacebook;
        $twitter = $user->bbctwitter;
        $phone = $user->bbcphone;
        $return .= '<div class="singleperson">
                    <div style="margin:50px 0; height:1px; line-height:1px; background:#CCCCCC;">/div>';
        if ($user_id != '') {
            $return .= '<span class="bbcavatar" style="float:left; margin:0 20px 20px 0;"><a href="' . get_author_posts_url($user->ID) . '"><img src="' . get_author_image_url( $user->ID ) . '" alt="" /></a></span>';
        }
        if ($display_name != '') {
            $return .= '<h3 class="bbcname"><a href="' . get_author_posts_url($user->ID) . '">' . esc_html( $user->display_name ) . '</a></h3>';
        }
        ...
        $return .= '</div>';
    }
    return $return; // or echo $return;
}

只需填写if的:)