get_posts 특정 부모의 자녀 만
3 대답
- 투표
-
- 2011-11-22
두 가지 옵션이 있습니다.
-
get_posts를 여러 번 호출 :
post__in => array(2,4)
,그리고post_parent => 2
및post_parent => 4
마지막으로 모든 결과를 단일 배열로 병합합니다. -
SQL 쿼리를 직접 작성하고
$wpdb->get_results
를 사용합니다.이 문서 를 참조하십시오.귀하의 경우 다음 (테스트되지 않은) 코드와 유사합니다.$query_sql = " SELECT * FROM $wpdb->posts WHERE post_type = 'products' AND (ID IN (2,4) OR post_parent IN (2,4)) ORDER BY post_date DESC "; $query_result = $wpdb->get_results($query_sql, OBJECT);
You have two options:
Call get_posts multiple times: one for the parent pages using
post__in => array(2,4)
, and two for the child pages of each parent withpost_parent => 2
andpost_parent => 4
and finally merge all the results into a single array.Write directly your SQL query and use
$wpdb->get_results
. See this article for an example. In your case it would be something similar to the following (not tested) code:$query_sql = " SELECT * FROM $wpdb->posts WHERE post_type = 'products' AND (ID IN (2,4) OR post_parent IN (2,4)) ORDER BY post_date DESC "; $query_result = $wpdb->get_results($query_sql, OBJECT);
-
첫 번째는 나쁘기 때문에 정확한 Id 수를 모르기 때문에있을 수 있습니다.두 번째는 나에게 좋은 것 같습니다.시도 할게요.the first on is bad, becouse I dont know exact count of Ids there might be. The second on seem good to me. Ill try.
- 0
- 2011-11-22
- jam
-
- 2011-11-22
$args = array('orderby' => 'date','order' => 'DESC','post_type' => 'products', 'include' => '2, 4'); // get the 2 and 4 posts $children = get_posts($args); // get the children of 2, and merge arrays $children = array_merge($children,get_posts(array('orderby' => 'date','order' => 'DESC','post_type' => 'products','post_parent'=>2))); // get the children of 4, and merge arrays $children = array_merge($children,get_posts(array('orderby' => 'date','order' => 'DESC','post_type' => 'products','post_parent'=>4))); foreach($children as $child){ // etc }
사용자 지정 분류에 태그를 지정하거나 다른 방법으로 식별 할 수 있다면 훨씬 쉽고 빠르기 때문에 3 가지가 아닌 한 가지만 검색하면됩니다.
예 : 맞춤 분류 'highlighted_products'가있는 경우 다음을 수행 할 수 있습니다.
$children = get_posts('post_type' => 'products', 'orderby' => 'date','order' => 'DESC','highlighted_products' => 'example_page'); foreach($children as $child){ // etc }
훨씬 더 유연하고 오류 발생 가능성이 적으며 (ID 2와 4는 변경 될 수 있습니다! 하드 코딩하지 마십시오.) 처리 속도가 훨씬 빠르며 원시 SQL이나 다중 쿼리가 없습니다. 이제 백엔드에 제품 게시물에 태그를 지정하기 만하면 올바른 위치에 표시되는 멋진 사용자 친화적 인 UI가 있다는 것은 말할 것도 없습니다.
$args = array('orderby' => 'date','order' => 'DESC','post_type' => 'products', 'include' => '2, 4'); // get the 2 and 4 posts $children = get_posts($args); // get the children of 2, and merge arrays $children = array_merge($children,get_posts(array('orderby' => 'date','order' => 'DESC','post_type' => 'products','post_parent'=>2))); // get the children of 4, and merge arrays $children = array_merge($children,get_posts(array('orderby' => 'date','order' => 'DESC','post_type' => 'products','post_parent'=>4))); foreach($children as $child){ // etc }
Although it would be much much easier/faster if you could tag them in a custom taxonomy or identify them some other way so that you were only needing to look for one thing, rather than 3 things.
e.g. if we had a custom taxonomy 'highlighted_products' we might do:
$children = get_posts('post_type' => 'products', 'orderby' => 'date','order' => 'DESC','highlighted_products' => 'example_page'); foreach($children as $child){ // etc }
Which would be far more flexible, less prone to errors ( ID 2 and 4 might change! Don't hardcode ), and it's a lot faster to do, no raw SQL or multiple queries. Not to mention that you now have a nice user friendly UI in the backend where you just tag a products post and it appears in the right place
-
- 2013-11-13
$children = get_posts('post_parent=SLUG_OF_PARENT_POST&post_status=publish'); foreach($children as $child) { echo '<br/>ID:'.$child->ID; }
다른 속성을 사용할 수 있습니다 (예 :
$child->post_content
) ... post_type을 정의해야하는 경우 다음 인수도 추가하십시오.&post_type=POST_TYPE_NAME
$children = get_posts('post_parent=SLUG_OF_PARENT_POST&post_status=publish'); foreach($children as $child) { echo '<br/>ID:'.$child->ID; }
you can use other attributes (i.e.
$child->post_content
)... if you need to define post_type, then add this argument too :&post_type=POST_TYPE_NAME
ID 1,2,3,4의 상위 게시물 (맞춤 게시물 유형 hierarch=true)이 있습니다.
ID 2와 4의 상위 게시물에는 하위 페이지가 있습니다.
게시물 2와 4와 모든 하위 페이지 만 검색해야합니다.
유사
포함 된 ID의 하위 페이지를 반환하도록 수정하려면 어떻게해야하나요?