2016-08-13 2 views
2

Речь идет о страницах одного продукта WooCommerce. Я пытаюсь использовать категорию продукта для отображения связанных продуктов. Я могу отобразить его с помощью кода ниже. Использование этого будет включать текущую запись и отображает только продукт.Страницы с одним товаром - Исключая текущий продукт из родственных продуктов

<?php 
    global $post; 
     $terms = get_the_terms($post->ID, 'product_cat');  
     foreach ($terms as $term ) {   
      $product_cat_name = $term->name; 
      break; 
     }   
    $ids = array(); 

    $currentID = get_the_ID(); 

    $args = array('post_type' => 'product', 'product_cat' => $product_cat_name);  
    $loop = new WP_Query($args); 
    while ($loop->have_posts()) : $loop->the_post(); global $product; 
     $ids[] = $loop->post->ID; 
    endwhile; 
    wp_reset_query(); 

    print_r($ids); 
?> 

Но я пытаюсь предотвратить отображение текущего продукта на этих связанных продуктах. Я попытался использовать первую секунду кода ниже, но вместо исключения он извлекает все сообщения по умолчанию.

<?php 
    global $post; 
     $terms = get_the_terms($post->ID, 'product_cat');  
     foreach ($terms as $term ) {   
      $product_cat_name = $term->name; 
      break; 
     }   
    $ids = array();  

    $currentID = get_the_ID(); 

    $args = array('post_type' => 'product', 'product_cat' => $product_cat_name, 'post__not_in' => array($currentID));  
    $loop = new WP_Query($args); 
    while ($loop->have_posts()) : $loop->the_post(); global $product; 
     $ids[] = $loop->post->ID; 
    endwhile; 
    wp_reset_query(); 

    print_r($ids); 
?> 

Как я могу это достичь?

Благодаря

+0

Ok У меня есть функциональный ответ для вас ... он должен работать. Я удалил в своем коде глобальный $ product; как ненужное здесь. Пожалуйста, попробуйте и скажите мне. – LoicTheAztec

ответ

1

На основе первого фрагмента кода, это должно работать и будет избегать для отображения текущего продукта в соответствующих продуктах, основанных на текущей категории продукта.

Это код:

<?php 

global $post; 

$ids = array(); 

// Get the "main" product category 
$terms = get_the_terms($post->ID, 'product_cat'); 
foreach ($terms as $term){ 
    if($term->parent != 0) { 
     $product_cat_name = $term->name; 
     break; // stop the loop 
    } 
// The Query  
$loop = new WP_Query(array(
    'post_type' => 'product', 
    'product_cat' => $product_cat_name, 
    'post__not_in' => array($post->ID) // Avoid displaying current product 
)); 

if ($loop->have_posts()): 
    while ($loop->have_posts()) : $loop->the_post(); 
     $ids[] = $loop->post->ID; // Set all other product IDs for that product category 
    endwhile; 
endif; 

wp_reset_query(); 

// Raw output 
print_r($ids); 

?> 

Это должно работать ...

+0

это не работало для меня. :/он дает ошибку последней woocommerce. – GauchoCode

+0

@GauchoCode ... Я проверил, обновил и оптимизировал свой код ответа. Попробуйте, если хотите. Спасибо (и извините ... ошибка отсутствовала) – LoicTheAztec

Смежные вопросы