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');
你好,谢谢,可惜这似乎并不work.It似乎没有被选择的任何职位出于某种原因 – Walshie1987 2015-03-02 12:48:05
你在哪里调用它(以及在哪个文件中)? '$ category-> cat_ID'可能是'null'。 – rnevius 2015-03-02 12:49:48
这是在我的主题目录。我检查过,$ category-> cat_ID工作正常。 – Walshie1987 2015-03-02 12:54:43