【发布时间】:2019-01-24 19:07:01
【问题描述】:
我正在尝试从 Woocommerce 制作 Google 产品供稿 - 可用的插件不支持产品变体,这有点麻烦。
我正在一家服装店工作,该店有多种尺寸和颜色的商品,因此要求 Google 产品 Feed 应列出所有可用的尺寸/颜色组合,并且因为它对每个变体进行库存控制,所以没有意义当我们真正只剩下 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 & 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; ?>
只有这个是不完整的——我不知道如何获得我需要的所有元素。特别是,我如何检索不同表中的变体大小和颜色?
【问题讨论】:
-
不知道这个问题,但我会将
$variationloop = new WP_Query( $args2 );从第一个循环中取出。 -
我需要显示一些在变体级别设置的值,以及一些在产品级别设置的值。
-
我看错了...尝试第二个查询'
parent => $post->ID -
我已经在第二个循环中使用 'post_parent' =>'$id' 了?它在 $args2 数组中。我最初将变体循环嵌套在产品循环中,因为我认为我需要检查产品是否可用,然后获取它们的变体(如果有)。但是,如果可以检查产品没有从变体循环中删除,那么我只能有一个循环。那肯定会加快速度!关于如何获得变化的相关尺寸和颜色的任何想法?我对 wp_term、wp_term_relationships 和 wp_term_taxonomy 表感到困惑。
-
单引号内的变量不会被解析,反正只对
$var = "something-$id";有用。如果没有,请删除引号。但是你确定$id包含什么东西吗?
标签: php wordpress woocommerce google-product-search