Выводим атрибуты вариативных товаров

Для начала приведу простой пример как достать вариативности товаров WooCommerce на PHP.

PHP

		<?php
		global $product;
		if ($product->is_type( 'variable' )) 
		{
			$args = array(
				'post_type'     => 'product_variation',
				'post_status'   => array( 'private', 'publish' ),
				'numberposts'   => -1,
				'orderby'       => 'menu_order',
				'order'         => 'ASC',
				'post_parent'   => get_the_ID() // get parent post-ID
			);
			$variations = get_posts( $args );
			//echo '<pre>'; print_r($variations); echo '</pre>';	
		}
	
		foreach ( $variations as $variation ) {
			$variation_ID = $variation->ID;
			echo $variation_ID . '<br>';
			$product_variation = new WC_Product_Variation( $variation_ID );
			$variation_price = $product_variation->get_price_html();
			echo $variation_price . '<br>';
			$variation_name = $product_variation->get_variation_attributes();
			//echo '<pre>'; print_r($variation_name); echo '</pre>';
			echo $variation_name [ 'attribute_pa_razmer' ];
		}
		?>

И вариант как это осуществлено мной в интернет-магазине RusWool.

Код PHP файла карточки товара content-product.php

<?php
/**
 * The template for displaying product content within loops
 *
 * This template can be overridden by copying it to yourtheme/woocommerce/content-product.php.
 *
 * HOWEVER, on occasion WooCommerce will need to update template files and you
 * (the theme developer) will need to copy the new files to your theme to
 * maintain compatibility. We try to do this as little as possible, but it does
 * happen. When this occurs the version of the template file will be bumped and
 * the readme will list any important changes.
 *
 * @see     https://docs.woocommerce.com/document/template-structure/
 * @package WooCommerce\Templates
 * @version 3.6.0
 */

defined( 'ABSPATH' ) || exit;

global $product;

// Ensure visibility.
if ( empty( $product ) || ! $product->is_visible() ) {
	return;
}
?>
	
	
	
	
	
	<div class="container-002__items-itm">
		<a class="container-002__items-itm-linkimg" href="<?php echo esc_url(get_the_permalink());?>">
			<?php $post_thumbnail_id = $product->get_image_id();?>
			<img class="container-002__items-itm-linkimg-img" src="<?php echo wp_get_attachment_url($post_thumbnail_id);?>" alt="<?php echo $product->get_title(); ?>">
		</a>
		<a class="container-002__items-itm-linktext" href="<?php echo esc_url(get_the_permalink());?>"><?php echo $product->get_title(); ?></a>
		<p class="container-002__items-itm-description">
			В холодную морозную погоду приходится думать в первую очередь о тепле и комфорте, подбирая соответст..
		</p>
		<p class="container-002__items-itm-stars">★★★★☆</p>
		<p class="container-002__items-itm-onsklad">Доступность: <span>На складе</span></p>
		<p class="container-002__items-itm-text">размер*</p>
		
		<?php
		global $product;
		if ($product->is_type( 'variable' )) 
		{
			$args = array(
				'post_type'     => 'product_variation',
				'post_status'   => array( 'private', 'publish' ),
				'numberposts'   => -1,
				'orderby'       => 'menu_order',
				'order'         => 'ASC',
				'post_parent'   => get_the_ID() // get parent post-ID
			);
			$variations = get_posts( $args );
		?>
		
		<select name="size_select">
			
			<?php
			foreach ( $variations as $variation ) {
				// get variation ID
				$variation_ID = $variation->ID;
				// get variations meta
				$product_variation = new WC_Product_Variation( $variation_ID );
				// get variation price
				$variation_price = $product_variation->get_price_html();
				//get variation name
				$variation_name = $product_variation->get_variation_attributes();
				if ( $variation_name [ 'attribute_pa_razmer' ] ) {
			?>
			
			<option value="<? echo $variation_ID; ?>"><? echo $variation_name [ 'attribute_pa_razmer' ]; ?></option>
			
			<?php
				}}}
			?>
			
		</select>
		<p class="container-002__items-itm-price"><? echo $product->get_variation_price();?> р.</p>
		<div class="container-002__items-itm-button">
			<input type="number" name="count" id="product_count" class="form-control" value="1">
			<a class="container-002__items-itm-linkcart" href="">
				<i class="fa-solid fa-cart-shopping"></i> В КОРЗИНУ
			</a>
		</div>
	</div>



 

Так же с моим портфолио можно ознакомиться на любой из представленной социальной сети, на своих страницах я публикую посты о своих работах, заданиях и целях.

Для связи со мной можно воспользоваться любой социальной сетью,
или написать на почту:

С моим резюме можно ознакомиться по ссылке:

© 2020-2024 Портфолио Юдина Александра г.Пенза. Все права защищены