Woocommerce存档产品不显示产品

时间:2017-03-11 18:04:33

标签: php wordpress woocommerce

我有一个8k产品的商店,我用我制作的插件导入。

产品,类别和变化都是正确的。

所有商店都是正确的。

但问题是每个类别的页面都没有输出产品,直到我让它们逐个手动保存。

我已经禁用了主题和插件,同样的东西继续使用原件。

如果我通过覆盖存档产品手动更改查询,则会看到所有产品,但分页和类别列表保持不变。

可能是某个元帖吗?

任何解决方案?

非常感谢大家。

我生成基本和变体产品的功能:

$post = array(
            'post_author' => 1,
            'post_content' => $this->getDescription(),
            'post_status' => 'publish',
            'post_title' => $this->getName(),
            'post_parent' => '',
            'post_type' => 'product'
        );

        $postId = wp_insert_post($post);
        $this->setId($postId);

        if ($this->getId()) {
            update_post_meta($this->getId(), '_sku', $this->getSku());
            update_post_meta($this->getId(), '_visibility', 'visible');

            wp_set_object_terms($postId, $this->getCategories(), 'product_cat');

            $this->getImageXML();

            update_post_meta($this->getId(), '_price', $this->price);
            update_post_meta($this->getId(), '_regular_price', $this->price);

            wp_set_object_terms($this->getId(), $this->getType(), 'product_type', false);

            if ($this->getType() == 'simple') {
                update_post_meta($this->getId(), '_manage_stock', 'yes');
                update_post_meta($this->getId(), '_stock', $this->getStock());
            } else {
                $talla = wc_attribute_taxonomy_name('Größe');
                $attributes = array(
                    $talla => array(
                        'name' => $talla,
                        'value' => '',
                        'is_visible' => '1',
                        'is_variation' => '1',
                        'is_taxonomy' => '1'
                    )
                );
                wp_set_object_terms($this->getId(), $this->getAtributos(), $talla);
                update_post_meta($this->getId(), '_product_attributes', $attributes);

                foreach ($this->getVariants() as $key => $variant) {
                    $variation = array(
                        'post_title' => 'Product #' . $this->getId() . ' Variation',
                        'post_content' => '',
                        'post_status' => 'publish',
                        'post_parent' => $this->getId(),
                        'post_type' => 'product_variation'
                    );
                    $variationId = wp_insert_post($variation);
                    update_post_meta($variationId, '_sku', $variant['ean']);
                    update_post_meta($variationId, '_regular_price', $this->price);
                    update_post_meta($variationId, '_price', $this->price);
                    update_post_meta($variationId, '_manage_stock', 'yes');
                    update_post_meta($variationId, '_stock', $variant['stock']);
                    if ($variant['stock'] > 0) {
                        update_post_meta($variationId, '_stock_status', 'instock');
                    } else {
                        update_post_meta($variationId, '_stock_status', 'outofstock');
                    }
                    update_post_meta($variationId, 'attribute_' . $talla, strtolower(str_replace('/', '', $variant['talla'])));
                }
                WC_Product_Variable::sync($this->getId());
                WC_Product_Variable::sync_attributes($this->getId());
            }
        }

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法:

将这两个meta_tags添加到产品:

update_post_meta($yourID, 'total_sales', 0);
update_post_meta($yourID, '_stock_status', 'instock');

update_post_meta($yourID, 'total_sales', 0);
update_post_meta($yourID, '_stock_status', 'outofstock');

在我的情况下,total_sale为0,因为它们是新产品。