Aprovechando Slack para tus Notificaciones de WordPress

En el meetup hemos visto como aprovechar la funcionalidad de WebHooks de Slack para realizar llamadas desde WordPress y enviar mensajes a Slack. Con esta funcionalidad podemos evitar el uso de correos electrónicos, ademas tener las notificaciones en Slack en tiempo real y vía Push en nuestros teléfonos con su aplicación Movil.

Son muchas las ventajas que podemos obtener de ellos, ademas de hacer una sobre escritura de las funciones de WordPress que envían correos electrónicos aprovechando la carga previa de los plugins de WordPress también encontramos que podemos enviar mensajes desde diferentes aplicaciones e incluso desde el servidor con cUrl

He preparado dos ShellScripts que permiten monitorizar la carga del servidor y realizar un backup de base de datos con push via git del repositorio con aviso a Slack una vez completado. Queda de parte de nuestra imaginación todo lo que podemos programar y construir con Slack.

Slack & WP

WooCommerce desde otro punto de vista

A continuación dejo los datos del Meetup en el que dí la charla el día 02-03-2017. Muchas gracias a todos los asistentes.

Y en especial muchas gracias a SiteGround por dejarnos el espacio y prepararnos las cervezas para después 😉

==============================================

Charla: WooCommerce desde otro punto de vista

Más allá de la instalación y configuración de WooCommerce, veremos aspectos buenos y no tan buenos de la herramienta número uno en ecommerce para WordPress: WooCommerce.

Aspectos que influyen a todo el equipo que trabaja con esta herramienta, desde el equipo técnico, pasando por los usuarios backoffice, hasta el usuario final; trucos, seguridad, mejoras, puntos débiles, plantillas, extensiones, plugins, … .

En resumen, WooCommerce desde otro punto de vista, el que no suele venir en los primeros resultados de Google.

Pablo Poveda Ortega

Trabajando en proyectos web desde 2009. Ingeniero informático por la Universidad de Alicante, programando en tecnología LAMP desde 2009 y en el último año y medio en stack MEAN.

He trabajado para grandes y pequeñas cuentas, en proyectos de cualquier índole. Muchos de los proyectos en los que he trabajado ha sido sobre WordPress, en especial, los últimos dos años, gestionando una red de WordPress de más de 150 proyectos web con WooCommerce, en los que he podido obtener mucha experiencia.

Diapositivas de la charla

 

Vídeo: https://www.facebook.com/fernando.puente/videos/vb.1307718135/10212369679779580/?type=3&theater

Mostrar campos personalizados ACF en front sin modificar las plantillas

Muchas veces nos hemos encontrado con el gran problema que nos plantean muchos clientes: quieren que al cambiar la plantilla, no cambie el site. Y muchos diseñadores también se encuentran con el problema de que no tienen conocimientos suficientes de PHP como para poder hacer un sencillo listado de Custom Fields en una página o una ficha concreta de un campo personalizado. En la charla que dimos el 16 de febrero dábamos un solución muy sencilla a este tipo de cuestiones.

Como la charla fue una demo in situ de cómo crear un tipo personalizado e insertarlo en una página estática, he escrito un artículo extenso con capturas de pantalla incluidas en el que se explica cómo, con los plugins ACF, ACF Custom Type y Custom Content Shortcode podemos conseguir con muy poco esfuerzo sacar un listado de libros en este caso, incluyendo un campo fecha. Básicamente se trata de aprender a usar los shortcodes que nos brinda Custom Content Shortcode para poder mostrar en entradas y páginas estáticas la información recogida en ACF. Más información en este enlace

Creación de shortcodes para que los use “el Cliente”

Hace unas semanas me liaron para dar una charla así que elegí un tema con el que me había estado peleando unos días antes: Creación de shortcodes para que lo use “El Cliente”.

Lo primero es lo primero, ¿qué son los shortcodes?

Básicamente son “llamadores” de funciones que se utilizan en el contenido de nuestras páginas y entradas. Para eso utilizamos los corchetes como indicadores de que lo que hay dentro es un shortcode:  [soyunshortcode]

Hay varios tipos de shortcodes: simples, con atributos y con contenido.

La creación será básicamente lo mismo (con pequeñas diferencias) en nuestro functions.php mediante la función add_shortcode. Con esta función lo que vamos a hacer va ser definir el nombre del shortcode (lo que irá entre los corchetes) y la función que WP ejecutará cuando se lo encuentre.

En el caso de un shortcode simple, nuestra función no necesitará de ningún parámetro de entrada, y lo que nos devuelva será lo que se “pintará” en nuestra entrada. Mientras que si queremos añadir parámetros, tendremos que especificarlos como atributos de nuestro shrotcode. En nuestro caso, nuestros shortcodes serán [elshortcode] y [conatributos] respectivamente:

add_shortcode('elshortcode', 'elshortcode_shortcode_function');

function elshortcode_shortcode_function() {
   $salida = '<div style="background: red;">Hola que tal…</div>';

   return $salida;
}
add_shortcode('constaributos', 'conatributos_shortcode_function');

function conatributos_shortcode_function($atts, $content = null) {
   extract( shortcode_atts(array('titulo' => '',), $atts ));

   $salida = '<div>';
   if($titulo)
      $salida .= '<h2>'.$titulo.'</h2>';

   $salida .= $content.'</div>';

   return $salida;
}

La función shortcode_atts() es similar a array_merge(): fusiona la segunda lista de argumentos en la primera. La diferencia es que se fusiona sólo las claves presentes en el primer argumento. Extract () toma las claves del array, las define como nombres de variables y sus valores como valores de variable.

Los shortcodes con contenido tienen “cierre” como en las etiquetas HTML
Si queremos que el contenido ejecute posibles shortcodes, lo hacemos con la función do_shortcode($content). En este caso sería de la siguiente forma:

[concontenido]Mi contenido dentro del shortcode[/concontenido]

add_shortcode('concontenido', 'concontenido_shortcode_function');

function concontenido_shortcode_function($atts, $content = null) {
   extract( shortcode_atts(array('titulo' => '',), $atts ));

   $salida = '<div>';
   if($titulo)
      $salida .= '<h2>'.$titulo.'</h2>';

   $salida .= do_shortcode($content).'</div>';

   return $salida;
}

Ahora que ya sabemos lo que son, y como crear los shortcodes, vamos a ver un poquito en profundidad el editor TinyMCE de WordPress, que es el editor WYSIWYG (What you see is what you get) que viene por defecto.

El editor TinyMCE es un plugin que puede usarse fuera de WordPress, que tenemos integrado en el framework. Gracias a este plugin, podemos poner negritas, cambiar alineaciones, etc.

Por defecto, se han eliminado algunos botones del editor.
Si queremos que aparezcan en la primera línea, utilizamos el filtro mce_buttons o ponemos añadir una tercera línea con mce_buttons_3. El máximo de líneas para el TinyMCE en WordPress es de 4
Para el orden podemos utilizar array_unshift, para añadirlos al inicio, array_push para ponerlos al final o incluso usar array_splice.

En nuestro ejemplo vamos a añadir los botones en la segunda línea:

add_filter('mce_buttons_2', 'botones_extra_editor');

function botones_extra_editor( $buttons ) {
   array_unshift( $buttons, 'styleselect' );
   array_unshift( $buttons, 'fontsizeselect' );
   array_push($buttons, 'fontselect');

   return $buttons;
}

Otros botones que se podrían añadir: backcolor, newdocument, charmap, hr, etc… Se puede encontrar más información en la documentación de TinyMCE.

Si quisiéramos eliminar botones utilizaríamos el mismo filtro pero hacemos unset($buttons[3]), siendo3 la posición en la que aparece el botón en el editor que queremos eliminar.

Además de los botones, también podemos añadir estilos personalizados a nuestro editor, como se explica en el Codex. Sería algo así:

add_filter('tiny_mce_before_init', 'mi_mce_mod');

function mi_mce_mod( $init ) {

   $style_formats = array (
     array( 'title' => __('H1 Page Title', 'understrap'), 'block' => 'h1', 'classes' => 'page-title' ),
     array( 'title' => __('Color button', 'understrap'), 'inline' => 'a', 'classes' => 'colorbutton' ),
   );

   $init['style_formats'] = json_encode( $style_formats );

   $init['style_formats_merge'] = true;

   return $init;

}

Le añadimos una función callback a la inicialización del editor.
La opción block, sustituye los bloques del elemento seleccionado mientras que inline, lo añade. Las classes se ponen separadas por comas.

Si ponemos $init[‘style_formats_merge’] a false sólo mostrará los estilos que hemos añadido aquí.

Y después de esta introducción, ya podemos meterno de lleno en la creación de nuestros botones personalizados para el TinyMCE, para ello usamos el hook admin_head y la función par ello sería:

add_action('admin_head', 'mis_botones');

function mis_botones() {
   if ( !current_user_can( 'edit_posts' ) && !current_user_can( 'edit_pages' ) ) {
     return;
   }

   if ( get_user_option( 'rich_editing' ) !== 'true' ) {
     return;
   }

   add_filter( 'mce_external_plugins', 'nuevos_botones' );
   add_filter( 'mce_buttons', 'registrar_botones' );
}

En esta función lo que hacemos es comprobar los permisos del usuario y la configuración. Si se cumplen las condiciones, añadimos los dos filtros:

function nuevos_botones( $plugin_array ) {
   $plugin_array['miboton'] = get_template_directory_uri().'/js/tinymce_buttons.js';
   $plugin_array['miboton2'] = get_template_directory_uri().'/js/tinymce_buttons.js';
   return $plugin_array;
}

function registrar_botones( $buttons ) {
   array_push( $buttons, 'miboton', 'miboton2');
   return $buttons;
}

El primero de los filtros lo utilizamos para especificar la localización del script con nuestro plugin, mientras que el segundo se utiliza para añadir nuestro botón al editor.

El código para crear y definir las acciones de nuestros botones se encuentra en archivo tinymce_buttons.js así que vamos a ver cómo se crearía un botón sencillo:

(function() {
   tinymce.PluginManager.add('miboton', function( editor, url ) {
     editor.addButton( 'miboton', {
       text: 'Mi botón',
       icon: false,
       onclick: function() {
         editor.insertContent('Qué pasa tronquitos!!');
       }
     });
   });
})();

En este caso, lo que mostrará el editor será un botón con una etiqueta de texto, definido en la propiedad “text”. Si lo que queremos es mostrar un icono, sustituimos “text” por “title” y a “icon” le damos el valor que queramos para nuestro icono, que en este caso serán los dashicons de WP. Así si le damos el valor “wp_code” nuestro botón se verá así:  

El texto que hemos definido en “title” aparecerá como tooltip del botón. También podemos empezar a trabajar con los shortcodes, básicamente añadiéndolo al texto que insertamos como contenido.

(function() {
   tinymce.PluginManager.add('miboton', function( editor, url ) {
     editor.addButton( 'miboton', {
       title: 'Mi botón',
       icon:"wp_code",
       onclick: function() {
         editor.insertContent('[elshortcode]');
       }
     });
   });
})();

Hay otras formas de customizar el icono de nuestro botón, podemos utilizar el atributo image o añadirle otras clases (que es el valor de “icon”). Así, si le añadimos el valor “icon mi-icono” y cargamos nuestros estilos en la parte de administración podríamos personalizarlo totalmente:

add_action('admin_enqueue_scripts', 'extra_mce_css');

function extra_mce_css() {

   wp_enqueue_style('extra_mce', get_template_directory_uri().'/css/mimce.css');

}

Y en nuestro CSS le damos los estilos necesarios al botón:

i.mce-i-icon {

    font: 400 20px/1 dashicons;

    padding: 0;

    vertical-align: top;

    speak: none;

    -webkit-font-smoothing: antialiased;

    -moz-osx-font-smoothing: grayscale;

    margin-left: -2px;

    padding-right: 2px

}

i.mi-icono {

    background-image: url('mi-icono-customizado.png');

}

Ahora bien, para poder utilizar nuestros botones y nuestros shortcodes de la forma más óptima vamos a crear un popup de opciones para que el usuario pueda añadirle todos los valores necesarios a nuestro shortcode sin tener que escribirlos, simplemente dándole valores a las opciones que se le muestren en el popup.

(function() {
  tinymce.PluginManager.add('miboton2', function( editor, url ) {
    editor.addButton( 'miboton2', {
      title: 'Mi botón 2',
      icon: 'bubble',
      onclick: function() {
        editor.windowManager.open( {
          title: 'Título del shortcode',
          body: [{
            type: 'textbox',
            name: 'titulo',
            label: 'Atributo titulo'
          }],
          onsubmit: function( e ) {
            editor.insertContent( '[conatributo titulo="' +e.data.titulo+ '"]');
          }
        });
      }
    });
  });
})();

Este código nos mostraría un popup sencillo con un único campo de texto, que se corresponde con uno de los tributos del shortcode y que el usuario rellenará. Así, si tenemos shortcodes mucho más complejos, especificar el valor de estos atributos se realiza de forma rápida y sencilla para el usuario.

minipopup

A continuación os muestro lo que sería un botón más complicado, con muchas más opciones en el popup y la posibilidad de añadir el contenido seleccionado.

(function() {

  tinymce.PluginManager.add('miboton', function( editor, url ) {

    editor.addButton( 'miboton', {

      title: 'Shortcode con atributos',

      icon: 'icon mi-icono-customizado',

      onclick: function (){

            var win = editor.windowManager.open( {

              title: 'Opciones del shortcode',

              body: [

                {

                  type: 'textbox',

                  name: 'imagen',

                  label: 'Imagen',

                  value: '',

                  classes: 'imgblock_input_image',

                },

                {

                  type: 'button',

                  name: 'imgblock_upload_button',

                  label: '',

                  text: 'Subir imagen',

                  classes: 'imgblock_upload_button',

                },

                {

                  type: 'textbox',

                  name: 'multilinea',

                  label: 'Pseudo textarea',

                  value: 'Aquí puedes poner un montón de texto',

                  multiline: true,

                  minWidth: 300,

                  minHeight: 100

                },

                {

                  type: 'colorpicker',

                  label: "Color de fondo",

                  name: "bgcolorpicker",                                   

                  onchange: function(e) {                  

                    win.find('#fondo').value(this._color.toHex());                                      

                  }

                },

                {

                  type: 'textbox',                   

                  name: 'fondo',

                  label: ' ',                  

                  size: 6,

                  maxLength: 6,

                  tooltip: 'Color de fondo en Hexadecimal',

                },

                {

                  type   : 'checkbox',

                  name   : 'miniatura',

                  label  : 'Usar miniatura de la imagen',

                  text   : 'Miniatura',

                  checked : false

                },                

                {

                  type: 'listbox',

                  name: 'posicion',

                  label: 'Posicion de la imagen',

                  'values': [

                    {text: 'Izquierda', value: 'left'},

                    {text: 'Centrada', value: 'center'},

                    {text: 'Derecha', value: 'right'},                    

                  ],

                  value : 'left'

                }

              ],

              onsubmit: function( e ) {                

                var selectedText = tinymce.activeEditor.selection.getContent({format : "html"});

                editor.insertContent( '[imgblock imagen=' + e.data.imagen + ' miniatura="' + e.data.miniatura + '"  posicion="' + e.data.posicion + '" fondo="'+e.data.fondo+'"]'+selectedText+'[/imgblock]');

              }

            });

          }

    });

  });

})();

En el código anterior lo que hemos hecho ha sido añadir muchas más opciones a nuestro popup, de las cuales hay dos que merecen especial consideración ya que requieren un pequeño trabajo extra para que funcionen según nuestras necesidades.

popup

Para el caso de la imagen, lo que hemos hecho ha sido utilizar dos elementos propios del TinyMCE, el textbox llamado “imagen” y el button “imgblock_upload_button”. Por si solos estos dos elementos no nos proporcionarán la posibilidad de utilizar el uploader propio de WordPress, para ello vamos a añadir un poco más de código javascript con lo que podremos obtener, bien la URL de la imagen o bien su ID (según nuestras necesidades):

jQuery(document).ready(function($){

  $(document).on('click', '.mce-imgblock_upload_button', upload_image_tinymce);

  function upload_image_tinymce(e) {

    e.preventDefault();

    var $input_field = $('.mce-imgblock_input_image');

    var custom_uploader =  wp.media({

      title: 'Añadir Imagen',

      button: {

          text: 'Añadir Imagen'

      },

      multiple: false

    });

    custom_uploader.on('select', function() {

      var attachment = custom_uploader.state().get('selection').first().toJSON();

      $input_field.val(attachment.id);

    });

    custom_uploader.open();

  }

});

Con el javascript que hemos añadido lo que hacemos es invocar al uploader propio de WP al hacer click en el botón de subir imagen, una vez seleccionada la imagen lo que le devolveremos a nuestro campo de texto será el id de la imagen subida.

El otro caso es nuestro colorpicker, TinyMCE nos proporciona un colorpicker totalmente funcional para que el usuario pueda seleccionar un color, pero en ningún momento puede ver de qué color se trata, o tiene opción de introducir ese dato manualmente. Por eso en este caso también utilizamos dos campos para realizar el trabajo: “bgcolorpicker” para seleccionar el color y “fondo”, el campo de texto en el que lo mostraremos y podremos modificar. En este caso vamos a utilizar un poco de código extra, ya que al asignarle todo el popup a una variable (win) podremos ver qué valor se ha seleccionado en el colorpicker mediante un evento onchange asociado al mismo. Luego lo único que hacemos es pasar ese valor a Hexadecimal y lo añadimos al campo de texto para que el usuario pueda verlo.

Para poder añadir el texto que se había seleccionado al hacer click en el botón, y poder añadir un shortcode que además de atributos utiliza el contenido hemos utilizado el método de TinyMCE:

tinymce.activeEditor.selection.getContent({format : "text"});

Si en lugar de format html utilizamos “text” obtendríamos el texto plano.

Como veis hay muchísimas opciones para elegir a la hora de darle a nuestros usuarios la posibilidad de seleccionar valores para los atributos de nuestros shortcodes, con un poco de investigación en la documentación de TinyMCE y algo de ayuda extra (sobre todo para esos “truquitos”) podemos presentarle al usuario final un montón de posibilidades a la hora de añadir contenido.

WP-CLI: Dispara tu productividad, simplifica tus rutinas

El pasado 1 de Diciembre tuve el gusto de dar una pequeña ponencia (charla) sobre como aumentar la productividad trabajando con WordPress y como simplificar determinadas rutinas usando la herramienta WP-CLI.

WP-CLI es una herramienta, línea de comandos (shell) que permite automatizar determinadas tareas WordPress tan sólo con una línea de código ejecutada en la terminal.

En la ponencia se explicó el objetivo claro de esta herramienta y como sacarle buen partido para aumentar la productividad diaria, simplificar rutinas y poder ganar tiempo para dedicarlo a cosas más importante. Se ejecutaron demos en directo que demostraban el potencial de la herramienta WP-CLI.

Os animo a que probéis WP-CLI y utilicéis esta herramienta para simplificar vuestras rutinas diarias.

Por último, gracias a los organizadores de WPMadrid y a SeAceptanIdeas, espacio coworking, por hacer posibles estos Meetup. Gracias

Adjunto la charla

Pablo Poveda Ortega

2º Global WordPress Translation Day

El pasado 12 de Noviembre de 2016 se celebró el segundo Global WordPress Translation Day.

El Global WordPress Translation Day es un evento que se celebra de forma global en todo el planeta, para traducir WordPress. Las comunidades locales de WordPress de todo el mundo se unen durante 24 horas para contribuir en la traducción de Plugins y Temas.

Unimos fuerzas las comunidades locales de Majadahonda, Villalba, Rivas-Vaciamadrid, Alcalá de Henares y Madrid para ayudar a hacer más accesible WordPress para más gente en más idiomas.

Fernando Tellado ejerció de maestro de ceremonias y nos explicó lo fácil que es ayudar a la comunidad contribuyendo en la traducción de WordPress.

Algunos datos sobre el evento a nivel global:

Más información en la página oficial: https://wptranslationday.org/ y en el post que escribió Rafa Poveda sobre los logros conseguidos: https://es.wordpress.org/team/2016/11/12/wp-translation-day-el-dia-de-las-traducciones/

Cómo hacer un sitio web WordPress descentralizado

El pasado 3 de noviembre estuve en Madrid de camino a la WordCamp Santander, y tuve la ocasión de hacer un meetup para mostrar como hacer un sitio web WordPress descentralizado.

PoP – “Plataform of Plataforms” es un framework de WordPress de software libre, que sirve para construir sitios web WordPress de tipo Single-Page Application, y permite que cualquier sitio web de WordPress pueda consumir la información de otros sitios web. Esto permite la descentralización de las fuentes de datos de un sitio web, la agregación de datos de múltiples sitios web formando una red social descentralizada, la fácil implementación de micro-servicios y la integración con contenedores.

PoP combina WordPress y Handlebars en un framework con arquitectura MVC, en la cual WordPress es el model/back-end, templates de Handlebars es el view/front-end, y el Pop engine es el controller. Actuando como el controlador, PoP intercepta los resultados de la consulta de datos de WordPress y genera una respuesta en JSON, la cual es alimentada a Handlebars quien últimamente lo transforma en HTML.

Para demostrar el framework, los participantes fueron capaces de postear contenido en un sitio web descentralizado.

Por último dar las gracias a Félix por organizarlo y a SeAceptanIdeas por ceder el espacio para la reunión.

Aquí podéis encontrar las slides:

WP REST API: Esa gran desconocida

Ayer nos reunimos de nuevo gracias a la gente de Campus Madrid, que nos prestó sus impresionantes instalaciones para celebrar un nuevo Meetup de WordPress Madrid. También queremos agradecer la presencia y el trabajo de NextStudio, que de forma desinteresada va a producir el vídeo de este Meetup.

En esta ocasión, el tema a tratar fue la WordPress REST API. En la presentación expuse los conceptos básicos sobre REST APIs, el estado actual del desarrollo de esta API, qué consecuencias tendrá su integración en el core de WordPress y, sobre todo, qué podemos hacer actualmente con ella, cómo empezar a utilizarla y extenderla y como consumirla.

También quiero agraceder su presencia a todos los asistentes y animar al resto de miembros de Meetup WordPress Madrid a participar de forma activa en la comunidad.

Lamentamos comunicar que por un problema técnico no hemos podido recuperar la grabación. No obstante actualizamos la entrada con la presentación y en enlace al repositorio del ejemplo que vimos en el meetup:

Meetup REST API

https://bitbucket.org/davidnaviaweb/rest-api-plugin

Llamada a ponentes para el Meetup de WordPress Madrid

Comenzamos un curso nuevo con más ganas que nunca, por dos motivos. El primero es que a lo largo de este año las meetups han empezado a celebrarse cada vez con más regularidad y más asistentes, y queremos seguir por ese camino. El segundo es que en Abril del año que viene tendrá lugar por primera vez WordCamp Madrid, y nos gustaría involucrar al mayor número de personas posible.

Nuestro objetivo es ampliar los temas y los perfiles de los asistentes a nuestras meetups. Hasta ahora nos hemos centrado mucho en cuestiones técnicas y de desarrollo, pero nos gustaría contar con todos aquellos que venís del mundo del diseño, del marketing, del SEO, del comercio electrónico o del blogging y nos contaseis vuestra experiencia como usuarios de WordPress. Para ello no hace falta que seáis expertos en ninguna de esas áreas, estamos seguros de que si lleváis un tiempo usando WordPress tendréis un montón de cosas que compartir con los demás.

Además de variar los contenidos de las ponencias nos gustaría introducir novedades en los formatos de las mismas. Puede que lo que queráis plantear encaje mejor en un formato de mesa redonda, o de debate, no tiene por qué ser una ponencia clásica. Aquí podéis ver un listado completo de los temas y formatos que se han ido sugiriendo hasta ahora.

Para ello os animamos, si no lo habéis hecho ya, que os deis de alta tanto en el meetup de Madrid cono en el canal de Slack. Si tenéis ya una idea que os gustaría proponer, podéis hacérnosla llegar a través del canal de Slack o dejando un comentario en este post.

También nos ayudaría conocer vuestras preferencias respecto a días, lugares y horarios. Para ello podéis rellenar este formulario:

¿Qué día de la semana prefieres?
LunesMartesMiércolesJuevesViernesSábadoDomingo

Recordad que la comunidad la hacemos entre todos. ¡Os esperamos!

Reunión sobre la comunidad WordPress Madrid temporada 2016-2017

En el último meetup de la comunidad de WordPress Madrid nos juntamos para tomar ideas de cara a futuro, tanto del formato de las charlas como de las temáticas de las mismas.

FORMATOS

Charla

Formato en el que una persona expone un tema concreto

Showcase

En este tipo de formato se busca que alguien nos hable de su caso de éxito. Una exposición en la que comparta su experiencia y en la que los asistentes puedan participar y resolver sus dudas

Talleres

En los talleres los asistentes podrán llevarse su equipo y practicar in situ sobre la temática correspondiente

Contributors Days

Ocasionalmente organizaremos “mini Contributors Days”, donde aprenderemos a contribuir en WordPress (traducciones, WordPress TV, soporte, revisión de temas y plugins, etc…)

Mesa redonda

Formato en el que varias personas debaten en torno a un tema.

Q&A

Formato en el que varias personas se ponen a disposición de los asistentes para resolver cualquier duda o pregunta relativa a un tema concreto

 

CHARLAS

Además surgieron varios temas de interés para futuras charlas. Estos temas están huérfanos de un padre o madre que se anime a hablar sobre ellos, así que anímate y sugiere un tema y una fecha a través de la página de meetup o el Slack de WordPress Madrid.

Taller de Gantry
Meetup en la que aprenderemos a usar Gantry

Taller sobre plugins
Cómo crearlos, cómo subirlos, i18n, buenas prácticas

Taller sobre temas
Cómo crearlos, cómo subirlos, i18n, buenas prácticas

Calypso
¿Qué es Calypso y cómo trabajar con él?

WooCommerce
Instalación, configuración, trucos, plugins imprescindibles

Accesibilidad
¿Qué es la accesibilidad? ¿Qué implica? ¿Por qué es importante?

Legalidad
¿Qué aspectos legales debe cumplir una web: Aviso Legal, ley de Cookies?

Caché
Cómo puede ayudarnos un buen sistema de caché para que nuestra web vuele y porqué es importante

Trucos WordPress
WordPress tiene muchas funcionalidades que quizá desconocías y que pueden serte de utilidad. Revisiones, editor WYSIWYG

Debug y escalabilidad
Cómo depurar tu WordPress. Pensando a lo grande

Hosting
¿Qué debes tener en cuenta a la hora de contratar un hosting? ¿Por qué un buen hosting es importante?

Ajax
Cómo hacer peticiones por AJAX en WordPress

Seguridad
¿Qué podemos hacer para proteger nuestro WordPress?

DIVI 3.0
Una visión a la nueva versión de DIVI, uno de los temas más populares de WordPress

De PSD a WordPress
Cómo pasar un diseño a un tema de WordPress

Developers Tips & Tricks (Day)
Un día en el que podamos reunirnos y aprender cómo trabajan o resuelven ciertas situaciones otros desarrolladores

REST API
¿Qué es? ¿Cómo funciona? Y ¿Cómo podemos sacarle el máximo partido?

Mesa redonda sobre ACF, Pods, Metabox y demás.
¿Cómo organizar tu modelo de datos a WordPress?

WordPress como intranet/extranet
Convierte tu WordPress en una intranet/extranet corporativa

Epic Fails
Reconozcámoslo, todos hemos cometido errores alguna vez. De los errores se aprende, ¿Por qué no pasar un rato distendido con el resto del grupo compartiendo estas experiencias?