WordPress : Remplacer le fichier de modèle TwentyTwelve par le modèle de thème enfant, mais plus bas dans la hiérarchie

Publié par Jean-Michel le

J’ai (je pense) un problème intéressant ici. Ce que je veux faire, c’est créer une page d’archive globale, avec tout ce qu’elle contient. Dates, auteurs, catégories, etc., le tout sur une seule page.

J’ai un thème enfant, avec TwentyTwelve comme parent. Dans TwentyTwelve, il existe archive.php, category.php, tag.php, author.php etc., essentiellement tous les modèles d’archives à facettes divisés individuellement.

Dans mon thème enfant, je veux créer un modèle archive.php et le remplacer par tous les modèles parents.

Je comprends que la création de archive.php dans l’enfant écrasera les parents archive.php, mais avant de vérifier archive.php, il vérifiera category.php et utilisera ce modèle de TwentyTwelve avant d’appuyer sur archive.php dans mon thème enfant. Idem pour tous les autres modèles selon la hiérarchie des modèles.

Je connais au moins 2 façons de résoudre ce problème:

  1. Supprimez category.php, tag.php, etc. de TwentyTwelve. (Pas le meilleur, car toute mise à jour restaurera ces fichiers)
  2. Recréez tag.php, category.php, etc. dans mon thème enfant et copiez/collez ma mise en page pour chacun dans chaque fichier de modèle. (Mieux, mais beaucoup de fichiers modèles ne font que créer un répertoire désordonné.)

Je me demande s’il y a quelque chose que je pourrais déposer dans functions.php pour écraser la hiérarchie et forcer WP à utiliser mon enfant archive.php pour toutes les pages d’archives.

Des idées ?

Cordialement, Dave

Solution n°1 trouvée

Ceci est peu testé – presque non testé vraiment – mais :

function force_archive_php_wpse_88824() {
  if (is_main_query() && is_archive()) {
    include (get_stylesheet_directory().'/archive.php');
    exit;
  }
}
add_action('template_redirect','force_archive_php_wpse_88824');

Vous interrompez le processus de chargement du modèle et forcez l’utilisation d’un fichier de votre choix.

Référence

http://codex.wordpress.org/Plugin_API/Action_Reference/template_redirect http://codex.wordpress.org/Function_Reference/get_stylesheet_directory

Catégories : Wordpress

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *