【问题标题】:How to post woocommerce checkout field html value如何发布woocommerce结帐字段html值
【发布时间】:2019-09-27 11:54:01
【问题描述】:

您好,我有 woocommerce 结帐页面的自定义字段。 我想用 html 输出数据库保存它。 但是,这些都是通过每次清理 html 来保存的。 如何将写入这些字段的 html 代码保存到数据库中?

add_filter(`woocommerce_checkout_fields`, `burayi_ekle`);

function burayi_ekle($fields)
{
    $fields['billing']['billing_satis'] = [
        'type'     => 'textarea',
        'label'    => __('SATIŞ1', 'woocommerce'),
        'class'    => ['input-text'],
        'required' => true,
        'clear'    => false,
        'priority' => 120,
    ];

    $fields['billing']['billing_satis2'] = [
        'type'     => 'textarea',
        'label'    => __('SATIŞ2', 'woocommerce'),
        'class'    => ['input-text'],
        'required' => true,
        'clear'    => false,
        'priority' => 121,
    ];

    return $fields;

}

【问题讨论】:

    标签: php wordpress woocommerce alan


    【解决方案1】:

    您可以将 WC 结帐自定义字段数据与 HTML 一起保存到数据库中。该记录将保存在 Order 的 post 类型的 postmeta 表中。

    这里你可以试试下面的代码

    function save_extra_checkout_fields( $order_id, $posted ){
        if( isset( $posted['billing_satis'] ) ) {
            update_post_meta( $order_id, '_billing_satis', sanitize_text_field( $posted['billing_satis'] ) );
        }
        if( isset( $posted['billing_satis2'] ) ) {
            update_post_meta( $order_id, '_billing_satis2', $posted['billing_satis2'] );
        }
    }
    add_action( 'woocommerce_checkout_update_order_meta', 'save_extra_checkout_fields', 10, 2 );
    

    使用 update_post_meta 添加到数据库时不要转义 html。

    【讨论】:

    • 我无法为我添加共享代码的区域进行注册。 Woocommerce 会自动注册此字段。这是一个插件。将您共享的代码粘贴到插件页面中,但不起作用
    • 我的理解是您使用插件来注册以上两个字段,它会在将 HTML 保存到数据库之前将其删除。您可以将上面的代码粘贴到活动主题的 funtions.php 文件中。如果您确定字段名称可以取消设置,然后使用您的代码以不同的名称自行注册,然后使用新的字段名称更改我的代码。这样您就可以通过它的方式覆盖插件字段保存。使用它,您需要做一些额外的工作来显示这些字段并将其保存到 wp-admin 中。
    • (cloudways.com/blog/…) 你可以在这里阅读更多详细信息。
    • 跟我建议的一样。如果您可以接受我的回答,请将其标记为已接受并写下您实际面临的问题以及您是如何解决的。将来会帮助其他人。
    【解决方案2】:

    好吧。我修复它 。

    这是我的真实代码

    function save_extra_checkout_fields( $order_id ){
    
            $billing_satis = $_POST['billing_satis'];
            if(   ! empty($billing_satis) ){
                update_post_meta( $order_id, '_billing_satis', $billing_satis  );
            }
    
            $billing_satis2 = $_POST['billing_satis2'];
            if(   ! empty($billing_satis2) ){
                update_post_meta( $order_id, '_ billing_satis2', $billing_satis2 );
            }
        }
        add_action( 'woocommerce_checkout_update_order_meta', 'save_extra_checkout_fields', 10, 2 );
    

    【讨论】:

      猜你喜欢
      • 2017-09-04
      • 2018-01-18
      • 2015-04-20
      • 2020-08-02
      • 1970-01-01
      • 2021-03-26
      • 2018-01-08
      • 1970-01-01
      • 2018-12-20
      相关资源
      最近更新 更多