我正在研究一种方法,我们的销售团队可以将订单标记为手动并重新判断它们.我们正在使用启用的高性能订单存储(HPOS).单击更新/发布按钮时,我需要能够更新字段值.

这是我拥有的:

function update_manual_order( $order_id, 'manual_order', $value = '' ) {
    $order = wc_get_order( $order_id );
    $order = get_meta( 'manual_order' );
        if ( empty( $value ) ) {
            $order = update_meta_data( $post_id, $field_name, '0' );
        } else {
            $order = update_meta_data( $post_id, $field_name, '1' );
        }
    $order->update_meta_data( 'manual_order', $manual_order_option );
    //$order->save();
}
add_action( 'woocommerce_process_shop_order_meta', 'update_manual_order', 60 );

该字段当前是一个复选框,假为0,真为1.至于复选框格式,它在视觉上是一种切换,但以下是行:

<input type="checkbox" id="toggle" class="checkbox" name="manual_order" value="' . checked( 1, get_option( 'manual_order' ), false ) . '" /> <label for="toggle" class="switcher"></label>

我希望能够使用更新更新字段并同步当前订单Meta值.我是不是错过了什么?我对新系统不是太熟悉,任何帮助都将不胜感激!

我try 使用新的HPOS文档来让它找到该字段并使用该字段添加/更新Meta字段.当前代码导致严重错误.

推荐答案

这是您正确的输入复选框字段,显示在送货地址后面(用于测试):

add_action( 'woocommerce_admin_order_data_after_shipping_address', 'display_manual_order_checkbox'  );
function display_manual_order_checkbox( $order ){
    $checked = $order->get_meta('manual_order');
    echo '<div>
    <input type="checkbox" id="toggle" class="checkbox" name="manual_order" '. 
    checked($checked, '1', false).' /> <label for="toggle" class="switcher">'.
    __('Is Manual Order?').'</label>
    </div>';
}

以下是与HPOS兼容的正确代码,用于保存复选框已勾选状态:

add_action( 'woocommerce_process_shop_order_meta', 'save_manual_order_checkbox_value', 20 );
function save_manual_order_checkbox_value( $order_id ) {
    $order = wc_get_order( $order_id );
    
    if ( isset($_POST['manual_order']) ) {
        $order->update_meta_data('manual_order', '1');
    } else {
        $order->update_meta_data('manual_order', '0');
    }
    $order->save();
}

代码保存在您的子主题的functions.php文件中(或插件中).也经过测试并与高性能订单存储(HPOS)配合使用.

Php相关问答推荐

PHP和可选函数参数

Laravel:替换嵌套路由中的中间件参数

启用额外的WooCommerce产品库存位置

如果再次调用SESSION_START(),会话.gc-max是否会重新启动?或者它是从第一次创建会话开始计算的?

从WooCommerce购物车和 checkout 页面自定义发货标签

Htaccess-重写对&api.php";的API请求以及对";web.php";的其他请求

添加登录:需要app.yaml仍然允许所有拥有Google帐户的人访问

这是在可召回的背景下吗?

哪里的表现能更好?

使用随机生成器在MYSQL中创建唯一ID-定义一个数组来存储已知ID是否安全

限制联系人页面仅允许在WooCommerce中登录的用户

如何用Ubuntu 22.04在VSCode中启用XDebug

Azure应用程序无法访问共享文件夹

Shopware 6插件:由于删除了配置密钥,更新后配置值不正确

在 WooCommerce 中何时何地执行 woocommerce_order_status_completed_notification 挂钩?

Laravel 发送邮箱问题 Swift_TransportException

跟踪通过 WooCommerce 分层定价表插件进行的购买

用于检测此模式的正则表达式:something;something=something,something=something... 未知次数

在 laravel 中更新表单时如何在 Select 选项中保留旧值?

PHP Remedy API 调用以创建附件无效的条目(使用 Postman Works!)