Переменная массива $selected_locations
содержит значение TH
, а строчная переменная $my_location
установлена в 'TH'
.in_array Не работает внутри Функция
Я проверил это с помощью:
<?php
$selected_locations = get_post_meta($item_id, 'locations', true);
print_r($selected_locations);
$user_location = geoip_detect2_get_info_from_current_ip();
$my_location = $user_location->country->isoCode;
echo $my_location;
?>
Однако линия
if(in_array($user_country_code, $selected_locations, true))
$visible = false;
в функции ниже не работает.
function visibility_check($items, $menu, $args) {
$user_location = geoip_detect2_get_info_from_current_ip();
$user_country_code = $user_location->country->isoCode;
$selected_locations = get_post_meta($item_id, 'locations', true);
$hidden_items = array();
foreach($items as $key => $item) {
$item_parent = get_post_meta($item->ID, '_menu_item_menu_item_parent', true);
if(in_array($user_country_code, $selected_locations, true))
$visible = false;
else
$visible = true;
if(! $visible || isset($hidden_items[$item_parent])) { // also hide the children of unvisible items
unset($items[$key]);
$hidden_items[$item->ID] = '1';
}
}
return $items;
}
Если я назначу TH
переменной массива $selected_locations
вручную, она работает.
Любые предложения?
EDIT:
Я просто понял, что массив возвращает данные в функции ниже Array ([0] => 'TH')
, но возвращается пустой в функции выше. Array ([0] =>)
function option($fields, $item_id) {
ob_start(); ?>
<p class="field-visibility description description-wide">
<label for="edit-menu-item-visibility-<?php echo $item_id; ?>">
<?php _e('Enter country code(s) separated by commas') ?>:
<input
type="text"
class="widefat code"
id="edit-menu-item-visibility-<?php echo $item_id; ?>"
name="menu-item-visibility[<?php echo $item_id; ?>]"
value="<?php echo esc_html(get_post_meta($item_id, 'locations', true)); ?>" /></br>
<input
type="radio"
id="edit-menu-item-visibility-<?php echo $item_id;?>"
name="menu-item-show-hide[<?php echo $item_id; ?>]"
value="hide" <?php checked(get_post_meta($item_id, 'hide_show', true), 'hide', true); ?>
/>Hide from these locations.</br>
<input
type="radio"
id="edit-menu-item-visibility-<?php echo $item_id; ?>"
name="menu-item-show-hide[<?php echo $item_id; ?>]"
value="show" <?php checked(get_post_meta($item_id, 'hide_show', true), 'show', true); ?>
/>Only show to these locations.</br>
<?php
$locations_string = esc_html(get_post_meta($item_id, 'locations', true));
$locations_array = explode(',', $locations_string);
$locations_array_trimmed = array_map('trim', $locations_array);
print_r($locations_array_trimmed);
$user_location = geoip_detect2_get_info_from_current_ip();
$user_country_code = $user_location->country->isoCode;
echo $user_country_code;
?>
</label>
</p>
<?php
$fields[] = ob_get_clean();
return $fields;
}
Вы можете показать, как значения хранятся в $ selected_locations? – Qazi
Добавить результат 'var_dump ($ selected_locations)' –
var_dump выходы = строка (2) «TH» – j8d