PHP / WP Как сохранить статус флажка после обновления?

#php #wordpress #checkbox

#php #wordpress #флажок

Вопрос:

У меня есть фильтр, представляющий собой список стран, зацикленный с помощью foreach, я хочу иметь возможность сохранять статус флажка при обновлении страницы. Так, например, если Япония отмечена, она должна оставаться отмеченной при обновлении страницы. Как мне это сделать, я видел несколько сообщений об использовании localstorage, но работает ли это с моим кодом, у которого нет «id»? Возможно ли это сделать с помощью «name=»filter_country[]»? У меня также есть фильтр, который использует «Радио», я не уверен, работает ли он как для радио, так и для флажка.

 <ul class="filter-country">
        <?php foreach($countries as $country):?>
        <li class="filter-child filter-item">
        <div class="checkbox">
          <label>
            <input type="checkbox" class="dir-filters filter-checkbox" name="filter_country[]" value="<?php echo $country;?>">
            <?php echo $country;?>
          </label>
        </div>
        </li>
        <?php endforeach;?>
  

Комментарии:

1. Мне было бы интересно узнать, где поддерживается список стран с помощью модели данных WP. Это категория / сообщение или пользовательский тип сообщения. Код, который вы предоставили, относится к пользовательскому интерфейсу, но как вы отслеживаете выбранную страну в базе данных? Этот выбор страны зависит от пользователя или что-то устанавливает пользователь-администратор?

Ответ №1:

Это должно сработать

 // get all checkboxes
const countries = document.querySelectorAll('.filter-checkbox');

// when checked set its value to localstorage
countries.forEach(country => {
    country.addEventListener('change', () => {
        localStorage.setItem('checkedCountry', country.value);
    });
});

// checking for localstorage. If checkbox value is the same as value in localstorage we set it's attribute checked to be true
countries.forEach(country => {
    const checkedCountry = localStorage.getItem('checkedCountry');
    if(checkedCountry amp;amp; checkedCountry === country.value ) {
        country.checked = true;
    }
});
  

Обратите внимание, что флажки можно проверять в любом количестве стран, но в этом примере мы сохраняем только одно значение в localstorage. Таким образом, после перезагрузки будет проверена только последняя проверенная страна. Если это не то, что вы ищете, пожалуйста, сообщите

Комментарии:

1. Привет, спасибо, все работает именно так, как я хочу! Но возможно ли сделать так, чтобы он сохранял сразу несколько стран? Это работает только для одной страны