2015-03-02 155 views
0

我一直在努力與這個整個週末我已經閱讀100的職位/教程,但我似乎無法得到這個權利。基本上我有一個類別ID,我想在類別頁面上獲得一個隨機圖像。例如,我有類別跳線(貓ID爲1),我想從貓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> 

這將好知道爲什麼這不工作的原因。任何幫助將不勝感激!

感謝 克里斯

*****更新 - 這裏的無功轉儲*****

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" } } 
產生

圖像,而不是從正確的類別

** ****** SOLUTION ********

下面是我結束了(工作!)

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 2015-03-02 12:48:05

+0

你在哪裏調用它(以及在哪個文件中)? '$ category-> cat_ID'可能是'null'。 – rnevius 2015-03-02 12:49:48

+0

這是在我的主題目錄。我檢查過,$ category-> cat_ID工作正常。 – Walshie1987 2015-03-02 12:54:43