WooCommerce从产品图片获取产品ID

问题描述:

我一直在努力与这个整个周末我已经阅读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) . '" />'; 
} 

我会通过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