Cum elimin paginile nedorite precum arhiva, căutare etc.?

15 apr. 2013, 20:02:31
Vizualizări: 35.1K
Voturi: 9

Î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.

0
Toate răspunsurile la întrebare 5
0

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.

8 mai 2013 17:30:12
0

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

Plugin WordPress SEO - Opțiuni pentru dezactivarea arhivelor

15 apr. 2013 20:18:48
0

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.

8 sept. 2015 14:34:19
2

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.

8 mai 2013 15:34:33
Comentarii

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.

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

În ceea ce privește ultima, ați putea cel puțin verifica dacă există 4 cifre, ca în: ^/20[0-9][0-9]. Deci acum trebuie să aveți de la 2000 la 2099.

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

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);
  }
}
27 nov. 2018 11:43:11