web-dev-qa-db-fra.com

Obtenir un lien vers un fichier de modèle spécifique

J'avais prévu de créer un modèle "Archives" personnalisé pour créer une page d'archives détaillée pour mon blog, comprenant des listes de publications par catégorie, balise, date et auteur. Plutôt que d’utiliser un lien statique, existe-t-il un moyen dans WordPress d’obtenir un lien vers un fichier de modèle spécifique? Je souhaite que le lien fonctionne indépendamment de l'URL de la page. Est-ce possible?

1
daysrunaway

Voici une fonction pour imprimer l'URI de la première page à l'aide d'un modèle de page "Archive". Il suppose que le modèle s'appelle template-archive.php (ne le nommez pas archive.php et ne piratez pas la hiérarchie des modèles!). Vous pouvez soit déposer ceci dans functions.php et l'appeler dans un modèle, ou simplement utiliser le code de la fonction directement dans un fichier de modèle.

function wpse25797_the_archives_link() {
    $archive_page = get_pages(
        array(
            'meta_key' => '_wp_page_template',
            'meta_value' => 'template-archive.php'
        )
    );
    $archive_id = $showcase_page[0]->ID;
    echo get_permalink( $archive_id );
}
1
mrwweb

Cela dépend de ce que c'est une archive de. Examinez la hiérarchie des modèles ...

http://codex.wordpress.org/images/1/18/Template_Hierarchy.png

Comme vous pouvez le constater, il existe de nombreux types d’archives. Taxonomie, Catégorie, Tag, Auteur, Date et Posts. Si aucun modèle de type spécifique n'est trouvé lors d'une requête 'archive', WordPress utilise par défaut un modèle générique 'archive.php'. Si ce n'est pas trouvé non plus, il sera par défaut à 'index.php'.

Si vous essayez de créer une page d'archives générale présentant plusieurs types d'archives combinées, vous pouvez théoriquement le faire n'importe où dans la hiérarchie - les questions à résoudre seraient alors où et comment vous souhaitez que cette partie de votre site apparaisse - et quel type de données y sera montré (est-ce relatif au chat sur lequel vous êtes, ou est-ce un type générique central).

Par exemple, si vous créez un modèle appelé category.php, toute demande de catégorie apparaîtra à l'aide de ce modèle, sauf si vous en créez une spécifique pour une catégorie particulière. Donc, si vous avez category.php et category-myslug.php, la catégorie "myslug" apparaîtra avec son modèle spécial, mais toutes les autres apparaîtront à l'aide du modèle général category.php.

Pour tout rapporter à la maison, si votre URL est http://example.com/category/cat1 , vous pouvez utiliser le même modèle que http://example.com/category/cat2 en fonction des modèles existants dans votre thème.

La même logique s'applique aux modèles de balises, aux modèles de page, aux archives basées sur la date, aux modèles de taxonomie personnalisés et aux modèles de type de publication personnalisés. De plus, si vous souhaitez appliquer un seul modèle à TOUTES les archives , créez simplement un modèle archive.php et assurez-vous de ne pas avoir l'un des plus spécifiques dans votre thème.

J'espère que cela t'aides.

0
eddiemoya