Entrades Personalitzades - Custom Post Types

Els Custom Post Types permeten crear un nou tipus d’entrada que apareix al menú de l’esquerra del menú de l’administrador de WordPress. Aquestes entrades faciliten a l’usuari entrar continguts concrets com podrien ser projectes, productes, llibres… Es podem comportar com ha pàgines o com ha entrades i que utilitzin categories, taxonomies, etiquetes…

Per crear una entrada personalitzada utilitzarem la funció register_post_type. Però per facilitar les coses utilitzarem el plugin Custom Post Type UI

Primer de tot integrarem el plugin al nostre tema. Descarreguem el plugin de la pàgina oficial Custom Post Type UI i el posem a la carpeta plugin dins del nostre tema. Obrim l’arxiu functions.php i enganxem el codi següent:

/* INCLOU Custom Post Type PLUGIN */

include_once('plugin/custom-post-type-ui/custom-post-type-ui.php' );

Ara ja podem veure al panell administrador una nova opció que ens permetrà crear i administrar les nostres entrades personalitzades.

menu cpt

Seguint els exemples que hem utilitzat a les clases anteriors, per començar, crearem una entrada personalitzada que es dirà Slider. Per tant, des del menú lateral de CPT UI triarem la opció “Add new” i posarem la següent informació:

crear nova entrada pesonalitzada

Si ara guardéssim ja tindríem la nostra entrades personalitzada creada. Però veurem més opcions que ens permet el plugin. Cliquem a Advanced Label options per determinar com es veuran els camps de cares a l’usuari final. ens quedarà una cosa així:

opcions avançades d'etiqueta entrada personalitzada

També tenim més paràmetres a configurar que és veuen si cliquem l’opció “Advanced Options”:

opcions avançades entrada personalitzada

De moment no entrarem al detall de cada opció. Si voleu saber més sobre el tema uns recomano llegir register_post_type. Si us interesa registrar entrades personalitzades fent servir el functions.php us recomano una lectura d’aquets article .

Una opcío que si que tocarem és “Supports”. Des d’aquesta opció especificarem quins camps es mostraran al registrar una nova entrada personalitzada. Si us fixeu les opcions són:

Supports_cpt

No cal comentar els camps per que ja els coneixem tots. Només deixarem marcades les opcions Title i Featured Image. Ara ja si que podem guardar el que em fet clicant l’opció “Save Custom Post Type”. Immediatament estigui fet això ja podrem veure un nou apartat al menú lateral que és dirà Sliders.

sliders

Crearem 2 o 3 entrades noves de slider on només haurem d’emplenar els camps Títol i Imatge destacada com he especificat anteriorment.

add new slider

Per que es vegi el resultat al nostre Home duplicarem el home actual i modificarem el home.php amb el codi relacionar amb el slider. Buscarem el div id=”nivoslider” i substituirem per:

<div id="nivoslider">
 		<div class="slider-wrapper theme-default">
 			<div class="ribbon"></div>
			<div id="slider" class="nivoSlider">
 				<?php query_posts('post_type=slider' );
 				while ( have_posts() ) : the_post(); ?>
				<a href="<?php echo get_permalink();  ?>" title="<?php the_title_attribute(); ?>" ><?php the_post_thumbnail( 'homepage-slider', array('title' => ''.get_the_title().'' )); ?></a>
 				<?php endwhile; wp_reset_query(); ?>
 			</div>
		</div>
 	</div><!-- end of nivoslider -->

El que em fet aquí és una Query a totes les entrades personalitzades de tipus slider “post_type=slider” per mostrar al slider la imatge destacada amb un enllaç a l’entrada i fent servir el títol per mostrar-ho al div class”nivo-caption”.

Plantilles d’entrades personalitzades

De la mateixa manera les entrades individuals i els seus arxius es poden visualitzar utilitzant els arxius single.php i archive.php, respectivament, les entrades personalitzades utlitzaran les seves propies plantilles d’entrada i d’arxiu:

Per les entrades personalitzades utilitzarem single-{post_type}.php
Pels arxius d’entrades personalitzades utilitzarem archive-{post_type}.php

Com ha exemple canviarem com es mostra actualment les entrades de slider creant un arxiu que es digui single-slider.php i posant el següent codi:

<?php get_header(); ?>

<div id="wrapper-full"><?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

	<div class="entrada llistat">
		<h2><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2>
		<?php the_post_thumbnail( 'homepage-slider'); ?>
		<?php the_content(); ?>
		<?php the_time('F jS, Y') ?> | <?php the_author_posts_link(); ?>
	</div><!-- end of entrada -->

	<?php endwhile; else: ?>
	<h2>No hi ha entrades</h2>
	<?php endif; ?>

</div><!-- end of wrapper-->

<?php get_footer(); ?>

Veureu que no ha fet falta afegir cap comentari al inici de l’arxiu com si feia falta amb les plantilles d’entrada i de pàgina que vam veure la setmana passada.

Exercici

Com ha exercici modificarem el codi del Slider per afegir un camp personalitzat amb ACF per posar un link a la imatge que vagi a pàgina dins del nostre tema.

Taxonomies personalitzades

El plugin que hem estat fen servir per crear entrades personalitzades també ens permet crear taxonomies personalitzades. Això vol dir que si creem una entrada personalitzada anomenada Producte podem afegir etiquetes personalitzades com podrien ser proveïdor o país de procedència. Ho veurem millor amb un exemple.

Per començar crearem, com ho hem fet a l’exemple anterior, una entrada personalitzada que es dirà Immoble:

immobles_cpt

Deixerem totes les opcions que venen per defecte menys les de Supports on desmarcarem totes les opcions menys títol, descripció i imatge destacada. I guardarem. Si ho hem fet bé al lateral ja ens apareixerà la nova entrada personalitzada.

Ara afegirem etiquetes personalitzades a aquesta entrada personalitzada. Per fer-ho anirem al panell administrador de CPT UI i Marcarem Add New . Si ens fixem en la part dreta veurem l’apartat que ens permetrà crear les taxonomies. El funcionament és molt similar al de les entrades personalitzades amb la diferència que aquí ens preguntarà a quina entrada personalitzada volem associar la nova taxonomia. En el nostre exemple, crearem una taxonomia, que es dirà tipus, associada a les entrades de immoble:

taxonomies_cpt

De la mateixa manera que en les entrades aquí també tenim molts paràmetres per modificar i configurar, però, per aquest exemple ho deixarem tot per defecte. crearem una altre taxonomia associada a immobles que es dirà poblacio:

poblacio_cpt

Per mostrar les taxonomies personalitzades, per exemple a un single-immoble.php, utilitzarem la següent funció get_the_term_list() :

<?php echo get_the_term_list($post->ID, 'poblacions', 'Població: ', ', ', ''); ?>

Podeu descarregar els arxius de la classe aquí:

[download id=”929″]