Возвращать текущий тип страницы

Есть функция, которая просто возвращает текущий «тип страницы» вместо использования is_page (), is_preview (), is_single (), is_archive () и т. Д.?

Например: я могу найти текущий «тип сообщения», но я не могу найти соответствующий «тип страницы».

Вам нужна ваша собственная вспомогательная функция, которая вернет вам то, что вам нужно. Это может быть так:

function wpse8170_loop() { global $wp_query; $loop = 'notfound'; if ( $wp_query->is_page ) { $loop = is_front_page() ? 'front' : 'page'; } elseif ( $wp_query->is_home ) { $loop = 'home'; } elseif ( $wp_query->is_single ) { $loop = ( $wp_query->is_attachment ) ? 'attachment' : 'single'; } elseif ( $wp_query->is_category ) { $loop = 'category'; } elseif ( $wp_query->is_tag ) { $loop = 'tag'; } elseif ( $wp_query->is_tax ) { $loop = 'tax'; } elseif ( $wp_query->is_archive ) { if ( $wp_query->is_day ) { $loop = 'day'; } elseif ( $wp_query->is_month ) { $loop = 'month'; } elseif ( $wp_query->is_year ) { $loop = 'year'; } elseif ( $wp_query->is_author ) { $loop = 'author'; } else { $loop = 'archive'; } } elseif ( $wp_query->is_search ) { $loop = 'search'; } elseif ( $wp_query->is_404 ) { $loop = 'notfound'; } return $loop; } 
 <?php var_dump(get_query_var('post_type')); 

но даже эта страница может быть одиночной или архивной или что-то еще …

Что вы добиваетесь? Возможно, в этом случае вы поймете, что вам нужно.

Обновить. взгляните на образец функции темы, который вы можете использовать для достижения этой задачи. функцию, называемую двадцатьeleven_body_classes из темы Twentyeleven . он возвращает классы, которые могут использоваться для фильтра body_classes

 function twentyeleven_body_classes( $classes ) { if ( function_exists( 'is_multi_author' ) && ! is_multi_author() ) $classes[] = 'single-author'; if ( is_singular() && ! is_home() && ! is_page_template( 'showcase.php' ) && ! is_page_template( 'sidebar-page.php' ) ) $classes[] = 'singular'; return $classes; } 

ничто не мешает вам не добавлять к нему дополнительные классы. is_archive () или что-то еще … в этом случае у вас есть типы страниц, которые вы хотите.

Если вы поместите этот тег шаблона в тег Body <?php body_class(); ?> <?php body_class(); ?> Он выведет его в ваш код, т.е. <body <?php body_class(); ?>> <body <?php body_class(); ?>> Это даст вам шаблоны, на которые ссылается данная страница.

В качестве альтернативы вы можете повторить путь к шаблону страницы, называемому ie page.php или single-posttype.php, используя это: <?php echo get_page_template() ?>

Я немного опоздал, но лучшее и маленькое решение, использующее фильтр массива, будет:

 function getPage( $arrayIn ) { $prefix = 'is_'; $array = array_filter( array_filter( (array) $arrayIn, function ( $key ) use ( $prefix ) { return ( strpos( $key, $prefix ) === 0 ); }, ARRAY_FILTER_USE_KEY ) ); unset( $array['is_singular'] ); return preg_replace( '/^' . preg_quote( $prefix, '/' ) . '/', '', key( $array ) ); }