2012-10-31 7 views
0

자체 테이블에있는 값으로 정렬 된 사용자 정의 게시 유형 목록을 표시하려고합니다. wti_like_posts라는 플러그인을 사용하고 있는데, 사용자가 엄지 손가락을 위/아래로 게시물을 평가할 수 있습니다.wordpress 사용자 정의 orderby 문

테이블에 점수와 post_id가 첨부되어 있습니다. 나는 기존의 'orderby'옵션을 'rating'옵션에 추가 할 수 있기를 원합니다. 따라서 쿼리를 게시 할 때 해당 점수를 고려할 수 있습니다.

그렇게하는 좋은 방법이 있습니까? add_filter를 사용해야 할 것 같지만 이미 시도했지만 알아낼 수는 없습니다. 어떤 도움이라도 대단히 감사하겠습니다! 사전

답변

0

에서

덕분에 당신은 당신의 결과를 얻기 위해 두 테이블을 조인 할 수있는 사용자 지정 SQL 쿼리를 구축해야합니다.

global $wpdb; 
$sql = "SELECT * FROM ".$wpdb->prefix."wp_posts, ".$wpdb->prefix."ratings_table WHERE wp_post.id = ratings_table.post_id"; 
$posts = $wpdb->get_results($sql); 
echo "<ul>"; 
foreach ($posts as $post){ 
    echo '<li>'.$post->title.'|'.$post->score.'<br/>'; 
    echo '</li>'; 
} 
echo "</ul>"; 

테스트하지 않았습니다.

표 & 열 이름을 조정해야합니다.

[업데이트] = 평가 & meta_key는 = ORDERBY = meta_value & meta_key =에 foo는 이

평가 get_posts()을 당신이 당신의 ORDERBY을 변경해야 사용이 확인

은 아래 참조 :

$args = array(
'numberposts'  => 10, 
'offset'   => 0, 
'orderby'   => 'meta_value', 
'order'   => 'ASC', 
'meta_key'  => 'rating', 
'post_type'  => 'post', 
'post_status'  => 'publish' 
); 
$results = get_posts($args); 
+0

감사에 대한 너의 답 ! 이미이 방법을 사용하여 목록을 실행하는 데 성공했습니다. 그러나 그 것은 wordpress 것들에 그 orderby 옵션을 추가하고 싶습니다. 그래서'get_posts ('post_type = type & num_posts = 10 & orderby = rating & meta_key = foo [...]')'와 함께 사용할 수 있습니다. 왜냐하면 나는 다른 매개 변수 (분류학, 검색, 저자 등 ...)로 결과를 필터링하는 데 사용하고 싶기 때문에 ... – Charleshaa

+0

내 대답을 – Marty

+0

업데이트했습니다. 원하는 값은 wp_postmeta 테이블에 없습니다. , 그것은 자신의 테이블에 있습니다 ... 그래서이 방법을 사용할 수없는 이유입니다 ... 'meta_key = foo'는 예제 처럼요. 왜냐하면 제가 요청한 많은 매개 변수를 가지고 있다는 것을 보여주고 싶었 기 때문입니다. 그것을 무시하십시오 ... – Charleshaa