web-dev-qa-db-fra.com

Comment puis-je supprimer les pages non désirées telles que les archives, la recherche, etc.?

Par défaut, WordPress diffuse toute une gamme de pages que je ne souhaite ni n'ai besoin - archives, auteur, blog, mensuel, publications récentes, catégories, commentaires, pièce jointe, taxinomies, recherche, résultats de recherche, et probablement quelques autres que j'ai manqué.

La plupart du temps, je construis des sites Web classiques sans aucun besoin, à part quelques pages assez statiques. Comment puis-je me débarrasser de toutes les autres pages? Est-ce qu'il y a un plugin qui va faire ça? Dois-je configurer une dizaine de redirections dans le fichier .htaccess? J’ai essayé de chercher, mais tout ce que je trouve, c’est comment masquer des parties d’une page ou personnaliser le sitemap pour qu’il ne se mêle pas aux recherches. Mais je ne veux pas du tout ces pages, donc même entrer l'URL directe ne devrait pas fonctionner.

5
Eystein

Vous pouvez rediriger vers la maison tout ce qui n'est pas une page ou un administrateur via l'action 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 ce n'est pas un écran d'administrateur ou une requête pour une page, il sera redirigé. Vous pouvez voir tous les types de pages que cela supprimera sous Balises conditionnelles dans Codex.

6
Milo

Le plugin SEO de WordPress SEO de Joost de Valk est capable de désactiver la plupart, sinon la totalité, des archives que vous mentionnez:

enter image description here

4
Johannes Pille

Vous pouvez utiliser un autre petit script sans ajouter de plug-in. Il y a un article ici et le code à ajouter dans le fichier index.php de votre thème est le suivant:

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

J'espère que vous le trouverez utile.

2
Pons

Pour ceux qui se demandent, j'ai fini par utiliser les redirections .htaccess 301.

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

L'archive blogpost ^/20.*$ n'est pas idéale, mais il faudra le faire pour le moment. Aussi, je ne sais pas quelles autres pages j'ai peut-être ratées.

1
Eystein

Cela peut également être réalisé en utilisant le hook template_redirect.

Vous pouvez vérifier chaque type de pages d'archives ou les "désactiver" complètement.
- Renvoyer une erreur 404 ou rediriger vers une autre page, je préfère l'approche 404-

Dans functions.php:

/* Disable archives pages */
add_action('template_redirect', 'my_disable_archives_function');

function my_disable_archives_function()
{
  /* Conditional checks examples:
      is_category() 
      is_tag()
      is_date()
      is_author()
      is_tax()
      is_search() ... */

    // Return a 404 for all archive types, except the my_custom_post_type archive.
    $post_types = array('my_custom_post_type');

  if ( (is_archive() && !is_post_type_archive( $post_types )) )
  {
      global $wp_query;
      $wp_query->set_404();
  }
}
0
FFrewin