2014-10-15 1 views
0

저는 워드 프레스의 데이터베이스 구조와 모든 것에 대한 다소 제한적인 지식으로 인해 시작해야 할 부분이 상당히 복잡합니다. 그래서 저는 여기에 있습니다. 계속하고있어.table1의 wpdb-> query는 메타 데이터를 확인하고 상태를 게시합니다.

나는 이런 식으로 뭔가 보일 것이다 사용자 정의 테이블이 있습니다

wp_buzzsumo을

+--------------------------------------+ 
| id pageID title totalShares date | 
+--------------------------------------+ 
| 1 25  -  20000  - | 
| 2 29  -  1992   - | 
| 3 25  -  122345  - | 
| 4 27  -  134   - | 
+--------------------------------------+ 

I는 다음과 같습니다 워드 프레스 쿼리가 : 루프에서 다음

SELECT * FROM wp_buzzsumo ORDER BY totalShares DESC LIMIT 20 

과 결과를 출력하는 PHP에서는 몇 가지 내용을 확인하는 문장이 있습니다 .. 그러나 이제는 LIMIT20인데 반환하지 않는 경우가 있습니다. 상위 20 결과는 경우 문을 실패 때문에 아무것도 ... 그래서 지금은

if(
    !get_field("hide_trending_bar", $PageID) && 
    !get_field("hide_hashtags_from_trending_bar", $PageID) && 
    get_page($PageID)->post_status == "publish" 
) 

$의 페이지 id 위 표에 pageID 열을 일치해야합니다 .. 쿼리에이 문을 넣을 수있는 방법이 필요합니다.

나는 내가 믿는이 같은 쿼리 뭔가가 필요 ...하지만 문제는이 일을 아주 올바른 방법이 아니다 알고 ..

SELECT * FROM wp_buzzsumo 
WHERE wp_posts.pageID=wp_buzzsumo.pageID 
AND wp_posts.post_status = 'publish' 
AND (
     wp_posts.meta_key = 'hide_trending_bar' 
     AND 
     wp_posts.meta_value = "" 
    ) 
AND (
     wp_posts.meta_key = 'hide_hashtags_from_trending_bar' 
     AND 
     wp_posts.meta_value = "" 
    ) 

ORDER BY totalShares DESC LIMIT 20 
+0

왜이 값이 어떤 포스트 유형 (포스트/페이지)과 관련이 있는지 사용자 정의 테이블이'메타 테이블 '에 저장되지 않는 이유. 그게 당신에게 당신의 작업을 더 간단하게 해주는'meta_query'를 사용할 수있는 힘을 줄 것입니다. – codepixlabs

+0

이 커스텀 테이블이 갖는 성질 때문에 나는 그것을 할 수 없습니다. 게시물과 완전히 관련이있는 것은 아니며 "게시물"은 데이터가 표시 될 상위 페이지입니다. 이 데이터베이스는 어느 정도 사용자 지정 게시 유형이지만 다른 종류의 데이터에 대한 것입니다. 약 20,000 개의 행과 집계가 있습니다. –

답변

0

다른 접근 방식을 : -

$pageids = $wpdb->get_col("SELECT id FROM {$wpdb->prefix}buzzsumo ORDER BY totalShares DESC LIMIT 20",ARRAY_N); 

$args = array(
    'post_status'  => 'publish', 
    'post_status'  => 'page', 
    'include'   => $pageids, 
    'meta_query'  => array(
     'relationship' => 'AND', 
     array(
      'key'  => 'hide_trending_bar', 
      'value' => '', 
      'compare' => '=' 
     ), 
     array(
      'key'  => 'hide_hashtags_from_trending_bar', 
      'value' => '', 
      'compare' => '=' 
     ), 

    ) 
); 
$posts = get_posts($args); 
+0

문제는 표시해야하는 콘텐츠가 게시물이 아니며 콘텐츠가'wp_buzzsumo' 테이블에 있다는 것입니다. –

관련 문제