2014-05-21 2 views
0

2 명의 저자를 보여주는 커스텀 페이지를 wordpress에서 만들려고합니다.
작성자 이미지 및 약력을 표시해야하므로 사용자 지정 쿼리가 있습니다. 내 쿼리가 지금이 : 내가 하나 개의 결과에서 2 개 메타 값을 얻을 내가 어떻게 알아낼 수 없었기 때문에변수가 포함 된 wordpress 커스텀 질의

<?php 

     global $wpdb; 

     $authors = $wpdb->get_results("SELECT ID, user_nicename, meta_value, meta_key, display_name 
              FROM $wpdb->users, $wpdb->usermeta 
              WHERE user_nicename = 'nick' AND umeta_id = 53"); 

     foreach($authors as $author) { 
      ?> 
      <div class="author"> 
       <div class="authorimage" style="background-image: url('<?php echo $author->meta_value; ?>');" > 
       </div> 
       <div class="authorinfo"> 
        <?php 
        $username = $author->user_nicename; 
        echo $author->display_name; ?><br /><?php 
         $bios = $wpdb->get_results("SELECT ID, user_nicename, meta_value, meta_key, display_name 
                 FROM $wpdb->users, $wpdb->usermeta 
                 WHERE user_nicename = %d 
                 AND umeta_id = 43", $username); 

        foreach($bios as $bio) {  
         echo $bio->meta_value; 
        } 
        ?> 
       </div> 
      </div> 
    <?php 
     } 
    ?> 

내가이 쿼리를 사용합니다.
모든 것이 잘 작동하지만 두 번째 쿼리에서는 WHERE user_nicename= %d이 작동하지 않습니다.
echo $bio->metavalue에는 아무 것도 표시되지 않습니다.
하지만 하드 코드 WHERE user_nicename = "andre"이면 작동합니다.

+0

% d는 10 진수 값이므로 % s로 변경하고 –

+0

시도하십시오. echo "test"를 입력해도 작동하지 않습니다. foreach 내부 (바이오로 바이오스)에는 보이지 않습니다. –

+0

SQL 쿼리의 에코를 시도해보십시오. 그러면 쿼리가 어떤 것인지 확인할 수 있습니다. 그런 다음 mysqladmin에서 직접 실행하여 어떤 결과를 얻었는지 확인하십시오. 그리고 그것은 첫 번째 쿼리가 레코드를 반환하는 것 같습니다. 레코드가 반환되면'print_r ($ bios);'를 chk 할 수있다. 레코드가있는 배열을 표시합니다. –

답변

0

도움이 필요합니다.

$users = "('nick', 'roy')"; 
    global $wpdb; 
     $tableB2 = "SELECT user_id, max(umeta_id) maxid 
         FROM art_usermeta b 
         WHERE meta_key = 'author_profile_picture' 
         GROUP BY user_id"; 

     $tableB1 = "SELECT a.user_id, maxid, meta_value, meta_key 
         FROM ($tableB2) a 
         INNER JOIN art_usermeta b on b.user_id=a.user_id and b.umeta_id=maxid and meta_key='author_profile_picture'"; 

     $tableC2 = "SELECT user_id, max(umeta_id) maxid 
         FROM art_usermeta b 
         WHERE meta_key = 'description' 
         GROUP BY user_id"; 

     $tableC1 = "SELECT a.user_id, maxid, meta_value, meta_key 
         FROM ($tableC2) a 
         INNER JOIN art_usermeta c on c.user_id=c.user_id and c.umeta_id=maxid and meta_key='description'"; 

     $sql  = "SELECT ID, user_nicename, b.meta_value bvalue, b.meta_key bkey, display_name, c.meta_value cvalue, c.meta_key ckey 
         FROM art_users a 
         INNER JOIN ($tableB1) b ON b.user_id=id AND b.meta_key = 'author_profile_picture' 
         INNER JOIN ($tableC1) c ON c.user_id=id AND c.meta_key = 'description' 
         WHERE user_nicename in $users"; 

이 쿼리는 user_nicename의 설명을 표시하고, 표시 이름은 작성자 및 사진 URL의 설명을 반환합니다. 또한 가장 많은 수의 설명과 사진 URL을 확인하여 업데이트 된 URL이 최신 정보를 가져 오는 경우이를 확인합니다.

내 영어에 대한 도움과 죄송합니다.