Entradas personalizadas en wordpress

Categories:

Una entrada – para definirla de una manera general – es un contenedor donde se almacena el contenido que se consulta – título, texto, archivos – de una instalación de wordpress.
Existen cinco tipos de entradas en wordpress.

Tipo

Descripción

Entrada

Es un tipo de publicación que se muestra en orden de creación de manera inversa, es decir, se muestra primero la entrada más reciente siguiendo las anteriores hasta llegar a la primer entrada que se creó -.

Página

Una página tiene una estructura similar a una entrada pero no se visualiza dentro del flujo de las entradas.

Archivos Adjuntos

Esta tipo de entrada contiene información acerca de los archivos que se adjuntaron con wordpress.

Revisiones

Se utiliza para tener borradores y / o revisiones de las entradas.

Menús de navegación

Estas entradas tienen información acerca de un elemento de los de menús de navegación.

La diferencia entre ellas son las características que cada una tiene habilitadas.

Registrar un tipo de entrada

Se puede registrar un tipo de entrada en un tema – en el archivo functions.php – o en un plugin.
Prefiero utilizar un plugin para poder utilizar o cambiar de tema sin preocuparme de perder el contenido.

Etiquetas

Primero vamos a definir las etiquetas que se van a mostrar en la interfaz de wordpress.
Aunque se pueden configurar las etiquetas al momento de registrar la entrada, vamos a utilizar un arreglo para almacenar los valores.
Si no defines etiquetas para tu entrada, wordpress va a utilizar las etiquetas que utiliza para administrar las entradas del blog.

Etiquetas

Descripción

name

Nombre (en plural) del tipo de entrada.

singular_name

Nombre (en singular) del tipo de entrada.

add_new *

Menú para agregar una entrada.

add_new_item

Encabezado para mostrar una forma singular de la entrada.

edit

Menú para editar entradas.

edit_item

Encabezado que se muestra al editar una entrada.

view

Texto que se muestra en un vínculo a esa entrada.

view_item

Texto que se visualiza junto al permalink en la ventana de edición de la entrada.

search_items

Contenido del botón de la caja de búsqueda en la pantalla de edición.

not_found

Texto que se va a muestra cuando no se encuentran entradas utilizando la búsqueda en la sección de administración.

not_found_in_trash

Texto que se muestra si no existen entradas en la basura.

* Generalmente el valor de add_new se va a quedar sin asignar y add_new_item va a ser:
Agregar nuevo {nombre en singular de la entrada}

$etiquetas = array(
  'name' => __( 'Incrustar' ),
  'singular_name' => __( 'Incrustar' ),
  'add_new' => __( 'Nueva incrustación' ),
  'add_new_item' => __( 'Agregar Incrustación' ),    
  'edit_item' => __( 'Editar Incrustación' ),
  'new_item' => __( 'Nueva Incrustación' ),
  'view_item' => __( 'Ver Incrustaciones' ),
  'search_items' => __( 'Buscar incrustaciones' ),
  'not_found' => __('No se encontraron incrustaciones'),
  'not_found_in_trash' => __('No se encontraron incrustaciones en la basura'), 
  'menu_name' => __("Incrustar")
);

Opciones

Las opciones se utilizan para definir las características que va a tener el tipo de entrada que generemos.

Opción

Descripción

parent

Útil cuando el tipo de entrada es jerárquica.
En la ventana de publicación se muestran las etiquetas superiores a las cuales se puede asociar la publicación.

public

Define si el tipo de publicación va a estar disponible para los autores / lectores. Los valores pueden ser true o false

true: Al utilizar true los valores de exclude_from_search, publicly_queryable, show_in_nav_menus, y show_ui también van a ser verdaderos.
Similar a los archivos adjuntos, páginas y entradas – publicaciones -.

false: Al utilizar false los valores de publicly_queryable, show_in_nav_menus, y show_ui van a ser falsos.
Similar a los menús de navegación – nav_menu_item – y revisiones.

Es posible asignar directamente el valor para las opciones:
exclude_from_search, show_ui, publicly_queryable, show_in_nav_menus

menu_position

Define la posición donde se muestra el menú – en la barra lateral de administración – de la entrada.

Si no se asigna un valor – número entero – el menú se visualiza debajo de los comentarios.

5 – debajo de Entradas
10 – debajo de Medios
15 – debajo de Enlaces
20 – debajo de Páginas
25 – debajo de Comentarios
60 – debajo del primer separador
65 – debajo de Plugins
70 – debajo de Usuarios
75 – debajo de Herramientas
80 – debajo de Ajustes
100 – debajo del segundo separador

hierarchical

Esta opción permite definir si el tipo de entrada se va a administrar jerárquicamente – como página -.

capability_type
capabilities

Se define el tipo de rol que el usuario de wordpress debe tener para poder utilizar la entrada.

supports

Aquí se pueden definir qué características va a tener el tipo de publicación.

Las características que se pueden definir son:
title, editor, author, thumbnail, excerpt, trackbacks, custom-fields, comments, revisions, page-attributes, post-formats.

title

Título de la entrada.

editor

El editor visual que se utiliza para redactar el contenido de las entradas.

excerpt

La caja del resumen de la entrada.

author

Aunque se almacena el autor al momento de la creación, las entradas que no tienen este parámetro no permiten actualizar el autor cuando se editan.

thumbnail

Habilita la característica de imagen representativa de la entrada.

trackbacks

Determina si los trackbacks y pings están habilitados para este tipo de entradas.

custom_fields

Habilita la caja de campos personalizados para el tipo de entrada.

comments

Habilita los comentarios cuando se muestre este tipo de entrada.

revisions

Habilita el panel de revisiones.

page_attributes

Habilita la caja de de atributos de la página.

can_export

Define si se puede exportar este tipo de entradas.

rewrite

Permite definir el slug que se utiliza en las entradas.
Por ejemplo si son revisiones:
www.example.com/revision/mi-primer-revision

$parametros = array(
  'labels' => $etiquetas,
  'public' => true,
  'publicly_queryable' => true,
  'show_ui' => true, 
  'show_in_menu' => true, 
  'query_var' => true,
  'menu_position' => 25,
  'hierarchical' => false, 
  'capability_type' => 'post',
  'supports' => array('title', 'author', 'revisions'),
  'can_export' => true, 
  'has_archive' => true,
  'rewrite' => array('slug' => 'incrustacion', 'with_front' => true)
);

Plantillas para visualizar estas entradas

El archivo para tipo de publicaciones personalizadas va a utilizar el archivo archive.php – y la página donde se muestra una publicación individual va a utilizar single.php *
Si queremos que se distingan de otro contenido que utiliza las mismas plantillas podemos especificar con guión y el nombre del tipo de entrada.
Ej: Si tenemos una entrada que se llame “foo” las siguientes plantillas se utilizarían para visualizar ese tipo de entradas:
archive-foo.php single-foo.php

* Si no existen estos archivos wordpress va a utilizar el archivo index.php.

Habilitar en el flujo de las entradas

Al momento de registrar la entrada no va a entrar en el flujo del blog.
La única manera para visualizar el contenido es con el URL.
Para que se incluyan nuestras entradas en el flujo general podemos crear un hook en el cual definamos los tipos de entradas que van a estar disponibles.

Ejemplo

Tipo de publicación que permita guardar URLS y que se muestre el contenido dentro de un iframe.

<?php
/*
Plugin Name: incrustar
Plugin URI: blog.eamexicano.com
Description: Permite incrustar un url externa como parte del contenido del blog 
Version: 0.1.0
Author:  @eamexicano
Author URI: www.eamexicano.com
License: MIT
*/

function crear_publicacion_personalizada() {
  $etiquetas = array(
    'name' => __( 'Incrustar' ),
    'singular_name' => __( 'Incrustar' ),
    'add_new' => __( 'Nueva incrustación' ),
    'add_new_item' => __( 'Agregar Incrustación' ),    
    'edit_item' => __( 'Editar Incrustación' ),
    'new_item' => __( 'Nueva Incrustación' ),
    'view_item' => __( 'Ver Incrustaciones' ),
    'search_items' => __( 'Buscar incrustaciones' ),
    'not_found' => __('No se encontraron incrustaciones'),
    'not_found_in_trash' => __('No se encontraron incrustaciones en la basura'), 
    'menu_name' => __("Incrustar")
  );
  
  $parametros = array(
    'labels' => $etiquetas,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true, 
    'show_in_menu' => true, 
    'query_var' => true,
    'menu_position' => 25,
    'hierarchical' => false, 
    'capability_type' => 'post',
    'supports' => array('title', 'author', 'revisions'),
    'can_export' => true, 
    'has_archive' => true,
    'rewrite' => array('slug' => 'incrustacion', 'with_front' => true)
  );

  register_post_type('incrustacion', $parametros);
}

add_action('init', 'crear_publicacion_personalizada');
add_action( 'pre_get_posts', 'mostrar_incrustaciones_en_la_pagina_principal' );

function mostrar_incrustaciones_en_la_pagina_principal( $query ) {
	if ( is_home() && $query->is_main_query()) {
	  		$query->set( 'post_type', array( 'post',  'incrustacion') ); 
	}  	
       return $query;
}
?>

Uso

Para utilizar hay que pasar el archivo.php a la carpeta de plugins – wp-content/plugins
Ir a la sección de plugins y activar el plugin.

Entrada personalizada
Habilitar entrada personalizada en los plugins de wordpress.

Utilizar la entrada personalizada como las entradas o páginas que vienen con wordpress
Menú de la entrada incrustar
Utilizar la entrada personalizada en wordpress.

Además de pasar los archivos archive-incrustacion.php, single-incrustacion.php a la carpeta del tema que se está utilizando.

Puedes descargar el repositorio del proyecto de github o bitbucket.