Come rimuovere pagine indesiderate come archivi, ricerca, ecc.?

15 apr 2013, 20:02:31
Visualizzazioni: 35.1K
Voti: 9

Per impostazione predefinita WordPress genera una serie di pagine che spesso non servono - archivi, autori, blog, archivi mensili, articoli recenti, categorie, commenti, allegati, tassonomie, ricerca, risultati di ricerca e probabilmente altre che non ho menzionato.

Nella maggior parte dei casi sto creando semplici siti web vetrina che necessitano solo di alcune pagine sostanzialmente statiche. Come posso eliminare tutte le altre pagine? Esiste un plugin che lo faccia? Devo impostare una dozzina di reindirizzamenti nel file .htaccess? Ho provato a cercare, ma trovo solo come nascondere parti di una pagina o personalizzare la sitemap per nasconderle dai motori di ricerca. Ma non voglio proprio che quelle pagine esistano, quindi non dovrebbe funzionare neanche inserendo l'URL diretto.

0
Tutte le risposte alla domanda 5
0

Potresti reindirizzare qualsiasi cosa che non sia una pagina o un'amministrazione alla home tramite l'azione 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' );

Se non si tratta di una schermata di amministrazione o di una query per una pagina, verrà reindirizzato. Puoi vedere tutti i tipi di pagine che verranno rimossi nella pagina dei Tag Condizionali nel Codex.

8 mag 2013 17:30:12
0

Il plugin WordPress SEO di Joost de Valk è in grado di disabilitare la maggior parte, se non tutti, gli archivi che hai menzionato:

Descrizione dell'immagine qui

15 apr 2013 20:18:48
0

Puoi utilizzare un altro piccolo script, senza aggiungere alcun plugin. C'è un articolo qui e il codice da aggiungere nel file index.php del tuo tema è questo:

if(is_archive()) {
    // forza 404
    $wp_query->set_404();
    status_header( 404 );
    nocache_headers();
    include("404.php");
    die;
}

Spero tu lo trovi utile.

8 set 2015 14:34:19
2

Per chi se lo stesse chiedendo, alla fine ho utilizzato i redirect 301 in .htaccess.

# Redirect pagine inutili
Options +FollowSymlinks
RewriteEngine on
RedirectMatch 301 ^/portfolio/.*$ /gallery/
RedirectMatch 301 ^/author/.*$ /
RedirectMatch 301 ^/category/.*$ /
RedirectMatch 301 ^/tag/.*$ /
RedirectMatch 301 ^/20.*$ /

L'archivio dei blogpost ^/20.*$ non è l'ideale, ma per ora andrà bene. Inoltre non so quali altre pagine potrei aver dimenticato.

8 mag 2013 15:34:33
Commenti

Nota che .*$ è inutile e rallenta la tua regex. Quindi basta ^/portfolio/ per catturare una pagina che inizia con portfolio. Mi chiedo anche se non dovresti restituire un 404 invece.

Alexis Wilke Alexis Wilke
7 mar 2018 19:33:29

Per quanto riguarda l'ultimo, potresti almeno verificare che ci siano 4 cifre come in: ^/20[0-9][0-9]. Quindi ora devi avere dal 2000 al 2099.

Alexis Wilke Alexis Wilke
7 mar 2018 19:35:25
0

Può essere ottenuto anche utilizzando l'hook template_redirect.

Puoi verificare per ogni tipo di pagina di archivio, o "disabilitarle" completamente.

  • Restituisce un errore 404 o reindirizza a un'altra pagina, preferisco l'approccio con 404-

In functions.php :

/* Disabilita le pagine di archivio */
add_action('template_redirect', 'my_disable_archives_function');

function my_disable_archives_function()
{
  /* Esempi di controlli condizionali:
      is_category() 
      is_tag()
      is_date()
      is_author()
      is_tax()
      is_search() ... */

    // Restituisce un 404 per tutti i tipi di archivio, eccetto l'archivio del tipo di post personalizzato.
    $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);
  }
}
27 nov 2018 11:43:11