Получить текущий тип страницы
Существует ли функция, которая просто возвращает текущий "тип страницы" вместо использования is_page(), is_preview(), is_single(), is_archive() и т.д.?
Например: я могу найти текущий "тип записи" (post type), но не могу найти соответствующий ему "тип страницы".

Вам понадобится своя вспомогательная функция, которая будет возвращать нужные данные. Она может выглядеть примерно так:
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'));
но даже в этом случае страница может быть одиночной записью (single), архивом или чем-то еще...
Что вы пытаетесь достичь? Возможно, в этом случае будет понятнее, что вам нужно.
Обновление. взгляните на пример функции из темы, которую можно использовать для решения этой задачи. Функция называется twentyeleven_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(); ?>
, он выведет его в ваш код, например: <body <?php body_class(); ?>>
. Это позволит вам увидеть шаблоны, используемые для данной страницы.
Альтернативно, вы можете вывести путь к вызываемому шаблону страницы (например, page.php или single-posttype.php) с помощью этого кода: <?php echo get_page_template() ?>

Я немного опоздал, но лучшее и компактное решение с использованием array_filter будет:
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 ) );
}
