Contenido

WordPress 3.0: Exprimiendo los Custom Post Types

19 jun

+ 31

Una de las funcionalidades incluidas en WordPress 3.0 es la posibilidad de definir tipos de posts personalizados. Esto que parece que ha pasado desapercibido por la comunidad de desarrolladores es realmente interesante y ofrece una gran capacidad para extender cualquier WordPress fácilmente.

¿Que son los Custom Post Types?

Hasta la versión 2.9.x de WordPress disponíamos de unos pocos tipos de posts disponibles para identificar nuestros artículos. Estos tipos de posts, indicaban el estado del mismo (draft, revision,…) o el tipo de usado (attachment, page,…).

Ahora con la nueva versión de WordPress, la 3.0, la posibilidad de definir tipos de posts personalizados abre un abanico de posibilidades.

¿Como definir un nuevo Custom Post Type?

La API de WordPress está muy bien documentada en WordPress Codex y allí podemos encontrar como definir un Post Type fácilmente.

Todo pasa por la función register_post_type(), que se encarga de registrar un nuevo tipo con una serie de características personalizadas.

add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type( 'super',
    array(
      'labels' => array(
        'name' => __( 'Supers' ),
        'singular_name' => __( 'Super' )
      ),
      'public' => true,
    )
  );
}

Como vemos, debemos crear una función que se ejecutará en el action “init” de WordPress y que registrará el nuevo tipo. Disponemos de muchos parámetros que podemos usar para personalizar el nuevo tipo, pero los veremos más adelante.

post_type_wordpress_3
(Ver Imagen)

Introduciendo este código en, por ejemplo, el fichero functions.php de tu theme o en un plugin. Obtendremos un resultado similar al que vemos en la imagen. Se trata de un nuevo menú con el nuevo tipo registrado.

En el nuevo menú descubrimos que podemos mostrar un listado de artículos del nuevo tipo o crear uno nuevo, siempre asociado al post-type definido previamente.

Detalles de register_post_type()

Los parámetros que esta función reciba condicionarán el panel de administración de nuestro nuevo post_type.

Labels

  • name: El plural del nuevo tipo (películas).
  • singular_name: Singular del nuevo tipo (película)
  • add_new: Etiqueta de “Añadir nuevo”
  • add_new_item: Cabecera del panel “Añadir nuevo”
  • edit: Etiqueta de “Editar”
  • edit_item: Cabecera del panel “Editar”
  • new_item: Muestra en el menú favoritos
  • view: Se utiliza como texto en un enlace para ver el post.
  • view_item:Se muestra junto con el enlace permanente en la pantalla de edición posterior
  • search_items: Botón de texto para el cuadro de búsqueda en la pantalla de edición de mensajes
  • not_found: Texto para cuando no encuentre items
  • not_found_in_trash:Texto para cuando no encuentre items en la papelera.
  • parent: Se utiliza para definir el tipo padre. Solo útil en tipos heredados.

Ejemplo

'labels' => array(
	'name' => __( 'Super Dupers' ),
	'singular_name' => __( 'Super Duper' ),
	'add_new' => __( 'Add New' ),
	'add_new_item' => __( 'Add New Super Duper' ),
	'edit' => __( 'Edit' ),
	'edit_item' => __( 'Edit Super Duper' ),
	'new_item' => __( 'New Super Duper' ),
	'view' => __( 'View Super Duper' ),
	'view_item' => __( 'View Super Duper' ),
	'search_items' => __( 'Search Super Dupers' ),
	'not_found' => __( 'No super dupers found' ),
	'not_found_in_trash' => __( 'No super dupers found in Trash' ),
	'parent' => __( 'Parent Super Duper' ),
),

description

La descripción, es usada para explicar de que trata el nuevo tipo.

Ejemplo

'description' => __( 'A super duper is a type of content that is the most wonderful content in the world. There are no alternatives that match how insanely creative and beautiful it is.' ),

public

Se trata de un parámetro que permite personalizar todo lo referente al comportamiento público del nuevo tipo. En caso de estar activo (true) nos permitirá usar otros parámetros para personalizar nuestro post_type.

  • show_ui: Mostrar en las pantallas de Administración
  • publicly_queryable: Permitir que las consultas por este tipo estén disponibles a los usuarios.
  • exclude_from_search: Eliminar de la lista de resultados de búsquedas.
'public' => true,
'show_ui' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,

capability_type / capabilities

El tema de permisos es algo que también está reflejado en los Custom Post Types, permitiendo definir que capacidades tiene cada perfil de usuarios sobre el tipo.

Para ello usaremos el atributo “capabilities“:

  • edit_post: Alguien puede crear y editar un post específico
  • edit_posts: Capacidad de guardar los mensajes que permite la edición de este tipo de posts
  • edit_others_posts: Capacidad que permite la edición de los posts de los demás.
  • publish_posts: Capacidad de la concesión de la publicación de este tipo de posts.
  • read_post: Capacidad que controla la lectura de un puesto específico de este tipo de posts.
  • read_private_posts: Capacidad para permitir la lectura de los mensajes privados.
  • delete_post: Capacidad que otorga el privilegio de la supresión de posts.

Ejemplo

/* Global control over capabilities. */
'capability_type' => 'super_duper',

/* Specific control over capabilities. */
'capabilities' => array(
	'edit_post' => 'edit_super_duper',
	'edit_posts' => 'edit_super_dupers',
	'edit_others_posts' => 'edit_others_super_dupers',
	'publish_posts' => 'publish_super_dupers',
	'read_post' => 'read_super_duper',
	'read_private_posts' => 'read_private_super_dupers',
	'delete_post' => 'delete_super_duper',
),

supports

Permite definir que cajas van a estar visibles a la hora de crear/editar un nuevo post del tipo definido. Para ello pasaremos un listado con los nombres de las mismas.

  • title: Caja de título
  • editor: Editor donde va el contenido del post
  • comments: Posibilidad de activar/desactivar los comentarios
  • trackbacks: Capacidad de activar/desactivar los trackbacks
  • revisions: Permitir ver las revisiones
  • author: Caja para definir el autor
  • excerpt: Caja de excerpt.
  • thumbnail: Caja para definir la miniatura del post.
  • custom-fields: Caja de Custom Fields
  • page-attributes: Atributos de páginas

Ejemplo

'supports' => array( 'title', 'editor', 'excerpt', 'custom-fields', 'thumbnail' ),

rewrite

La URL también puede ser personalizada mediante un simple parámetro que especificará el enlace usado. Para ello debemos especificar estos parámetros:

  • slug: El prefijo del post
  • with_front:  Si el prefijo ha de estar en el frontend.

Más información

Actualización

  1. Custom Post Types UI, plugin que nos genera un cómodo interface web donde personalizar nuestros tipos de posts. Via.
  2. Magic Fields, plugin que permite generar interfaces amigables para todas las opciones de WordPress, inlcuye la opción de Custom Post Types.Via judas.

WordPress 3.0 “Thelonious” por fin ve la luz

19 jun

+ 4

El trabajo de 218 colaboradores durante medio año ha visto por fin la luz. Y es que la versión 3.0 de WordPress ha dado mucho que hablar, 1217 errores corregidos y muchas funcionalidades nuevas forman parte de esta versión que ofrece entre otras cosas, la posibilidad de administrar diferentes blogs desde un mismo panel de administración (WordPress MU) y la capacidad de eliminar el polémico usuario “admin”. Sin duda una nueva versión cargada de cosas interesantes:

  1. Menús, API para facilitar la creación de menús visibles en nuestros themes.
  2. Custom Post Types, personalización del tipo de posts, permitíendonos abrir un abanico de tipos para todo lo que se nos ocurra.
  3. Nueva API de Taxonomias, funcionalidad que nos permitirá registrar taxonomías fácilmente (Introducing WordPress 3 Custom Taxonomy)

[Descargar]

Inyección de código en WordPress 2.9.2+

15 abr

+ 3

Via AyudaWordpress nos llega una noticia sobre otro fallo de WordPress detectado y que afecta a la versión 2.9.2 y superiores. Se trata de una inyección de código producida por un problema de permisos que Fernando ha podido detectar en varios sitios. Además, nos muestra un detallado de listado de acciones para limpiar nuestro WordPress.

WordPress 3.0 Beta 1

3 abr

+ 5

Ya podemos descargar la primer beta de WordPress 3.0.[Descargar]

Actualizo [14:07]:

En la entrada oficial nos hacen referencia a una serie de cosillas que debemos tener en cuenta sobre esta nueva versión:

  • El sistema de menus personalizados (Aspecto > Menus) no está terminado y habrá que esperar a la Beta2 para disfrutar de la funcionalidad al 100%.
  • WordPress MU está integrado, pero no significa que nos podamos poner a crear nuevos blogs como locos, por el momento se ha de probar a asociar diferentes blogs con unos pequeños pasos que WordPress te vá informando.
  • Aún hay cosillas pendientes en cuanto a diseño de usuario se refiere, seamos pacientes.
  • Habría que probar el nuevo theme, el fondo personalizado y las opciones de encabezado.

Administra tu WordPress desde el iPad

3 abr

+ 2

El iPAD ha llegado (o está apunto de hacerlo) y si eres un apple fanboy que ya lo tenga ya puedes administrar tu WordPress como Diós manda desde el iPad con WordPress for iPhone OS 2.4. Una aplicación que podrás descargar desde iTunes e instalar en tu iPad para administrar tu WordPress.

wordpress-ipad-compose
(Ver Imagen)

Básicamente me parece la versión del iTouch inflada con un inflador de playa, mucho más grande y cómoda de usar, pero sin aportar nada nuevo.

Via

Continua —>

WordPress 2.9.2, actualización de seguridad leve

16 feb

+ 1

WordPress nos acaba de avisar de una nueva actualización, en concreto de la 2.9.2, que soluciona un fallo de seguridad detectado por Thomas Mackenzie. El fallo detectado posibilita que los usuarios registrados visualizar información sobre posts de otros usuarios desde la papelera. Si es el caso en el que necesitas tener activado el modo “paranoia” de seguridad no lo dudes y actualiza, si crees que puedes pasar, espera a la siguiente versión que parece que solventará alguna cosilla más. [Descargar]

CSS Sprites para mejorar las fechas de tus posts

4 feb

+ 9

Hace ya tiempo, vimos como introducir un calendar con las fechas en tus posts. Un sistema que permite darle un aspecto diferente a tu wordpress. En WpBeginner dán un paso más y usando la CSS Sprites genera un elegante sistema que se basa en desplazarse por encima de una imágen para mostrar la fecha.

dates-css-sprites-large
(Ver Imagen)

Como vemos en la imágen, tenemos las fechas desde 2009 a 2014 y con el siguiente código CSS podremos mostrar el año que deseemos.

/*Date Sprite */
.postdate {
position: relative;
width: 66px;
height: 60px;
float: left;
}
.month, .day, .year {
position: absolute;
text-indent: -1000em;
background-image: url(images/date_img.png);
background-repeat: no-repeat;
}
.month { top: 10px; left: 0; width: 33px; height: 30px;}
.day { top: 30px; left: 0; width: 33px; height: 30px;}
.year { bottom: 0; right: 13px; width: 20px; height: 60px;}

.m-01 { background-position: 0 0px;}
.m-02 { background-position: 0 -30px;}
.m-03 { background-position: 0 -62px;}
.m-04 { background-position: 0 -94px;}
.m-05 { background-position: 0 -125px;}
.m-06 { background-position: 0 -155px;}
.m-07 { background-position: 0 -185px;}
.m-08 { background-position: 0 -217px;}
.m-09 { background-position: 0 -248px;}
.m-10 { background-position: 0 -279px;}
.m-11 { background-position: 0 -310px;}
.m-12 { background-position: 0 -341px;}

.d-01 { background-position: -51px 0;}
.d-02 { background-position: -51px -27px;}
.d-03 { background-position: -51px -57px;}
.d-04 { background-position: -51px -91px;}
.d-05 { background-position: -51px -122px;}
.d-06 { background-position: -51px -151px;}
.d-07 { background-position: -51px -185px;}
.d-08 { background-position: -51px -214px;}
.d-09 { background-position: -51px -249px;}
.d-10 { background-position: -51px -275px;}
.d-11 { background-position: -51px -309px;}
.d-12 { background-position: -51px -338px;}
.d-13 { background-position: -51px -373px;}
.d-14 { background-position: -51px -404px;}
.d-15 { background-position: -51px -436px;}
.d-16 { background-position: -51px -462px;}
.d-17 { background-position: -100px -0px;}
.d-18 { background-position: -100px -27px;}
.d-19 { background-position: -100px -57px;}
.d-20 { background-position: -100px -91px;}
.d-21 { background-position: -100px -122px;}
.d-22 { background-position: -100px -151px;}
.d-23 { background-position: -100px -185px;}
.d-24 { background-position: -100px -214px;}
.d-25 { background-position: -100px -249px;}
.d-26 { background-position: -100px -275px;}
.d-27 { background-position: -100px -309px;}
.d-28 { background-position: -100px -338px;}
.d-29 { background-position: -100px -373px;}
.d-30 { background-position: -100px -404px;}
.d-31 { background-position: -100px -436;}

.y-2009 { background-position: -150px 0;}
.y-2010 { background-position: -150px -60px;}
.y-2011 { background-position: -150px -120px;}
.y-2012 { background-position: -150px -180;}
.y-2013 { background-position: -150px -240px;}
.y-2014 { background-position: -150px -300px;}

El código HTML encargado de mostrar las imágenes se basa en el uso de clases que indicarán que porción de imágen hay que mostrar.

<div class="postdate">
<div class="month m-<?php the_time("m") ?>"><?php the_time("M") ?></div>
<div class="day d-<?php the_time("d") ?>"><?php the_time("d") ?></div>
<div class="year y-<?php the_time("Y") ?>"><?php the_time("Y") ?></div>
</div>

El resultado es que mediante la carga de una única imágen disponemos de todas las fechas posibles entre estos 5 años y solo cambiando las clases de los hijos del elemento .postdate podremos mostrar una fecha u otra.

Wordpres para Android oficial liberado

2 feb

+ 8

WordPress ha anunciado hoy que la versión oficial que nos permitirá publicar desde nuestros Android’s se puede descargar y empezar a usar. Al igual que hizo para el iPhone y los terminales Symbian.

postimg
(Ver Imagen)

Para los usuarios que hemos usado WpToGo, nos sonará bastamte ya que se ha usado como base para esta nueva versión, añadiendo una serie de nuevas mejoras como:

  • Creación y mantenimiento de páginas
  • Comentarios con imágenes de Gravatar
  • Posibilidad de responder comentarios

Continua —>

Primeras imágenes de WordPress 3.0 Multisite

20 ene

+ 17

La nueva versión de WordPress se está perfilando, y el cierre de WordPress MU es la muestra del camino que se pretende seguir, una versión unificada que permita disponer de las ventajas de MU sobre un único WordPress. De ahí que las siguientes imágenes de la versión 3.0 Multisite, nos recuerden tanto a WordPress MU.

wordpress-3.0-network-settings
(Ver Imagen)

Podemos ver la configuración de los diferentes blogs que podemos tener en la misma instalación de WordPress. Nunca he sido partidario de que unieran las dos plataformas, pero visto que lo van a hacer igualmente habrá que ir buscándole la gracia.

Deshabilitar el editor HTML de nuestro WordPress

19 ene

+ 7

Aunque sin él yo no podría escribir mis artículos, es posible deshabilitar el editor HTML de nuestro WordPress de una forma sencilla con alguna de estas opciones:

1) CSS: La opción con más estilo (¿lo pillais? :P)

Sin duda se trata de la solución más rápida y sencilla ya que simplemente tendremos que añadir un estilo CSS al panel de administrador.

// Añadir el CSS directamente
function removeHTMLEditorCSS(){
 echo '<style type="text/css">#editor-toolbar #edButtonHTML, #quicktags {display: none;}</style>';
}

add_action('admin_head', 'removeHTMLEditorCSS');

// Añadir un fichero CSS externo
fichero: removeHTMLEditor.css
#editor-toolbar #edButtonHTML, #quicktags {display: none;}

wp_register_style('removeHTMLEditorCSS', '/ruta/css/removeHTMLEditor.css');
wp_enqueue_style('removeHTMLEditorCSS');

2) Javascript: La más rápida

Desde Javascript podemos borrar directamente el botón y no permitir usar esta opción:

function removeHTMLEditorJS(){
 echo 'jQuery(document).ready(function($) {
         $("#edButtonHTML").remove();
       });';
}

add_action('admin_footer', 'removeHTMLEditorJS');

3) PHP: La más limpia

En las dos anteriores, aunque son efectivas, dejamos la opción de recuperar la opción directamente desde el mismo navegador, desde PHP podemos eliminar el botón dejando la opción perfectamente deshabilitada.

function my_default_editor() {
 $r = 'tinymce'; // html or tinymce
 return $r;
}
add_filter( 'wp_default_editor', 'my_default_editor' );

// Versión reducida
add_filter( 'wp_default_editor', create_function('', 'return "tinymce";') );

Conclusión

Siempre que puedas estas cosas, deberían ir en un fichero de configuración alojado en el servidor y todas las opciones son igual de válidas.