Cuando se exporta la versión de desarrollo de WordPress a otro dominio, nos encontramos con el problema de las URLs. WordPress permite modificar las URLs fácilmente desde el wp-config mediante WP_HOME y WP_SITEURL. Desgraciadamente, WP puede estar lleno de URLs en la BD como en wp_options, o directamente en posts, …
Para solucionar esto existe un script que realizar esta tarea por nosotros directamente sobre la BD.
PHP viene por defecto configurado para desarrollo, pero en producción hay opciones que no son recomendables sobre todo por temas de seguridad. Cambiad en el php.ini las siguientes opciones para mejorar la seguridad en tu entorno de producción:
Desactiva el acceso a ficheros remotos: las funciones fopen, file_get_contents, y include permiten el acceso a ficheros remotos (http://host/..), lo cual puede dar problema en temas de seguridad. Si necesitas acceder a ficheros remotos puedes usar fsockopen o funciones de CURL.
allow_url_fopen = Off
Register globals: aunque ahora viene por defecto desactivado, en versiones anteriores de PHP, los parámetros de entrada se registraban como variables globales.
Modo seguro: PHP dispone de un modo seguro, en el que Apache solo puede acceder a ficheros de los que sea dueño, aunque nos puede dar problemas sobre todo cuando se trabaja en grupo, la tranquilidad que nos aporta pesa más que este inconveniente. Para ello usaremos una propiedad para que solo ejecute scripts que le pertenecen y otra permite acceso a los ficheros que pertenecen al grupo de Apache aun cual sea el dueño.
safe_mode = Off
safe_mode_gid = On
Acceso permitido a ficheros binarios: el modo seguro tampoco permite ejecutar ficheros binarios, pero se le puede indicar en que ruta si se pueden ejecutar.
safe_mode_exec_dir = /www/ejecutables
Acceso a variables de entorno: tampoco está permitido acceder a variables de entorno en el modo seguro, pero se puede inluir una lista (separada por comas) de prefijos que se permiten para estas variables.
max_execution_time = 30 ; Tiempo máximo de ejecución
max_input_time = 60 ; Tiempo máximo que trata la entrada
memory_limit = 16M ; Memoria máxima para la ejecución de un script
upload_max_filesize = 2M ; Tamaño máximo de un fichero para subir
post_max_size = 8M ; Tamaño máximo de un POST
Control de acceso a ficheros mediante Apache: aunque en este caso se debe configurar Apache, tampoco biene mal el contarlo. Se trata de evitar que Apache acceda a ficheros importantes, por ejemplo ficheros .inc, .sql.
<FilesMatch "\.(inc|.*sql)$">
Order allow,deny
Deny from all
</FilesMatch>
mod_top es una herramienta que nos permite monitorizar nuestras aplicaciones LAMP, ofreciendo un entorno similar al conocido comando top. La intención es dar soporte a PHP, Perl, Ruby, Python, mySQL, Postgres y Apache1+2 en Linux, pero actualmente solo da soporte a PHP4 y PHP5.
Con mod_top podrás:
Localizar cuellos de botella en tus aplicaciones.
Solucionar problemas de gran consumo de memoria.
Comprender el uso de CPU.
Diagnosticar causas de poco uso y gran uso de recursos.
WordPress 3.4 ha añadido la opción de theme customizer, la cual permite modificar las opciones del theme y darle el aspecto que deseas de forma muy visual y sencilla. En estos momentos, por lo que he podido ver, solo permite modificar el background y poco más. Pero viendo y pegándome con el código he podido ver cómo añadir mis propias opciones.
El ejemplo que voy a poner permite elegir entre tres tipos de fuente de Google Webfonts y modificar las css para usar ese tipo de letra.
Aviso que el código quizás no sea el mejor, pero realizar ingeniería inversa no siempre es fácil y tampoco he visto otro sitio donde lo hagan.
Lo primero que se tiene que hacer es crear las opciones en el panel de customizer. Para ello hay que crear una sección (section “Fuente”) y asignarle unas opciones (settings) y añadirle unos controles (control) a las opciones. Existen controles por defecto, el de elegir el color está muy bien, pero en mi caso me he creado uno personalizado que muestra un control radio modificado para que el label del radio muestre la tipo de letra en cuestión.
add_action('customize_register', 'mi_theme_customizer', 1);
function mi_theme_customizer() {
global $customize;
if($customize) {
// La seccion
$customize->add_section('mi_font', array(
'title'=>'Fuente'
) );
// La opcion
$customize->add_setting( 'mi_font_family', array(
'control' => 'color', // esto ni idea de para que sirve, realmente no es un control tipo color y funciona
'type' => 'option'
) );
$customize->add_control( 'mi_font_family', array(
'settings' => 'mi_font_family',
'section' => 'mi_font',
'type' => 'font_radio',
'choices' => array('Trocchi', 'Great Vibes', 'Bad Script') // las fuentes de google
) );
}
}
Una vez creado los controles, añado el código que dibuja (render) mi control personalizado, primero añado los css para que dibuje las fuentes de Google y luego dibujo el control en sí. He usado Javascript en vez de PHP porque parece ser que el código no está del todo completo, y no hay un filtro para crear tu propio control, por lo que tengo que añadirlo mediante jQuery a un elemento para que el Javascript del customizer tenga en cuenta cuando selecciono una opción y refresque el preview del theme.
// Añado los css de google webfonts mediante javascript para tener luego el nombre de las fuentes y usarlo para crear los radio buttons
add_action('customize_controls_print_scripts', 'mi_customize_scripts');
function mi_customize_scripts() {
$fonts = array('Trocchi', 'Great Vibes', 'Bad Script');
?>
type == 'font_radio') {
if ( empty( $control->choices ) )
return;
$name = '_customize-font-radio-' . $control->id;
?>
label ); ?>
Y ya por último solo falta usar la opción guardada para mostrarla en el theme
add_action('wp_head', 'mi_custom_styles');
function mi_custom_styles() {
$option = get_option('mi_font_family');
// El customizer modifica este filtro para refrescar el preview
$option = apply_filters('option_mi_font_family', $option);
if ($option) {
echo "";
echo '';
}
}
Y esto es todo, no sé si hay una forma mejor de hacerlo, estoy abierto a sugerencias.
El email es uno de los datos más solicitados cuando se desarrolla una aplicación web. Para comprobar que se trata de una dirección de email válida, normalmente se envía un email de confirmación, pero se pueden dar circunstancias en las que no es posible o deseado el envío de ese email, por lo que es necesario realizar otras operaciones para comprobar su existencia.
El post que os paso a continuación nos indica cómo saber si la dirección de email existe usando comandos SMTP. Fácil y sencillo. How to check if an email address exists without sending an email?
Vía / philsci
Mucha es la gente que utiliza WordPress y no todo el mundo debe saber ni diseño, ni CSS, ni XHTML, ni mucho menos el sistema de plantillas de WordPress. Para aquellos que sepan algo, pero necesiten una ayuda, existe Templatr, una herramienta online que permite modificar una plantilla base de WordPress y añadirle los estilos que necesitemos.
Si el otro día Facebook nos sorprendía con HipHop, hoy me entero que también han desarrollado una extensión para PHP llamada XHP, la cual permite añadir XML (o HTML) en el código PHP y que sea una expresión válida. ¿Qué quiere decir esto?, pues que no es necesario hacer tratar el HTML como string o usar ?> … <?php para añadir HTML en nuestros scripts.