2

我正在尝试从 Woocommerce 制作 Google 产品提要 - 执行此操作的可用插件不支持产品变体,这有点麻烦。

我正在一家拥有多种尺寸和颜色的服装店工作,因此要求 Google 产品提要应列出所有可用的尺寸/颜色组合,并且由于它对每个变体进行库存控制,因此没有必要列出尺寸当我们真正剩下的只有 14 号棕色时,库存中的 10 件白色。

所以,我认为我需要做的是创建一个产品提要,为每个产品运行一个循环,然后在该循​​环内,为每个变体运行一个嵌套循环?这有点慢,所以如果有一个更好的方法,请提出一个更好的方法!至少它只需要每月运行一次。

这是我到目前为止所拥有的:

 <?php
// First get the main product details.  
$args = array( 'post_type' => 'product', 'posts_per_page' => 999 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); global $product;

// Now do a second nested loop to get the variations. 
$args2 = array( 'post_type' => 'product_variation', 'post_parent' =>'$id');
$variationloop = new WP_Query( $args2 );
while ( $variationloop->have_posts() ) : $variationloop->the_post();

// get the parent of each variation so we can use $parent (is this necessary???)
$parent = get_post($post->post_parent); 
?>

我觉得真的完成了第一个循环,我应该能够从中调用东西,但是一旦第二个变体循环完成,我似乎无法在第一个产品循环中引用任何东西。因此 get_post($post->post_parent)

然后我做饲料。到目前为止,这似乎有效:

    <item>
    <title><?php   echo $parent->post_title;?></title>
    <link>http://mysite.com/shop/<?php   echo $parent->post_name;?></link>
    <g:image_link><?php echo wp_get_attachment_url( get_post_thumbnail_id() ) ?></g:image_link>
    <g:price><?php echo $product->price ?></g:price>
    <g:condition>New</g:condition>
    <g:id><?php echo $id; ?></g:id>  
    <g:availability><?php echo $product->is_in_stock() ? get_option('product_in_stock') : get_option('product_out_stock'); ?></g:availability>
    <g:brand>My Brandname</g:brand>
    <g:product_type>Clothing &amp; Accessories &gt;  Clothing &gt;  Swimwear</g:product_type>
    <g:google_product_category>Clothing &amp; Accessories &gt;  Clothing &gt;  Swimwear</g:google_product_category>
    <g:shipping_weight><?php echo $product->get_weight();?></g:shipping_weight>

    <g:mpn><?php echo $product->get_sku(); ?></g:mpn>
    <?php if (get_option('rss_use_excerpt')) : ?>
    <description><![CDATA[<?php echo $parent->post_excerpt; ?>]]></description>
    <?php else : ?>
    <description><![CDATA[<?php echo $parent->post_excerpt; ?>]]></description>

    <?php endif; ?>

只有这不完整 - 我不确定如何获得我需要的所有元素。特别是,我如何检索不同表中的变体大小和颜色?

4

3 回答 3

5

我设法让这个工作,所以留下细节以防它对任何人有用。

根据 brasofilo 的建议,我删除了第二个循环。然后我得到了这样的变体,用 meta_compare 检查它们是否有库存。

  $args = array( 'post_type' => 'product_variation', 'post_count' =>'9999','meta_key' => '_stock',  'meta_value' => '0', 'meta_compare' => '>');
$variationloop = new WP_Query( $args );
while ( $variationloop->have_posts() ) : $variationloop->the_post();
// get the parent of each variation, so you can refer to things like product description that are set per-product not per-variation. 
$parent = get_post($post->post_parent); 
// is the parent product live? 
if ($parent->post_status=="publish")
{

然后我得到了这样的颜色、尺寸、照片等:

 $colour= get_post_meta($id, 'attribute_pa_colour', true); 
 $size= get_post_meta($id, 'attribute_pa_size', true); 
 $price= get_post_meta($id, '_price', true); 
 $thephoto= get_post_meta($id, '_thumbnail_id', true);  // get photo associated with this variation
 $image_attributes =wp_get_attachment_image_src($thephoto, 'large');

请注意,属性的确切名称将取决于您在设置变体时调用该属性的名称

然后我只是重复了这些值: post_title;?> - Size http://mywebsite.com/shop/ post_name;?> ID; ?>
post_excerpt); ?> 英镑

我希望这对某人有帮助!

于 2013-09-13T14:40:37.093 回答
1

woocommerce 产品提要有一个很棒的免费插件,它也支持产品变化。https://wordpress.org/plugins/webappick-product-feed-for-woocommerce/

于 2016-03-23T05:03:34.283 回答
0

这个由 ELEX 开发的高级插件甚至支持变体。希望这可以帮助那些仍在为支持产品变化的 WooCommerce 寻找 Google 产品提要集成的人。 https://elextensions.com/plugin/woocommerce-google-product-feed-plugin/

于 2019-01-24T11:07:01.170 回答