2011-12-15 5 views
0

게시물 테이블에서 선택해야합니다. 각 게시물은 카테고리 및 태그와 관련이 있습니다. 특정 태그/카테고리 및/또는 카테고리를 선택해야합니다. 용어 표에는 맞춤 입력란 'menu_order'가 있으며 카테고리 순서를 설정하는 데 사용됩니다. 해당 필드별로 게시물을 정렬하고 싶습니다. 내가 일반 선택 않는 경우 : Wordpress custom QUERY

SELECT * from wp_posts 

LEFT 
JOIN wp_term_relationships 
ON (wp_term_relationships.object_id = wp_posts.ID) 

LEFT 
JOIN wp_terms 
ON (wp_terms.term_id = wp_term_relationships.term_taxonomy_id) 

WHERE 1=1 
AND wp_posts.post_type = 'post' 
AND (
wp_posts.post_status = 'publish' 
OR wp_posts.post_status = 'private' 
) 
LIMIT 0, 20 

나는 결과를 얻을 :

단지 소개입니다
+----------------+----------------+----------+---------------------+ 
| POST ID  | Term name | order |  type   | 
+----------------+----------------+----------+---------------------+ 
|  2  |  Fire  | 1  |  category  | 
+----------------+----------------+----------+---------------------+ 
|  2  |  blue  | 0  |   tag   | 
+----------------+----------------+----------+---------------------+ 

.

내가 수행하는 경우 $ wpdb-> terms.term_id = 170 태그 란 무엇인가요? 단 하나의 반품 만 있습니다.

+----------------+----------------+----------+---------------------+ 
| POST ID  | Term name | order |  type   | 
+----------------+----------------+----------+---------------------+ 
|  2  |  blue  | 0  |   tag   | 
+----------------+----------------+----------+---------------------+ 

나는, 게시물을 선택 카테고리 또는/및 태그에 의해 필터링 한 후 POST에 부착 된 카테고리에서 TERM_ORDER을 얻을 필요가있다.

그래서 어떤 결과가 있더라도 상관 관계는 항상 관련 카테고리에서 가져옵니다.

MYSQL에서별로 강하지 않기 때문에 당황 스럽습니다. 모든 입력이 도움이 될 것입니다 :)

업데이트 ------------------------------------ --------------

그래서 미친 코딩 후에 나는 내가 원하는 것을 얻을 수있었습니다. 숨이 차서 느껴지지는 않지만 작동하지만 숨 쉬지 마십시오.

먼저 모든 제품을 수집하는보기를 만듭니다. 나는 다음 ID로 그룹이 중복 필터링하기 위해> 0을 필터링하여 카테고리의 순서를 얻을 관계와 조건을보기를 선택하고 가입 어디서 조회 할 그 후

$qqquery = " 
CREATE VIEW samsam AS 
SELECT 
ID, post_content, post_title, post_excerpt, post_status, post_name, guid, post_type, $wpdb->term_relationships.term_taxonomy_id as cat_term_taxonomy_id, tt1.term_taxonomy_id as tag_term_taxonomy_id 

FROM $wpdb->posts 

LEFT     
JOIN $wpdb->term_relationships 
ON ($wpdb->term_relationships.object_id = $wpdb->posts.ID) 

LEFT 
JOIN $wpdb->term_relationships AS tt1 
ON (tt1.object_id = $wpdb->posts.ID) 

WHERE 1=1 
AND $wpdb->posts.post_type = 'post' 
AND (
$wpdb->posts.post_status = 'publish' 
OR $wpdb->posts.post_status = 'private' 
) 
AND (      wp_term_relationships.term_taxonomy_id IN ($query_cat) // ID's of categories, seperated by coma 
AND tt1.term_taxonomy_id IN (' . $add_query_tag_id . ') //ID's of POSTS seperated by coma 
) 
ORDER BY $wpdb->term_relationships.term_taxonomy_id DESC 
"; 
$wpdb->query($qqquery); 

.

$querystr = " 
SELECT * from samsam 

LEFT 
JOIN $wpdb->term_relationships 
ON (samsam.ID = $wpdb->term_relationships.object_id) 

LEFT 
JOIN $wpdb->terms 
ON ($wpdb->terms.term_id = $wpdb->term_relationships.term_taxonomy_id) 
AND ($wpdb->terms.menu_order > 0) 

WHERE menu_order > 0 

GROUP BY ID 

ORDER BY menu_order ASC 

LIMIT $item_limit_offset, $item_limit_pp"; // first is calculation of products to skip, second is how many posts per page 

$pageposts = $wpdb->get_results($querystr, OBJECT); 

그것은 무엇을 :

카테고리 1 (이 순서 1) 후 후 후

카테고리 3 (순서 2가) 후 후

카테고리 게시물을 2 (주문 3을 받음) 게시물 게시물 게시물

태그 및/또는 카테고리별로 제한, 오프셋, 페이지 매김, 필터링 할 수 있습니다.

주문 카테고리에 추가 필드를 추가하는 플러그인 "Term Menu Order"를 사용했습니다.

좋은 하루 보내십시오.

답변

관련 문제