Tutorial que nos muestra como obtener el huso horario según una latitud y logitud. Para obtener el dato, hace uso de el API de Google Maps y GeoNames.org. Además ofrece la parte PHP y la parte Javascript (realizada en Mootools).
Es un script interesante para aquellas aplicaciones que obtiene datos (introducidos por el usuario, por ejemplo) de diferentes partes del mundo. Getting Time Zone from Latitude & Longitude
Vía / PHPDeveloper.org
Cuando desarrollamos una aplicación web, algo muy importante es separar la lógica de la aplicación de la presentación. En el siguiente artÃculo, nos comentan como hacerlo mediante PHP y el sistema de plantillas Smarty.
Primero nos explica la direfencia entre la lógica de aplicación, la cual se encarga de las operaciones como acceso a base de datos, validación de formularios, de la lógica de plantillas, que es la que se preocupa únicamente de mostrar la información.
Dentro de la lógica de aplicación nos tenemos que ocupar de la inicialización y configuración de la lógica de plantillas:
<?php
$smarty = new Smarty();
$smarty->display('index.tpl');
?>
Hay que tener cuidado de no cometer el error de en la plantilla modificar el formato del texto, por ejemplo quitarle espacios u otras cosas que corresponden a la lógica de aplicación.
Os recomiendo el artÃculo, porque viene muy claramente explicado, con ejemplos y nos puede ser de mucha ayuda.
Y por último, ya no solo en plan web 2.0, sino en plan lo último de lo último, lo haremos usando la librerÃa Prototype. Que la verdad sea dicha, no se trata de reinventar la rueda.
Cuando creamos un custom post type e incluimos sus propias taxonomias, solemos necesitar añadir en el menú enlaces a diferentes taxonomías. Hay plugins que te añaden esa opción, pero realmente es tan sencillo como añadir este código a tu functions.php.
PHP_Depend es una adaptación de JDepend que permite hacer un estudio de la calidad de tu diseño en términos de reusabilidad, extensibilidad y mantenibilidad.
Todos es hechos están influidos por las dependencias entre los paquetes y PHP_Depend visualiza en un gráfico y con un XML todas las dependencias. PHP_Depend
No es la primera vez que me toca buscar malware en algún WordPress, y la verdad, suele ser un dolor de cabeza. Básicamente usan dos funciones: eval y base64_decode. Con eval nos meterán el código malicioso, que estará codificado en base64 para evitar que lo encontremos fácilmente.
Si tenéis acceso al SSH del servidor, una llamada a find . -name '*.php' -exec grep -l 'base64' {} \; suele bastar para encontrar este tipo de llamadas, o buscar eval en vez de base64.
Desgraciadamente esto no siempre funciona, ya que la función eval puede estar codificada de la siguiente forma:
Otro punto a tener en cuenta es la posibilidad de que hayan modificado el código de nuestro WordPress, lo cual se puede solucionar reinstalando el WP desde el admin. Aunque también pueden haber modificado el wp-config.php e incluir un fichero php que aparenta ser de WP (normalmente metindo en la carpeta wp-includes) pero que no lo es. Por lo cual es recomendado comprobar el wp-config.php con cualquier versión en local.
A parte de todo esto, es importante el tema de los permisos de los ficheros, etc…
Actualización 29/05/2015: también es aconsejable buscar esta cadena \142\x61\163\145\66\x34\x5f\144\x65\143\x6f\144\145, ya que al hacer un echo nos devuelve la función base64_decode.
Actualización 02/07/2015: buscar también la cadena \x65\x76\x61\x6c, ya que devuelve la función eval.
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' );