2016-09-15 8 views
0

머릿단은 포레스트를 볼 수 없지만 도움이 필요합니다. 두 가지 관련 사용자 정의 분류, business_category 및 business_tags가있는 사용자 정의 게시 유형 "비즈니스"를 보유하고 있습니다. 맞춤 보관 템플릿에 맞춤 검색 양식이 있습니다.wp_query 사용자 정의 게시 유형

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

>

맞춤 검색 템플릿을 사용하면 post_type 필드를 놓치고 아마도 위의 질의

+0

첫 번째 : 맞춤 검색 템플릿의 이름은 무엇입니까? 해당 템플릿을로드하고 있습니까? (귀하의 양식은 내장/기본 "WordPress 검색"을 트리거 할 것입니다). 둘째, 귀하의 세금 조회가 "슬러그"를 찾고있는 것 같습니다 - 검색 입력에 "슬러그"를 입력하고 있습니까? 셋째 - 아래의 대답과 같이'post_type' 매개 변수가 없으므로 args는 기본적으로'posts' 만 쿼리합니다. 마지막으로, 쿼리를 실행하는 코드를 포함하지 않았거나 결과를 출력하므로 쿼리가 제대로 실행되고 있다고 확신 할 수 있습니다. –

답변

0

를 사용하여 검색 wego_business.php이며, 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 
); 

, 좀 더 세부 사항을 필요, • 리팩토링과 같을 것이다.

+0

OP 코드에서 포스트 유형이 다음과 같아야합니다. 'airlines_business'가 아닌'business' –

+0

Yeah @cale_b - OP에서 OP라는 이름이'business'라고합니다. 그것은'airlines_business'입니다 - 아마도 전체 코드가 더 잘 확인하는 데 도움이 될 것입니다! :) –