Intereting Posts
Выполняя ajax, WordPress возвращает внутреннюю ошибку сервера 500 и заявляет, что мои функции темы не определены Как применить фильтр редактора к сообщениям с определенным пользовательским типом сообщения таможенная таксономия Установка WordPress и база данных на отдельный хостинг? Создание страницы «Теги» с опцией поиска, вместо использования виджета Форма WordPress ninja изменяет требуемый атрибут при условии Шаблон пользовательских таксономий get_theme_mod (); ничего не возвращает Сделать плагин php-файл, вызываемый непосредственно из WordPress? Заинтересованы в методах перенаправления для одностраничных тем Размещено на + только дату (а не время) Как определить пользовательское количество элементов в комментариях Как создать персональные страницы пользователя с информацией из своих полей метапрофиля? Добавить пользовательское поле в атрибут изображения вложений в вставку Остановить WP от создания «Образец страницы» и «Привет мир!»

Как установить выбранный атрибут на параметр после запроса фильтра?

Я работаю над фильтром администратора для настраиваемого типа сообщений и в основном работаю. Тем не менее, я застрял на одном месте. Как я могу сохранить выбранную опцию видимой пользователю после запроса фильтра?

Я посмотрел на wp_dropdown_categories (который я использовал в другом фильтре), и это, похоже, не соответствует моему делу. В этом случае фильтр относится к запросу базы данных. Это то, что у меня есть до сих пор.

 function filter_forms_by_status() { global $post_type; global $wpdb; if ($post_type != 'request_form') { return; } else { $query = " SELECT DISTINCT post_name FROM $wpdb->posts WHERE post_title LIKE 'request_status' "; $result = $wpdb->get_row($query, ARRAY_N); $field_object = get_field_object($result[0]); $status_array = $field_object['choices']; echo "<select class='postform' id='status-filter' name='status'>"; foreach ($status_array as $status_key => $status) { echo "<option value=$status_key>$status</option>"; } echo "</select>"; } } add_action('restrict_manage_posts', 'filter_forms_by_status'); function query_posts_by_status($query) { global $pagenow; if (is_admin() && $pagenow == 'edit.php') { $request_status = $_GET['status']; $query->query_vars['meta_key'] = 'request_status'; $query->query_vars['meta_value'] = $request_status; } return $query; }; add_filter('parse_query', 'query_posts_by_status'); 

Solutions Collecting From Web of "Как установить выбранный атрибут на параметр после запроса фильтра?"

Хорошо – это не самый красивый способ решить это, но это то, что я придумал. Использование комбинации хранения сеанса и небольшого javascript.

Сначала я добавил session_start() в начало моего файла. Затем в query_posts_by_status я добавил $_SESSION['request_status'] = $request_status . Это дало мне доступ к глобальной переменной $_SESSION . Наконец, я добавил немного javascript, как filter_forms_by_status ниже, в filter_forms_by_status .

 <script> var statusFilter = document.getElementById('status-filter'); var filter = "<?php echo $_SESSION['request_status'] ?>"; statusFilter.value = filter; </script> 

Итак, мое полное решение для этого случая …

 start_session(); // at top of file. function filter_forms_by_status() { global $post_type; global $wpdb; if ($post_type != 'request_form') { return; } else { $query = " SELECT DISTINCT post_name FROM $wpdb->posts WHERE post_title LIKE 'request_status' "; $result = $wpdb->get_row($query, ARRAY_N); $field_object = get_field_object($result[0]); $status_array = $field_object['choices']; echo "<select class='postform' id='status-filter' name='status'>"; foreach ($status_array as $status_key => $status) { echo "<option value=$status_key>$status</option>"; } echo "</select>"; } ?> <script> var statusFilter = document.getElementById('status-filter'); var filter = "<?php echo $_SESSION['request_status'] ?>"; statusFilter.value = filter; </script> <?php } add_action('restrict_manage_posts', 'filter_forms_by_status'); function query_posts_by_status($query) { global $pagenow; if (is_admin() && $pagenow == 'edit.php') { $request_status = $_GET['status']; $query->query_vars['meta_key'] = 'request_status'; $query->query_vars['meta_value'] = $request_status; $_SESSION['request_status'] = $request_status; } return $query; }; add_filter('parse_query', 'query_posts_by_status');