【问题标题】:Displaying custom table values in WooCommerce checkout form在 WooCommerce 结帐表单中显示自定义表值
【发布时间】:2016-07-19 09:51:25
【问题描述】:

我想在 WooCommerce 结帐中从公司名称字段显示外部表值。我们可以创建外部表并插入一些公司名称。

当用户在结帐字段中注册我们的服务时,客户应在自定义选择选项字段中选择公司名称。此值应从自定义数据库表中显示。

我怎样才能做到这一点?

提前致谢。

【问题讨论】:

    标签: php mysql wordpress woocommerce custom-fields


    【解决方案1】:

    我们将首先取消设置公司的字段类型,然后将其更改为类型'select'(选择器)。然后我们将进行查询以从您的自定义数据库表中获取所有选项键/值(假设称为“wp_companies”):

    (仅用于测试)此处没有数据库查询(公司有 3 个选项)

    add_filter( 'woocommerce_default_address_fields' , 'set_custom_company_checkout_field' );
    function set_custom_company_checkout_field( $address_fields ) {
    
        unset($fields['company']['type']);
    
        $address_fields['company']['type'] = 'select';
        $address_fields['company']['options'] = array(
            'option_1' => 'Company 1',
            'option_2' => 'Company 2',
            'option_3' => 'Company 3'
        );
        // (optional) 
        // $address_fields['company']['default'] = 'Company 1';
    
        return $address_fields;
    }
    

    将此代码粘贴到位于您的活动子主题(或主题)中的 function.php 文件中。

    此代码已经过测试并且可以运行……


    真实代码:从数据库自定义表中进行查询(待调整)

    add_filter( 'woocommerce_default_address_fields' , 'set_custom_company_checkout_field' );
    function set_custom_company_checkout_field( $address_fields ) {
    
        // Unset company field type
        unset($fields['company']['type']);
    
        global $wpdb;
        $select_options = array();
    
        // @@@ you will need to replace names table and columns and adapt this !!!
        $query = "SELECT id, company FROM table";
        $companies_name  = $wpdb->get_results($query);
    
        // Storing object $company_name keys/values in $select_options array
        foreach ( $companies_name as $company_name ) 
        {
            $key = 'option_'. $company_name->ID;
            $value = $company_name->custom_column_value;
            $select_options[$key] = $value ;
        }
    
        $address_fields['company']['type'] = 'select';
        $address_fields['company']['options'] = $select_options;
        // (optional) 
        // $address_fields['company']['default'] = $select_options['option_1'];
    
        return $address_fields;
    } 
    

    将此代码粘贴到位于您的活动子主题(或主题)中的 function.php 文件中。

    参考文献:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-07
      • 2016-07-11
      • 1970-01-01
      • 2019-04-14
      • 2016-11-07
      • 2021-06-07
      • 2018-10-01
      • 1970-01-01
      相关资源
      最近更新 更多