Intereting Posts
Не удалось сохранить обычное мета-поле datetime с помощью функции update_post_meta () не может захватить переменную PHP $ _POST Если я создам резервную копию своего блога WordPress, как я могу создать резервную копию всех внешних изображений, которые я встроил? Почему «Вызывать функцию-член на не-объекте» только в плагине? коррекция URL-адреса WordPress Простая форма для добавления пользовательских ссылок в меню? создание продукта с вариациями с использованием woocommerce REST API WordPress перенаправляет на старый логин после миграции wordpress $ wpdb работает только один раз Предоставление WordPress собственного каталога и использование .htaccess Directory Index Удалите wpautop из всех сообщений / страниц, кроме моего настраиваемого типа сообщения Узлы панели администратора Как определить родительский контейнер текущего виджета (идентификатор виджета боковой панели) Исключить текущую и липкую почту Как обновлять «modified_time» сообщения ТОЛЬКО при изменении контента?

Фильтрация настраиваемого типа сообщений с использованием нескольких выпадающих списков таксономии

Я пытаюсь создать два раскрывающихся списка на странице пользовательского типа сообщений под названием «Действия». Одна категория таксономии предназначена для Уровня Оценки Деятельности, а другая для Тип Деятельности. С тем, что у меня есть сейчас, если вы оставите один из упавших ящиков пустым, поиск перейдет на страницу 404. Я использовал код на этом форуме wordpress, и поэтому это то, что у меня есть в папке моих функций:

function get_terms_dropdown_grade_level($taxonomies, $args){ $myterms = get_terms($taxonomies, $args); $output ="<select name='activities_grade_level'>"; $output .="<option value='#'>Select grade level</option>"; foreach($myterms as $term){ $root_url = get_bloginfo('url'); $term_taxonomy=$term->taxonomy; $term_slug=$term->slug; $term_name =$term->name; $link = $term_slug; $output .="<option value='".$link."'>".$term_name."</option>"; } $output .="</select>"; return $output; } function get_terms_dropdown_type($taxonomies, $args){ $myterms = get_terms($taxonomies, $args); $output ="<select name='activities_type'>"; $output .="<option value='#'>Select activity type</option>"; foreach($myterms as $term){ $root_url = get_bloginfo('url'); $term_taxonomy=$term->taxonomy; $term_slug=$term->slug; $term_name =$term->name; $link = $term_slug; $output .="<option value='".$link."'>".$term_name."</option>"; } $output .="</select>"; return $output; } 

И это то, что у меня есть на странице архива почтового типа:

  <h2>Filter by</h2> <form action="<?php bloginfo('url'); ?>" method="get"> <div> <?php $taxonomies = array('activities_grade_level'); $args = array('orderby'=>'name','hide_empty'=>false); $select = get_terms_dropdown_grade_level($taxonomies, $args); $select = preg_replace("#<select([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $select); echo $select; ?> <?php $taxonomies = array('activities_type'); $args = array('orderby'=>'name','hide_empty'=>false); $select = get_terms_dropdown_type($taxonomies, $args); $select = preg_replace("#<select([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $select); echo $select; ?> <input type="submit" name="submit" value="filter" /> </div> </form> 

Поймите, это хорошая информация, я также включу URL. Регулярный URL-адрес, который ведет к правильному поиску

[…] /? Activities_grade_level = элементарная школа и activities_type = инжиниринг и представить = фильтр

URL-адрес, в котором один из

[…] /? activities_grade_level =% 23 & activities_type = engineering & submit = filter, где% 23 заменил что-то, что могло быть начальным или средним

URL, который приведет к правильной категории, будет

[…] / activities_type / инженерия /

или

[…] / activities_grade_level / средняя школа

Любые предложения для этого начинающего php и wordpress?

Правильно, кажется немного пустым, но я снова понял проблему. Хитрость заключалась в том, чтобы иметь пустые значения в переменных $ output.

Так

 $output .="<option value=''>Select taxonomy #1</option>"; 

НЕ

 $output .="<option value='#'>Select taxonomy #1</option>"; 

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

Вставьте это в свой файл functions.php

 function get_terms_dropdown_grade_level($taxonomies, $args){ $myterms = get_terms($taxonomies, $args); $output ="<select name='MYTAXONOMY#1'>"; //CHANGE ME! $output .="<option value=''>Select taxonomy #1</option>"; //CHANGE ME TO YOUR LIKING! foreach($myterms as $term){ $root_url = get_bloginfo('url'); $term_taxonomy=$term->taxonomy; $term_slug=$term->slug; $term_name =$term->name; $link = $term_slug; $output .="<option value='".$link."'>".$term_name."</option>"; } $output .="</select>"; return $output; } function get_terms_dropdown_type($taxonomies, $args){ $myterms = get_terms($taxonomies, $args); $output ="<select name='MYTAXONOMY#2'>"; //CHANGE ME! $output .="<option value=''>Select taxonomy #2</option>"; //CHANGE ME TO YOUR LIKING! foreach($myterms as $term){ $root_url = get_bloginfo('url'); $term_taxonomy=$term->taxonomy; $term_slug=$term->slug; $term_name =$term->name; $link = $term_slug; $output .="<option value='".$link."'>".$term_name."</option>"; } $output .="</select>"; return $output; } , function get_terms_dropdown_grade_level($taxonomies, $args){ $myterms = get_terms($taxonomies, $args); $output ="<select name='MYTAXONOMY#1'>"; //CHANGE ME! $output .="<option value=''>Select taxonomy #1</option>"; //CHANGE ME TO YOUR LIKING! foreach($myterms as $term){ $root_url = get_bloginfo('url'); $term_taxonomy=$term->taxonomy; $term_slug=$term->slug; $term_name =$term->name; $link = $term_slug; $output .="<option value='".$link."'>".$term_name."</option>"; } $output .="</select>"; return $output; } function get_terms_dropdown_type($taxonomies, $args){ $myterms = get_terms($taxonomies, $args); $output ="<select name='MYTAXONOMY#2'>"; //CHANGE ME! $output .="<option value=''>Select taxonomy #2</option>"; //CHANGE ME TO YOUR LIKING! foreach($myterms as $term){ $root_url = get_bloginfo('url'); $term_taxonomy=$term->taxonomy; $term_slug=$term->slug; $term_name =$term->name; $link = $term_slug; $output .="<option value='".$link."'>".$term_name."</option>"; } $output .="</select>"; return $output; } , function get_terms_dropdown_grade_level($taxonomies, $args){ $myterms = get_terms($taxonomies, $args); $output ="<select name='MYTAXONOMY#1'>"; //CHANGE ME! $output .="<option value=''>Select taxonomy #1</option>"; //CHANGE ME TO YOUR LIKING! foreach($myterms as $term){ $root_url = get_bloginfo('url'); $term_taxonomy=$term->taxonomy; $term_slug=$term->slug; $term_name =$term->name; $link = $term_slug; $output .="<option value='".$link."'>".$term_name."</option>"; } $output .="</select>"; return $output; } function get_terms_dropdown_type($taxonomies, $args){ $myterms = get_terms($taxonomies, $args); $output ="<select name='MYTAXONOMY#2'>"; //CHANGE ME! $output .="<option value=''>Select taxonomy #2</option>"; //CHANGE ME TO YOUR LIKING! foreach($myterms as $term){ $root_url = get_bloginfo('url'); $term_taxonomy=$term->taxonomy; $term_slug=$term->slug; $term_name =$term->name; $link = $term_slug; $output .="<option value='".$link."'>".$term_name."</option>"; } $output .="</select>"; return $output; } , function get_terms_dropdown_grade_level($taxonomies, $args){ $myterms = get_terms($taxonomies, $args); $output ="<select name='MYTAXONOMY#1'>"; //CHANGE ME! $output .="<option value=''>Select taxonomy #1</option>"; //CHANGE ME TO YOUR LIKING! foreach($myterms as $term){ $root_url = get_bloginfo('url'); $term_taxonomy=$term->taxonomy; $term_slug=$term->slug; $term_name =$term->name; $link = $term_slug; $output .="<option value='".$link."'>".$term_name."</option>"; } $output .="</select>"; return $output; } function get_terms_dropdown_type($taxonomies, $args){ $myterms = get_terms($taxonomies, $args); $output ="<select name='MYTAXONOMY#2'>"; //CHANGE ME! $output .="<option value=''>Select taxonomy #2</option>"; //CHANGE ME TO YOUR LIKING! foreach($myterms as $term){ $root_url = get_bloginfo('url'); $term_taxonomy=$term->taxonomy; $term_slug=$term->slug; $term_name =$term->name; $link = $term_slug; $output .="<option value='".$link."'>".$term_name."</option>"; } $output .="</select>"; return $output; } , function get_terms_dropdown_grade_level($taxonomies, $args){ $myterms = get_terms($taxonomies, $args); $output ="<select name='MYTAXONOMY#1'>"; //CHANGE ME! $output .="<option value=''>Select taxonomy #1</option>"; //CHANGE ME TO YOUR LIKING! foreach($myterms as $term){ $root_url = get_bloginfo('url'); $term_taxonomy=$term->taxonomy; $term_slug=$term->slug; $term_name =$term->name; $link = $term_slug; $output .="<option value='".$link."'>".$term_name."</option>"; } $output .="</select>"; return $output; } function get_terms_dropdown_type($taxonomies, $args){ $myterms = get_terms($taxonomies, $args); $output ="<select name='MYTAXONOMY#2'>"; //CHANGE ME! $output .="<option value=''>Select taxonomy #2</option>"; //CHANGE ME TO YOUR LIKING! foreach($myterms as $term){ $root_url = get_bloginfo('url'); $term_taxonomy=$term->taxonomy; $term_slug=$term->slug; $term_name =$term->name; $link = $term_slug; $output .="<option value='".$link."'>".$term_name."</option>"; } $output .="</select>"; return $output; } 

Вставьте это на страницу, на которой вы хотите отобразить выпадающие меню . (Я поместил мой на страницу специальных архивов, например archive-activities.php.)

 <h3>Filter by:</h3> <form action="<?php bloginfo('url'); ?>" method="get"> <div> <?php $taxonomies = array('MYTAXONOMY#1'); //CHANGE ME! $args = array('orderby'=>'name','hide_empty'=>false); $select = get_terms_dropdown_grade_level($taxonomies, $args); $select = preg_replace("#<select([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $select); echo $select; ?> <?php $taxonomies = array('MYTAXONOMY#2'); //CHANGE ME! $args = array('orderby'=>'name','hide_empty'=>false); $select = get_terms_dropdown_type($taxonomies, $args); $select = preg_replace("#<select([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $select); echo $select; ?> <input type="submit" name="submit" value="filter" /> <!--CHANGE VALUE TO YOUR LIKING!--> </div> </form> 

Ура! 🙂