Advertisement
jaideep06

Variable Products

May 24th, 2022
756
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. add_filter( 'rank_math/snippet/rich_snippet_product_entity', function( $entity ) {
  2.     if ( ! is_product() ) {
  3.             return $entity;
  4.     }
  5.  
  6.     $product = wc_get_product( get_the_ID() );
  7.     if ( ! $product->is_type( 'variable' ) ) {
  8.             return $entity;
  9.     }
  10.  
  11.     $variations = $product->get_available_variations();
  12.     if ( ! empty( $variations ) ) {
  13.             $offers = [];
  14.             foreach ( $variations as $variation ) {
  15.                     $price_valid_until = get_post_meta( $variation['variation_id'], '_sale_price_dates_to', true );
  16.                     if (!$variation['attributes']['attribute_pa_color'] && !$variation['attributes']['attribute_pa_size']) {
  17.                         $offers[] = [
  18.                             '@type'           => 'Offer',
  19.                             'description'     => strip_tags( $variation['variation_description'] ),
  20.                             'price'           => $variation['display_price'],
  21.                             'priceCurrency'   => get_woocommerce_currency(),
  22.                             'availability'    => $variation['is_in_stock'] ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock',
  23.                             'itemCondition'   => 'NewCondition',
  24.                             'priceValidUntil' => $price_valid_until ? date_i18n( 'Y-m-d', $price_valid_until ) : '2025-12-31',
  25.                             'url'             => $product->get_permalink(),
  26.                             'sku'             => $variation['sku'],
  27.                         ];
  28.                     } elseif (!$variation['attributes']['attribute_pa_color']) {
  29.                         $offers[] = [
  30.                             '@type'           => 'Offer',
  31.                             'description'     => strip_tags( $variation['variation_description'] ),
  32.                             'price'           => $variation['display_price'],
  33.                             'priceCurrency'   => get_woocommerce_currency(),
  34.                             'availability'    => $variation['is_in_stock'] ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock',
  35.                             'itemCondition'   => 'NewCondition',
  36.                             'priceValidUntil' => $price_valid_until ? date_i18n( 'Y-m-d', $price_valid_until ) : '2025-12-31',
  37.                             'url'             => $product->get_permalink(),
  38.                             'sku'             => $variation['sku'],
  39.                             'size'            => $variation['attributes']['attribute_pa_kok] //name of the attribute
  40.                    ];
  41.                    } elseif (!$variation['attributes']['attribute_pa_size']) {
  42.                        $offers[] = [
  43.                            '@type'           => 'Offer',
  44.                            'description'     => strip_tags( $variation['variation_description'] ),
  45.                            'price'           => $variation['display_price'],
  46.                            'priceCurrency'   => get_woocommerce_currency(),
  47.                            'availability'    => $variation['is_in_stock'] ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock',
  48.                             'itemCondition'   => 'NewCondition',
  49.                             'priceValidUntil' => $price_valid_until ? date_i18n( 'Y-m-d', $price_valid_until ) : '2025-12-31',
  50.                             'url'             => $product->get_permalink(),
  51.                             'sku'             => $variation['sku'],
  52.                             'color'           => $variation['attributes']['attribute_pa_vari'] //name of the attribute
  53.                     ]; } else {
  54.                         $offers[] = [
  55.                             '@type'           => 'Offer',
  56.                             'description'     => strip_tags( $variation['variation_description'] ),
  57.                             'price'           => $variation['display_price'],
  58.                             'priceCurrency'   => get_woocommerce_currency(),
  59.                             'availability'    => $variation['is_in_stock'] ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock',
  60.                             'itemCondition'   => 'NewCondition',
  61.                             'priceValidUntil' => $price_valid_until ? date_i18n( 'Y-m-d', $price_valid_until ) : '2025-12-31',
  62.                             'url'             => $product->get_permalink(),
  63.                             'sku'             => $variation['sku'],
  64.                             'color'           => $variation['attributes']['attribute_pa_vari'], //name of the attribute
  65.                             'size'            => $variation['attributes']['attribute_pa_koko'] //name of the attribute
  66.                     ];
  67.                     }
  68.                    
  69.                    
  70.     }
  71.  
  72.    }
  73.  
  74.     $entity['offers'] = $offers;
  75.  
  76.     return $entity;
  77. } );
Advertisement
RAW Paste Data Copied
Advertisement