Как я могу предоставить правильный класс тела CPT?

Я создал несколько пользовательских типов сообщений с установленными в них значениями true с помощью настраиваемого slug. Тем не менее, все эти архивы имеют класс тела blog и home а класс не связан с типом сообщения.

Я использую <body <?php body_class(); ?>> <body <?php body_class(); ?>> в заголовочном файле, который вызывается на каждой странице, но каким-то образом он не распознает эти страницы как cpt-архивы.

Является ли эта ожидаемая функциональность, или, скорее, я сделал ошибку при кодировании типов шаблонов / сообщений?

Пример архива

Код моего сообщения (все кодировки CPT одинаковы, незначительные варианты):

 function publikasjoner() { register_post_type( 'publikasjoner', array( 'labels' => array( 'name' => __( 'Publikasjoner', 'bonestheme' ), 'singular_name' => __( 'Publikasjon', 'bonestheme' ), 'all_items' => __( 'Alle publikasjoner', 'bonestheme' ), 'add_new' => __( 'Ny publikasjon', 'bonestheme' ), 'add_new_item' => __( 'Legg til ny publikasjon', 'bonestheme' ), 'edit' => __( 'Rediger', 'bonestheme' ), 'edit_item' => __( 'Rediger publikasjoner', 'bonestheme' ), 'new_item' => __( 'Ny publikasjon', 'bonestheme' ), 'view_item' => __( 'Vis publikasjon', 'bonestheme' ), 'search_items' => __( 'Søk etter publikasjon', 'bonestheme' ), 'not_found' => __( 'Fant ingenting i databasen.', 'bonestheme' ), 'not_found_in_trash' => __( 'Fant ingenting i søppelkassen', 'bonestheme' ), 'parent_item_colon' => '' ), 'description' => __( 'Østlandsforsknings publikasjoner legges til her', 'bonestheme' ), 'public' => true, 'publicly_queryable' => true, 'exclude_from_search' => false, 'show_ui' => true, 'query_var' => true, 'menu_position' => 9, 'menu_icon' => 'dashicons-edit', 'rewrite' => array( 'slug' => 'publikasjoner', 'with_front' => false ), 'has_archive' => 'publikasjoner', 'capability_type' => 'post', 'hierarchical' => true, 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'custom-fields', 'revisions') ) ); register_taxonomy_for_object_type( 'emne', 'publikasjoner' ); register_taxonomy_for_object_type( 'emneord', 'publikasjoner' ); register_taxonomy_for_object_type( 'emne', 'type_publikasjon' ); } 

Solutions Collecting From Web of "Как я могу предоставить правильный класс тела CPT?"

Ты сказал:

У меня есть фильтр body_class () внутри тега body в файле header.php, который вызывается на каждой странице.

И тот факт, что

Вы должны увидеть гораздо больше классов.

У этого есть симптомы классической ошибки (что я сделал много времени). Убедитесь, что фильтр на body_class возвращает то, что он должен, например, это неправильно:

 add_filter('body_class', function($classes){ global $post; if ( 'foobar' === $post->post_type ) { $classes[] = 'barfoo'; return $classes; } }); 

и неспособность вернуть классы, которые могли бы путать процесс, и должны быть выполнены как таковые:

 add_filter('body_class', function($classes){ global $post; if ( 'foobar' === $post->post_type ) { $classes[] = 'barfoo'; } return $classes; }); 

Если вы не вернетесь на фильтр, который будет в случае моего первого (неправильного) примера, он отклонит значение.

Не уверен, что это помогает, но я случайно сделал это в прошлом.