Recherche…


Création d'un modèle personnalisé pour le livre de type Custom Post

Pour créer un modèle pour les publications uniques de notre type de publication personnalisé, nous devons créer un fichier appelé nom_type_post unique .php où nom_type_post est le nom de notre type de publication personnalisé.

Par exemple, si notre type de publication personnalisé s'appelle «Livres», nous devons créer un fichier PHP appelé .php à livre unique. Notez que nous avons utilisé le nom singulier de notre type de poste personnalisé.

Copiez le contenu du fichier single.php du dossier des thèmes et collez-le dans le nouveau modèle et enregistrez-le, puis le modèle sera appliqué à la page individuelle du type de publication personnalisée.

Modèles de type de message personnalisé


Archive de type de message personnalisé:

Pour créer un modèle d'archive pour un type de publication personnalisé, vous devez définir l'argument has_archive égal à true dans votre fonction register_post_type() . Dans l'exemple ci-dessous, un type de publication personnalisé est créé pour un type de publication d'événement.

add_action( 'init', 'create_events_post_type' );
function create_events_post_type() {
  register_post_type( 'event',
    array(
      'labels' => array(
        'name' => __( 'Events' ),
        'singular_name' => __( 'Event' )
      ),
      'public' => true,
      'has_archive' => true,
    )
  );
}

Pour créer un modèle pour les nouveaux types de publication personnalisés, vous devrez créer un nouveau fichier de modèle. Pour créer un modèle pour les pages de publication uniques, vous devez le nommer single-{post_type}.php et archive-{post_type}.php pour l'archive.

Le nom de fichier de notre modèle d'archive sera archive-event.php et pour la page de l'événement, il single-event.php . Les deux fichiers doivent être dans le répertoire racine de vos thèmes.

Un exemple de modèle d'archive ressemblerait à ceci. Tiré du thème des vingt ans .

<?php
/**
 * The template for displaying archive pages
 *
 * @link https://codex.wordpress.org/Template_Hierarchy
 *
 * @package WordPress
 * @subpackage Twenty_Seventeen
 * @since 1.0
 * @version 1.0
 */

get_header(); ?>

<div class="wrap">

    <?php if ( have_posts() ) : ?>
        <header class="page-header">
            <?php
                the_archive_title( '<h1 class="page-title">', '</h1>' );
                the_archive_description( '<div class="taxonomy-description">', '</div>' );
            ?>
        </header><!-- .page-header -->
    <?php endif; ?>

    <div id="primary" class="content-area">
        <main id="main" class="site-main" role="main">

        <?php
        if ( have_posts() ) : ?>
            <?php
            /* Start the Loop */
            while ( have_posts() ) : the_post();

                /*
                 * Include the Post-Format-specific template for the content.
                 * If you want to override this in a child theme, then include a file
                 * called content-___.php (where ___ is the Post Format name) and that will be used instead.
                 */
                get_template_part( 'template-parts/post/content', get_post_format() );

            endwhile;

            the_posts_pagination( array(
                'prev_text' => twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '<span class="screen-reader-text">' . __( 'Previous page', 'twentyseventeen' ) . '</span>',
                'next_text' => '<span class="screen-reader-text">' . __( 'Next page', 'twentyseventeen' ) . '</span>' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ),
                'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentyseventeen' ) . ' </span>',
            ) );

        else :

            get_template_part( 'template-parts/post/content', 'none' );

        endif; ?>

        </main><!-- #main -->
    </div><!-- #primary -->
    <?php get_sidebar(); ?>
</div><!-- .wrap -->

<?php get_footer();

Type de poste personnalisé Modèle unique:

Voici un exemple d'un modèle unique. Tiré du thème des vingt ans .


<?php
/**
 * The template for displaying all single posts
 *
 * @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post
 *
 * @package WordPress
 * @subpackage Twenty_Seventeen
 * @since 1.0
 * @version 1.0
 */

get_header(); ?>

<div class="wrap">
    <div id="primary" class="content-area">
        <main id="main" class="site-main" role="main">

            <?php
                /* Start the Loop */
                while ( have_posts() ) : the_post();

                    get_template_part( 'template-parts/post/content', get_post_format() );

                    // If comments are open or we have at least one comment, load up the comment template.
                    if ( comments_open() || get_comments_number() ) :
                        comments_template();
                    endif;

                    the_post_navigation( array(
                        'prev_text' => '<span class="screen-reader-text">' . __( 'Previous Post', 'twentyseventeen' ) . '</span><span aria-hidden="true" class="nav-subtitle">' . __( 'Previous', 'twentyseventeen' ) . '</span> <span class="nav-title"><span class="nav-title-icon-wrapper">' . twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '</span>%title</span>',
                        'next_text' => '<span class="screen-reader-text">' . __( 'Next Post', 'twentyseventeen' ) . '</span><span aria-hidden="true" class="nav-subtitle">' . __( 'Next', 'twentyseventeen' ) . '</span> <span class="nav-title">%title<span class="nav-title-icon-wrapper">' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ) . '</span></span>',
                    ) );

                endwhile; // End of the loop.
            ?>

        </main><!-- #main -->
    </div><!-- #primary -->
    <?php get_sidebar(); ?>
</div><!-- .wrap -->

<?php get_footer();

Les deux exemples de modèles tirent des partiels pour afficher le contenu interne.

Si votre thème enfant / parent a un modèle unique / archive, vous devez utiliser ce code comme modèle pour vos nouveaux modèles.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow