【发布时间】:2021-04-13 09:44:39
【问题描述】:
我想使用 php 更新产品库存数量和当前产品状态。
我已使用此代码完美地更新了所需的值。
//post_id查询
$stm = $pdo->prepare("SELECT * FROM wp_postmeta WHERE meta_value = :sku");
$stm->bindParam(":sku", $sku, PDO::PARAM_STR);
$stm->execute();
$row = $stm->fetch(PDO::FETCH_ASSOC);
//通过post_id查询更新库存
$stm = $pdo->prepare("UPDATE `wp_postmeta` SET `meta_value` = :stock WHERE `post_id` LIKE :id AND `meta_key` LIKE '_stock'");
$stm->bindParam(":id", $row['post_id'], PDO::PARAM_INT);
$stm->bindParam(":stock", $stock, PDO::PARAM_INT);
$stm->execute();
//通过post_id查询更新库存
$stm = $pdo->prepare("UPDATE `wp_wc_product_meta_lookup` SET `stock_quantity` = :stock WHERE `sku` LIKE :sku");
$stm->bindParam(":sku", $sku, PDO::PARAM_STR);
$stm->bindParam(":stock", $stock, PDO::PARAM_INT);
$stm->execute();
//如果库存0设置为缺货
if ($stock < 1){
$stm = $pdo->prepare("UPDATE `wp_postmeta` SET `meta_value` = 'outofstock' WHERE `post_id` LIKE :id AND `meta_key` LIKE '_stock_status'");
$stm->bindParam(":id", $row['post_id'], PDO::PARAM_INT);
$stm->execute();
$stm = $pdo->prepare("UPDATE `wp_wc_product_meta_lookup` SET `stock_status` = 'outofstock' WHERE `sku` LIKE :sku");
$stm->bindParam(":sku", $sku, PDO::PARAM_STR);
$stm->execute();
}
//如果stock 1或更多设置为instock
if ($stock > 0){
$stm = $pdo->prepare("UPDATE `wp_postmeta` SET `meta_value` = 'instock' WHERE `post_id` LIKE :id AND `meta_key` LIKE '_stock_status'");
$stm->bindParam(":id", $row['post_id'], PDO::PARAM_INT);
$stm->execute();
$stm = $pdo->prepare("UPDATE `wp_wc_product_meta_lookup` SET `stock_status` = 'instock' WHERE `sku` LIKE :sku");
$stm->bindParam(":sku", $sku, PDO::PARAM_STR);
$stm->execute();
}
但是,完成脚本后,产品页面上的值不会更新。 如果我从管理菜单打开产品并在产品页面上检查产品,现在值已刷新,虽然我没有在 wordpress 管理中点击保存或更新按钮,只是打开了产品。
我的问题是,是否需要手动设置任何其他参数,以便产品在最终用户页面更新?我是否遗漏了什么,或者是否需要运行某个函数来初始化新值?
提前致谢
【问题讨论】:
标签: php mysql wordpress woocommerce pdo