WooCommerce:如何要求管理新订单部分中的状态下拉框

WooCommerce:如何要求管理新订单部分中的状态下拉框,woocommerce,Woocommerce,我试图要求在创建新订单表单中的WooCommerce管理区域中有几个字段。我已经成功地解决了如何对除“状态”下拉菜单之外的所有字段执行此操作。以下是我到目前为止所做的(所有这些代码都正常工作): //在通过Admin创建新订单时需要某些字段 添加过滤器(“woocommerce\u admin\u billing\u fields”、“woocommerce\u require\u admin\u billing\u fields”); 功能商业\需要\管理\计费\字段($fields){ $f

我试图要求在创建新订单表单中的WooCommerce管理区域中有几个字段。我已经成功地解决了如何对除“状态”下拉菜单之外的所有字段执行此操作。以下是我到目前为止所做的(所有这些代码都正常工作):

//在通过Admin创建新订单时需要某些字段
添加过滤器(“woocommerce\u admin\u billing\u fields”、“woocommerce\u require\u admin\u billing\u fields”);
功能商业\需要\管理\计费\字段($fields){
$fields['first_name']['custom_attributes']=array('required'=>'1');
$fields['last_name']['custom_attributes']=array('required'=>'1');
$fields['address_1']['custom_attributes']=array('required'=>'1');
$fields['city']['custom_attributes']=array('required'=>'1');
$fields['postcode']['custom_attributes']=array('required'=>'1');
$fields['country']['custom_attributes']=数组('required'=>'1');
$fields['email']['custom_attributes']=array('required'=>'1');
$fields['phone']['custom_attributes']=数组('required'=>'1');
返回$fields;
}
添加过滤器(“woocommerce\u admin\u shipping\u fields”、“woocommerce\u require\u admin\u shipping\u fields”);
功能商业\需要\管理\装运\字段($fields){
$fields['address_1']['custom_attributes']=array('required'=>'1');
$fields['city']['custom_attributes']=array('required'=>'1');
$fields['postcode']['custom_attributes']=array('required'=>'1');
$fields['country']['custom_attributes']=数组('required'=>'1');
$fields['state']['custom_attributes']=array('required'=>'1');
返回$fields;
}
//需要未包含在woocommerce\u管理循环中的字段
函数vic\u require\u admin\u fields(){
echo'document.getElementById(“摘录”).setAttribute(“必需”、“1”);//订单注释(摘录)
echo'document.getElementById(“_payment_method”).setAttribute(“必选”、“1”);//付款方式
}
添加操作('woocommerce\u admin\u order\u data\u在装运地址之后,'vic\u require\u admin\u字段');
我曾尝试以与其他字段类似的方式要求“State”下拉字段(通过一个针对“State”id的过滤器),我也尝试使用javascript操作将其作为目标,但这两种努力都没有产生解决方案。看起来表单的构造方式是通过boostrap下拉菜单?实际的标记被设置为display:none,所以我真的不能做太多

我可以看到,当我选择一个没有状态的选择时,选择字段会变成一个输入字段,这就是为什么我无法将其作为目标添加所需属性的原因:

如果我不能用过滤器做这件事也没关系。我想我可能需要在按钮上附加一些javascript来进行表单验证?为了通过javascript进行验证,我似乎找不到实际的表单id,不过今晚回家后我可能会四处看看

任何帮助我找到解决方案的想法都将不胜感激

// Require certain fields in NEW ORDER creation via Admin
add_filter('woocommerce_admin_billing_fields', 'woocommerce_require_admin_billing_fields');
function woocommerce_require_admin_billing_fields( $fields ){
    $fields['first_name']['custom_attributes'] = array( 'required' => '1' );
    $fields['last_name']['custom_attributes'] = array( 'required' => '1' );
    $fields['address_1']['custom_attributes'] = array( 'required' => '1' );
    $fields['city']['custom_attributes'] = array( 'required' => '1' );
    $fields['postcode']['custom_attributes'] = array( 'required' => '1' );
    $fields['country']['custom_attributes'] = array( 'required' => '1' ); 
    $fields['email']['custom_attributes'] = array( 'required' => '1' );
    $fields['phone']['custom_attributes'] = array( 'required' => '1' );
    return $fields;
}
add_filter('woocommerce_admin_shipping_fields', 'woocommerce_require_admin_shipping_fields');
function woocommerce_require_admin_shipping_fields( $fields ){
    $fields['address_1']['custom_attributes'] = array( 'required' => '1' );
    $fields['city']['custom_attributes'] = array( 'required' => '1' );
    $fields['postcode']['custom_attributes'] = array( 'required' => '1' );
    $fields['country']['custom_attributes'] = array( 'required' => '1' );
    $fields['state']['custom_attributes'] = array( 'required' => '1' );
    return $fields;
}
// Require fields that are not included in woocommerce_admin loops
function vic_require_admin_fields() {
     echo '<script>document.getElementById("excerpt").setAttribute("required", "1")</script>';              // order notes (excerpt)
     echo '<script>document.getElementById("_payment_method").setAttribute("required", "1")</script>';      // payment method
 }
 add_action( 'woocommerce_admin_order_data_after_shipping_address', 'vic_require_admin_fields' );