Как сделать поиск по таксономиям?
-
Здравствуйте, создал небольшой плагин, как сделать что то типа
<input type=»hidden» name=»post_type» value=»piece» />
в поиске, только чтобы искать по таксономии model?Код плагина:
<?php /* Plugin Name: Mini Shop Service Description: Добавляет мини-магазин запчастей. Version: 1.0 Author: Vlad Neverov Author URI: https://www.youtube.com/c/VladislavNeverov */ add_action('init', 'create_piece_type'); function create_piece_type() { register_taxonomy('model', ['piece'], [ 'label' => 'Модель', 'labels' => [ 'name' => 'Модели', 'singular_name' => 'Модель', 'search_items' => 'Поиск по моделям', 'all_items' => 'Все модели', 'view_item ' => 'Просмотр модели', 'parent_item' => 'Родительская модель', 'parent_item_colon' => 'Родительская модель:', 'edit_item' => 'Редактировать модель', 'update_item' => 'Обновить модель', 'add_new_item' => 'Добавить модель', 'new_item_name' => 'Название модели', 'menu_name' => 'Модели', ], 'public' => true, // 'publicly_queryable' => null, // равен аргументу public 'show_in_nav_menus' => true, // равен аргументу public 'show_ui' => true, // равен аргументу public 'show_in_menu' => true, // равен аргументу show_ui // 'show_tagcloud' => true, // равен аргументу show_ui 'show_in_quick_edit' => true, 'hierarchical' => true, 'capabilities' => [], 'meta_box_cb' => null, // html метабокса. callback: <code>post_categories_meta_box</code> или <code>post_tags_meta_box</code>. false — метабокс отключен. 'show_admin_column' => true, // авто-создание колонки таксы в таблице ассоциированного типа записи. (с версии 3.5) 'show_in_rest' => true, // добавить в REST API 'rest_base' => null, // $taxonomy 'query_var' => true, 'rewrite' => array( 'slug' => 'model', 'with_front' => false, 'hierarchical' => true, 'ep_mask' => EP_NONE, ), // '_builtin' => false, //'update_count_callback' => '_update_post_term_count', ]); register_post_type('piece', [ 'label' => 'Мини-магазин', 'labels' => [ 'name' => 'Запчасти', // основное название для типа записи 'singular_name' => 'Запчасть', // название для одной записи этого типа 'add_new' => 'Добавить запчасть', // для добавления новой записи 'add_new_item' => 'Добавление запчасти', // заголовка у вновь создаваемой записи в админ-панели. 'edit_item' => 'Редактирование запчасти', // для редактирования типа записи 'new_item' => 'Новая запчасть', // текст новой записи 'view_item' => 'Смотреть запчасть', // для просмотра записи этого типа. 'search_items' => 'Искать запчасть', // для поиска по этим типам записи 'not_found' => 'Не найдено', // если в результате поиска ничего не было найдено 'not_found_in_trash' => 'Не найдено в корзине', // если не было найдено в корзине 'parent_item_colon' => '', // для родителей (у древовидных типов) 'menu_name' => 'Запчасти', // название меню ], 'public' => true, 'publicly_queryable' => true, 'exclude_from_search' => true, // 'show_ui' => null, // зависит от public // 'show_in_nav_menus' => null, // зависит от public 'show_in_menu' => null, // показывать ли в меню адмнки // 'show_in_admin_bar' => null, // зависит от show_in_menu 'show_in_rest' => true, // добавить в REST API. C WP 4.7 'rest_base' => null, // $post_type. C WP 4.7 'menu_position' => null, 'menu_icon' => 'dashicons-admin-tools', //'capability_type' => 'post', //'capabilities' => 'post', // массив дополнительных прав для этого типа записи //'map_meta_cap' => null, // Ставим true чтобы включить дефолтный обработчик специальных прав 'hierarchical' => false, 'supports' => [ 'title', 'editor', 'thumbnail', 'custom-fields' ], // 'title','editor','author','thumbnail','excerpt','trackbacks','custom-fields','comments','revisions','page-attributes','post-formats' 'taxonomies' => ['model'], 'has_archive' => true, 'rewrite' => false, 'query_var' => true, ]); } function get_shop_search_form( $args = array() ) { /** * Fires before the search form is retrieved, at the start of get_search_form(). * * @since 2.7.0 as 'get_search_form' action. * @since 3.6.0 * * @link https://core.trac.wordpress.org/ticket/19321 */ do_action( 'pre_get_search_form' ); $echo = true; if ( ! is_array( $args ) ) { /* * Back compat: to ensure previous uses of get_search_form() continue to * function as expected, we handle a value for the boolean $echo param removed * in 5.2.0. Then we deal with the $args array and cast its defaults. */ $echo = (bool) $args; // Set an empty array and allow default arguments to take over. $args = array(); } // Defaults are to echo and to output no custom label on the form. $defaults = array( 'echo' => $echo, 'aria_label' => '', ); $args = wp_parse_args( $args, $defaults ); /** * Filters the array of arguments used when generating the search form. * * @since 5.2.0 * * @param array $args The array of arguments for building the search form. */ $args = apply_filters( 'search_form_args', $args ); $format = current_theme_supports( 'html5', 'search-form' ) ? 'html5' : 'xhtml'; /** * Filters the HTML format of the search form. * * @since 3.6.0 * * @param string $format The type of markup to use in the search form. * Accepts 'html5', 'xhtml'. */ $format = apply_filters( 'search_form_format', $format ); $search_form_template = locate_template( 'searchform.php' ); if ( '' != $search_form_template ) { ob_start(); require $search_form_template; $form = ob_get_clean(); } else { // Build a string containing an aria-label to use for the search form. if ( isset( $args['aria_label'] ) && $args['aria_label'] ) { $aria_label = 'aria-label="' . esc_attr( $args['aria_label'] ) . '" '; } else { /* * If there's no custom aria-label, we can set a default here. At the * moment it's empty as there's uncertainty about what the default should be. */ $aria_label = ''; } if ( 'html5' == $format ) { $form = '<h4>Поиск запчастей по модели или серийному номеру</h4><form role="search" ' . $aria_label . 'method="get" class="search-form" action="' . esc_url( home_url( '/' ) ) . '"> <label> <span class="screen-reader-text">' . _x( 'Search for:', 'label' ) . '</span> <input type="search" class="search-field" placeholder="' . esc_attr_x( 'Search …', 'placeholder' ) . '" value="' . get_search_query() . '" name="s" /> </label> <input type="hidden" name="post_type" value="piece"> <input type="submit" class="search-submit" value="' . esc_attr_x( 'Search', 'submit button' ) . '" /> </form>'; } else { $form = '<h4>Поиск запчастей по модели или серийному номеру</h4><form role="search" ' . $aria_label . 'method="get" id="searchform" class="searchform" action="' . esc_url( home_url( '/' ) ) . '"> <div> <label class="screen-reader-text" for="s">' . _x( 'Search for:', 'label' ) . '</label> <input type="text" value="' . get_search_query() . '" name="s" id="s" /> <input type="hidden" name="post_type" value="piece" /> <input type="submit" id="searchsubmit" value="' . esc_attr_x( 'Search', 'submit button' ) . '" /> </div> </form>'; } } /** * Filters the HTML output of the search form. * * @since 2.7.0 * * @param string $form The search form HTML output. */ $result = apply_filters( 'get_search_form', $form ); if ( null === $result ) { $result = $form; } if ( $args['echo'] ) { echo $result; } else { return $result; } } # Вывод поиска add_shortcode('get_mini_shop', 'get_mini_shop'); function get_mini_shop() { return get_shop_search_form(false); }
- Тема «Как сделать поиск по таксономиям?» закрыта для новых ответов.