2

因为我对 php 完全陌生,所以我很难使用一个自定义函数,问题出在 $queryResult = new WP_Query( $args ); 因为当我用其他功能注释掉它时,一切正常。但是,当它在那里时,页面会显示没有预订结果,这很奇怪

所以在这里发挥作用

function getListOfUsersOnLesson($lesson_id) {

    $result = '... nikto nie je prihlásený';

    $args = array (
            'post_type' => 'rsg_reservations',
            'pagination' => false,
            'posts_per_page' => '-1',
            'meta_key' => '_rsg_reservation_lesson_id',
            'meta_value' => $lesson_id,
    );

    $query = new WP_Query( $args );
    if ( $query->have_posts() ) {
        $result = '';
        while ( $query->have_posts() ) {
            $query->the_post();

            $user_id = get_post_meta( get_the_ID(), '_rsg_reservation_user_id', true );
            $user_info = get_userdata($user_id);
            $user_email = $user_info->user_email;
            $username = get_user_meta( $user_id, 'first_name', true ).' '.get_user_meta( $user_id, 'last_name', true );

            $erroclass = '';
            if(reservationIsValid($lesson_id, $user_id)) $erroclass = '';
            else $erroclass = 'erroruser';

            $result.= '<div class="row">';
            $result.= '<div class="col-md-4 '.$erroclass.'">'.$username.'</div>';
            $result.= '<div class="col-md-6 '.$erroclass.'">'.$user_email.'</div>';
            $result.= '<div class="col-md-2"></div>';
            $result.= '</div>';
        }
    }
    wp_reset_postdata();

    return $result;

}

当未注释掉时 当未注释掉时

注释掉时,期望的状态 注释掉时,期望的状态

整个代码由单独的 php 文件中的另一种方法调用

$lesson_user_list = '';
            if(is_super_admin()) {
                $lesson_user_list = getListOfUsersOnLesson($lesson_id);
            }
4

3 回答 3

1

您可能会弄乱查询变量( $queryResult 和 $query )

if ( $queryResult->have_posts() ) {
        $result = '';
        while ( $queryResult->have_posts() ) {
            $queryResult->the_post();
于 2017-01-30T18:46:24.140 回答
0

解决了,带有错误类的 puece 似乎是一个问题

于 2017-02-01T12:57:26.550 回答
0

您执行一个新的 WP_Query 并将其加载到$queryResult中,但随后不使用它(您的代码使用$query,未定义/不包含任何内容)。

更改您的代码如下:

// You are loading results into $queryResult here
$queryResult = new WP_Query( $args );
// below switched FROM $query->have_posts() TO $queryResult->have_posts()
if ( $queryResult->have_posts() ) {
    $result = '';
    // switch to $queryResult->have_posts()
    while ( $queryResult->have_posts() ) {
        // switch to $queryResult->the_post()
        $queryResult->the_post();
        // ... the rest of your code ...
    }
}
于 2017-01-30T17:34:38.157 回答