Intereting Posts
Изменение таксономических страниц для исключения элементов в таксономиях детей Если изображение отсутствует, увеличенный текст Изменение sidebar.php и footer.php в зависимости от URL-адреса Как добавить класс в <i> </ i> Как добавить класс в мета-окно Как изменить форматирование HTML ссылки oEmbed? Получение данных JSON API Google и их сохранение в качестве пользовательских полей WordPress Обновление WordPress и установка плагина не работают Сортировка области администрирования по пользовательскому полю Дата события Неужели бесполезны? Ошибка 404 Страница не найдена при обновлении сообщения или страницы Автоматическое добавление настраиваемого поля (add_post_meta) со значением, основанным на количестве слов статьи Запуск, выполненный отдельно вне объекта__состояния () Как вызвать the_time current? 1 экран настроек администратора столбца – переместите submitdiv в нижнюю часть

Создание формы пользовательского поиска

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

Теперь я вывожу эти термины таксономии в пометки, которые сгруппированы по имени таксономии.

Вопрос касается ввода:

<!-- language: lang-html --> <label><input type="checkbox" name="epx_recipes_season[]" value="autumn">Autumn</label> <label><input type="checkbox" name="epx_recipes_season[]" value="spring">Spring</label> <label><input type="checkbox" name="epx_recipes_season[]" value="summer-3">Summer</label> <label><input type="checkbox" name="epx_recipes_season[]" value="winter-3">Winter</label> <label><input type="checkbox" name="epx_recipes_course[]" value="breakfast-3">Breakfast</label> <label><input type="checkbox" name="epx_recipes_course[]" value="brunch-2">Brunch</label> <label><input type="checkbox" name="epx_recipes_course[]" value="dessert">Dessert</label> <label><input type="checkbox" name="epx_recipes_course[]" value="dinner">Dinner</label> <label><input type="checkbox" name="epx_recipes_course[]" value="light-meals-2">Light Meals</label> <label><input type="checkbox" name="epx_recipes_course[]" value="lunch-3">Lunch</label> <label><input type="checkbox" name="epx_recipes_requirements[]" value="diary-free">Diary free</label> <label><input type="checkbox" name="epx_recipes_requirements[]" value="egg-free">Egg Free</label> <label><input type="checkbox" name="epx_recipes_requirements[]" value="gluten-free-3">Gluten Free</label> <label><input type="checkbox" name="epx_recipes_requirements[]" value="nut-free">Nut Free</label> <label><input type="checkbox" name="epx_recipes_requirements[]" value="shellfish-free">Shellfish free</label> <label><input type="checkbox" name="epx_recipes_requirements[]" value="vegitarians">vegitarians</label> <label><input type="checkbox" name="epx_recipes_cuisines[]" value="american">American</label> <label><input type="checkbox" name="epx_recipes_cuisines[]" value="british-3">British</label> <label><input type="checkbox" name="epx_recipes_cuisines[]" value="greek-3">Greek</label> <label><input type="checkbox" name="epx_recipes_cuisines[]" value="irish">Irish</label> <label><input type="checkbox" name="epx_recipes_cuisines[]" value="italian">Italian</label> <label><input type="checkbox" name="epx_recipes_cuisines[]" value="mexican-3">Mexican</label> <label><input type="checkbox" name="epx_recipes_occastions[]" value="birthdays">Birthdays</label> <label><input type="checkbox" name="epx_recipes_occastions[]" value="christmas">Christmas</label> <label><input type="checkbox" name="epx_recipes_occastions[]" value="easter-3">Easter</label> <label><input type="checkbox" name="epx_recipes_occastions[]" value="fathers-day-2">Fathers Day</label> <label><input type="checkbox" name="epx_recipes_occastions[]" value="mothers-day-2">Mothers day</label> <label><input type="checkbox" name="epx_recipes_occastions[]" value="valentines">Valentines</label> 

Проблема исходит от имени, которое они должны держать вместе сгруппированными, у них есть [], поэтому, когда вы отправили его, он становится массивом, который я могу проанализировать. эта проблема – WordPress сразу читает форму и выводит следующее сообщение об ошибке.

Примечание. Преобразование массива в строку в /home/sites/epixdev1.co.uk/public_html/htk2014/wp-includes/query.php в строке 1858

Предупреждение: preg_split () ожидает, что параметр 2 будет строкой, массив указан в /home/sites/epixdev1.co.uk/public_html/htk2014/wp-includes/query.php в строке 1867

Примечание. Преобразование массива в строку в /home/sites/epixdev1.co.uk/public_html/htk2014/wp-includes/query.php в строке 1858

Предупреждение: preg_split () ожидает, что параметр 2 будет строкой, массив указан в /home/sites/epixdev1.co.uk/public_html/htk2014/wp-includes/query.php в строке 1867

Примечание. Попытка получить свойство не-объекта в /home/sites/epixdev1.co.uk/public_html/htk2014/wp-content/plugins/wordpress-seo/frontend/class-opengraph.php в строке 524

Здесь код, который делает форму

 <!-- language: lang-php --> //Will be used to output the advanced search box function epix_recipes_search(){ //Need to run each different type of taxonmies //How Many there are $noTax = 6; //The Taxonomies $taxonomies = array('epx_recipes_season','epx_recipes_course','epx_recipes_requirements','epx_recipes_cuisines','epx_recipes_occastions','epx_recipes_typeofcooking'); //need the basic output varible $output = ""; //Need to build a basic form $output .= '<form method="post" id="searchform" action="/recipes/">'."\r\n"; //Now a Basic Search box $output .= ' <h2>Keyword Search</h2>'."\r\n"; $output .= ' <input type="text" class="field" name="s" id="s" size="19" placeholder="Search" />'."\r\n"; //Now need to Show the Advance Search Area $output .= ' <h2>Advanced Filters</h2>'."\r\n"; //Now need to run the system for each Taxonomies foreach ( $taxonomies as $tax ) { //Need to get the name of each TAX //What Taxonomy we want to check $args=array( 'name' => $tax ); $outputtype = 'objects'; // or objects $taxonomieslist=get_taxonomies($args,$outputtype); if ($taxonomieslist) { foreach ($taxonomieslist as $taxonomiesone ) { $output .= ' <h3>'. $taxonomiesone->labels->name. '</h3>'."\r\n"; } } //now get the terms in the Taxonomies $output .= epix_recipes_taxterms($tax); } //now need to end the form with the correct sytack //First a submit button $output .= ' <input type="submit" class="submit" name="submit" id="searchsubmit" value="submit" />'."\r\n"; //Now the closing for tag $output .= '</form'."\r\n"; //Need to return the form return $output; } //This will get the taxonomies terms function epix_recipes_taxterms($tax){ //Need to get each term and return it $returnoutput = ""; $terms = get_terms($tax,'hide_empty=0'); if ( !empty( $terms ) && !is_wp_error( $terms ) ){ //$returnoutput .= " <select name=".$tax.">"."\r\n"; $i = 0; foreach ( $terms as $term ) { $returnoutput .= ' <label><input type="checkbox" name="'.$tax.'[]" value="'.$term->slug.'">' . $term->name . '</label>'."\r\n"; //$i++;['.$i.'] } //$returnoutput .= " </select>"."\r\n"; } return $returnoutput; } 

Если кто-нибудь может помочь мне разобраться, почему это происходит, или как остановить WordPress, выдавая эти ошибки, что было бы действительно полезно.

Да, у меня есть отладка WordPress!

Вот вариант.
Дайте более конкретное имя, например custom_search_form к вашей кнопке отправки:

 (...) //First a submit button $output .= '<input type="submit" class="submit" name="custom_search_form" id="searchsubmit" value="submit" />'."\r\n"; 

Затем вы можете добавить это в свой файл functions.php:

 add_action( 'parse_request', 'my_custom_search_form' ); function my_custom_search_form($query) { //return if it not our custom search form if ( ! isset( $query->query_vars[ 'custom_search_form' ] ) ) return $query; //handle form here } 

Кроме того, не забудьте установить query_var в true при регистрации вашей таксономии:

 'query_var' => true, 

Некоторые заметки. Они могут не решить все ваши проблемы, но они могут помочь.

В epix_recipes_search() вы используете get_taxonomies() как если бы это было get_taxonomy() в вашем цикле foreach .

Вы можете заменить все это:

 $args=array( 'name' => $tax ); $outputtype = 'objects'; // or objects $taxonomieslist=get_taxonomies($args,$outputtype); 

с этим:

 $taxonomieslist = get_taxonomy( $tax ) 

Список $taxonomieslist является немного неправильным, поскольку он содержит только один объект таксономии (я бы переименовал его соответственно, возможно, $tax_object ). Поэтому вы также можете отказаться от всего этого:

 if ($taxonomieslist) { foreach ($taxonomieslist as $taxonomiesone ) { $output .= ' <h3>'. $taxonomiesone->labels->name. '</h3>'."\r\n"; } } 

И замените его на это:

 $output .= ' <h3>'. $taxonomieslist->labels->name. '</h3>'."\r\n"; 

Также похоже, что в теге </form> отсутствует закрывающая «>».