¿Cómo elimino las Páginas de la búsqueda?
No necesito buscar páginas en mi sitio y solo quiero buscar entradas, ¿hay alguna manera de hacerlo? Gracias

Lo siguiente debería hacer que el tipo de publicación "página" ya no sea buscable.
function remove_pages_from_search() {
global $wp_post_types;
$wp_post_types['page']->exclude_from_search = true; // Excluir páginas de los resultados de búsqueda
}
add_action('init', 'remove_pages_from_search'); // Ejecutar la función durante la inicialización

¿Existe alguna manera de ocultar páginas específicas en lugar de todas las páginas?

debería ser la solución. más elegante, más mantenible. lo anterior solo modifica los parámetros del tipo de publicación, este modifica la consulta de búsqueda en sí. +1

Modificar el objeto del tipo de publicación para el tipo 'page' es una mejor solución. Esta solución fuerza a que el tipo de publicación se establezca fijo como 'post' para todas las consultas de búsqueda, lo que evitaría que cualquier tipo de publicación personalizada aparezca en los resultados si un sitio los tuviera. Configurar globalmente la propiedad exclude_from_search del objeto del tipo de publicación 'page' significa que cualquier código que dependa de verificar esta propiedad tendrá la información correcta.

Enlace algo relevante con un poco más de información: http://codex.wordpress.org/Post_Types#Custom_Post_Types_in_the_main_Query

Aquí está el código para eliminar páginas específicas de los resultados de búsqueda en WordPress, agrega el siguiente código en el archivo functions.php Solo reemplaza el array con los IDs de tus páginas
function remove_pages_from_search($query) {
if ( !is_admin() && $query->is_main_query() ) {
if ($query->is_search) {
$query->set('post__not_in', array(3031,2958,2926));
}
}
}
add_action('pre_get_posts','remove_pages_from_search');

coloca esto en tu search.php
<?php if (is_search() && ($post->post_type=='page')) continue; ?>
justo debajo de este código -> <?php if ( have_posts() ) : while ( have_posts() ) : the_post();?>
puedes encontrar más información aquí http://wordpress.org/support/topic/possible-search-only-posts-exclude-pages

Sí. Primero crea un search.php en blanco y luego copia y pega el código del index.php. Después haz lo que te dije arriba.

Esta solución sigue (respeta) la API de WP en lugar de modificar variables internas directamente.
Ten en cuenta que de esta manera también puedes incluir (sobrescribir el registro) tipos o cambiar los argumentos de registro proporcionados en register_post_type()
. Revisa la descripción de 'exclude_from_search'
en la documentación.
/**
* Filtra los tipos de objetos en los resultados de búsqueda.
*
* @param array $args Array de argumentos para registrar un tipo de post.
* Ver la función register_post_type() para los argumentos aceptados.
* @param string $type Clave del tipo de post (objeto) (ej. 'post', 'page', 'attachment'...,
* o cualquier tipo de post personalizado registrado).
* @return array Atributos del tipo filtrado.
*/
function _filter_search_types( $args, $type ) {
$exclude_types = array( 'page' );
if ( in_array( $type, $exclude_types, true ) ) {
$args['exclude_from_search'] = true;
}
return $args;
}
if ( ! is_admin() ) {
add_filter( 'register_post_type_args', __NAMESPACE__ . '\_filter_search_types', 10, 2 );
}

@Rup - Yo hablé sobre WP API, no sobre WP REST API (que es irrelevante aquí). Y esto no es una "forma alternativa" de la respuesta aceptada sino "la forma correcta", ya que la "respuesta aceptada" no sigue WP API y como cualquier modificación directa de variables debería considerarse un hack más que una solución.

@Rup - Y tienes razón - comment
no es un tipo de post (corregido).
