У меня есть функция, которая берет список штатов США и удаляет из него штаты, которым мы не продаем.Это работает нормально и удаляет состояния из нескольких областей, при создании заказа, выпадающих списках и состоянии доставки и т. Д.
Вот эта функция.
function wc_sell_only_states($states) {
$states_not_allowed['US'] = array(
'AL' => __('Alabama', 'woocommerce'),
'AR' => __('Arkansas', 'woocommerce'),
'MD' => __('Maryland', 'woocommerce'),
'MI' => __('Michigan', 'woocommerce'),
'MO' => __('Missouri', 'woocommerce'),
'MS' => __('Mississippi', 'woocommerce'),
'NJ' => __('New Jersey', 'woocommerce'),
'SC' => __('South Carolina', 'woocommerce'),
'TX' => __('Texas', 'woocommerce'),
'VA' => __('Virginia', 'woocommerce'),
'WV' => __('West Virginia', 'woocommerce'),
'AA' => __('Armed Forces', 'woocommerce'),
'AE' => __('Armed Forces', 'woocommerce'),
'AP' => __('Armed Forces', 'woocommerce'),
// MANUALLY ADD STATES NOT ALLOWED HERE 'STATE_ABBREVIATION' => __('State_Name', 'woocommerce'),
);
foreach ($states['US'] as $key1 => $value) {
foreach ($states_not_allowed['US'] as $key2 => $value) {
if ($key1 === $key2) {
unset($states['US'][$key1]);
}
}
}
return $states;
}
add_filter('woocommerce_states', 'wc_sell_only_states');
Как вы можете видеть, когдаМне нужно внести изменения в список запрещенных состояний, я должен вручную войти и добавить состояние.Чтобы упростить это на клиенте, я думал о создании страницы администратора, которая имеет флажок для всех 50 состояний.Я создал страницу, но не уверен, что это лучший способ сохранить данные и снова связать их с моей функцией.
Здесь я создаю страницу администратора ...
function states_admin_page() {
global $allowed_states;
add_menu_page( __( 'States', 'states' ), __( 'States', 'states' ), 'edit_posts', 'add_data', 'my_states', 'dashicons-groups', 6 ) ;
}
add_action('admin_menu', 'states_admin_page');
Здесьмоя функция обратного вызова ... (не работает)
function gemcore_states() {
if(!empty($_POST)) {
global $wpdb;
$table = 'states';
$data = array('selected' => $_POST['AA']);
$where = array('code' => 'AA');
$format = '%d';
$wpdb->update($table, $data, $format, $where);
if($success){
echo 'data has been save' ;
}
}else{
?>
<form method="post">
<label>Armed Forces (AA): <input type="checkbox" name="AA" /></label><br />
<!-- ... the rest of the states -->
<input type="submit" value="submit">
</form>
<?php
}
}
Каков наилучший способ получить значения флажков и сохранить их в моей базе данных как 0 или 1?Затем возьмите эти данные в моей исходной функции wc_sell_only_states ().