获取WooCommerce产品详细信息并将其传输到自定义DB表

时间:2019-04-15 作者:Walnef

我目前正在WordPress和WooCommerce上注册产品。

客户可以注册的所有产品都将在WooCommerce数据库中,但在前端不可见。

我的目标是:制作一个带有下拉列表的表单(其中的项目将是我的所有WooCommerce产品),用户可以在其中选择他的产品。然后,他会在购买产品时写下自己的姓名、地址等。

路径是:在以后使用之前从WooCommerce的产品数据库中获取我想要的所有信息->在前端的表单中写入个人信息->在MySQL的表中写入所有数据。

我试过了wc_get_products(); 但我不知道如何获取特定信息(名称、照片URL、SKU和一些特定信息,如保修期),它返回一些奇怪的数组。

我已经为MySQL映射了我的表。我只需要知道如何获取信息并写信给它。

欢迎任何帮助。

1 个回复
SO网友:LoicTheAztec

具有wc_get_products() 您将获得WC_Product 对象。

Get product properties

每个WC_Product 对象是具有受保护数据的CRUD对象。可以使用相关的WC_ProductWC_Data 方法。

对于自定义元数据(or custom fields), 您将使用WC_Data get_meta() 根据您的特定meta_keys 你可以在wp_postmeta 产品ID的数据库表(post_id)。例如,如果自定义meta_key_my_image_url 您将从WC_Product 对象使用:

$value = $product->get_meta(\'_my_image_url\');
下面是一个更完整的示例,使用了所有内容:

// The WC_Product_Query
$products = wc_get_products(\'limit\' => 10);

// Loop though `WC_Product` Objects
foreach ( $products as $product ) {
    $product_id      = $product->get_id(); // The product ID
    $product_name    = $product->get_name(); // The product name
    $product_sku     = $product->get_sku(); // The product SKU
    $product_price   = $product->get_price(); // The product price
    $image_url       = wp_get_attachment_image_src( $product->get_image_id() ); // The product image URL

    ## ----- Custom meta data ----- ##

    $custom_value    = $product->get_meta(\'_custom_key\'); // Custsom meta data
}
您还可以使用get_post_meta() WordPress功能from the product Id (或帖子ID)类似:

$product_name    = get_the_title($product_id); // The product name
$product_sku     = get_post_meta($product_id, \'_sku\', true); // The product SKU
$product_price   = get_post_meta($product_id, \'_price\', true); // The product price
$image_url       = wp_get_attachment_image_src( get_post_meta($product_id, \'_thumbnail_id\', true) ); // The product image URL

## ----- Custom meta data ----- ##

$custom_value    = get_post_meta($product_id, \'_custom_key\', true); // Custsom meta 

Updating product properties

现在您还可以使用any available setter method 更改产品属性值,并在最后使用save(); 方法来保存数据和刷新缓存数据。

Transfer to a custom DB table

要传输自定义表中的某些数据,您将使用WPDB WordPress类,允许您对WordPress自定义表进行任何SQL查询。

相关推荐

在保持在php 5.6上的同时对遗留(4.7)版本的WP进行更新的环境?

所以,我想我知道需要做什么,但我想得到社区的意见,希望能有一些更有经验的人。我必须对仍然运行php 5.6的网站进行内容和主题更新。由于定制的应用程序可以与网站交互,我们目前无法更新php版本,尽管我们知道这是一个安全问题。因此,我需要能够使WP代码库与php 5.6兼容。该站点上已经有了更新阻止插件,但我想我需要有一个用于本地开发的自定义容器和一个droplet或其他VP来显示,以便在将更新推送到实时站点之前能够显示更新。是这样吗?这里有捷径吗?该站点是否有可能在php 7服务器上运行?我认为我需要做的