Cum elimin paginile nedorite precum arhiva, căutare etc.?
În mod implicit, WordPress generează o întreagă serie de pagini pe care nu le doresc sau nu am nevoie - arhivă, autor, blog, arhivă lunară, articole recente, categorii, comentarii, atașamente, taxonomii, căutare, rezultate căutare și probabil altele pe care le-am omis.
În majoritatea cazurilor construiesc site-uri web de prezentare obișnuite care nu au nevoie de nimic altceva în afară de câteva pagini destul de statice. Cum pot scăpa de toate celelalte pagini? Există vreun plugin care să facă acest lucru? Trebuie să configurez o duzină de redirecționări în .htaccess? Am încercat să caut, dar tot ce găsesc este cum să ascund părți ale unei pagini sau să personalizez sitemap-ul pentru a ascunde din căutări. Dar nu vreau deloc acele pagini, astfel încât nici măcar introducerea URL-ului direct să nu funcționeze.

Puteți redirecționa orice care nu este o pagină sau admin către pagina principală prin acțiunea 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' );
Dacă nu este un ecran de administrare sau o interogare pentru o pagină, va redirecționa. Puteți vedea toate tipurile de pagini care vor fi eliminate pe pagina Tag-uri Condiționale din Codex.

Pluginul WordPress SEO al lui Joost de Valk poate dezactiva majoritatea, dacă nu toate, arhivele pe care le menționezi:

Puteți folosi un alt script mic, fără a adăuga niciun plugin. Există un articol aici și codul de adăugat în fișierul index.php al temei dvs. este acesta:
if(is_archive()) {
// forțează 404
$wp_query->set_404();
status_header( 404 );
nocache_headers();
include("404.php");
die;
}
Sper să vi se pară util.

Pentru cei care se întrebau, am ajuns să folosesc redirecționări 301 prin .htaccess.
# Redirecționare pagini inutile
Options +FollowSymlinks
RewriteEngine on
RedirectMatch 301 ^/portfolio/.*$ /gallery/
RedirectMatch 301 ^/author/.*$ /
RedirectMatch 301 ^/category/.*$ /
RedirectMatch 301 ^/tag/.*$ /
RedirectMatch 301 ^/20.*$ /
Arhiva de blogposturi ^/20.*$
nu este ideală, dar va trebui să fie suficient deocamdată. De asemenea, nu știu ce alte pagini aș fi putut omite.

Rețineți că .*$
este inutil și încetinește expresia ta regulată. Așadar, ^/portfolio/
este suficient pentru a prinde o pagină care începe cu portfolio. De asemenea, mă întreb dacă nu ar fi mai bine să returnați un 404 în schimb.

Acest lucru poate fi realizat și folosind hook-ul template_redirect.
Puteți verifica fiecare tip de pagini de arhivă sau le puteți "dezactiva" complet.
- Returnați o eroare 404 sau redirecționați către o altă pagină, eu prefer abordarea cu 404-
În functions.php
:
/* Dezactivează paginile de arhivă */
add_action('template_redirect', 'my_disable_archives_function');
function my_disable_archives_function()
{
/* Exemple de verificări condiționale:
is_category()
is_tag()
is_date()
is_author()
is_tax()
is_search() ... */
// Returnă 404 pentru toate tipurile de arhivă, cu excepția arhivei pentru 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);
}
}
