wp_query настраиваемые типы сообщений

Я не знаю, может я просто не вижу лес для тресс, но мне нужна помощь. У меня есть пользовательский тип сообщения «бизнес» с двумя связанными пользовательскими таксономиями, business_category и business_tags. В пользовательском шаблоне архива у меня есть настраиваемая форма поиска:

<form class="search-form" role="search" method="get" action="<?php echo home_url( '/' ); ?>">
        <div class="form-group">
            <label for="search-input"><i class="fa fa-search" aria-hidden="true"></i><span class="screen-reader-text">Search icons</span></label>
            <input type="hidden" name="post_type" value="wego_business" />
            <input type="search" class="form-control search-field" placeholder="Search the Directory" value="" name="s" id="s">
        </div>
    </form>

Затем это отображается в пользовательском шаблоне поиска. Я не могу получить результаты для business_tags

global $wp_query;
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$tag = get_search_query();
$args = array (
    's'                     => $s,
    'order'                 => 'ASC',
    'orderby'               => 'name',
    'tax_query' => array(
        array(
            'taxonomy' => 'business_tags',
            'field'    => 'slug',
            'terms'    => $tag,
        ),
    ),
    'paged'                 => $paged
);

Я пропустил что-то очевидное?

Вот создание cpt:

$labels = array(
    'name'                => _x( 'Business', 'Post Type General Name', 'wego_fran' ),
    'singular_name'       => _x( 'Business', 'Post Type Singular Name', 'wego_fran' ),
    'menu_name'           => __( 'Business', 'wego_fran' ),
    'parent_item_colon'   => __( 'Parent Business:', 'wego_fran' ),
    'all_items'           => __( 'All Business', 'wego_fran' ),
    'view_item'           => __( 'View Business', 'wego_fran' ),
    'add_new_item'        => __( 'Add New Business', 'wego_fran' ),
    'add_new'             => __( 'Add New', 'wego_fran' ),
    'edit_item'           => __( 'Edit Business', 'wego_fran' ),
    'update_item'         => __( 'Update Business', 'wego_fran' ),
    'search_items'        => __( 'Search Business', 'wego_fran' ),
    'not_found'           => __( 'Not found', 'wego_fran' ),
    'not_found_in_trash'  => __( 'Not found in Trash', 'wego_fran' ),
);
$args = array(
    'label'               => __( 'Business', 'wego_fran' ),
    'description'         => __( 'Business', 'wego_fran' ),
    'labels'              => $labels,
    'supports'            => array( 'title', 'editor', 'thumbnail', 'page-attributes' ),
    'taxonomies'          => array( 'business_category', 'business_tags' ),
    'hierarchical'        => true,
    'public'              => true,
    'show_ui'             => true,
    'show_in_menu'        => true,
    'show_in_nav_menus'   => true,
    'show_in_admin_bar'   => true,
    'menu_position'       => 20,
    'menu_icon'           => 'dashicons-admin-home',
    'can_export'          => true,
    'has_archive'         => true,
    'exclude_from_search' => false,
    'publicly_queryable'  => true,
    'capability_type'     => 'post',
    'rewrite'             => array( 'slug' => 'business' ),
);
register_post_type( 'wego_business', $args );

<?php
global $wp_query;
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$tag = get_search_query();
$args = array (
    'post_type'             => 'wego_business',
    's'                     => $s,
    'order'                 => 'ASC',
    'orderby'               => 'name',
    'tax_query' => array(
        array(
            'taxonomy' => 'business_tags',
            'field'    => 'slug',
            'terms'    => $tag,
        ),
    ),
    'paged'                 => $paged
);

// The Query
$wp_query = new WP_Query( $args );

$count = $wp_query->found_posts;

?>

шаблон пользовательского поиска — search-wego_business.php, использующий приведенный выше запрос.


person Coplan Consulting    schedule 15.09.2016    source источник
comment
Во-первых: как называется ваш шаблон пользовательского поиска? Вы уверены, что он загружает этот шаблон? (Ваша форма вызовет встроенный поиск WordPress по умолчанию). Во-вторых, ваш налоговый запрос, кажется, ищет слаг — вы вводите слаг в поле поиска? В-третьих, как указывает ответ ниже, у вас нет параметра post_type, поэтому ваши аргументы по умолчанию будут запрашивать только posts. Наконец, вы не включили код, который выполняет ваш запрос или выводит результаты, поэтому мы можем только предположить, что вы уверены, что запрос выполняется правильно и т. д.   -  person random_user_name    schedule 16.09.2016


Ответы (1)


Возможно, вам не хватает поля post_type, и вы также можете выполнить поиск внутри поля name. Рефакторинг будет выглядеть так:

$args = array (
    'post_type' => 'business',
    's'                     => $s,
    'order'                 => 'ASC',
    'orderby'               => 'name',
    'tax_query' => array(
        array(
            'taxonomy' => 'business_tags',
            'field'    => 'name',
            'terms'    => $tag,
        ),
    ),
    'paged' => $paged
);

В противном случае мне потребуется больше деталей, например: ваша таксономия и объявление пользовательского типа записи, а также полный источник вашего архива (по крайней мере, та часть, которая создает поисковый запрос).

person Rafael Angeline    schedule 15.09.2016
comment
Из кода OP вы можете видеть, что тип сообщения должен быть wego_business, а не business. - person random_user_name; 16.09.2016
comment
Да @cale_b - в описании OP написано business, в атрибуте имени формы. это wego_business - возможно, полный код поможет нам лучше проверить это! :) - person Rafael Angeline; 16.09.2016