web-dev-qa-db-fra.com

Rendre le type de message personnalisé affiché sous forme de page

J'essaie de faire en sorte que mon type de message personnalisé s'affiche au début, comme s'il s'agissait d'une page. Selon le thème, il n’aura pas de date, d’auteur, etc ...

J'ai envisagé de créer un modèle tel que 'single- <CPT> .php'. Mais c'est trop statique pour fonctionner avec n'importe quelle conception de thème.

Est-il possible d'indiquer au thème actuel d'afficher le type de message personnalisé de la même manière qu'il afficherait une page normale.

Merci!

2
Sarathi Hansen

Vous pouvez utiliser un certain nombre de filtres de modèle pour modifier la hiérarchie des modèles. Consultez la page de hiérarchie des modèles avec les filtres et l'exemple fourni.

Voici une version modifiée de l'exemple qui utilise single_template. Il recherche un type de publication personnalisé spécifique et charge le modèle page.php du thème s'il existe:

function wpa54721_single_template( $templates = '' ){

    // get data for the current post and check type
    $this_post = get_queried_object();
    if( 'my_custom_post_type' == $this_post->post_type ):

        // $templates could be empty, a string, or an array,
        // we need to check and alter it appropriately

        if( !is_array( $templates ) && !empty( $templates ) ):
            // it's a string
            $templates = locate_template( array( 'page.php', $templates ), false );
        elseif( empty( $templates ) ):
            // it's empty
            $templates = locate_template( 'page.php', false );
        else:
            // it's an array
            $new_template = locate_template( array( 'page.php' ) );
            if( !empty( $new_template ) ) array_unshift( $templates, $new_template );
        endif;

    endif;

    return $templates;
}
add_filter( 'single_template', 'wpa54721_single_template' );
3
Milo

C’est quelque chose que je dois gérer chaque jour lors de la création de thèmes qui utilisent beaucoup de types de messages personnalisés.

En gros, nous souhaitons que nos types de publications personnalisées présentent les mêmes fonctionnalités qu'une publication ou une page normale. Cela signifie des catégories, des archives, etc.

Tout d'abord, vous devriez faire toutes vos pages régulières. Ça signifie:

  • archive-cpt.php
  • catégories-cpt.php
  • single-cpt.php
  • etc..

Maintenant, si vous avez bien fait les choses, en naviguant vers des pages comme /custom-post-type/page/2/, vous devriez voir vos archives, etc.

Maintenant, l’astuce suivante consiste à faire en sorte que les utilisateurs voient votre type de message personnalisé sur la page d’accueil au lieu des messages de blog classiques.

Pour ce faire, vous souhaiterez créer un modèle de page . Ce modèle de page finira par fonctionner comme index.php ou archive.php, où il répertoriera 10 articles (ou plus). Lorsque vous l'avez créé, créez une nouvelle page sur le site et définissez le modèle de page sur votre nouveau modèle.

Après cela, allez dans Paramètres -> Lecture et sélectionnez cette page comme page d’accueil. Vous devriez maintenant avoir une liste des publications personnalisées les plus récentes que vous avez ajoutées.

1
Tyler Carter