Últimamente no ando muy sobrado de tiempo, por lo que no posteo tanto como me gustaría, además, hay pocos temas que considere interesantes como para hacer un post, pero si son lo suficientemente interesantes para realizar un post rapidillo, a ser posible automático.
Es por ello que me he creado un plugin para WordPress, que cuando tenga tiempo lo puliré y publicaré, que me permite postear directamente desde Google Reader usando lo de “Enviar a”, vamos que con una llamada a una URL tipo http://sentidoweb.com/[path_seguridad]/[token]/${title}%20${source} publicaré directamente en mi blog, así podré pasaros posts que considere interesantes.
Ahora viene la parte más complicada, y digo complicada porque sinceramente he tenido que mirar el código porque algo me fallaba cuando seguía lo que decía la documentación.
El nombre del fichero JSON tiene el siguiente formato [dominio de traducción]-[idioma]-[handler del fichero].json, total nada.
Dominio será el que usemos para traducir, en el ejemplo sería mi-plugin:
__( 'Hola que tal', 'mi-plugin' );
Idioma es el código del idioma, en este caso es_ES
Y por último el handler del fichero es el primer parámetro que usamos en wp_enqueue_script
Lo podemos ver todo en un ejemplo final:
wp_enqueue_script(
'mi-plugin-handler', // El handler mencionado anteriormente
$blocks_script, // Nuestro path
[
'wp-i18n', // De referenciar al menos a wp-i18n
],
);
wp_set_script_translations( 'mi-plugin-handler, 'mi-plugin', plugin_dir_path( __FILE__ ) . 'languages' );
Me he encontrado con un problema con RevSlider y W3 Total Cache, cuando actualizo un slider no se renueva la caché. La verdad es que no me gusta nada RevSlider, y para colmo no hay ningún action que permita añadir funciones extra, por lo que para poder borrar la caché cuando se actualiza un slider, tengo que meter mano a la acción ajax:
add_action( 'wp_ajax_revslider_ajax_action', 'purge_cache', 1);
function purge_cache() {
// Me aseguro que sea cuando se actualiza el slider
if (isset($_POST['client_action']) && $_POST['client_action'] == 'update_slide') {
// Si está instalado el plugin
if( class_exists('W3_Plugin_TotalCacheAdmin') ) {
$plugin_totalcacheadmin = & w3_instance('W3_Plugin_TotalCacheAdmin');
// Borro toda la caché, seguro que hay un método que borra la página específica
$plugin_totalcacheadmin->flush_all();
}
}
}
Para poner WordPress en modo mantenimiento, cuando actualizamos el theme o plugins y nos va a llevar un tiempo, o en otra ocasión, tan solo tendremos que crear un fichero con nombre .maintenance en el raíz de WordPress.
Si además queremos mostrar un HTML específico, podemos crear el fichero /wp-content/maintenance.php que se cargará si existe.
Actualización 12/02/2015
El fichero .maintenance debe tener definida la variable $upgrading con un timestamp, según dice el código de WordPress, con el valor del momento en el que el fichero fue creado, pero luego viendo el código comprueba que hayan pasado 10 minutos. Yo en mi caso le he asignado el valor de time() y ya borraré yo el fichero cuando haya acabado.
El otro dÃa sacamos a la luz el plugin para WordPress Post2PDF y hoy vamos a explicar que es lo que hicimos para desarrollarlo.
El plugin consta de dos archivos principales (a parte de los de la librerÃa), el plugin en sà y un script que es llamado por el plugin que es el que se encarga de la exportación a formato PDF.
Hace bastante que no escribía, sobre todo por falta de tiempo, pero quería escribir sobre este pequeño truco de WordPress. Cuando añadimos una imagen destacada en un post de WordPress nos podemos encontrar con que la imagen ocupa todo el ancho (lo más normal) o que no ocupa tanto, con lo que nos encontramos que la imagen queda muy sola y el diseño queda feo.
Para solucionar esto, deberemos añadir un filtro, comprobar el tamaño de la imagen y el del ancho del contenido y en el caso de que creamos que es conveniente (por ejemplo la mitad del ancho del contenido) añadir una clase a la imagen:
function mi_post_thumbnail_html($html) {
// Se suele recomendar definir la variable $content_width para ocasiones como esta
global $content_width;
preg_match('#width="([^"]+)"#', $html, $s);
if (isset($s[1]) && $s[1] < $content_width/2) {
preg_match('#class="([^"]+)"#', $html, $c);
if (isset($c[1]) && strpos($c[1], "right") === FALSE) {
return str_replace('class="'.$c[1].'"', 'class="'.$c[1].' right"', $html);
}
}
return $html;
}
add_filter('post_thumbnail_html', 'mi_post_thumbnail_html');