WordPress
Crear plantilla para tipo de publicación personalizada
Buscar..
Creación de una plantilla personalizada para libro de tipo Publicación personalizada
Para crear una plantilla para las publicaciones individuales de nuestro tipo de publicación personalizada, necesitamos crear un archivo llamado single- post_type_name .php donde post_type_name es el nombre de nuestro tipo de publicación personalizada.
Por ejemplo, si nuestro tipo de publicación personalizada se llama "Libros", necesitamos crear un archivo PHP llamado .php de libro único. Tenga en cuenta que utilizamos el nombre singular de nuestro tipo de publicación personalizada.
Copie el contenido del archivo single.php de la carpeta de temas, péguelo en la nueva plantilla y guárdelo, luego la plantilla se aplicará a la página individual de tipo de publicación personalizada.
Plantillas personalizadas de tipo de publicación
Archivo de tipo de publicación personalizado:
Para crear una plantilla de archivo para un tipo de publicación personalizada, debe establecer el argumento has_archive
igual a true
en su función register_post_type()
. En el siguiente ejemplo, se crea un tipo de publicación personalizada para un tipo de publicación de evento.
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,
)
);
}
Para crear una plantilla para nuevos tipos de publicaciones personalizadas, tendrá que crear un nuevo archivo de plantilla. Para crear una plantilla para las páginas de una sola publicación, debe single-{post_type}.php
y archive-{post_type}.php
para el archivo.
El nombre de archivo de nuestra plantilla de archivo será archive-event.php
y para la página del evento será single-event.php
. Ambos archivos deben estar en su directorio raíz de temas.
Una plantilla de archivo de ejemplo se vería así. Tirado de los veintisiete tema .
<?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();
Tipo de entrada personalizado Plantilla única:
Aquí hay un ejemplo de una sola plantilla. Tirado de los veintisiete tema .
<?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();
Ambos ejemplos de plantillas se están realizando en parciales para mostrar el contenido interno.
Si su tema hijo / padre tiene una plantilla única / de archivo, debe usar ese código como plantilla para sus nuevas plantillas.