Woocommerce から Google 製品フィードを作成しようとしています - これを行うための利用可能なプラグインは製品バリエーションをサポートしていません。これは少し面倒です。
私は複数のサイズと色のアイテムを扱う衣料品店で働いているので、Google の商品フィードには利用可能なすべてのサイズと色の組み合わせをリストする必要があります。また、バリエーションごとに在庫管理を行っているため、サイズをリストする意味はありません。在庫があるのは 10 ホワイトで、実際に残っているのはサイズ 14 ブラウンです。
それで、私がする必要があるのは、各製品のループを実行する製品フィードを作成し、そのループ内で各バリエーションのネストされたループを実行することだと思いますか? 少し遅いので、より良い方法があれば提案してください!少なくとも、月に 1 回実行するだけで済みます。
これが私がこれまでに持っているものです:
<?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);
?>
1回目のループが終わったらそこから呼び出しができるはずなのに、2回目のバリエーションループが終わると、1回目のプロダクトループ内では何も参照できないようです。したがって、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 & Accessories > Clothing > Swimwear</g:product_type>
<g:google_product_category>Clothing & Accessories > Clothing > 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; ?>
これだけが不完全です。必要なすべての要素を取得する方法がわかりません。特に、別のテーブルにあるバリエーションのサイズと色を取得するにはどうすればよいですか?