2014-01-14 6 views
7

이것은 하나의 견해입니다. 특정 속성을 기반으로 WooCommerce 제품을 쿼리하고 출력하려고합니다. 예를 들어, yes 또는 no의 가능한 값으로 on이라는 속성을 설정합니다.쿼리를 기반으로하는 WooCommerce 제품

내가 사용에 질의 다음 다음 meta_key 아마도 매우 중요합니다

$args = array( 
    'post_type' => 'product', 
    'meta_key' => 'pa_on', 
    'meta_value' => 'yes', 
    'posts_per_page' => -1 
); 

query_posts($args); 

; 내가 전화하면 on 나는 아무것도 얻지 못한다. 내가 그것을 pa_on이라 부르는다면 (그것이 내가 생성하는 WooCommerce 커스텀 속성을 이해하는 방법이기 때문에) 나는 아무것도 얻지 못한다.

그러나 다른 쿼리를 시도하고 표준 WooCommerce 사용자 지정 메타 데이터 인 _featured을 사용하면 관련 기능 게시물을 반환합니다. 도와 줘, 누구?

$args = array(
'post_type' => 'product', 
'meta_query' => array(
    array(
     'key' => 'pa_on', 
     'value' => 'yes', 
     'compare' => '=' 
    ) 
) 
); 
$query = new WP_Query($args); 

당신은 여기에 대해 자세히 알아볼 수 있습니다 :

+0

StackOverflow의 범위를 벗어납니다. 이것은 명백한 PHP 질문이 아닙니다. WordPress에만 해당되므로 게시물을 wordpress.stackexchange.com – Chris

+0

으로 마이그레이션해야합니다. Chris - 저는 교수형에 처해있는 상태에서 스레드를 옮기면됩니다. :) –

답변

0

당신이 meta_query 값 세트 쿼리가 필요 추측 http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

+1

Thanks Kriesi,하지만 전 두려워하는 것은 작동하지 않습니다. (일반적으로이 형식을 쿼리에 사용하고 이미 시도해 보았습니다 - 이것은 테마의 어느 부분에서나 작동 할 것이라고 생각하십니까?) 분명히 잘못된 방식으로 WooCommerce 특성을보고 있습니다. 거기에 뭔가 잘못되고있어 .. –

+0

당신은 원시 SQL 쿼리와 함께하는 방법을 알고 계십니까? – huykon225

6

나는이 낡은 것을 알고 있지만, 단지의 경우 누군가에 내가 오늘했던 것처럼 우연히 발견된다. - Woocommerce (나는 v2.6.2를 사용하고있다)는 이러한 사용자 정의 속성을 택 소미로 저장하는 것으로 보인다.

내가 원래의 질문에 대한 정확한 인수는 다음과 같이 의심스러운 :

$args = array(
    'post_type' => 'product', 
    'tax_query' => array(
     array(
     'taxonomy' => 'pa_on', 
     'field' => 'name', 
     'terms' => 'yes' 
    ) 
    ) 
); 

내 설치에 적절한 값을 사용하여, 그것은 내 문제를 해결했다. 에서 복사 한 제품의 속성이 특정 제품 속성 (즉, 글로벌되지 않음)로 저장됩니다

$attribute = 'on'; 
$value = 'yes'; 
$args = array(
    'post_type' => 'product', 
    'tax_query' => array(
    array(
     'taxonomy'  => 'pa_' . $attribute, 
     'terms'   => $value, 
     'field'   => 'slug', 
     'operator'  => 'IN' 
     ) 
    ) 
); 
3

http://snippet.fm/snippets/query-woocommerce-products-product-specific-custom-attribute/) :

// Set custom attribute name and value to search for 
$attribute_name = 'color'; 
$attribute_value = 'green'; 

$serialized_value = serialize('name') . serialize($attribute_name) . serialize('value') . serialize($attribute_value); // extended version: $serialized_value = serialize($attribute_name) . 'a:6:{' . serialize('name') . serialize($attribute_name) . serialize('value') . serialize($attribute_value) . serialize('position'); 
$args = array(
    'post_type'  => 'product', 
    'post_status' => 'any', 
    'posts_per_page' => -1, 
    'orderby'  => 'title', 
    'order'   => 'ASC', 
    'meta_query' => array(
     array(
      'key'  => '_product_attributes', 
      'value' => $serialized_value, 
      'compare' => 'LIKE', 
     ), 
    ), 
); 
$loop = new WP_Query($args); 
while ($loop->have_posts()) { 
    $loop->the_post(); 
    // do stuff here... e.g. get_the_ID() 
} 
wp_reset_postdata(); 
0

경우에, 당신 대신 당신이 조각을 사용할 수 분류로 쿼리 할 수 ​​없습니다 (: 새로운 woocommerce 사용을위한