Wordpress : Custom Post Type

Fecha Publicación:       14 de Mayo de 2020
Fecha Modificación:       14 de Septiembre de 2022

Crear Custom Post Type usando GenerateWp.com  

Entramos a la siguiente url  GenerateWp.com   y  Escoger la opción Post Type Generator.   

GenerateWp.com   -->  Son Herramientas encantadoras para desarrolladores de WordPress , La forma más fácil y rápida de crear código personalizado y de alta calidad para su proyecto de WordPress utilizando los últimos estándares de codificación y API de WordPress.

 

 

Crear Custom Post Type en forma Manual

Para crear un tipo de publicación personalizada para cualquier tema en particular en WordPress, vaya al   archivo function.php desde el directorio de temas de WordPress y luego agregue el siguiente código.

/* Custom Post Type Start */
function create_posttype() {
register_post_type( 'Noticias',
// CPT Options

array(
  'labels' => array(
   'name' => __( 'Noticias' ),
   'singular_name' => __( 'Noticias' )
  ),
  'public' => true,
  'has_archive' => false,
  'rewrite' => array('slug' => 'Noticias'),
 )
);
}
// Hooking up our function to theme setup
add_action( 'init', 'create_posttype' );
/* Custom Post Type End */

→ Mas sobre la función  register_post_type  , esta funcion se encarga de activar los Custom Post Type.

 

Después de agregar este código, el tipo de publicación de Noticias aparecerá automáticamente en el Área de administración de su WordPress. Para ver cómo aparecerá en la parte frontal de su panel de WordPress, consulte la imagen a continuación.

 

Recuerda: 

Deves crear el archivo  single-nombredelposttype.php  en la carpeta  root/wp-content/themes/tu-tema-activo 

por ejemplo si hemos creado el Post Type Noticias debemos crear el archivo  single-noticias.php

a) En algunos ejemplos dentro del archivo single-nombredelposttype.php encontramos el codigo:

<?php
get_header();
?>

b) La función get_header(); lo encontramos en la plantilla   root/wp-includes/general-template.php   

function get_header( $name = null ) {
	/**
	 * Fires before the header template file is loaded.	 
	 * @since 2.1.0
	 * @since 2.8.0 $name parameter added.	 
	 * @param string|null $name Name of the specific header file to use. null for the default header.
	 */
	do_action( 'get_header', $name );
	$templates = array();
	$name      = (string) $name;
	if ( '' !== $name ) {
		$templates[] = "header-{$name}.php";
	}
	$templates[] = 'header.php';
	locate_template( $templates, true );
}

c) El archivo general-template.php llama al archivo header.php  que se encuentra en la carpeta  root\wp-content\themes\tu-tema-activo     

d) En el archivo header.php se carga los menus,el logo,etc  , ademas carga: 

 if ( is_singular( ) ) : 	
        $single_page_style = get_post_meta( get_the_ID(), CHEFSCUISINE_RECIPE_PREFIX . 'page_style', true );
        $single_page_style = empty( $single_page_style ) ? 'style-1' : $single_page_style;		

        echo Chefscuisine_Template_Loader::load( 'header/' . $single_page_style );

       // Aqui entra y carga header/' . $single_page_style = style-1

    else: 	
        $single_page_style = '';
        echo Chefscuisine_Template_Loader::load( 'header/style-1' );
    endif;

 

e) El archivo header.php llama a style-1.php que se encuentra en la carpeta root\wp-content\themes\tu-tema-activo\templates\header 

Dentro del archivo style-1.php se carga el titulo del post type  

<div id="header" class="heading" style="background-image: url(<?php echo esc_url( $header_background_image ); ?>);">
    <div class="container">
        <div class="row">
            <div class="col-md-10 col-md-offset-1 col-sm-12">
                <div class="page-title">
                    <?php the_chefscuisine_title('<h2>', '</h2>'); ?>
                </div>
                <?php if ( chefscuisine_check_chefscuisine_plugin( ) ) : ?>
                    <?php echo Chefscuisine_Template_Loader::load( 'misc/breadcrumb' ); ?>
                <?php else: ?>
                    <?php chefscuisine_get_breadcrumb(); ?>
                <?php endif; ?>
            </div>
        </div>
    </div>
</div>

Creando Custom Post type carrusel

https://www.youtube.com/watch?v=5qpwIw20B18&list=PLaNBgK4b74m5rKUfdFNPLc43ZuxZeQlC5&index=7

→  Para Crear un custom post type tipo carrusel primero lo  registramos en el archivo  functions.php

<?php
/*  Custom Post Types & Shortcodes #4 - Diseño y programación Web
https://www.youtube.com/watch?v=5qpwIw20B18&list=PLaNBgK4b74m5rKUfdFNPLc43ZuxZeQlC5&index=7
Rafel Sansó 

 * Define custom post type
 * Register post types: https://codex.wordpress.org/Function_Reference/register_post_type
 * Icons: https://developer.wordpress.org/resource/dashicons/
 */
 function fastfood_post_type() {
 	register_post_type( 'fastfood_slider',
 		array(
	      'labels' => array(
	        'name' => __( 'Carousel' ),
	        'singular_name' => __( 'Item' ),
	        'add_new' => __( 'Nuevo item' ),
	        'add_new_item' => __( 'Añadir nuevo item' ),
	        'edit_item' => __( 'Editar item' ),
	        'featured_image' => __( 'Imagen del slide' )
	      ),
	      'public' => true,
	      'exclude_from_search' => true,
	      'has_archive' => false,
	      'show_in_nav_menus' => false,
	      'menu_icon' => 'dashicons-slides',
	      //'rewrite' => array('slug' => 'carousel'),
	      'supports' => array('title', 'editor', 'thumbnail')

    	)
  	);
 }
 add_action( 'init', 'fastfood_post_type' );

 /*
  __(  despues de estos caracteres significa que son caracteres que se pueden traducir
  menu_icon  --- con que icono se distinguira el post (https://developer.wordpress.org/resource/dashicons/)
  */

→  Una vez registrado en el archivo functions.php  aparecera en nuestro escritorio de wordpress con el nombre carousel.

 

 

→  Luego para invocar el custom post type tipo carrusel  ingresamos el siguiente codigo en el archivo index.php o  front-page.php page.php segun la jerarquia de archivos:

Recuerda si deseas saber que pagina se esta mostrando al visualizar tu web ver el tutorial mostrar el nombre del archivo de la plantilla actual 

<!-- -------- Inicio Slider ----------- -->

<!--   Custom Post Types & Shortcodes #4 - Diseño y programación Web
https://www.youtube.com/watch?v=5qpwIw20B18&list=PLaNBgK4b74m5rKUfdFNPLc43ZuxZeQlC5&index=7
Rafel Sansó 
 -->

<?php
$args = array(
    'post_type' => 'fastfood_slider',
    'posts_per_page' => 3
);
/* Consulta a la base de datos con WP_Query y le pasamos el argumento $args que indica 3 ultimos registros 
          recuerda que el custom post  tyoe lo hems definido en function.php  conla  funcion
          register_post_type( 'fastfood_slider' */

$loop = new WP_Query($args);


if ($loop->have_posts()) : ?>
    <div id="fastfood-slider-home" class="carousel slide" data-ride="carousel">
        <ol class="carousel-indicators">
            <?php
            /*  $l = variable para almacenar cunatos registros tiene el  $loop mediante funcion  post_count */
            $l = $loop->post_count;
            for ($i = 0; $i < $l; $i++) { ?>
                <li data-target="#fastfood-slider-home" data-slide-to="<?php echo $i; ?>" <?php if ($i == 0) { ?> class="active" <?php } ?>>
                </li>
            <?php
            }
            ?>
        </ol>
        <div class="carousel-inner" role="listbox">
            <?php
            $n = 0;
            /* mientras $loop tenga post have_posts() , convertimos a $loop en un post  (the_post()) */
            while ($loop->have_posts()) : $loop->the_post(); ?>
                <div class="carousel-item <?php if ($n == 0) {
                                                echo 'active';
                                            } ?>">

                    <!-- get_the_post_thumbnail = obtiene la imagen destacada 
                 le pasamos como parametro el id del post $loop->ID y el tamaño en este caso un tamaño personalizado que se a 
                 creado en el arhivo functions.php-->
                    <?php echo get_the_post_thumbnail($loop->ID, 'fastfood-featured-image'); ?>

                    <div class="carousel-caption">

                        <?php the_content(); ?>

                    </div>

                </div>
            <?php
                $n++;
            endwhile;
            ?>
        </div>
    </div>
<?php
endif;
?>

<!-- -------- Fin  Slider ----------- -->

 

Crear Custom Post Type con Plugin

Plugin Custom Post Type UI     

Página principal del plugin    https://github.com/WebDevStudios/custom-post-type-ui/

Se instala en el DashBoard --> CPT UI

 

Referencia:

Usando Custom Post Types en WordPress    

 

 

Articulo : 1135 - Veces Leidas
Compartir Articulo: