从WooCommerce Checkout页面上的产品获取Wordpress帖子ID?

时间:2014-10-07 23:07:08

标签: wordpress woocommerce

我有一些自定义字段,例如“清洁费”和“保证金”,我想添加到结帐页面上的项目,我认为这将非常简单但我没有看到任何关联项目和项目派生自定义的帖子。我会以某种方式从项目中获取帖子ID,以便能够使用像这样的行...

<?php $thisItemsSecurityDeposit = get_post_meta($cart_item['the post id'], 'accommodation_security_deposit', true ); echo $thisItemsSecurityDeposit ; ?>

...并且在物品价格之后包含保证金。

我在想,可能有一些对象或会话变量数组,其中包含将产品与产品来源的帖子ID相关联的密钥。

请参阅... http://www.dreamhomevacationrentals.com/hotels/spanish-modern-retreat/ 然后,单击“可用性”,然后单击“立即预订”以查看购物车的运行情况。 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

购物车对象的cart_contents变量(WC()->cart->cart_contents)包含购物车中每件商品的一系列信息...我的示例购物车内容的var_dump如下所示:

["cart_contents"]=> array(1) {
    ["7cbbc409ec990f19c78c75bd1e06f215"]=>
        array(5) {
        ["product_id"]=> int(70)
        ["variation_id"]=> string(0) ""
        ["variation"]=> string(0) ""
        ["quantity"]=> int(1)
        ["data"]=> object(WC_Product_Simple)#530 (3) {
            ["id"]=> int(70)
            ["post"]=> object(WP_Post)#532 (24) {
                ["ID"]=> int(70)
                ["post_author"]=> string(1) "1"
                ["post_date"]=> string(19) "2013-06-07 11:25:01"
                ["post_date_gmt"]=> string(19) "2013-06-07 11:25:01"
                ["post_content"]=> string(278) "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo."
                ["post_title"]=> string(12) "Flying Ninja"
                ["post_excerpt"]=> string(278) "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo."
                ["post_status"]=> string(7) "publish"
                ["comment_status"]=> string(4) "open"
                ["ping_status"]=> string(6) "closed"
                ["post_password"]=> string(0) ""
                ["post_name"]=> string(12) "flying-ninja"
                ["to_ping"]=> string(0) ""
                ["pinged"]=> string(0) ""
                ["post_modified"]=> string(19) "2014-10-06 16:53:48"
                ["post_modified_gmt"]=> string(19) "2014-10-06 16:53:48"
                ["post_content_filtered"]=> string(0) ""
                ["post_parent"]=> int(0)
                ["guid"]=> string(67) "http://demo2.woothemes.com/woocommerce/?post_type=product&amp;p=70"
                ["menu_order"]=> int(0)
                ["post_type"]=> string(7) "product"
                ["post_mime_type"]=> string(0) ""
                ["comment_count"]=> string(1) "4"
                ["filter"]=> string(3) "raw"
            }
            ["product_type"]=>    string(6) "simple"
        }
    }
}

因此,在购物车内容的foreach()循环中,产品ID将被抓取:

$contents = WC()->cart->cart_contents;
if( $contents ) foreach ( $contents as $cart_item ){
  echo $cart_item['product_id'];
}

如果您已经拥有特定的$cart_item变量(例如:您在购物车模板中且已经在Woo循环中),那么您只需访问product_id数组。 $cart_item['product_id'];我总是觉得使用var_dump()print_r()来了解我可以使用哪些变量或数组键是有帮助的。

顺便说一句,你可能想看一下Product Add-ons,这正是你所描述的。