将自定义帖子类型/帖子添加到Woocommerce

Del*_*yer 8 php wordpress codex woocommerce

我有一个个人主题"A",我想它也可以在没有Woocommerce的情况下工作.当添加Woocommerce"WC"插件时,我会将A产品与WC集成.我有一个名为"对象"的自定义帖子类型,如何通过WC让"对象"可以买到?

我已经看到StackOverflow上的这个答案在Woocommerce中添加自定义帖子类型 最终解决方案提供了一个免费(不再是)插件来解决.

我更喜欢自己做这件事,没有插件的帮助.我很好奇,预包装解决方案不是我想要的.

Rei*_*gel 10

创建了一个简单的教程,在这里添加它太长了.

为了实现您的目标,您的帖子类型必须有价格.也就是说,价格的自定义字段应该有一个元键_price.

如果你已经有一个不是的元键_price,你可以添加一个过滤器,woocommerce_get_price如下所示.

add_filter('woocommerce_get_price','reigel_woocommerce_get_price',20,2);
function reigel_woocommerce_get_price($price,$post){
    if ($post->post->post_type === 'post') // change this to your post type
        $price = get_post_meta($post->id, "price", true); // assuming your price meta key is price
    return $price;
}
Run Code Online (Sandbox Code Playgroud)

有了这个,您现在可以将帖子类型中的任何帖子添加到购物车.这样做,例如http://localhost/wordpress/cart/?add-to-cart=11是您的帖子类型中帖子的ID.

访问该链接后的示例结果图像:

reigelgallarde.me

现在,您必须设置如下表单..

<form action="" method="post">
    <input name="add-to-cart" type="hidden" value="<?php echo $post->ID ?>" />
    <input name="quantity" type="number" value="1" min="1"  />
    <input name="submit" type="submit" value="Add to cart" />
</form>
Run Code Online (Sandbox Code Playgroud)

你需要这个才能得到"添加到购物车"按钮.输入的名称必须是原样.

  • A + @Reigel!我甚至没有使用它,但它真的很有趣.谢谢你发布它. (2认同)
  • 这不适用于woocommerce版本2.7,可能还有所有版本......因为2.7中的woocommerce将检查帖子类型是否是产品... (2认同)

Pra*_*Rao 3

我们可以尝试一件简单的事情..您想要一个自定义帖子类型来存储您的产品,当集成 WooCommerce 时,您的自定义帖子类型中添加的产品可以作为 woocommerce 产品使用。

  1. 检查 woocommerce 是否已安装。

  2. 如果没有,则创建一个自定义帖子类型作为“产品”(类似于 woocommerce)。

  3. 添加与 Woocommerce 类似的自定义字段,并在其下添加产品。(为 Woocommerce 的自定义字段添加的图像)
  4. 现在,在自定义帖子类型下添加产品,当添加 woocommerce 时,它​​将面临自定义帖子类型已存在的问题。
  5. 因此,如果将来您想将 woocommerce 添加到您的网站,请禁用您的 register_post_Type 函数并安装 WooCommerce。
  6. 在自定义帖子类型中创建的所有产品也将在 Woocommerce 产品选项中可见

要检查 woocommerce 是否处于活动状态,请使用此代码

<?php
    if ( class_exists( 'WooCommerce' ) ) {
      // code that requires WooCommerce
    } else {
      // you don't appear to have WooCommerce activated
    }
    ?>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述