wp_query пользовательские типы записей

Я не знаю, могу ли я просто увидеть Форрест для локона, но мне нужна помощь. У меня есть пользовательский тип записи "business" с двумя соответствующими пользовательскими таксономиями, 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 с использованием вышеуказанного запроса

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
);

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

Другие вопросы по тегам