Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2 Requisitos 4
3 Creando un shortcode 6
4 Creando un widget 8
Desarrollo de plugins | TELEFNICA // 3
2 Requisitos
2.1 Consideraciones previas
Cuando creamos un plugin debemos elegir un nombre que explique Aunque un plugin puede contar de un nico archivo, lo normal es
su funcin pero que no tenga ya otro plugin de los disponibles que el plugin se estructure en una carpeta que contenga a su vez
en el repositorio oficial. De lo contrario WordPress pensar que otras con los diferentes archivos (.php, .css, .js, imgenes...).
estamos usando ese otro plugin (y puede intentar actualizarlo). Una
solucin puede usar incluir un nombre o alias de desarrollador que
diferencie nuestros plugins del resto. Licencia
3 Creando un shortcode
Vimos anteriormente como crear tipos de post, taxonomas y [nombre_shortcode clave1="valor" clave2="otro" ...]
campos personalizados. Podremos usar plugins que aadan esa
funcionalidad. En este ejemplo, veremos un plugin que genera un El segundo argumento ser el contenido encerrado, en caso de que
shortcode4. Un shortcode es una etiqueta especial que los autores se use un shortcode de entrada y otro de salida (como si fuera una
pueden usar en el contenido de las entradas/pginas y que ser etiqueta HTML):
sustituida por el contenido que determinemos.
[nombre_shortcode]El contenido[/nombre_shortcode]
El autor solo necesita conocer el nombre del shortcode y escribirlo
entre corchetes ( [ ] ). El texto se guardar en la base de datos de la El tercer argumento ser el propio nombre del shortcode, que en
misma forma en la que lo escribi, pero al rescatar la informacin nuestro ejemplo no nos har falta.
pero al mostrar esa pgina al usuario en la parte pblica, ese
pequeo cdigo se sustituir por la cadena que devuelva la funcin function telwp_shortcode( $atts, $content=null )
que hayamos asociado5. Esa cadena puede incluir cdigo HTML,
{
por lo que los autores podrn aadir cualquier tipo de contenido sin
necesidad de saber siquiera HTML. $url = get_permalink( $post->ID );
$title = get_the_title( $post->ID );
La funcin que usemos en el shortcode recibir tres argumentos.
El primero, un array con los posibles atributos que se pasen en la $tweet = '<a class="twitter-share-button"
llamada:
href="http://twitter.com/home/?status=Recomendado:
4 https://codex.wordpress.org/Shortcode_API \'' . $title . '\' ' . $url . '">
https://developer.wordpress.org/plugins/shortcodes/ Compartir en Twitter</a>';
5 Es importante devolver la cadena y no imprimirla directamente con
una sentencia echo, ya que se mostrara antes que el contenido en return $tweet;
lugar de integrada en l
Desarrollo de plugins | TELEFNICA // 7
9 https://developer.wordpress.org/plugins/
6 https://developer.wordpress.org/reference/functions/add_shortcode/ 10 Puedes consultar la seccin Source File en la referencia de cada una
7 https://dev.twitter.com/web/tweet-button de sus funciones para ver en que archivo estn definidas sus clases
Para simplificar nuestro caso no hemos aadido cdigo Javascript por 11 https://codex.wordpress.org/Audio_Shortcode
lo que el enlace no tomar el aspecto del botn de twitter y el enlace 12 https://codex.wordpress.org/Caption_Shortcode
se abrir a pantalla completa y en la misma pestaa. 13 https://codex.wordpress.org/Embed_Shortcode
8 Twitter usa su propio acortador de urls por lo que cualquier enlace, 14 https://codex.wordpress.org/Gallery_Shortcode
independientemente de su longitud de caracteres, ocupar 23. 15 https://codex.wordpress.org/Video_Shortcode
https://support.twitter.com/articles/344685 16 https://codex.wordpress.org/Playlist_Shortcode
Desarrollo de plugins | TELEFNICA // 8
4 Creando un widget
Vamos a crear otro plugin. En esta ocasin generar un nuevo {
widget que podremos aadir a nuestras siderbars.
$widget_details = array(
WordPress cuenta con una clase para manejar widgets llamada 'classname' => 'telwp_widget',
WP_Widget y ubicada en wp-includes/class-wp-widget.php. Para
'description' => 'Solo un widget'
crear nuestro propio widget crearemos una clase que extienda de
ella. Bastar con sealar los parmetros bsicos de nuestro widget );
y pasrselos al constructor de la clase padre.
/**
* Back-end widget form.
*
* @see WP_Widget::form()
*
* @param array $instance Previously saved values from database.
*/
public function form( $instance ) {
// Muestra el ttulo o "New title" si no hay. esc_html "escapa" las posibles etiquetas HTML
$title = ! empty( $instance['title'] ) ? $instance['title'] : esc_html( 'New title' );
?>
<p>
// el campo for del label debe coincidir con el id del input
<label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>">Ttulo:</label>
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"
name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr(
$title ); ?>"> // variables: el id y nombre autogenerados para el campo input y el ttulo asignado antes
</p>
<?php
}
Desarrollo de plugins | TELEFNICA // 12
/**
* Sanitize widget form values as they are saved.
*
* @see WP_Widget::update()
*
* @param array $new_instance Values just sent to be saved.
* @param array $old_instance Previously saved values from database.
*
* @return array Updated safe values to be saved.
*/
public function update( $new_instance, $old_instance ) {
$instance = array();
$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title']
) : ''; // strip_tags: funcin de PHP para eliminar etiquetas HTML y PHP que pueda tener la cadena.
return $instance;
}
Si acudimos ahora a la seccin de widgets y aadimos nuestra en una variable23 y recorreremos para llenar nuestra lista. En caso
creacin, podremos definir un ttulo. form() se encarga de pintarlo y de que el array est vaco evitaremos mostrar siquiera el ttulo del
update() de procesarlo. widget.
Y al consultar el widget desde la parte pblica veremos el resultado A continuacin puedes consultar el cdigo modificado para
del mtodo widget() que muestra el ttulo y un saludo. Piensa que los tres mtodos: widget(), form() y update(). No hemos
ese saludo poda ser sustituido por cualquier cosa. De hecho es modificado el constructor, pero sera recomendable hacerlo para
lo que vamos a hacer ahora. Asegrate de comprender el cdigo cambiar la descripcin del widget por una que refleje su nuevo
realizado hasta ahora antes de continuar. comportamiento24.
Uno de los widgets por defecto de WordPress permite mostrar una Si comparas el resultado que se obtiene con nuestro cdigo con el
lista con los ttulos de ltimos posts. Vamos a crear un widget muy widget de WordPress "Entradas recientes" (Recent Posts) vers que
parecido pero que nos permita seleccionar los ltimos post pero de nosotros no hemos damos al administrador la opcin de mostrar
una categora determinada que podremos seleccionar entre las que las fechas de las entradas junto los ttulos. Puedes probar a aadir
tengamos definidas en nuestra web. esta y otras funcionalidades para hacer el plugin ms flexible25. Ten
en cuenta que el mismo plugin, con diferente configuracin, puede
Para hacer esto, usaremos una funcin llamada wp_dropdown_ ser usado ms de una vez en las diferentes reas de widgets.
categories22 que como su nombre indica nos crea un dropdown
(etiqueta "select" de HTML) con todas las categoras. Esta funcin
acepta un array con el que podremos definir muchos parmetros
del select que generar como el valor por defecto, o los atributos
'id' y 'name'.
return $instance;
}
La complejidad del cdigo depender de las tareas que queramos Recuerda que puedes consultar ms informacin y ejemplos
realizar en l26, pero para crear un widget basta con extender una sobre la API para manejar widgets est disponible en su seccin
clase y sobreescribir 4 mtodos (incluyendo el constructor). especfica de la documentacin oficial27