2015-03-02 3 views
0

Я боролся с этим на всех выходных. Я читал 100 сообщений/учебников, но я не могу понять, что это правильно. В основном у меня есть идентификатор категории, и я хочу получить случайное изображение на странице категории для этой категории. Например, у меня есть категория Jumper (cat id 1), и я хочу получить случайное изображение из сообщения, которое находится в cat id 1. На минуту я получаю сотни одинаковых изображений.WooCommerce получить продукт Изображение из категории ID

Вот код, который я создал:

$args = array(
    'posts_per_page' => 1, 
    'post_type' => 'product', 
    'tax_query'  => array(
     array(
      'taxonomy' => 'product_cat', 
      'field'  => 'id', 
      'terms'  => $category->term_id 
     ) 
    ) 
); 

$myposts = new WP_Query($args); 

foreach ($myposts as $post) : setup_postdata($post); 

     $image = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'single-post-thumbnail'); 
     //$image = wp_get_attachment_image_src($mypost->ID, 'woo-size-category'); 
     the_title(); 
     echo '<img src="' .esc_url($image[0]). '" alt="' . esc_attr($category->name).'" />'; 
endforeach; 

И вот весь контент-product_cat.php:

<?php 
/** 
* The template for displaying product category thumbnails within loops. 
* 
* Override this template by copying it to yourtheme/woocommerce/content-product_cat.php 
* 
* @author  WooThemes 
* @package  WooCommerce/Templates 
* @version  1.6.4 
*/ 
if (!defined('ABSPATH')) 
    exit; // Exit if accessed directly 

global $woocommerce_loop; 

// Store loop count we're currently on 
if (empty($woocommerce_loop['loop'])) 
    $woocommerce_loop['loop'] = 0; 

// Increase loop count 
$woocommerce_loop['loop'] ++; 

$thumbnail_id = get_woocommerce_term_meta($category->term_id, 'thumbnail_id', true); 
$cat = 'no_image'; 
if ($thumbnail_id) { 
    $cat = 'has_image'; 
} 
?> 
<div class="product-category product col-lg-3 element <?php echo $cat; ?>"> 



    <a href="<?php echo get_term_link($category->slug, 'product_cat'); ?>"> 

     <?php 
     /** 
     * woocommerce_before_subcategory_title hook 
     * 
     * @hooked woocommerce_subcategory_thumbnail - 10 
     */ 
     if ($thumbnail_id) { 
      $image = wp_get_attachment_image_src($thumbnail_id, 'woo-size-category'); 
      echo '<img src="' . esc_url($image[0]) . '" alt="' . esc_attr($category->name) . '" />'; 
     } else { 


$args = array(
    'posts_per_page' => 1, 
    'post_type' => 'product', 
    'tax_query'  => array(
     array(
      'taxonomy' => 'product_cat', 
      'field'  => 'id', 
      'terms'  => $category->term_id 
     ) 
    ) 
); 

$myposts = new WP_Query($args); 

foreach ($myposts as $post) : setup_postdata($post); 

     $image = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'single-post-thumbnail'); 
     //$image = wp_get_attachment_image_src($mypost->ID, 'woo-size-category'); 
     the_title(); 
     echo '<img src="' .esc_url($image[0]). '" alt="' . esc_attr($category->name).'" />'; 
endforeach; 
     } 

     ?> 

     <div class="category-info"> 
      <h2><?php echo jwUtils::crop_length($category->name, jwOpt::get_option('letter_excerpt_cat_title', -1)); ?></h2> 
      <?php if (jwOpt::get_option('woo_number_of_items', '1') == '1') { ?> 
       <span class="count_items"><?php echo $category->count . ' ' . __('Items', 'jawtemplates'); ?></span> 
      <?php } ?> 
     </div> 


    </a> 


</div> 

Было бы хорошо, чтобы знать причину, почему это не работает. Любая помощь будет принята с благодарностью!

Благодаря Chris

***** UPDATE - Вот Var самосвала *****

24array(1) { [0]=> object(WP_Post)#9805 (24) { ["ID"]=> int(12738) ["post_author"]=> string(1) "1" ["post_date"]=> string(19) "2015-02-16 15:27:06" ["post_date_gmt"]=> string(19) "2015-02-16 15:27:06" ["post_content"]=> string(80) "The Jungle Race is a serious event for Tiger. When the other animals don't train" ["post_title"]=> string(23) "The Tiger Who Was Angry" ["post_excerpt"]=> string(80) "The Jungle Race is a serious event for Tiger. When the other animals don't train" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(23) "the-tiger-who-was-angry" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2015-02-23 21:02:42" ["post_modified_gmt"]=> string(19) "2015-02-23 21:02:42" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(0) "" ["menu_order"]=> int(0) ["post_type"]=> string(7) "product" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" } } 

изображения генерируются, но не из правильных категорий

** ****** РЕШЕНИЕ ********

Вот что я закончил (работает!)

if ($thumbnail_id) { 
    $image = wp_get_attachment_image_src($thumbnail_id, 'woo-size-category'); 
    echo '<img src="' . esc_url($image[0]) . '" alt="' . esc_attr($category->name) . '" />'; 
} else { 

global $wpdb; 

// Get a random product from this category 
$args = 'SELECT object_id 
FROM `wp_term_relationships` 
where term_taxonomy_id = '.$category->term_id.' order by rand() limit 1'; 

$random_product_in_cat = $wpdb->get_var($args); 


// Get the returned post thumbnail 
$image = wp_get_attachment_url(get_post_thumbnail_id($random_product_in_cat)); 
echo '<img src="' . esc_url($image) . '" alt="' . esc_attr($category->name) . '" />'; 
} 

ответ

1

Я бы создал массив сообщений через get_posts(), а затем выберите случайный. Я не проверял, но вот понятие:

// Get a random product from this category 
$args = array(
    'post_type' => 'product', 
    'posts_per_page' => 1, 
    'category' => $category->cat_ID, 
    'orderby' => 'rand', 
); 
$random_product_in_cat = get_posts($args); 

// Get the returned post thumbnail 
echo get_the_post_thumbnail($random_product_in_cat[0]->ID, 'thumbnail'); 
+0

Привет, спасибо за ответ вы, к сожалению, это, кажется, не work.It не по всей видимости, выбирая любые сообщения по какой-то причине – Walshie1987

+0

Где вы его называете (и в каком файле)? Возможно, что '$ category-> cat_ID' является' null'. – rnevius

+0

Это в моем каталоге тем. Я проверил, и $ category-> cat_ID работает правильно. – Walshie1987

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