2016-09-27 24 views
6

Stworzyłem typu wpisu z CPT UI:Pokazuje wszystkie posty i niestandardowe typy post przez stosując jedną kategorię

add_action('init', 'cptui_register_my_cpts_matratze'); 
function cptui_register_my_cpts_matratze() { 
    $labels = array(
     "name" => __('Matratzen', ''), 
     "singular_name" => __('Matratze', ''), 
     ); 

    $args = array(
     "label" => __('Matratzen', ''), 
     "labels" => $labels, 
     "description" => "", 
     "public" => true, 
     "publicly_queryable" => true, 
     "show_ui" => true, 
     "show_in_rest" => false, 
     "rest_base" => "", 
     "has_archive" => true, 
     "show_in_menu" => true, 
       "exclude_from_search" => false, 
     "capability_type" => "post", 
     "map_meta_cap" => true, 
     "hierarchical" => false, 
     "rewrite" => array("slug" => "matratze", "with_front" => true), 
     "query_var" => true, 

     "supports" => array("title", "editor", "thumbnail", "excerpt", "trackbacks", "custom-fields", "comments", "revisions", "author", "page-attributes", "post-formats"),  
     "taxonomies" => array("category", "post_tag"), 
      ); 
    register_post_type("matratze", $args); 

// End of cptui_register_my_cpts_matratze() 
} 

Jednak, gdy chcę przejść do kategorii na link w moim Frontend, otrzymuję Brak postów.

Na przykład po kliknięciu mam nic powrotem:

Category

Post jest włączony i ma kategorię DaMi:

Post

Is My CPT UI Post Type błędnie skonfigurowany? Jakieś sugestie, co robię źle?

+0

Nie jestem pewien, ale dodaj "punkt menu" => 1 w $ args. https://codex.wordpress.org/Function_Reference/register_post_type –

+0

@DevDanidhariya Właśnie wyjaśniłem moją odpowiedź! Nie chodzi o menu backendu, ale o ekran frontend! Thx i tak !! – mrquad

+0

@mrquad: czy możesz również udostępnić swój kod 'register_taxonomy'. –

Odpowiedz

3

Spójrz here

Domyślnie strony kategorii na swojej stronie WordPress będą wyświetlane tylko domyślny typ pocztowy posty ', więc trzeba dodać CPT przed Wordpress kwerendy posty dodanie filtru pre_get_posts.

dodany kod tutaj:

add_filter('pre_get_posts', 'query_post_type'); 
function query_post_type($query) { 
    if(is_category()) { 
    $post_type = get_query_var('post_type'); 
    if($post_type) 
     $post_type = $post_type; 
    else 
     $post_type = array('nav_menu_item', 'post', 'matratze'); // don't forget nav_menu_item to allow menus to work! 
    $query->set('post_type',$post_type); 
    return $query; 
    } 
} 
+2

Najlepiej pokazać w odpowiedzi, co wyjaśnia artykuł, na wypadek gdyby ten link kiedykolwiek 404 – Spartacus

2

Podczas korzystania Wordpress kategorii standard do niestandardowego typu post, domyślnie Wordpress nie pokazać swoje własne posty typu post na stronie kategorii archiwum. Musisz zmodyfikować zapytanie o stronę archiwum kategorii, aby uwzględnić niestandardowy typ wpisu.

Proszę załączyć poniższy kod w pliku function.php. Nie zapomnij zmienić swojej niestandardowej nazwy typu postu w poniższym kodzie.

function add_custom_post_types_to_tax($query) { 
    if(is_category() || is_tag() && 
     empty($query->query_vars['suppress_filters'])) { 

     // Include your custom post type 
     $post_types = array('post', 'your_custom_type'); 

     $query->set('post_type', $post_types); 
     return $query; 
    } 
} 

add_filter('pre_get_posts', 'add_custom_post_types_to_tax'); 

Mam nadzieję, że to ci pomoże.

1

W tym

function query_post_type($query) { 
    if(is_category()) { 
     $post_type = get_query_var('post_type'); 
     // post type get here 
     if($post_type){ 
       // no more code here for by default 
     }   
     else{ 
      $post_types = array('post', 'your_custom_type'); 
      // custom type   
     } 
     $query->set('post_type',$post_type); 
     return $query; 
    } 
} 
add_filter('pre_get_posts', 'query_post_type'); 

myślę użycie tej funkcji i będzie pracować. Każdy inny komentarz do tego problemu.