¿Cómo elimino páginas no deseadas como archivos, búsqueda, etc.?
Por defecto, WordPress genera una serie de páginas que no quiero ni necesito - archivos, autor, blog, mensuales, entradas recientes, categorías, comentarios, archivos adjuntos, taxonomías, búsqueda, resultados de búsqueda y probablemente algunas otras que me he perdido.
La mayoría de las veces estoy construyendo sitios web tipo folleto que solo necesitan algunas páginas bastante estáticas. ¿Cómo me deshago de todas las otras páginas? ¿Existe algún plugin que haga esto? ¿Tengo que configurar una docena de redirecciones en el .htaccess? He intentado buscar, pero todo lo que encuentro es cómo ocultar partes de una página o personalizar el mapa del sitio para ocultarlas de las búsquedas. Pero no quiero esas páginas en absoluto, así que incluso ingresando la URL directa no debería funcionar.

Podrías redirigir cualquier cosa que no sea una página o el panel de administración a la página de inicio mediante la acción parse_query
:
function wpa_parse_query( $query ){
if( ! is_admin() && ! $query->is_page() ) {
wp_redirect( home_url() );
exit;
}
}
add_action( 'parse_query', 'wpa_parse_query' );
Si no es una pantalla de administración o una consulta para una página, redirigirá. Puedes ver todos los tipos de páginas que esto eliminará en la página de Etiquetas Condicionales en el Codex.

El plugin de WordPress SEO de Joost de Valk es capaz de desactivar la mayoría, si no todas, las archivaciones que mencionas:

Puedes usar otro pequeño script, sin necesidad de añadir ningún plugin. Hay un post aquí y el código para añadir en el index.php de tu tema es este:
if(is_archive()) {
// forzar 404
$wp_query->set_404();
status_header( 404 );
nocache_headers();
include("404.php");
die;
}
Espero que te sea útil.

Para cualquiera que se lo pregunte, terminé usando redirecciones 301 en .htaccess.
# Redirigir páginas inútiles
Options +FollowSymlinks
RewriteEngine on
RedirectMatch 301 ^/portfolio/.*$ /gallery/
RedirectMatch 301 ^/author/.*$ /
RedirectMatch 301 ^/category/.*$ /
RedirectMatch 301 ^/tag/.*$ /
RedirectMatch 301 ^/20.*$ /
El archivo de publicaciones del blog ^/20.*$
no es ideal, pero tendrá que servir por ahora. Tampoco sé qué otras páginas podrían habérseme pasado.

Ten en cuenta que .*$
es inútil y ralentiza tu expresión regular. Por lo tanto, solo ^/portfolio/
es suficiente para capturar una página que comienza con portfolio. También me pregunto si no deberías devolver un 404 en su lugar.

También se puede lograr usando el hook template_redirect.
Puedes verificar cada tipo de páginas de archivo, o "desactivarlas" por completo.
- Devolver un error 404 o redirigir a otra página, prefiero el enfoque del 404-
En functions.php
:
/* Deshabilitar páginas de archivo */
add_action('template_redirect', 'my_disable_archives_function');
function my_disable_archives_function()
{
/* Ejemplos de verificaciones condicionales:
is_category()
is_tag()
is_date()
is_author()
is_tax()
is_search() ... */
// Devolver un 404 para todos los tipos de archivo, excepto el archivo de my_custom_post_type.
$post_types = array('my_custom_post_type');
if ( (is_archive() && !is_post_type_archive( $post_types )) )
{
global $wp_query;
$wp_query->set_404();
status_header(404);
}
}
