Я боролся с этим на всех выходных, я читал 100 сообщений / учебников, но я не могу понять, что это правильно. В основном у меня есть идентификатор категории, и я хочу получить случайное изображение на странице категории для этой категории. Например, у меня есть категория Jumper (cat id 1), и я хочу получить случайное изображение из сообщения, которое находится в cat id 1. На минуту я получаю сотни одинаковых изображений.
Вот код, который я создал:
$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>
Хорошо бы знать, почему это не работает. Любая помощь будет принята с благодарностью!
Спасибо Крису
***** ОБНОВЛЕНИЕ – вот Var Dump *****
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) . '" />'; }