<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Daniel Nabil: diseño web, Mallorca &#187; WordPress</title>
	<atom:link href="http://www.danielnabil.com/tema/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.danielnabil.com</link>
	<description>Estudio de diseño web y gráfico en Mallorca</description>
	<lastBuildDate>Thu, 26 Jan 2012 09:49:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Cómo personalizar la nueva barra de herramientas en WordPress 3.3</title>
		<link>http://www.danielnabil.com/blog/como-personalizar-barra-herramientas-wordpress-3-3/</link>
		<comments>http://www.danielnabil.com/blog/como-personalizar-barra-herramientas-wordpress-3-3/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 00:24:38 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.danielnabil.com/?p=557</guid>
		<description><![CDATA[La actualización a WordPress 3.3 incluye, entre otras cosas, un cambio importante en el area de administración, una nueva barra de herramientas (Toolbar) que combina la barra de administración de la versión 3.1 (o Admin bar) y la cabecera. Desde esta barra podemos acceder rápidamente a algunas páginas internas e ... <a href="http://www.danielnabil.com/blog/como-personalizar-barra-herramientas-wordpress-3-3/" class="seguir"><img src="/wp-content/themes/dn2/img/mas.png" alt="" /></a>]]></description>
			<content:encoded><![CDATA[<p>La actualización a <a href="http://codex.wordpress.org/Version_3.3">WordPress 3.3</a> incluye, entre otras cosas, un cambio importante en el area de administración, una nueva barra de herramientas (<em>Toolbar</em>) que combina la barra de administración de la versión 3.1 (o <em>Admin bar</em>) y la cabecera. Desde esta barra podemos acceder rápidamente a algunas páginas internas e información, como accesos para crear nuevo contenido, comentarios o actualizaciones disponibles.</p>
<p>Esta nueva barra se puede personalizar. Es un lugar perfecto para añadir elementos, ahora llamados nodos (<em>nodes</em>), que pueden contener otros nodos agrupados en submenús, como enlaces personalizados, accesos directos, etc., aunque para personalizarla necesitaremos editar algo de código.</p>
<p>En principio no se recomienda eliminarla por completo (ver nota ampliada más abajo). Es mejor ajustarla a nuestras necesidades a través de reglas CSS y enlaces personalizados.</p>
<p>Vamos a ver algunos ejemplos para conseguirlo:</p>
<h3>Cómo eliminar elementos de la barra de herramientas</h3>
<p>Para desactivar alguno de los elementos o nodos que WordPress 3.3 instala por defecto tenemos que crear una nueva función especificando qué enlaces queremos suprimir. El código, como siempre, lo podemos añadir al archivo <code>functions.php</code> de nuestro tema activo o añadirlo a un plugin que nos ayude a ajustar esta funcionalidad.</p>
<p>Utilizando el código del siguiente ejemplo tal como está, nos quedará una barra totalmente vacía (a excepción del nombre de la web). Para personalizar los elementos que queremos conservar basta comentar (añadir &#8220;//&#8221;) delante de las lineas que nos interesen:</p>
<pre class="brush: php; title: ; notranslate">
// Eliminamos elementos del nuevo toolbar en WP 3.3
function eliminar_nodos_admin_bar() {
	global $wp_admin_bar;
	$wp_admin_bar-&gt;remove_menu('wp-logo'); // Elimina el logo de WordPress (desaparece también todo el submenú)
	$wp_admin_bar-&gt;remove_menu('about'); // Elimina el enlace &quot;Sobre WordPress&quot;
	$wp_admin_bar-&gt;remove_menu('wporg'); // Elimina el enlace a wordpress.org
	$wp_admin_bar-&gt;remove_menu('documentation'); // Elimina el enlace a la documentación oficial (Codex)
	$wp_admin_bar-&gt;remove_menu('support-forums'); // Elimina el enlace a los foros de ayuda
	$wp_admin_bar-&gt;remove_menu('feedback'); // Elimina el enlace &quot;Sugerencias&quot;
	$wp_admin_bar-&gt;remove_menu('view-site'); // Elimina el submenú que aparece al pasar el cursor sobre el nombre de la web
	$wp_admin_bar-&gt;remove_menu('comments'); // Elimina el acceso directo a los comentarios
	$wp_admin_bar-&gt;remove_menu('updates'); // Elimina el icono de notificación de actualizaciones
	$wp_admin_bar-&gt;remove_menu('new-content'); // Elimina el menú para generar nuevo contenido
	$wp_admin_bar-&gt;remove_menu('my-account'); // Elimina el acceso a la cuenta de usuario y al enlace para desconectarse
	}
add_action('wp_before_admin_bar_render', 'eliminar_nodos_admin_bar');
</pre>
<h3>Cómo cambiar el aspecto visual de la barra</h3>
<p>Podemos adaptar el backend del sistema a nuestro gusto o a los colores de la marca del cliente, por ejemplo. Con esta función podremos cambiar el logo del sistema en WordPress 3.3, cambiar el color de fondo de la barra, el color de los elementos y cualquier otro detalle al que se pueda acceder mediante CSS.</p>
<p>Las funciones que existían hasta ahora para eliminar o cambiar el logo de WordPress no sirven en esta nueva versión. El logo tiene clases CSS nuevas y los bloques HTML donde se inserta también han cambiado. En el siguiente ejemplo tendremos que cambiar la ruta en la linea 3 por la correspondiente en cada caso:</p>
<pre class="brush: php; title: ; notranslate">
// Editamos el aspecto visual de la barra
function personalizar_aspecto_toolbar() {
	$adminlogo = '/images/adminlogo.png'; // Especificar ruta (tamaño = 20 x 20 px)
	echo '&lt;style&gt;
		#wpadminbar { background: #1B3E6E !important; }
		#wp-admin-bar-wp-logo &gt; .ab-item .ab-icon {
			background-image: url('.get_bloginfo('template_directory').$adminlogo.') !important;
			background-position: 0 0;
			}
		  &lt;/style&gt;'; }
add_action('admin_head', 'personalizar_aspecto_toolbar');
</pre>
<h3>Cómo añadir un enlace simple a la barra de administación</h3>
<p>Los ejemplos que he visto en otras páginas utilizan el método &#8220;<a href="http://codex.wordpress.org/Function_Reference/add_menu">add menu</a>&#8220;, sin embargo en la documentación de WordPress se recomienda utilizar la función <a href="http://codex.wordpress.org/Function_Reference/add_node">add_node()</a> para añadir elementos a la barra de herramientas:</p>
<pre class="brush: php; title: ; notranslate">
// Añadir un enlace simple con la función &quot;add_node&quot;
function link_simple_toolbar($wp_admin_bar) {
	$args = array(
		'id' =&gt; 'mi-link', // Identificador único
		'title' =&gt; 'Mi nuevo enlace', // Título del enlace
		'href' =&gt; 'http://miweb.com/mi-pagina/', // URL de destino
		'meta' =&gt; array('class' =&gt; 'mi-clase') // Clase del elemento
		);
	$wp_admin_bar-&gt;add_node($args);
}
add_action('admin_bar_menu', 'link_simple_toolbar', 100); // 25, si queremos que salga el primero
</pre>
<h3>Cómo añadir elementos agrupados a la barra de administación</h3>
<p>Para incorporar nuevos elementos a esta barra tendremos que crear otra función especificando los títulos y enlaces que queremos añadir. Podemos crear un submenú con diferentes opciones anidadas e incluso ampliarlo hasta donde queramos.</p>
<p>Lo importante en este caso es que los elementos &#8220;hijos&#8221; hagan referencia al identificador del elemento superior (<em>parent</em>):</p>
<pre class="brush: php; title: ; notranslate">
// Añadimos un enlace y un submenú con dos opciones
function link_simple_toolbar($wp_admin_bar) {
	$link = array(
		'id' =&gt; 'mi-link', // Identificador único
		'title' =&gt; 'Nuevo enlace', // Título del enlace
		'href' =&gt; '#', // URL de destino (si no queremos que apunte a ningún sitio, podemos dejarlo tal cual)
		'meta' =&gt; array('class' =&gt; 'mi-clase') // Clase del elemento
		);
	$sublink1 = array(
		'id'    =&gt; 'mi-sublink1', // Identificador único
		'parent' =&gt; 'mi-link', // Identificador del elemento superior
		'title' =&gt; 'Nuevo sublink 1', // Título del enlace
		'href'  =&gt; 'http://www.google.es/', // URL de destino
		'meta'  =&gt; array(
			'title' =&gt; __('Titulo para este link'), // Atributo &quot;title&quot; del enlace
			'target' =&gt; '_blank', // Destino (&quot;_blank&quot; abrirá el enlace en una página o pestaña nueva)
			'class' =&gt; 'mi_link_item_class' // Clase del elemento
			)
		);
	$sublink2 = array(
		'id'    =&gt; 'mi-sublink2',
		'parent' =&gt; 'mi-link', // Identificador del elemento superior
		'title' =&gt; 'Nuevo sublink 2',
		'href'  =&gt; 'http://www.google.es/',
		'meta'  =&gt; array(
			'title' =&gt; __('Titulo para este link'),
			'target' =&gt; '_blank',
			'class' =&gt; 'mi_link_item_class'
			)
		);
	$wp_admin_bar-&gt;add_node($link);
	$wp_admin_bar-&gt;add_node($sublink1);
	$wp_admin_bar-&gt;add_node($sublink2);
}
add_action('admin_bar_menu', 'link_simple_toolbar', 100); // 25 = En la primera posición (justo después del logo)
?&gt;
</pre>
<h3>¿Es posible desactivar la barra por completo?</h3>
<p>No sin <a href="http://wp.tutsplus.com/tutorials/how-to-disable-the-admin-bar-in-wordpress-3-3/">importantes esfuerzos</a>. Algunos filtros como &#8220;show_admin_bar&#8221; ya no sirven en WordPress 3.3 para desactivar la barra. A diferencia de la anterior &#8220;Admin bar&#8221;, ahora no se incluye una manera para eliminarla en el backend del sistema (solo en el frontend, a través de las opciones de cada usuario, ya que ahí no es imprescindible). Tampoco funcionarán por tanto algunos plugins que ocultaban esta barra.</p>
<p>La <a href="http://wordpress.org/support/topic/hiding-admin-bar-in-wordpress-33#post-2495624">justificación de los desarrolladores</a> para no permitir la desactivación de este elemento es que ahora se combina con la cabecera (header) del sistema e incluye funciones importantes para el usario, como la posibilidad de cerrar sesión o documentación de utilidad para el usuario, por lo que se recomienda no eliminarla completamente.</p>
<p>Aun así, hay plugins que ya permiten eliminar la barra por completo:</p>
<ul class="lessMargin">
<li><a href="http://wordpress.org/extend/plugins/hide-toolbar-plugin/">Hide Toolbar Plugin</a></li>
<li><a href="http://wordpress.org/extend/plugins/wordpress-admin-bar-improved/">WordPress Admin Bar Improved</a></li>
</ul>
<h3>Creamos un plugin para tenerlo todo a mano</h3>
<p>Para no cargar nuestro archivo <code>functions.php</code>, en este caso sería buena idea crear un plugin para meter todos estos fragmentos de código y facilitar así la edición. Además, al cambiar de un tema a otro, nuestros ajustes permanecerán intactos.</p>
<p>En realidad, crear un plugin básico <a href="http://ayudawordpress.com/crea-un-plugin-para-liberar-el-fichero-functions-php/">es muy fácil</a>, aunque en este caso se podría completar, por ejemplo, con una página de opciones para editar fácilmente los detalles.</p>
<p>Este plugin no pretende ser una solución de instalar y listo. Es necesario adaptarlo a las necesidades de cada uno, pero es muy fácil hacer modificaciones siguiendo las instrucciones y comentarios incluidos. </p>
<p>Personalizando un poco el código del plugin podremos:</p>
<ul class="lessMargin">
<li>Eliminar algunos elementos por defecto (solo hay que editar los comentarios para activar y desactivar cada uno)</li>
<li>Cambiar el color de fondo de la barra (editar para modificar el color)</li>
<li>Cambiar el logo de WordPress por la imagen que especifiquemos</li>
<li>Añadir enlaces nuevos con o sin submenús (editar para configurar los detalles)</li>
</ul>
<p><strong>Descargar plugin: <a href="http://www.danielnabil.com/img/toolbar-personalizado.zip" onClick="javascript: pageTracker._trackPageview('/descargas/plugin-toolbar'); ">Toolbar personalizado</a></strong> (ZIP, 2 KB)</p>
<h3>Más información y artículos relacionados</h3>
<ul class="lessMargin">
<li><a href="http://digwp.com/2012/01/goodbye-admin-bar-hello-toolbar/">Goodbye Admin Bar, Hello Toolbar</a> (Digging into WordPress)</li>
<li><a href="http://www.sitepoint.com/change-wordpress-33-toolbar/">How to Customize the WordPress 3.3 Toolbar</a> (Sitepoint)</li>
<li><a href="http://www.emenia.es/personaliza-wordpress-admin/">Personaliza el área de administración de WordPress</a> (Emenia.es)</li>
<li><a href="http://pippinsplugins.com/add-menu-links-to-the-new-wordpress-3-3-tool-bar/">Add Menu Links to the New WordPress 3.3 Tool Bar</a> (Pippinsplugins.com)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.danielnabil.com/blog/como-personalizar-barra-herramientas-wordpress-3-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo desactivar plugins de WordPress sin acceso al area de administración</title>
		<link>http://www.danielnabil.com/blog/desactivar-plugins-wordpress-sin-acceso-administracion/</link>
		<comments>http://www.danielnabil.com/blog/desactivar-plugins-wordpress-sin-acceso-administracion/#comments</comments>
		<pubDate>Sun, 20 Nov 2011 11:10:17 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.danielnabil.com/?p=539</guid>
		<description><![CDATA[Es probable que en alguna ocasión necesitemos <strong>desactivar todos los plugins</strong> (o solo alguno) de nuestra instalación de WordPress pero, por una u otra razón, no podamos acceder al area de administración: páginas en blanco, pérdida de los datos de acceso o cualquier otra razón.]]></description>
			<content:encoded><![CDATA[<h3>Respuesta rápida (en caso de urgencia):</h3>
<ul>
<li><strong>Por FTP</strong>. Renombra la carpeta &#8220;<code>plugins</code>&#8221; y crea otra igual, pero vacía.</li>
<li>O <strong>a través de phpMyAdmin</strong>. Edita el campo &#8220;<code>active_plugins</code>&#8221; (en la tabla &#8220;<code>wp_options</code>&#8220;) y vacía la lista de plugins activos sustituyendo el contenido por: &#8220;<code>a:0:{}</code>&#8221; (sin las comillas)</li>
</ul>
<h3>Respuesta completa</h3>
<p>Es probable que en alguna ocasión necesitemos <strong>desactivar todos los plugins</strong> (o solo alguno) de nuestra instalación de WordPress pero, por una u otra razón, no podamos acceder al area de administración: páginas en blanco, pérdida de los datos de acceso o cualquier otra razón. </p>
<p>Por ejemplo, podemos encontrarnos con páginas en blanco en el panel de administración cuando algún plugin no es compatible con la versión de WordPress que tenemos instalada (o simplemente porque contiene errores), cuando el archivo &#8220;<code>functions.php</code>&#8221; del tema activo o &#8220;<code>wp-config</code>&#8221; están mal formados, etc.</p>
<p>Para comprobar si se trata de un problema con algún plugin instalado, tendremos que desactivarlos todos e ir activándolos de uno en uno, pero como no podemos acceder a la página de gestión, no podemos hacer nada.</p>
<p>Hay dos maneras de solucionarlo: por FTP o accediendo directamente a la base de datos a través de phpMyAdmin (o cualquier otro gestor).</p>
<h2>Cómo desactivar plugins por FTP</h2>
<p>Si tenemos acceso FTP a los archivos de la instalación, lo único que tenemos que hacer es <strong>cambiar el nombre de la carpeta &#8220;<code>plugins</code>&#8220;</strong> (en <code>wp-content/plugins</code>), por ejemplo llamándola &#8220;plugins_original&#8221;, y crear una carpeta nueva vacía. Paso a paso sería así:</p>
<ol class="lessMargin">
<li>Acceder por FTP a nuestra instalación de WordPress</li>
<li>Abrir la carpeta &#8220;<code>wp-content</code>&#8220;</li>
<li>Buscar la carpeta &#8220;<code>plugins</code>&#8221; y cambiarle el nombre (por ejemplo, &#8220;plugins_original&#8221;)</li>
<li>Crear una carpeta nueva y llamarla &#8220;plugins&#8221;</li>
</ol>
<p>Al volver a acceder al panel de administración nos aparecerá un mensaje de error por cada plugin que teníamos activado, pero en este caso, eso es precisamente lo que buscábamos: &#8220;<em>El plugin X se ha desactivado debido a un error: El archivo del plugin no existe.</em>&#8221;</p>
<p>Si volvermos a renombrar la carpeta original por FTP, los plugins aparecerán como inactivos y podremos volver a activarlos uno a uno, fijándonos bien cual es el que causa problemas.</p>
<h2>Cómo desactivar plugins en phpMyAdmin</h2>
<p>Lo que vamos a hacer es decirle al sistema que no tenemos ningún plugin activado, es decir, el mismo método que el anterior pero, esta vez, marcándolo directamente en la base de datos. En otras palabras, no vamos a eliminar ninguna extensión, solo a desactivarlas &#8220;a distancia&#8221;. Para ello tendremos que:</p>
<ol>
<li>Acceder a través de phpMyAdmin a la base de datos de nuestra instalación de WordPress</li>
<li>Examinar la tabla &#8220;<code>wp_options</code>&#8221; (el prefijo &#8220;<code>wp_</code>&#8221; puede variar según la instalación)</li>
<li>Buscar en la columna &#8220;<code>option_name</code>&#8221; la fila &#8220;<code>active_plugins</code>&#8221; (puede que no esté en la primera página). O también podemos hacer una consulta SQL directa. Así:
<pre>SELECT * FROM wp_options WHERE option_name = 'active_plugins';</pre>
</li>
<li>Editar esta fila</li>
<li>En el campo &#8220;<code>option_value</code>&#8221; veremos una lista de todos nuestros plugins activos en forma de cadena. Lógicamente la longitud y el contenido variará dependiendo de los que tengamos activados:
<pre>a:2:{i:0;s:19:"akismet/akismet.php";i:1;s:27:"wp-pagenavi/wp-pagenavi.php";}</pre>
</li>
<li>Guardar una copia de esta cadena (por si acaso, para poder volver a activar los plugins más tarde) y sustituirla por:
<pre>a:0:{}</pre>
</li>
<li>Finalmente guardamos los cambios pulsando &#8220;Continuar&#8221;</li>
</ol>
<p>Ahora podremos volver a acceder al panel de administración de WordPress. Si el problema de las páginas en blanco continúa, lo más probable es que los archivos &#8220;<code>functions.php</code>&#8221; o &#8220;<code>wp-config</code>&#8221; estén mal formados.</p>
<p>Más información (en inglés):<br />
<a href="http://codex.wordpress.org/FAQ_Troubleshooting#How_to_deactivate_all_plugins_when_not_able_to_access_the_administrative_menus.3F">How to deactivate all plugins when not able to access the administrative menus?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielnabil.com/blog/desactivar-plugins-wordpress-sin-acceso-administracion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Nombres de dominio internacionalizados (IDNs), WordPress, SEO y navegadores</title>
		<link>http://www.danielnabil.com/blog/nombres-dominio-internacionalizados-idn-wordpress-seo-navegadores/</link>
		<comments>http://www.danielnabil.com/blog/nombres-dominio-internacionalizados-idn-wordpress-seo-navegadores/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 02:21:35 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Alojamiento y dominios]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.danielnabil.com/?p=533</guid>
		<description><![CDATA[Dominios en el mundo. Fuente: Wikipedia
¿Por qué aparecen símbolos &#8220;raros&#8221; en la barra de direcciones del navegador cuando visitamos sitios web con caracteres internacionales? Por ejemplo, al visitar http://www.radiopollença.net puede aparecer como &#8220;http://www.xn--radiopollena-udb.net/&#8221;.
Explicación simple
Es normal. Es una medida de seguridad. El navegador te está avisando de que el dominio que ... <a href="http://www.danielnabil.com/blog/nombres-dominio-internacionalizados-idn-wordpress-seo-navegadores/" class="seguir"><img src="/wp-content/themes/dn2/img/mas.png" alt="" /></a>]]></description>
			<content:encoded><![CDATA[<div id="attachment_534" class="wp-caption alignnone" style="width: 628px"><img src="http://www.danielnabil.com/img/dominios-mundo.jpg" alt="Dominios en el mundo" title="Dominios en el mundo" width="618" height="207" class="size-full wp-image-534" /><p class="wp-caption-text">Dominios en el mundo. Fuente: <a href='http://es.wikipedia.org/wiki/Dominio_de_Internet'>Wikipedia</a></p></div>
<p>¿Por qué aparecen símbolos &#8220;raros&#8221; en la barra de direcciones del navegador cuando visitamos sitios web con caracteres internacionales? Por ejemplo, al visitar <a href="http://www.xn--radiopollena-udb.net">http://www.radiopollença.net</a> puede aparecer como &#8220;http://www.xn--radiopollena-udb.net/&#8221;.</p>
<h3>Explicación simple</h3>
<p>Es normal. Es una medida de seguridad. El navegador te está avisando de que el dominio que acabas de teclear contiene caracteres multilingües.</p>
<p>Cada navegador (Firefox, Chrome, Internet Explorer, Safari, Opera) tiene sus propias reglas al respecto para protegernos de posibles ataques. Algunos permiten configurar esto y otros no. Para saber cómo hacerlo, averigua qué navegador estás utilizando y sigue leyendo.</p>
<h3>Explicación completa</h3>
<p>Al principio, los nombres de dominio únicamente podían contener caracteres ASCII: letras de la A a la Z, números y algún que otro símbolo, como por ejemplo guiones. Pero a medida que Internet se fue haciendo más popular e internacionalizando, fue necesario incorporar un sistema que permitiera utilizar caracteres de otros idiomas (por ejemplo, &#8220;ñ&#8221;, &#8220;ç&#8221;, tildes, diéresis, etc.)</p>
<p>Así, a partir de 2005 y con el fin de dar cabida a estos diferentes caracteres no ASCII propios de algunos idiomas (como el español, el francés o el catalán), los registradores empezaron a permitir lo que se llaman <strong>IDNs o Internationalized Domain Names (<a href="http://es.wikipedia.org/wiki/Nombre_de_dominio_internacionalizado">nombres de dominio internazionalizados</a>)</strong>.</p>
<p>De todas formas, a pesar del tiempo que hace que se permite el registro de este tipo de dominios, si alguna vez has visitado una web con un IDN de este tipo, es posible que tu navegador lo haya transformado en algo así: &#8220;http://www.xn--nombre-xyz.com/&#8221;</p>
<p>Lo que hacen los agentes de usuario (los navegadores, por ejemplo) para que esto funcione es transformar los caracteres Unicode (ñ, ç, ü…) del dominio a una cadena que encaje con la forma tradicional, para después enviarla al servidor de nombres de dominio (DNS). Por ejemplo, un dominio con la cedilla (&#8220;ç&#8221;), muy común en francés y en catalán, como &#8220;http://www.pollença.com&#8221; se convierte en &#8220;http://www.xn--pollena-zxa.com/&#8221;. Igualmente, el dominio &#8220;http://www.españa.com&#8221; se convierte en &#8220;http://www.xn--espaa-rta.com/&#8221;.</p>
<p><strong>A este formato convertido o codificado se le llama Código púny o <a href="http://es.wikipedia.org/wiki/Punycode">Punycode</a>, que no es más que una representación en formato ASCII del nombre original</strong>.</p>
<p>En resumen:</p>
<ul class="lessMargin">
<li>Dominio Unicode: españa.com</li>
<li>Dominio Punycode: http://www.xn--espaa-rta.com/</li>
</ul>
<p>Sería perfecto si los navegadores y otros agentes de usuario pudieran mostrar tranquilamente el formato Unicode de todos los dominios. Pero el problema viene cuando, dada la inmensa variedad de idiomas y caracteres, algunos son demasiado parecidos. El caso más popular es la &#8220;а&#8221; en cirílico, que a simple vista no se diferencia de la &#8220;a&#8221; latina, o la &#8220;O&#8221; griega de la &#8220;O&#8221; latina y la &#8220;O&#8221; en cirílico.</p>
<p>Aprovechando esto, alguien podría registrar un dominio que a simple vista pareciera otro (es decir, hacer <a href="http://es.wikipedia.org/wiki/Phishing">Phishing</a> o <a href="http://es.wikipedia.org/wiki/Spoofing">Spoofing</a>, engañar a alguien haciéndose pasar por otra persona, entidad o servicio, por ejemplo, un banco). A este tipo de engaños concretamente se los conoce como ataques homógrafos de IDN (<a href="http://en.wikipedia.org/wiki/IDN_homograph_attack">IDN homograph attack</a>).</p>
<p>Como no es posible que, para evitar este tipo de prácticas, los agentes registradores puedan controlar todos los dominios que se dan de alta, lo que hacen los navegadores para evitar confusiones y tratar de protegernos de estos ataques homógrafos es, en muchas ocasiones, mostrar al usuario los IDNs en formato Punycode en lugar del original. </p>
<p>Pero no es tan simple. Cada navegador lo hace de manera diferente. Según el caso, podremos configurarlo para que nos muestre un dominio sin codificar, aunque hay navegadores que no lo permiten. Vamos a ver las diferencias.</p>
<h2>Gestión de IDNs en los diferentes navegadores</h2>
<h3>IDNs en Google Chrome</h3>
<p>Chrome determina si mostrar IDNs en Punycode o Unicode según el/los idioma/s que el usuario &#8220;entiende&#8221; (o sea, tiene configurados en su sistema). Es decir, Chrome detecta el idioma del sistema o navegador y, si el dominio contiene caracteres de un idioma que no está en la lista de los configurados por el usuario, muestra el dominio en formato Punycode.</p>
<p>Por ejemplo, si en mi ordenador tengo configurado el español como único idioma del navegador o del sistema (depende de si la plataforma es Windows, Mac Os X o Linux) y escribo en la barra de direcciones de Chrome el dominio &#8220;www.españa.com&#8221; (que contiene una &#8220;ñ&#8221;), el navegador me mostrará el dominio en formato Unicode (es decir, tal como se escribe, con la &#8220;ñ&#8221;). En cambio, si mi idioma es el inglés, por ejemplo, como la letra &#8220;ñ&#8221; no pertenece a la lista de caracteres permitidos, me mostrará el dominio en formato Punycode, así: &#8220;http://www.xn--espaa-rta.com/&#8221;</p>
<p>En Windows y Linux los idiomas se configuran desde las opciones del navegador: <strong>Opciones > Avanzada > Configuración de idiomas y del corrector ortográfico</strong>. </p>
<p>En Mac OS X el idioma del navegador viene determinado por el idioma del sistema. Se puede configurar accediendo a: <strong>Aplicaciones > Preferencias del sistema > Idioma y texto > Idioma</strong>.</p>
<p>De esta manera, Google Chrome consigue que podamos ver dominios internacionalizados sin codificar, incluso aunque sean .net o .com, que son dominios de primer nivel generales, no específicos de un país.</p>
<h3>IDNs en Internet Explorer</h3>
<p>Internet Explorer (IE) actúa de manera muy similar a como lo hace Chrome: muestra las URLs sin codificar siempre y cuando todos los caracteres del dominio pertenezcan al idioma configurado por el usuario en las opciones del navegador: <strong>Opciones de Internet > General > Idiomas</strong>.</p>
<h3>IDNs en Firefox</h3>
<p>En el caso de Firefox, lo que hace este navegador para decidir si mostrar Unicode o Punycode es analizar la extensión de cada dominio (.com, .net, .es, .cat, etc.) y compararlos con unas listas de caracteres permitidos. De esta manera, un dominio con caracteres internacionales puede verse codificado según el nivel al que pertenezca.</p>
<p>Por ejemplo, un dominio con la cedilla (&#8220;ç&#8221;), muy frecuente en catalán y en francés, como &#8220;htttp://www.pollença.com&#8221; se mostrará en Punycode, porque los dominios &#8220;.com&#8221; no permiten &#8220;ç&#8221;. En cambio, el dominio &#8220;http://www.pollença.cat&#8221; se mostrará en Unicode porque los &#8220;.cat&#8221; sí que permiten la cedilla.</p>
<p>Lo mismo pasaría con el dominio &#8220;españa.com&#8221;. En Firefox aparecería en formato Punycode, en cambio &#8220;españa.es&#8221;, en formato Unicode.</p>
<p>Firefox incorpora una lista blanca de TLDs. Si al menos uno de los caracteres del dominio no está en esa lista, el dominio no se mostrará en Unicode. Dicho de otra forma, Firefox siempre mostrará un dominio en formato Punycode para &#8220;.com&#8221;, porque este TLD no está en la lista blanca. Es decir, ni &#8220;españa.com&#8221;, ni &#8220;pollença.com&#8221; se verán &#8220;correctamente&#8221;.</p>
<h3>IDNs en Safari</h3>
<p>Safari ofrece una lista de idiomas editable por el usuario en la que aparecen los que están permitidos para mostrarse de manera nativa en la barra del navegador.</p>
<p>Los nombres de dominio que contengan caracteres que no estén en esa lista de idiomas se mostrarán por tanto en el formato ASCII (Punycode)</p>
<p>Podemos editar esta lista muy fácilmente con cualquier editor de texto (siempre y cuando se tengan permisos de administración). Esta lista se llama &#8220;Lista blanca de IDNs permitidos por defecto en WebKit&#8221; (Default Web Kit International Domain Name Script White List) y la podemos encontrar en esta ruta: Sistema > Libreria > Frameworks > WebKit.framework > Versions > A > Resources > IDNScriptWhiteList.txt</p>
<p>Si borramos todos los idiomas que aparecen en esta lista, Safari mostrará todos los dominios codificados con su equivalente en Punycode.</p>
<h3>IDNs en Opera</h3>
<p>Opera analiza, al igual que Firefox, en una lista blanca de dominios de primer nivel (TLDs) con las que compara los dominios. Únicamente muestra IDNs en formato Unicode siempre y cuando todos los caracteres del dominio estén permitidos para ese TLD en particular.</p>
<h2>En resumen</h2>
<p>Si queremos que nuestro dominio del primer ejemplo &#8220;radiopollença.net&#8221; se muestre tal como lo escribimos, tendremos que cambiar la configuración de idioma del sistema o del navegador al catalán, en todos los casos menos si utilizamos Firefox u Opera, que no se basan en configuraciones locales y por tanto no podremos hacer nada (en realidad, <a href="https://addons.mozilla.org/en-US/firefox/addon/idn-navbar/">existen extensiones</a> que permiten cambiar esta configuración, pero no son nada recomendables porque nos abren la puerta a posibles ataques).</p>
<h2>Dominios IDN, SEO y accesibilidad</h2>
<p>¿Afecta negativamente a nivel de posicionamiento en buscadores (SEO) tener un dominio internacionalizado?</p>
<p>Por una parte, los IDNs nos dan más flexibilidad, es decir, nos permiten posicionar palabras exactas, tal como se escriben. En el caso de &#8220;Pollença&#8221;, puede haber mucha diferencia entre registrar un dominio como &#8220;Pollenca&#8221; (con &#8220;c&#8221; en lugar de &#8220;ç&#8221;) o como la versión castellanizada &#8220;Pollensa&#8221; (con &#8220;s&#8221;). Además, disponer de un dominio con caracteres multilingües nos permite acceder a un posicionamiento más local y por tanto más preciso, ya que, desde hace tiempo los buscadores no ofrecen ningún problema para indexar estos dominios.</p>
<p class="destacado">Partiendo de la premisa de hacer sitios web claros y accesibles para todo el mundo, el hecho de añadir complejidad a nuestra dirección web puede ser un punto importante en contra de adquirir un dominio multilingüe.</p>
<p>Pero, como hemos visto, los navegadores no nos lo ponen fácil. Es muy probable que el usuario que visita una página web con un dominio internacionalizado, se extrañe como mínimo al ver el cambio a Punycode, es decir, provoque una primera reacción de rechazo hacia algo raro, que no conoce.</p>
<p>Por otro lado, registrar un dominio con caracteres multilingües puede no ser una buena idea (ni a nivel SEO ni a nivel de accesibilidad) ya que algunos usuarios podrían tener dificultades para acceder a la &#8220;ñ&#8221; o la &#8220;ç&#8221; en teclados ingleses, por ejemplo. Todo dependerá de nuestro &#8220;target&#8221;, a qué público nos estamos dirigiendo.</p>
<p>A nivel de compatibilidad de navegadores, aunque afortunadamente cada vez se utilice menos, Internet Explorer 6 (IE6) da errores al acceder a dominios IDN.</p>
<p>Por tanto, partiendo de la premisa de hacer sitios web claros y accesibles para todo el mundo, el hecho de añadir complejidad a nuestra dirección web puede ser un punto importante en contra de adquirir uno de estos dominios.</p>
<p>En cualquier caso, lo ideal podría ser registrar otro dominio similar que solamente contenga caracteres ASCII (&#8220;normales&#8221;) y redireccionarlo a su versión en IDN.</p>
<p>También hay que tener en cuenta que estos dominios pueden ser difíciles de integrar en programas como gestores de correo, de FTP, sistemas de gestión de contenido como WordPress, Joomla o Drupal, extensiones, Twitter, Facebook y otras redes sociales, etc.</p>
<p>Por todo esto, la adquisición de un dominio multilingüe puede ser una muy mala idea, al menos por ahora, debido a la cantidad de problemas, costes y tiempo necesario para solventarlos, pero más que por dificultades a nivel SEO e indexación en buscadores, por accesibilidad y por compatibilidad del software.</p>
<h2>WordPress y los IDNs</h2>
<p>WordPress no es una aplicación IDNA (aplicaciones capaces de gestionar dominios IDN), por lo tanto al configurarlo deberemos utilizar la versión en Punycode. Si no lo hacemos así, el sistema eliminará todos los caracteres no-ASCII de nuestro dominio.</p>
<p>Pero esto no quiere decir que WordPress tenga problemas con los dominios multilingües. Lo único que hay que hacer al configurar el sistema es introducir el dominio en formato Punycode (<a href="http://mct.verisign-grs.com/">aquí encontrarás un conversor</a>), tanto en el campo &#8220;Dirección de WordPress (URL)&#8221; como en &#8220;Dirección del sitio (URL)&#8221;. A partir de ahí ya depende del navegador.</p>
<p>Conviene ir con mucho cuidado cuando hacemos este tipo de cambios, especialmente si no sabemos bien lo que hacemos, ya que fácilmente podemos perder el acceso al area de administración de WordPress. En ese caso, podemos acceder directamente a la base de datos a través de phpMyAdmin o tener a mano la información del Codex de WordPress sobre <a href="http://codex.wordpress.org/Changing_The_Site_URL">cómo cambiar la URL de la web</a> (en inglés).</p>
<p>Donde sí podemos encontrar limitaciones importantes de WordPress con respecto a los IDNs es en los comentarios, los plugins que utilicemos, integración con redes sociales o la gestión de emails, por ejemplo.</p>
<p>Aunque no lo he probado, existe un plugin que se llama <a href="http://wordpress.org/extend/plugins/idna/">IDNA</a> que permite utilizar dominios IDN en WordPress (aunque según su autor, no se trata de una versión estable, sinó de una Beta, &#8220;como mucho&#8221;). Para ello utiliza una librería llamada <a href="http://freecode.com/projects/php_net_idna">PHP Net_IDNA</a> que convierte de Punycode a Unicode y viceversa.</p>
<h2>Conclusión</h2>
<p>Registrar dominios con caracteres multilingües no es ni buena ni mala opción. Dependerá de cada caso, por lo que habrá que analizar si puede afectar de alguna manera a nuestros usuarios o al proceso de configuración del software que vayamos a utilizar. </p>
<p>Lo más probable es que con el tiempo todo el software, tanto online como off-line, esté perfectamente adaptado a las configuraciones multilingües, pero por ahora (noviembre de 2011), sigue siendo algo un poco complicado. Prueba de ello es la longitud de este artículo.</p>
<h3>Bibliografía</h3>
<p>A continuación encontrarás una lista de recursos para poder acceder a información de primera mano sobre los IDNs y los diferentes navegadores:</p>
<ul>
<li><a href="http://mct.verisign-grs.com/ ">IDN Conversion Tool</a>: Herramienta para convertir nombres de dominio internacionales (IDN) a caracteres nativos o Punycode.</li>
<li><a href="http://www.chromium.org/developers/design-documents/idn-in-google-chrome">IDN in Google Chrome (Google Chrome&#8217;s IDN policy)</a>: artículo sobre la política de Google Chrome con respecto a los IDNs.</li>
<li><a href="http://msdn.microsoft.com/en-us/library/bb250505%28VS.85%29.aspx">Internationalized Domain Name Support in Microsoft Internet Explorer 7</a>: política de Microsoft con respecto al tratamiento de los IDNs en Internet Explorer 7 y versiones superiores.</li>
<li><a href="http://www.mozilla.org/projects/security/tld-idn-policy-list.html">Mozilla.org: IDN-enabled TLDs</a>: Lista de los TLDs (dominios de primer nivel) para los cuales el sofware de Mozilla muestra IDNs en formato Unicode.</li>
<li><a href="http://support.apple.com/kb/TA22996?viewlocale=en_US">About Safari International Domain Name support</a>: artículo sobre la política de Apple con respecto a los IDNs.</li>
<li><a href="http://www.opera.com/support/kb/view/788/">Opera support for IDNs</a>: artículo sobre la política de Opera con respecto a los IDNs.</li>
<li><a href="http://www.iana.org/domains/idn-tables/">Repository of IDN Practices</a>: Tablas de IDNs de la IANA (Internet Assigned Numbers Authority) para consultar las letras permitidas en cada TLD.</li>
<li><a href="http://www.iana.org/domains/idn-tables/tables/cat_ca_1.0.html">IDN Tables: CAT (catalan)</a>: tabla de caracteres asignados por la <a href="http://www.domini.cat/">Fundació puntCAT</a> para el catalán.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.danielnabil.com/blog/nombres-dominio-internacionalizados-idn-wordpress-seo-navegadores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lorem Pixum: generador automático de imágenes para maquetación web</title>
		<link>http://www.danielnabil.com/blog/lorem-pixum-generadores-automaticos-imagenes-maquetacion-web/</link>
		<comments>http://www.danielnabil.com/blog/lorem-pixum-generadores-automaticos-imagenes-maquetacion-web/#comments</comments>
		<pubDate>Sun, 14 Aug 2011 15:10:44 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Diseño web]]></category>
		<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.danielnabil.com/?p=525</guid>
		<description><![CDATA[Imagen generada automáticamente por Lorem Pixum
De la misma manera que existen generadores de textos de muestra (a partir del conocido Lorem Ipsum o de otros textos), también existen generadores de fotos aleatorias y de espacios para imágenes (placeholders).
Por ejemplo, la imagen que ves aquí al lado está generada automáticamente. Lo ... <a href="http://www.danielnabil.com/blog/lorem-pixum-generadores-automaticos-imagenes-maquetacion-web/" class="seguir"><img src="/wp-content/themes/dn2/img/mas.png" alt="" /></a>]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignright" style="width: 360px"><img src="http://lorempixum.com/350/230/" alt="Imagen generada automáticamente por Lorem Pixum" /><p class="wp-caption-text">Imagen generada automáticamente por Lorem Pixum</p></div>
<p>De la misma manera que existen generadores de textos de muestra (a partir del conocido <em>Lorem Ipsum</em> o de otros textos), también existen generadores de fotos aleatorias y de espacios para imágenes (placeholders).</p>
<p>Por ejemplo, la imagen que ves aquí al lado está generada automáticamente. Lo único que se ha especificado es que mida 350 x 230 pixels. </p>
<p>Este tipo de servicios son perfectos a la hora de empezar a maquetar una web, evitándonos tener que recurrir a fotos de stock o imágenes de relleno que podamos tener preparadas en nuestro cajón de recursos.</p>
<h2>Lorem Pixum</h2>
<p><a href="http://lorempixum.com/">Lorem Pixum</a> es un <strong>servicio de generación automática de imágenes gratuito y muy fácil de utilizar</strong>. Solo tenemos que apuntar la URL de la imagen a este servicio, especificando las dimensiones que necesitamos, y nos incrustará una foto automáticamente. En el ejemplo anterior la URL sería:</p>
<pre>http://lorempixum.com/350/230/</pre>
<p>Podemos seleccionar cualquier tamaño, es decir, no estamos limitados a tamaños estándar. Funcionará igualmente bien tanto si pedimos una foto de 300 x 200 pixels, como cualquier otra proporción caprichosa que necesitemos, por ejemplo 206 x 191. Eso sí, el límite, tanto del ancho como del alto, es de 1920 pixels, el perfil de color siempre será RGB o escala de grises y la resolución, 72 ppp.</p>
<p>Lorem Pixum nos permite seleccionar fotos de entre 11 temas o categorías: fotos abstractas, de animales, urbanas, de comida, nocturnas, moda, gente, naturaleza, deportes, técnicas y transportes.</p>
<p>Esto nos puede venir muy bien, por ejemplo, si estamos montando una web para un restaurante y todavía no nos han enviado las fotos de los platos del menú. Podríamos utilizar las fotos de <em>Lorem Pixum</em> especificando que sólo queremos fotos cuadradas de exactamente 500 x 500 pixels y únicamente de la categoría &#8220;Comida&#8221;. Así:</p>
<pre>http://lorempixum.com/500/500/food</pre>
<p>Si queremos recibir siempre la misma foto, basta añadir el número detrás de la categoría:</p>
<pre>http://lorempixum.com/400/200/sports/1/</pre>
<p>También es posible añadir un pequeño texto vertical sobre la foto:</p>
<pre>http://lorempixum.com/400/300/technics/3/Ubuntu/</pre>
<p>Utilizar un servicio como este tiene dos ventajas más: no tenemos que preocuparnos por los derechos de las fotos (siempre y cuando las utilicemos únicamente para maquetación web o de imprenta) y que, al no estar alojadas las fotos en nuestro servidor, tampoco tenemos que subir ni copiar nada, ni preocuparnos por el ancho de banda (en otras palabras, estamos haciendo &#8220;<a href="http://es.wikipedia.org/wiki/Hot-linking">hotlinking</a>&#8220;, pero en este caso está permitido).</p>
<p>Lógicamente, podemos utilizar este servicio tanto desde las plantillas HTML o CSS, como directamente desde WordPress o cualquier otro editor de contenidos que estemos utilizando.</p>
<p>Lorem Pixum se está haciendo bastante popular. De hecho, ahora mismo llevan servidas casi <strong>22 millones de fotos</strong> desde que pusieron en marcha el servicio en abril de 2011.</p>
<p>Sinceramente, cuando lo conocí pensé que sería una curiosidad más, algo que desechas rápidamente porque no te soluciona o facilita nada en el día a día. Pero no es así. Por ejemplo, es mucho más rápido generar una imagen con un tamaño específico a partir de Lorem Pixum, que abrir una foto en Photoshop, recortarla y guardarla para web. Si estamos maquetando una web, es más fácil y mucho más rápido probar diferentes tamaños de una foto cambiando sólo la URL, que tener que crear todos los tamaños previamente.</p>
<p>Si te ha convencido, puedes probar esta herramienta visitando: <a href="http://lorempixum.com/">http://lorempixum.com/</a></p>
<h2>Otros servicios similares</h2>
<ul>
<li class="clear"><img src="http://placekitten.com/125/80" alt="Foto generada automáticamente por Placekitten" class="alignright" /><strong>Placekitten</strong> es otro generador de fotos parecido a Lorem Pixum pero con la particularidad de que únicamente nos entrega fotos sobre un tema: gatos<br />
<a href="http://placekitten.com/">http://placekitten.com/</a></li>
<li class="clear"><img src="http://placehold.it/125x80" alt="Foto generada automáticamente por Placehold.it" class="alignright" /><strong>Placehold.it</strong> es diferente a los dos servicios anteriores. En este caso, se trata de un generador de espacios para imágenes (los típicos cuadros grises tan frecuentes en maquetación). Podemos seleccionar el formato, texto, color y tamaño de los recuadros.<br />
<a href="http://placehold.it/">http://placehold.it/</a></li>
<li class="clear"><img src="http://ipsumimage.appspot.com/125x80" alt="Foto generada automáticamente por Ipsum Image" class="alignright" /><strong>Ipsum Image</strong> es otro generador de espacios para imágenes. Además del tamaño, nos permite seleccionar el color de fondo, el texto que queremos que aparezca sobre la foto (incluido el tamaño y el color de ese texto) y el formato (PNG, JPG o JPEG)<br />
<a href="http://ipsumimage.appspot.com/">http://ipsumimage.appspot.com/</a></li>
</ul>
<h2>Generadores de textos de muestra</h2>
<p>Si lo que buscas son generadores de textos de muestra (dummy text), aquí tienes algunas herramientas útiles:</p>
<ul>
<li><strong>RandomText</strong>, generador aleatorio de Lorem Ipsum y textos de muestra.<br />
<a href="http://www.randomtext.me/">http://www.randomtext.me/</a></li>
<li><strong>Lorem ipsum for webdesigners</strong>. Generador de textos aleatorios a partir de obras literarias de autores conocidos.<br />
<a href="http://www.blindtextgenerator.com/lorem-ipsum">http://www.blindtextgenerator.com/lorem-ipsum</a></li>
<li><strong>Quijotipsum</strong>, generador de texto basado en El Quijote de Cervantes: <a href="http://www.quijotipsum.com/">http://www.quijotipsum.com/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.danielnabil.com/blog/lorem-pixum-generadores-automaticos-imagenes-maquetacion-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo proteger entradas o páginas con contraseña en WordPress</title>
		<link>http://www.danielnabil.com/blog/wordpress-proteger-contrasena-paginas-entradas/</link>
		<comments>http://www.danielnabil.com/blog/wordpress-proteger-contrasena-paginas-entradas/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 23:46:09 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.danielnabil.com/?p=501</guid>
		<description><![CDATA[
WordPress permite desde hace tiempo proteger fácilmente nuestra información privada bajo contraseña. Cualquier entrada o página de nuestra web o blog puede ser publicada para que solamente algunos usuarios tengan acceso.
Para publicar un contenido protegido por contraseña:

Desde el editor de páginas o entradas de WordPress tenemos que pulsar el botón ... <a href="http://www.danielnabil.com/blog/wordpress-proteger-contrasena-paginas-entradas/" class="seguir"><img src="/wp-content/themes/dn2/img/mas.png" alt="" /></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.danielnabil.com/img/wordpress-proteger-contrasena.png" alt="Opciones de WordPress: proteger con contraseña" width="321" height="349" class="alignright size-full wp-image-502" /></p>
<p><a href="http://www.danielnabil.com/tema/wordpress/">WordPress</a> permite desde hace tiempo proteger fácilmente nuestra información privada bajo contraseña. Cualquier entrada o página de nuestra web o blog puede ser publicada para que solamente algunos usuarios tengan acceso.</p>
<p>Para publicar un contenido protegido por contraseña:</p>
<ol>
<li>Desde el editor de páginas o entradas de WordPress tenemos que pulsar el botón &#8220;Editar&#8221; que hay junto a la opción &#8220;Visibilidad: Público&#8221;, seleccionar &#8220;Protegida con contraseña&#8221; y después pulsar el botón &#8220;Aceptar&#8221; (ver imagen). También se puede cambiar o editar la contraseña desde la <em>edición rápida</em>.</li>
<li>Después solo tenemos que pulsar el botón &#8220;Publicar&#8221;. A partir de ese momento nuestra información solo estará disponible para aquellos a quienes hayamos facilitado la contraseña del primer paso.</li>
</ol>
<p>Por defecto WordPress añade automáticamente la palabra &#8220;Protegido&#8221; (o &#8220;Protected&#8221;, si no la hemos traducido) al título de nuestra entrada o página. Para eliminar esta palabra y dejar el título tal como lo hemos publicado, tendremos que hacer algo más:</p>
<ol>
<li>Abrir el archivo <code>functions.php</code> (si nuestra plantilla no lo tiene, lo creamos)</li>
<li>Añadir este fragmento de código:
<pre class="brush: php; title: ; notranslate">
// Cambiando el título de los posts protegidos con contraseña:
add_filter('the_title','entradas_protegidas');
function entradas_protegidas($title) {
	return str_replace('Protegido:','', $title);
	}
</pre>
<p>Con esto lo que hacemos es añadir un filtro al título para que sustituya la palabra &#8220;Protegido&#8221; por &#8220;&#8221;, es decir, por nada. Si lo que queremos es sustituirla por otra palabra, solo tenemos que escribirlo entre las comillas. Por ejemplo:</p>
<pre class="brush: php; title: ; notranslate">
// Cambiando el título de los posts protegidos con contraseña:
add_filter('the_title','entradas_protegidas');
function entradas_protegidas($title) {
	return str_replace('Protegido:','Acceso restringido:', $title);
	}
</pre>
</li>
</ol>
<p>Este método protege dos bloques de información: el contenido (the_content) y los comentarios (comments_template).</p>
<h3>¿Qué diferencia hay entre &#8220;Protegida con contraseña&#8221; y &#8220;Privada&#8221;?</h3>
<p>Cualquiera de estas dos opciones protege nuestra información, pero hay una diferencia importante: al marcar una entrada o página como privada, ésta desaparece completamente, es decir, la visibilidad para el visitante es nula, mientras que si la protegemos con contraseña lo único que ocultamos es el contenido (pero no el título). </p>
<p>Por defecto, el contenido privado en WordPress solo es visible para administradores y editores. Cualquier rol con menos privilegios carece de la posibilidad de visualizar (y mucho menos editar) esta información.</p>
<h3>Cómo modificar el formulario de protección con contraseña</h3>
<p>WordPress, al menos hasta la versión 3.1.3, no nos ofrece ninguna clase especial para dar estilo a este formulario (algo un poco extraño ya que una simple clase en el <code>body</code> nos permitiría acceder a él mediante reglas CSS). Para poder editar este formulario, lo mejor es recrear la función en nuestro archivo <code>functions.php</code>:</p>
<pre class="brush: php; title: ; notranslate">
add_filter('the_password_form', 'nuevo_formulario');
function nuevo_formulario() {
    global $post;
    $label = 'pwbox-'.(empty($post-&gt;ID) ? rand() : $post-&gt;ID );
    $output = '&lt;form class=&quot;formulario-contrasena&quot; action=&quot;' . get_option('siteurl') . '/wp-pass.php&quot; method=&quot;post&quot;&gt;' . __(&quot;&lt;p&gt;&lt;strong&gt;Esta información está protegida.&lt;/strong&gt;&lt;br /&gt;Por favor, para verla escribe la contraseña a continuación:&lt;/p&gt;&quot;) . '&lt;p&gt;&lt;input name=&quot;post_password&quot; id=&quot;' . $label . '&quot; type=&quot;password&quot; size=&quot;25&quot; /&gt;&lt;input type=&quot;submit&quot; name=&quot;Submit&quot; value=&quot;' . esc_attr__(&quot;Submit&quot;) . '&quot; /&gt;&lt;/p&gt;&lt;/form&gt;';
    return $output;
    }
</pre>
<h3>Proteger con contraseña una web completa</h3>
<p>Hasta el momento WordPress tampoco ofrece la posibilidad de proteger toda una web con contraseña, aunque es posible que forme parte de las opciones del sistema en futuras versiones. De todas formas, hasta que esto ocurra, afortunadamente existen numerosos plugins que facilitan mucho el tema:</p>
<ul class="lessMargin">
<li><a href="http://wordpress.org/extend/plugins/pagerestrict/">Page Restrict</a>: acceso restringido para páginas o entradas seleccionadas</li>
<li><a href="http://wordpress.org/extend/plugins/restricted-site-access/">Restricted Site Access</a>: acceso limitado a usuarios registrados o a determinadas direcciones IP</li>
<li><a href="http://wordpress.org/extend/plugins/registered-users-only/">Registered Users Only</a>: obliga a todos los visitantes a identificarse para poder acceder a la web</li>
</ul>
<p>También podemos restringir el acceso a nuestra web mediante .htaccess. Un simple ejemplo:</p>
<pre class="brush: php; title: ; notranslate">
RewriteEngine on
RewriteCond %{REQUEST_URI} !/acceso-restringido.php$
RewriteCond %{REMOTE_ADDR} !^80\.31\.190\.52
RewriteCond %{HTTP_REFERER} !^http://www.miweb.com/ [NC]
RewriteCond %{HTTP_REFERER} !^http://miweb.com/ [NC]
RewriteRule $ /acceso-restringido.php [R=302,L]
</pre>
<p>Así, cualquier usuario que visite nuestra web y no tenga la IP del ejemplo será redireccionado a la página &#8220;acceso-restringido.php&#8221;.</p>
<h3>Más información:</h3>
<ul class="peq lessMargin">
<li><a href="http://codex.wordpress.org/Content_Visibility">WordPress content visibility</a> (en inglés)</li>
<li><a href="http://digwp.com/2009/08/password-protect-more-than-the_content/">Password Protect More Than the_content()</a> (en inglés)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.danielnabil.com/blog/wordpress-proteger-contrasena-paginas-entradas/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Atajos de teclado para el editor de contenido de WordPress</title>
		<link>http://www.danielnabil.com/blog/atajos-teclado-editor-wordpress-html/</link>
		<comments>http://www.danielnabil.com/blog/atajos-teclado-editor-wordpress-html/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 22:32:11 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.danielnabil.com/?p=489</guid>
		<description><![CDATA[
WordPress viene equipado &#8220;de fábrica&#8221; con TinyMCE, un editor bastante completo que nos permite modificar nuestros contenidos de manera visual y muy sencilla, aunque para aumentar aun más nuestra productividad, siempre es buena idea aprender los atajos de teclado más frecuentes, y así ganar rapidez, evitando tener que acudir al ... <a href="http://www.danielnabil.com/blog/atajos-teclado-editor-wordpress-html/" class="seguir"><img src="/wp-content/themes/dn2/img/mas.png" alt="" /></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.danielnabil.com/img/atajos-teclado-wordpress.jpg" alt="Atajos teclado WordPress" width="618" height="304" class="alignnone size-full wp-image-490" /></p>
<p>WordPress viene equipado &#8220;de fábrica&#8221; con <a href="http://tinymce.moxiecode.com/">TinyMCE</a>, un editor bastante completo que nos permite modificar nuestros contenidos de manera visual y muy sencilla, aunque para aumentar aun más nuestra productividad, siempre es buena idea <strong>aprender los atajos de teclado más frecuentes</strong>, y así ganar rapidez, evitando tener que acudir al ratón para realizar acciones repetitivas.</p>
<p>Aparte de los atajos de teclado propios del sistema operativo (copiar, pegar, cortar, etc.) este editor de WordPress incluye algunas combinaciones muy útiles, aunque serán diferentes dependiendo del tipo de edición que estemos utilizando: visual o HTML.</p>
<p>Algo que muchas veces se pasa por alto es que podemos acceder a una lista de los atajos de teclado más usados en modo visual de TinyMCE. Para acceder a esta lista tenemos que seleccionar el editor visual, asegurarnos de que hemos activado los botones ocultos del editor (la segunda barra de Quicktags, oculta por defecto) y selecionar el último (Ayuda). Desde la ventana que aparece podremos acceder a la lista completa de combinaciones de teclas, así como a algunas explicaciones de uso del sistema.</p>
<p>Pero en esta lista no se incluyen los <strong>atajos de teclado necesarios si utilizas el editor en modo HTML</strong>, precisamente el que usamos los que estamos acostumbrados a memorizar y utilizar montones de combinaciones de teclas. Así que, para solucionar esta carencia, aquí encontrarás un listado con los más frecuentes:</p>
<h3>Atajos de teclado para editar contenidos en WordPress</h3>
<p>(Ver nota sobre navegadores más abajo)</p>
<ul class="lessMargin">
<li><strong>Ctrl + a</strong> = a (envolver el texto seleccionado con la etiqueta &#8220;a&#8221; (añadir un enlace)</li>
<li><strong>Ctrl + u</strong> = ul (lista desordenada)</li>
<li><strong>Ctrl + o</strong> = ol (lista ordenada)</li>
<li><strong>Ctrl + l</strong> = li (elemento de lista)</li>
<li><strong>Ctrl + p</strong> = publicar la entrada (o actualizarla, si ya estaba publicada)</li>
<li><strong>Ctrl + b</strong> = strong (negrita)</li>
<li><strong>Ctrl + q</strong> = blockquote (cita)</li>
<li><strong>Ctrl + i</strong> = em (cursiva)</li>
<li><strong>Ctrl + m</strong> = img (abrir cuadro para introducir la URL de una imagen)</li>
<li><strong>Ctrl + c</strong> = code (envolver lo seleccionado con la etiqueta &#8220;code&#8221;)</li>
<li><strong>Ctrl + e</strong> = cambio de modo (alternar entre modo visual y HTML)</li>
<li><strong>Ctrl + w</strong> = borrar palabras completas hacia atrás</li>
<li><strong>Ctrl + t</strong> = insertar la etiquieta &#8220;more&#8221;</li>
<li><strong>Enter / Shift + Enter</strong> = En el editor visual, para pasar a un párrafo diferente basta pulsar la tecla &#8220;enter&#8221;, pero para introducir saltos de linea simples, tendremos que utilizar la combinación Shift + enter (este es con diferencia el error más típico cuando alguien empieza a utilizar el editor visual de WordPress)</li>
</ul>
<p>Es una pena que no se puedan añadir mediante atajos de teclado etiquetas de titulos (h1, h2&#8230;), párrafos, bloques (div) y otras etiquetas HTML desde el editor de código, pero al menos con los de esta lista conseguiremos ser un poco más independientes del ratón.</p>
<h3>Nota sobre navegadores</h3>
<p>Haciendo pruebas rápidas con varios navegadores, veo que desgraciadamente cada uno responde de manera diferente a estas combinaciones de teclas:</p>
<ul class="lessMargin">
<li>En Firefox/Mac: Ctrl + letra</li>
<li>En Safari/Mac: solo funcionan algunos</li>
<li>En Chrome/Mac: solo funcionan algunos</li>
<li>En Firefox/Windows: Shift + Alt + letra</li>
<li>En Chrome/Windows: Algunos con Ctrl + letra y otros con Shift + Alt + letra</li>
<li>En Internet Explorer/Windows: Alt + letra abre la etiqueta y Shift + Alt + letra cierra la etiqueta</li>
</ul>
<p>Si conoces algún otro atajo de teclado que no esté listado aquí, no dudes en compartirlo en los comentarios.</p>
<p class="peq">Foto: <em>Laptop work</em>, by <a href="http://www.sxc.hu/photo/1260785">sqback</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielnabil.com/blog/atajos-teclado-editor-wordpress-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo mover comentarios de una entrada a otra en WordPress</title>
		<link>http://www.danielnabil.com/blog/como-mover-comentarios-entradas-wordpress/</link>
		<comments>http://www.danielnabil.com/blog/como-mover-comentarios-entradas-wordpress/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 01:46:52 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.danielnabil.com/?p=479</guid>
		<description><![CDATA[Mover comentarios de una entrada a otra no es algo que haya que hacer muy a menudo, pero hay casos en los que sí que tiene mucho sentido hacerlo. Por ejemplo, cuando un usuario publica un comentario en una entrada equivocada, o donde no se está hablando del tema que ... <a href="http://www.danielnabil.com/blog/como-mover-comentarios-entradas-wordpress/" class="seguir"><img src="/wp-content/themes/dn2/img/mas.png" alt="" /></a>]]></description>
			<content:encoded><![CDATA[<p>Mover comentarios de una entrada a otra no es algo que haya que hacer muy a menudo, pero hay casos en los que sí que tiene mucho sentido hacerlo. Por ejemplo, cuando un usuario publica un comentario en una entrada equivocada, o donde no se está hablando del tema que él propone. También puede ser útil cuando queremos mover todo el contenido de una entrada a otra nueva, junto con los comentarios que la acompañan.</p>
<p>Foros muy populares como <a href="http://www.phpbb.com/">phpBB</a> permiten este tipo de acciones, pero WordPress (al menos hasta la versión 3.0.1) no nos deja hacer estos cambios desde el panel de control, así que no nos queda más remedio que ir directamente a la base de datos y realizar los cambios desde ahí, a través de phpMyAdmin y algunas sentencias SQL.</p>
<p>Otra manera de conseguir algo parecido, aunque mucho menos elegante, sería reescribir nosotros mismos los comentarios que queremos cambiar y borrar después los originales. Pero si lo hacemos así, además de llevar más trabajo, perderemos algunos datos como la IP del autor, que no se puede editar desde el panel de administración de WordPress.</p>
<p><strong>Estos son los pasos que tendremos que dar cada vez que queramos mover comentarios en una web gestionada a través de WordPress:</strong></p>
<ol>
<li>Como siempre, lo primero será <a href="http://codex.wordpress.org/WordPress_Backups">hacer una copia de seguridad de la base de datos</a></li>
<li>Reunir y anotar algunos detalles que necesitaremos en los próximos pasos (entre paréntesis el identificador para saber dónde hay que introducir el dato en el código SQL de los puntos 3 y 4):
<ul class="lessMargin">
<li>ID de la entrada original, donde están los comentarios que queremos mover (ID1)</li>
<li>ID de la nueva entrada, donde estarán los comentarios después de moverlos (ID2)</li>
<li>Número de comentarios en la entrada original, después de moverlos (XX)</li>
<li>Número de comentarios en la entrada nueva, contando los que hemos movido (YY)</li>
<li>Email del autor del comentario, en caso de que queramos mover solamente los comentarios de un autor determinado (EMAIL-AUTOR)</li>
</ul>
</li>
<li>
<p>En phpMyAdmin (o cualquier gestor donde podamos ejecutar sentencias SQL sobre la base de datos que usa WordPress), vamos a la pestaña &#8220;SQL&#8221; y pegamos estas consultas, según lo que queramos hacer:</p>
<p>Si queremos mover todos los comentarios de una entrada a otra:</p>
<pre>UPDATE wp_comments SET comment_post_ID=ID2 WHERE comment_post_ID=ID1;</pre>
<p>Si queremos mover solo un comentario concreto (necesitaremos el ID de ese comentario):</p>
<pre>UPDATE wp_comments SET comment_post_ID=ID2 WHERE comment_ID=ID del comentario;</pre>
<p>Si queremos mover todos los comentarios de un autor concreto:</p>
<pre>UPDATE wp_comments SET comment_post_ID=ID2 WHERE comment_post_ID=ID1
AND comment_author_email='EMAIL-AUTOR';</pre>
</li>
<li>Actualizar los contadores de comentarios de ambas entradas:
<pre>
UPDATE wp_posts SET comment_count=XX WHERE ID=ID1;
UPDATE wp_posts SET comment_count=YY WHERE ID=ID2;
</pre>
</li>
</ol>
<p>Hay que tener en cuenta un par de cosas importantes:</p>
<ul>
<li>Es necesario cambiar &#8220;ID1&#8243;, &#8220;ID2&#8243;, &#8220;XX&#8221;, &#8220;YY&#8221; y &#8220;EMAIL-AUTOR&#8221; por los valores que correspondan en cada caso.</li>
<li>El prefijo de las tablas que usa WordPress puede ser diferente. Por defecto será &#8220;wp_&#8221;, pero si lo cambiamos al instalar WordPress, habrá que cambiarlo aquí también.</li>
<li>Los plugins que incorporen algún sistema de cache para los comentarios, por ejemplo, <a href="http://wordpress.org/extend/plugins/get-recent-comments/">Recent Comments</a>, no reflejarán los cambios inmediatamente. Una solución fácil puede ser simplemente visitar las opciones del plugin y actualizarlas sin hacer ningún cambio. Esto forzará al plugin a volver a leer los comentarios otra vez desde la base de datos.</li>
</ul>
<p>Seguro que existe más de un plugin que permite mover comentarios de manera mucho más fácil y cómoda, pero como es algo que en principio solo se hace muy de vez en cuando, no veo la necesidad de sobrecargar el sistema con más extensiones. Sí será una solución perfecta para quien no tenga acceso a la base de datos o no esté familiarizado con phpMyAdmin y las sentencias SQL. </p>
<p><strong>ACTUALIZACIÓN</strong>: Algunos plugins para mover comentarios:</p>
<ul class="lessMargin">
<li>Move WordPress comments: <a href="http://wordpress.org/extend/plugins/move-wordpress-comments/">http://wordpress.org/extend/plugins/move-wordpress-comments/</a></li>
<li>Move comments: <a href="http://wordpress.org/extend/plugins/move-comments/">http://wordpress.org/extend/plugins/move-comments/</a></li>
<li>WP-move comments: <a href="http://wordpress.org/extend/plugins/wp-move-comments/">http://wordpress.org/extend/plugins/wp-move-comments/</a></li>
<li>Simple move comments: <a href="http://wordpress.org/extend/plugins/simple-move-comments/">http://wordpress.org/extend/plugins/simple-move-comments/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.danielnabil.com/blog/como-mover-comentarios-entradas-wordpress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cómo recuperar acceso como &#8216;super-admin&#8217; en WordPress multiusuario</title>
		<link>http://www.danielnabil.com/blog/recuperar-acceso-super-admin-wordpress-multiusuario/</link>
		<comments>http://www.danielnabil.com/blog/recuperar-acceso-super-admin-wordpress-multiusuario/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 11:51:56 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.danielnabil.com/?p=474</guid>
		<description><![CDATA[Desde la versión 3.0, WordPress permite utilizar el nombre que queramos para el usuario administrador de una web, mientras que en versiones anteriores, por defecto nos veíamos forzados a usar &#8220;admin&#8221; como nombre de usuario.
Por motivos de seguridad, conviene siempre cambiar este nombre de usuario, pero como no se puede ... <a href="http://www.danielnabil.com/blog/recuperar-acceso-super-admin-wordpress-multiusuario/" class="seguir"><img src="/wp-content/themes/dn2/img/mas.png" alt="" /></a>]]></description>
			<content:encoded><![CDATA[<p>Desde la versión 3.0, WordPress permite utilizar el nombre que queramos para el usuario administrador de una web, mientras que en versiones anteriores, por defecto nos veíamos forzados a usar &#8220;admin&#8221; como nombre de usuario.</p>
<p>Por motivos de seguridad, conviene siempre cambiar este nombre de usuario, pero como no se puede hacer fácilmente desde el panel de control, la única solución (aparte de los plugins que pueda haber para hacer esto) es cambiarlo directamente desde la base de datos:</p>
<ol>
<li>Hacer una <a href="http://codex.wordpress.org/WordPress_Backups">copia de seguridad de la base de datos</a></li>
<li>Acceder a la base de datos (a través de phpMyAdmin o del sistema que utilice nuestro proveedor de alojamiento web)</li>
<li>Examinar la tabla &#8220;wp_users&#8221; (si cambiaste el prefijo en el momento de la instalación, en vez de &#8220;wp_&#8221; verás el prefijo que pusiste)</li>
<li>Editar la fila del usuario que queremos cambiar (normalmente la primera: &#8220;admin&#8221;)</li>
<li>Cambiar el campo &#8220;user_login&#8221; que ahora pone &#8220;admin&#8221; por el nuevo nombre que queremos usar (seguramente el campo &#8220;user_nicename&#8221; también tenga el valor &#8220;admin&#8221;, pero eso lo podemos cambiar fácilmente desde el panel de control, no es necesario cambiarlo desde aquí)</li>
<li>Guardar los cambios</li>
</ol>
<p>O también, de una manera más rápida:</p>
<pre>
update wp_users set user_login='nuevo-nombre' where user_login='admin';
</pre>
<p>A partir de este momento, ya no podremos acceder al panel de control de WordPress con los datos antiguos y deberemos utilizar el nuevo nombre de usuario que hemos creado.</p>
<p>Hasta aquí ningún problema, ya que este proceso está perfectamente documentado en muchos sitios. Sin embargo, si tenemos una red de webs con WordPress 3 multiblog o multiusuario (antes WordPress Mu), esto no es suficiente. Si intentamos cambiar el nombre del usuario administrador siguiendo los pasos anteriores, nos encontraremos con que ya no podremos acceder como &#8220;Super Admin&#8221;, sinó como un administrador normal.</p>
<p>Después de seguir el proceso anterior, es necesario dar un paso extra:</p>
<ol>
<li>Examinar la tabla &#8220;wp_sitemeta&#8221;, que es donde se guardan algunos ajustes importantes del sistema. En la fila &#8220;site_admins&#8221; veremos esto: <strong>a:1:{i:0;s:5:&#8221;admin&#8221;;}</strong></li>
<li>Cambiar &#8220;admin&#8221; por el nuevo nombre que queremos utilizar (lógicamente, el mismo que hemos puesto antes en &#8220;user_login&#8221;). Contar las letras del nuevo nombre y sustituir el &#8220;5&#8243; por el nuevo número de letras del nombre de usuario. Es decir, si el nuevo nombre que queremos usar es &#8220;administrador&#8221;, el valor de la clave &#8220;site_admins&#8221; deberá quedar así: <strong>a:1:{i:0;s:13:&#8221;administrador&#8221;;}</strong></li>
</ol>
<p>Con esto habremos cambiado el nombre de usuario por defecto del usuario administrador con privilegios de &#8216;super-admin&#8217;. No es complicado, pero puede llevarnos bastante tiempo arreglar este problema si no conocemos este paso extra.</p>
<p>Más información (en inglés) en el foro de WordPress multiusuario:<br />
<a href="http://wordpress.org/support/topic/recover-super-admin-access-after-username-change">http://wordpress.org/support/topic/recover-super-admin-access-after-username-change</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielnabil.com/blog/recuperar-acceso-super-admin-wordpress-multiusuario/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Error de lectura XML en Firefox en RSS generados por WordPress</title>
		<link>http://www.danielnabil.com/blog/error-de-lectura-xml-firefox-rss-wordpress/</link>
		<comments>http://www.danielnabil.com/blog/error-de-lectura-xml-firefox-rss-wordpress/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 01:01:25 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.danielnabil.com/?p=324</guid>
		<description><![CDATA[
Hoy un usuario de una de las webs que gestiono me ha avisado de que no podía acceder a las actualizaciones RSS. Revisando el tema, he comprobado que el error (ver imagen) solamente aparecía en Firefox (&#8220;Error de lectura XML&#8220;), mientras que en otros navegadores, las actualizaciones RSS se generaban ... <a href="http://www.danielnabil.com/blog/error-de-lectura-xml-firefox-rss-wordpress/" class="seguir"><img src="/wp-content/themes/dn2/img/mas.png" alt="" /></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.danielnabil.com/img/error-de-lectura-xml.gif" alt="Error de lectura XML" title="Captura de pantalla del error (Firefox): Error de lectura XML, declaración de texto o XML..." width="672" height="157" class="alignnone size-full wp-image-325" /></p>
<p>Hoy un usuario de una de las webs que gestiono me ha avisado de que no podía acceder a las actualizaciones RSS. Revisando el tema, he comprobado que el error (ver imagen) solamente aparecía en Firefox (&#8220;<strong>Error de lectura XML</strong>&#8220;), mientras que en otros navegadores, las actualizaciones RSS se generaban perfectamente:</p>
<pre>
Error de lectura XML: declaración de texto o XML en un lugar distinto del principio
de la entidad. Ubicación: http://www... Número de línea 2, columna 1:
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
</pre>
<p>No es la primera vez que encuentro este problema, así que, en vista de que no hay demasiada información publicada al respecto, explico cual ha sido la solución en mi caso:</p>
<ol>
<li>Abrir el archivo <code>functions.php</code> del tema activo (ubicado en /wp-content/themes/nombre-del-tema/functions.php)</li>
<li>Localizar y eliminar espacios vacíos entre las etiquetas de apertura y cierre de PHP (ver imagen). O mejor aun, combinarlas para que solo se abra y se cierre una vez (aunque no siempre es posible)</li>
<li>Guardar y subir al servidor</li>
</ol>
<p><img src="http://www.danielnabil.com/img/espacios-functions-php.gif" alt="Espacios vacios en PHP" title="Eliminando espacios en blanco en functions.php" width="672" height="206" class="alignnone size-full wp-image-326" /></p>
<p>Es un error que puede ser muy fácil de arreglar, pero que también puede ser muy difícil de detectar, por la cantidad de archivos PHP que utiliza WordPress. De todas formas, la lógica es esta: partiendo de que no hemos tocado los archivos del core de WordPress (los básicos: los de la raíz, wp-admin o wp-includes) sólo nos quedan dos comprobaciones que hacer: los plugins instalados y el archivo <code>functions.php</code> del tema activo. </p>
<p>Podemos probar a desactivar los plugins uno a uno, para ver si el problema está en el código de alguno de ellos. Si aun asi el problema persiste, solo nos queda un archivo que repasar: <code>functions.php</code>, que es un archivo que, por poco que queramos personalizar una web, conviene conocer a fondo.</p>
<p>No siempre será tan fácil de detectar, pero las tres o cuatro veces que he tenido que solucionar este problema, esta ha sido la solución.</p>
<p>Para estar seguro de que tu RSS se genera sin problemas en Firefox, abre este navegador, pon la dirección de tu web seguida de /feed/ y, si te aparece el error, ya tienes una pista de dónde mirar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielnabil.com/blog/error-de-lectura-xml-firefox-rss-wordpress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cómo exportar e importar enlaces en WordPress con categorías y descripciones</title>
		<link>http://www.danielnabil.com/blog/como-importar-exportar-enlaces-wordpress-con-categorias-descripciones/</link>
		<comments>http://www.danielnabil.com/blog/como-importar-exportar-enlaces-wordpress-con-categorias-descripciones/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 04:16:54 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.danielnabil.com/?p=114</guid>
		<description><![CDATA[Cualquiera que se haya pasado algún tiempo trabajando con WordPress y haya tenido que mover instalaciones de un servidor a otro, se habrá encontrado con la necesidad de exportar los enlaces (links, bookmarks o &#8220;blogroll&#8221;, como suele llamarse en el panel de control) para después importarlos desde la nueva instalación.
El ... <a href="http://www.danielnabil.com/blog/como-importar-exportar-enlaces-wordpress-con-categorias-descripciones/" class="seguir"><img src="/wp-content/themes/dn2/img/mas.png" alt="" /></a>]]></description>
			<content:encoded><![CDATA[<p>Cualquiera que se haya pasado algún tiempo trabajando con <strong><a href="http://wordpress.org/">WordPress</a></strong> y haya tenido que mover instalaciones de un servidor a otro, se habrá encontrado con la necesidad de exportar los enlaces (links, bookmarks o &#8220;blogroll&#8221;, como suele llamarse en el panel de control) para después importarlos desde la nueva instalación.</p>
<p>El problema aparece al ver que <strong>los enlaces no se exportan junto con el resto de contenidos de WordPress</strong> si utilizamos <code>Herramientas > Exportar</code>. Aunque sí existe la opción para importarlos, no hay en el area de administación ningún modo de exportar nuestros enlaces. El siguiente problema es que las categorías y las descripciones se pierden por el camino y no se importan.</p>
<p>Como ya he explicado esto varias veces a diferentes personas, lo publico aquí, que será más útil que explicarlo cada vez que alguien se encuentra con el problema.</p>
<h2>1. Cómo exportar enlaces en WordPress</h2>
<p>Si solo queremos exportarlos y no tenemos ninguna categoría de enlaces creada ni tampoco hemos añadido descripciones, lo único que hay que hacer es apuntar el navegador a la dirección del archivo <code><strong>wp-links-opml.php</strong></code>, que está en la raíz de la instalación de WordPress. Es decir: </p>
<p><code><strong>http://www.ejemplo.com/wp-links-opml.php</strong></code> (cambiar &#8220;ejemplo.com&#8221; por la dirección de nuestra web)</p>
<p>WordPress crea un archivo XML que contiene los datos que necesitamos en formato OPML. Dependiendo del navegador que utilicemos, veremos una cosa u otra: con Safari, por ejemplo, solo veremos una página en blanco con una linea de texto (el nombre de nuestra web y la fecha de creación del archivo), mientras que Firefox nos muestra directamente el código XML.</p>
<p>En realidad ni siquiera hace falta visitar esa página ni guardar o inspeccionar el código. Copiamos el enlace y pasamos a importarlos.</p>
<h2>2. Cómo importar los enlaces</h2>
<p>Para importar hay que ir a <code>Herramientas > Importar</code> y de la lista que aparece seleccionamos &#8220;<strong>Enlaces: Importar enlaces en formato OPML</strong>&#8220;. En la página siguiente tenemos dos opciones: pegar la dirección anterior (<code>http://www.ejemplo.com/wp-links-opml.php</code>) o bien subir el archivo desde nuestro ordenador, si lo hemos guardado antes. Finalmente, pulsamos el botón &#8220;<strong>Importar archivo OPML</strong>&#8220;.</p>
<h2>3. Cómo importar las categorías de los enlaces en WordPress</h2>
<p>Lo más fácil para importar los enlaces junto con sus categorías es utilizar este plugin:</p>
<p><a href="http://wordpress.org/extend/plugins/import-blogroll-with-categories/">http://wordpress.org/extend/plugins/import-blogroll-with-categories/</a></p>
<p>WordPress solo nos ofrece la posibilidad de guardar todos nuestros enlaces en una única categoría, pero lo curioso es que la información necesaria de cada enlace y su categoría está en el archivo XML que importamos, aunque WordPress no lo tiene en cuenta.</p>
<p>Este plugin añade esta funcionalidad añadiendo una nueva opción en la página <code>Herramientas > importar</code> que se llama &#8220;<strong>Blogroll with categories</strong>&#8221; (y también en el menú &#8220;Links&#8221;) con la posibilidad de crear las categorías de enlaces automáticamente, tal como estaban en la web original que estamos trasladando.</p>
<h2>4. Cómo importar las descripciones de los enlaces</h2>
<p>Otra de las cosas que no hace WordPress es exportar las descripciones de los enlaces en el archivo XML junto con el resto de la información.</p>
<p>Para conseguir esto y no tener que hacerlo a mano, tendremos que editar el código del archivo <code>wp-links-opml.php</code>:</p>
<ul>
<li>Abre <code>wp-links-opml.php</code> (está en la raíz de la instalación de WordPress) con tu editor de código</li>
<li>En la linea 54 añade esto antes del cierre de <code>outline</code> (ver imagen): <code><strong>description=&quot;&lt;?php echo esc_attr($bookmark-&gt;link_description); ?&gt;&quot;</strong></code>. Quedará así:</li>
</ul>
<pre>
&lt;outline text=&quot;&lt;?php echo $title; ?&gt;&quot; type=&quot;link&quot;
xmlUrl=&quot;&lt;?php echo esc_attr($bookmark-&gt;link_rss); ?&gt;&quot;
htmlUrl=&quot;&lt;?php echo esc_attr($bookmark-&gt;link_url); ?&gt;&quot;
updated=&quot;&lt;?php if ('0000-00-00 00:00:00' != $bookmark-&gt;link_updated)
echo $bookmark-&gt;link_updated; ?&gt;&quot; description=&quot;&lt;?php echo
esc_attr($bookmark-&gt;link_description); ?&gt;&quot; /&gt;
</pre>
<p><img src="http://www.danielnabil.com/img/exportar-descripciones-wordpress.jpg" alt="Exportar descripciones de enlaces en WordPress: wp-links-opml.php" /></p>
<p>Esto añadirá las descripciones al archivo OPML para que podamos importarlas. Guarda el archivo, súbelo al servidor y ya puedes importar todos los enlaces con sus categorías y sus descripciones automáticamente sin tener que perder tiempo copiándolos uno a uno.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielnabil.com/blog/como-importar-exportar-enlaces-wordpress-con-categorias-descripciones/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

