<?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>Webtips</title>
	<atom:link href="https://www.webtips.es/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.webtips.es</link>
	<description>Blog sobre desarrollo web</description>
	<lastBuildDate>Mon, 04 Apr 2011 17:12:59 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Cómo almacenar información en la base de datos de WordPress</title>
		<link>https://www.webtips.es/como-almacenar-informacion-en-la-base-de-datos-de-wordpress/</link>
					<comments>https://www.webtips.es/como-almacenar-informacion-en-la-base-de-datos-de-wordpress/#comments</comments>
		
		<dc:creator><![CDATA[Webtips]]></dc:creator>
		<pubDate>Mon, 04 Apr 2011 17:05:59 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[base de datos]]></category>
		<category><![CDATA[options]]></category>
		<guid isPermaLink="false">http://www.webtips.es/?p=639</guid>

					<description><![CDATA[<p>En Wordpress disponemos de una tabla en la base de datos llamada <strong>wp_options</strong> en la que podemos almacenar un par nombre/valor de una variable de forma indefinida. Esta información podrá ser accedida, actualizada o borrada, y para ello no hace falta escribir ni una sola línea de SQL. Wordpress dispone de una API para realizar todas estas operaciones de una forma muy sencilla e intuitiva.</p>
<p>The post <a href="https://www.webtips.es/como-almacenar-informacion-en-la-base-de-datos-de-wordpress/">Cómo almacenar información en la base de datos de WordPress</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>En WordPress disponemos de una tabla en la base de datos llamada <strong>wp_options</strong> en la que podemos almacenar un par nombre/valor de una variable de forma indefinida. Esta información podrá ser accedida, actualizada o borrada, y para ello no hace falta escribir ni una sola línea de SQL. WordPress dispone de una API para realizar todas estas operaciones de una forma muy sencilla e intuitiva. Al par nombre/valor que almacenamos en la base de datos de WordPress se le llama opción (option) y las funciones con las que podemos tratar esas opciones son add_option, get_option, update_option y delete_option.</p>
<h3>Añadir un valor</h3>
<p>Para añadir un valor a la base de datos, utilizaremos la función <strong>add_option()</strong>, que puede tener 4 parámetros:</p>
<ul>
<li><strong>$nombre</strong>: nombre de la opción que almacenamos. Este parámetro es obligatorio y por defecto está vacío.</li>
<li><strong>$valor</strong>: valor de la opción. Es un parámetro opcional y por defecto está vacío.</li>
<li><strong>$descripción</strong>: este parámetro no se usa desde la versión 2.3 de WordPress. Si se necesita usar el siguiente parámetro, hay que pasar una cadena vacía o null.</li>
<li><strong>$autocargar</strong>: indica si la opción debe ser almacenada en el objeto caché automáticamente por la función wp_load_alloptions. Es opcional y por defecto es sí.</li>
</ul>
<p>Vamos a ver con un ejemplo cómo podríamos almacenar en la base de datos de WordPress un saludo que se mostrará cada vez que carguemos una página.</p>
<pre lang="php">
add_option('saludo', 'Bienvenido a mi blog!');
</pre>
<p>Si quisiéramos que esta opción no se cargara en caché automáticamente, necesitamos usar el último parámetro:</p>
<pre lang="php">
add_option('saludo', 'Bienvenido a mi blog!', '', 'no');
</pre>
<p>Como vemos, el tercer argumento es la cadena vacía, ya que ese parámetro ya no se usa.</p>
<h3>Acceder al valor de una opción</h3>
<p>Para acceder al valor de una opción usamos la función <strong>get_option()</strong> que tiene 2 parámetros:</p>
<ul>
<li><strong>$nombre</strong>: el nombre de la opción. Es un parámetro obligatorio. Por defecto, WordPress almacena en la base de datos muchas opciones (casi todas se pueden editar desde el menú Ajustes del administrador). Aquí podemos ver <a href="http://codex.wordpress.org/Option_Reference">una lista de las opciones almacenadas por defecto</a>.</li>
<li><strong>$valor_por_defecto</strong>: es el valor que se devolverá si no se encuentra la opción en la base de datos. Es un parámetro opcional.</li>
</ul>
<p>Ejemplo de cómo se accedería a la opción creada en el punto anterior:</p>
<pre lang="php">
get_option('saludo');
</pre>
<p>Por si acaso esta opción no se encontrara en la base de datos, podemos devolver un valor por defecto:</p>
<pre lang="php">
get_option('saludo', 'Hola');
</pre>
<h3>Actualizar el valor de una opción</h3>
<p>Para actualizar el valor de una opción usamos la función <strong>update_option()</strong> que también tiene 2 parámetros:</p>
<ul>
<li><strong>$nombre</strong>: el nombre de la opción que vamos a actualizar. Es un parámetro obligatorio.</li>
<li><strong>$nuevo_valor</strong>: el valor con el que se actualizará la opción. También es obligatorio. Este nuevo valor puede ser una cadena, un array, un objeto o un valor serializado.</li>
</ul>
<p>Veamos un ejemplo de cómo actualizar el valor de nuestra opción:</p>
<pre lang="php">
update_option('saludo', 'Hola y bienvenido a mi blog');
</pre>
<h3>Borrar una opción</h3>
<p>Por último, si queremos borrar una opción de la base de datos, usamos la función <strong>delete_option()</strong> que sólo lleva un parámetro:</p>
<ul>
<li><strong>$nombre</strong>: el nombre de la opción que vamos a borrar. Es obligatorio.</li>
</ul>
<p>Esta función devuelve TRUE si el borrado ha tenido éxito o FALSE en caso contrario. Veamos el ejemplo:</p>
<pre lang="php">
delete_option('saludo');
</pre>
<p>Con estas 4 funciones podemos usar la base de datos de WordPress para almacenar la información que necesitemos. Si estamos creando un plugin para WordPress, podremos usarlas para almacenar las opciones de configuración de nuestro plugin. Fácil, ¿no?</p><p>The post <a href="https://www.webtips.es/como-almacenar-informacion-en-la-base-de-datos-de-wordpress/">Cómo almacenar información en la base de datos de WordPress</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.webtips.es/como-almacenar-informacion-en-la-base-de-datos-de-wordpress/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Calcular edad con PHP</title>
		<link>https://www.webtips.es/calcular-edad-con-php/</link>
					<comments>https://www.webtips.es/calcular-edad-con-php/#comments</comments>
		
		<dc:creator><![CDATA[Webtips]]></dc:creator>
		<pubDate>Thu, 24 Mar 2011 10:31:42 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[explode]]></category>
		<category><![CDATA[strtotime]]></category>
		<guid isPermaLink="false">http://www.webtips.es/?p=631</guid>

					<description><![CDATA[<p>Calcular la edad de una persona a partir de su fecha de nacimiento (o la edad de algo a partir de su fecha de creación) puede resultar tedioso al principio, ya que hay que hacer una serie de cálculos. Para empezar, debemos calcular el número de años que han pasado desde el año de su nacimiento hasta el año actual, obviamente, y después hay que afinar ese número comprobando el mes y el día para averiguar si su "cumpleaños" ya ha sido o todavía no ha pasado. Vayamos por partes.</p>
<p>The post <a href="https://www.webtips.es/calcular-edad-con-php/">Calcular edad con PHP</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Calcular la edad de una persona a partir de su fecha de nacimiento (o la edad de algo a partir de su fecha de creación) puede resultar tedioso al principio, ya que hay que hacer una serie de cálculos. Para empezar, debemos calcular el número de años que han pasado desde el año de su nacimiento hasta el año actual, obviamente, y después hay que afinar ese número comprobando el mes y el día para averiguar si su «cumpleaños» ya ha sido o todavía no ha pasado. Vayamos por partes.</p>
<p>Lo primero será extraer el día, el mes y el año de la fecha de nacimiento, que vamos a suponer que estará en formato yyyy-mm-dd al venir de una base de datos. Almacenamos esos valores en 3 variables: $y para el año, $m para el mes y $d para el día.</p>
<pre lang="php" line="1">
    list($y, $m, $d) = explode("-", $fecha_nacimiento);
</pre>
<p>Con estos 3 datos, restamos al año actual el año de nacimiento, al mes actual el mes de nacimiento y al día actual el día de nacimiento.</p>
<pre lang="php" line="1">
    $y_dif = date("Y") - $y;
    $m_dif = date("m") - $m;
    $d_dif = date("d") - $d;
</pre>
<p>Por último hay que tener en cuenta que si la diferencia de meses es 0 (estamos en el mismo mes en el que nacimos) pero la diferencia de días es menor que 0, aún no ha sido nuestro cumpleaños y habrá que restar 1 al año. Igualmente, si la diferencia de meses es negativo (aún no hemos llegado al mes de nuestro cumpleaños) también habrá que restar 1 año.</p>
<pre lang="php" line="1">
    if ((($d_dif < 0) &#038;&#038; ($m_dif == 0)) || ($m_dif < 0))
        $y_dif--;
</pre>
<p>Si la diferencia de meses es positiva es porque ya hemos pasado el mes del cumpleaños y no habría que restar ningún año. Y si la diferencia de meses es 0 pero la diferencia de meses es positiva, también es porque el cumpleaños ya ha pasado y tampoco habría que restar ningún año.</p>
<p>Vamos a poner todo lo anterior en una función para no tener que escribirlo cada que vez que queramos usarlo.</p>
<pre lang="php" line="1">
function calcularEdad ($fecha_nacimiento) {
    list($y, $m, $d) = explode("-", $fecha_nacimiento);
    $y_dif = date("Y") - $y;
    $m_dif = date("m") - $m;
    $d_dif = date("d") - $d;
    if ((($d_dif < 0) &#038;&#038; ($m_dif == 0)) || ($m_dif < 0))
        $y_dif--;
    return $y_dif;
}
</pre>
<p>Para llamar a esta función, sólo tendríamos que hacer por ejemplo:</p>
<pre lang="php" line="1">
calcularEdad("1934-10-25");
</pre><p>The post <a href="https://www.webtips.es/calcular-edad-con-php/">Calcular edad con PHP</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.webtips.es/calcular-edad-con-php/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Cómo programar un cron en WordPress</title>
		<link>https://www.webtips.es/como-programar-un-cron-en-wordpress/</link>
					<comments>https://www.webtips.es/como-programar-un-cron-en-wordpress/#comments</comments>
		
		<dc:creator><![CDATA[Webtips]]></dc:creator>
		<pubDate>Mon, 14 Mar 2011 13:13:54 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[cron]]></category>
		<guid isPermaLink="false">http://www.webtips.es/?p=626</guid>

					<description><![CDATA[<p>Según la definición de la Wikipedia, un cron es un administrador regular de procesos en segundo plano que ejecuta procesos a intervalos regulares. En ocasiones, podemos necesitar un cron en Wordpress para lanzar determinados eventos periódicamente, como eliminar el spam o hacer backups de la base de datos. Con Wordpress podremos programar estos eventos de una forma muy sencilla.</p>
<p>The post <a href="https://www.webtips.es/como-programar-un-cron-en-wordpress/">Cómo programar un cron en WordPress</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Según la definición de la Wikipedia, un cron es un administrador regular de procesos en segundo plano que ejecuta procesos a intervalos regulares. En ocasiones, podemos necesitar un cron en WordPress para lanzar determinados eventos periódicamente, como eliminar el spam o hacer backups de la base de datos. Con WordPress podremos programar estos eventos de una forma muy sencilla.</p>
<p>La función que usaremos para programar un cron en WordPress se llama <a href="http://codex.wordpress.org/Function_Reference/wp_schedule_event">wp_schedule_event</a> que tiene la siguiente forma:</p>
<pre lang="php" line="1">
wp_schedule_event($timestamp, $recurrencia, $hook, $args);
</pre>
<p>La variable <strong>$timestamp</strong> contiene la fecha en la que queremos que el evento ocurra por primera vez, <strong>$recurrencia</strong> puede tomar 3 valores: <em>hourly</em> (cada hora), <em>twicedaily</em> (dos veces al dia) o <em>daily</em> (diariamente), <strong>$hook</strong> contiene el nombre del <a href="http://codex.wordpress.org/Plugin_API#Hooks.2C_Actions_and_Filters">hook</a> de WordPress que lanzará el evento, y por último la variable <strong>$args</strong> (la única opcional) contendrá los argumentos que le podremos pasar al hook.</p>
<h3>Crear un cron</h3>
<p>Lo primero que tenemos que hacer es programar el cron usando esta función.</p>
<pre lang="php" line="1">
if ( !wp_next_scheduled('mi_hook') ) {
   wp_schedule_event( time(), 'daily', 'mi_hook' );
}
</pre>
<p>En este ejemplo hemos llamado «mi_hook» al hook que usaremos para lanzar el evento. En la línea 1 comprobamos que no exista ya un cron programado con este nombre, y en la línea 2 lo programamos para que se ejecute una vez al día con la fecha actual como fecha de inicio.</p>
<p>Lo siguiente es crear la función que va a lanzar el cron cada vez que se ejecute. Por ejemplo, vamos a crear una función que nos mande un correo todos los días saludándonos.</p>
<pre lang="php" line="1">
function mi_tarea() {
   wp_mail('ejemplo@ejemplo.com', 'Mail mandado por el cron', 'Hola, esto es un correo enviado automáticamente');
}
</pre>
<p>Hemos llamado a esta función «mi_tarea» y lo que hace es mandarnos un correo con el título «Mail mandado por el cron» y en el que nos dice «Hola, esto es un correo enviado automáticamente». Hemos usado una función nativa de WordPress para mandar correos llamada <a href="http://codex.wordpress.org/Function_Reference/wp_mail">wp_mail</a>.</p>
<p>Ya sólo nos falta una cosa, relacionar «mi_hook» con «mi_tarea». Para ello añadimos una acción:</p>
<pre lang="php" line="1">
add_action('mi_hook', 'mi_tarea');
</pre>
<p>Con estos 3 trozos de código, WordPress nos enviará un correo todos los días automáticamente. Podemos usarlo en un plugin o en nuestro <em>theme</em>, pegando el código en el archivo functions.php.</p>
<h3>Desactivar un cron</h3>
<p>Cuando ya no necesitemos el cron, tendremos que desactivarlo para que no siga ejecutándose.</p>
<pre lang="php" line="1">
function mi_tarea_desactivar() {
   wp_clear_scheduled_hook('mi_hook');
}
delete_action( 'mi_hook', 'mi_tarea_desactivar' );
</pre>
<p>Y ya está. La próxima vez que se ejecute el evento, se desactivará el cron.</p><p>The post <a href="https://www.webtips.es/como-programar-un-cron-en-wordpress/">Cómo programar un cron en WordPress</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.webtips.es/como-programar-un-cron-en-wordpress/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>5 herramientas para elegir la paleta de colores en un diseño web</title>
		<link>https://www.webtips.es/5-herramientas-para-elegir-la-paleta-de-colores-en-un-diseno-web/</link>
					<comments>https://www.webtips.es/5-herramientas-para-elegir-la-paleta-de-colores-en-un-diseno-web/#comments</comments>
		
		<dc:creator><![CDATA[Webtips]]></dc:creator>
		<pubDate>Tue, 08 Mar 2011 11:30:28 +0000</pubDate>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[color]]></category>
		<category><![CDATA[color picker]]></category>
		<category><![CDATA[diseño]]></category>
		<guid isPermaLink="false">http://www.webtips.es/?p=608</guid>

					<description><![CDATA[<p>En el éxito de un sitio web, el diseño juega un papel muy importante. Y dentro del diseño, además de la estructura que tendrá nuestra web, el color es una pieza clave para darle la personalidad que queremos a nuestro trabajo. Un diseño serio, simple, desenfadado o corporativo se diferencian en la paleta de colores utilizada. Hay herramientas que pueden facilitarnos la tarea de elegir color.</p>
<p>The post <a href="https://www.webtips.es/5-herramientas-para-elegir-la-paleta-de-colores-en-un-diseno-web/">5 herramientas para elegir la paleta de colores en un diseño web</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>En el éxito de un sitio web, el diseño juega un papel muy importante. Y dentro del diseño, además de la estructura que tendrá nuestra web, el color es una pieza clave para darle la personalidad que queremos a nuestro trabajo. Un diseño serio, simple, desenfadado o corporativo se diferencian en la paleta de colores utilizada. Hay herramientas que pueden facilitarnos la tarea de elegir color. A partir de un color, estas herramientan nos proponen una serie de colores que, dependiendo de nuestros gustos, podremos utilizar. Estas son las herramientas online que más utilizo para este fin.</p>
<h3><a href="http://colorschemedesigner.com/">Color Scheme Designer</a></h3>
<p><a href="http://colorschemedesigner.com/"><img fetchpriority="high" decoding="async" src="http://www.webtips.es/wp-content/uploads/color-scheme-designer.jpg" alt="http://colorschemedesigner.com/" title="http://colorschemedesigner.com/" width="600" height="281" class="aligncenter size-full wp-image-609" srcset="https://www.webtips.es/wp-content/uploads/color-scheme-designer.jpg 600w, https://www.webtips.es/wp-content/uploads/color-scheme-designer-300x140.jpg 300w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<h3><a href="http://www.colorotate.org/">Color Rotate</a></h3>
<p><a href="http://www.colorotate.org/"><img decoding="async" src="http://www.webtips.es/wp-content/uploads/color-rotate.jpg" alt="http://www.colorotate.org/" title="http://www.colorotate.org/" width="600" height="281" class="aligncenter size-full wp-image-610" srcset="https://www.webtips.es/wp-content/uploads/color-rotate.jpg 600w, https://www.webtips.es/wp-content/uploads/color-rotate-300x140.jpg 300w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<h3><a href="http://colorexplorer.com/colormatch.aspx">Color Explorer</a></h3>
<p><a href="http://colorexplorer.com/colormatch.aspx"><img decoding="async" src="http://www.webtips.es/wp-content/uploads/color-explorer.jpg" alt="http://colorexplorer.com/colormatch.aspx" title="http://colorexplorer.com/colormatch.aspx" width="600" height="281" class="aligncenter size-full wp-image-611" srcset="https://www.webtips.es/wp-content/uploads/color-explorer.jpg 600w, https://www.webtips.es/wp-content/uploads/color-explorer-300x140.jpg 300w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<h3><a href="http://www.colorblender.com/">Color Blender</a></h3>
<p><a href="http://www.colorblender.com/"><img loading="lazy" decoding="async" src="http://www.webtips.es/wp-content/uploads/color-blender.jpg" alt="http://www.colorblender.com/" title="http://www.colorblender.com/" width="600" height="281" class="aligncenter size-full wp-image-613" srcset="https://www.webtips.es/wp-content/uploads/color-blender.jpg 600w, https://www.webtips.es/wp-content/uploads/color-blender-300x140.jpg 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></p>
<h3><a href="http://www.aviary.com/tools/toucan">Toucan</a></h3>
<p><a href="http://www.aviary.com/tools/toucan"><img loading="lazy" decoding="async" src="http://www.webtips.es/wp-content/uploads/toucan.jpg" alt="http://www.aviary.com/tools/toucan" title="http://www.aviary.com/tools/toucan" width="600" height="281" class="aligncenter size-full wp-image-612" srcset="https://www.webtips.es/wp-content/uploads/toucan.jpg 600w, https://www.webtips.es/wp-content/uploads/toucan-300x140.jpg 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></p><p>The post <a href="https://www.webtips.es/5-herramientas-para-elegir-la-paleta-de-colores-en-un-diseno-web/">5 herramientas para elegir la paleta de colores en un diseño web</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.webtips.es/5-herramientas-para-elegir-la-paleta-de-colores-en-un-diseno-web/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Deshabilitar la barra de administración en WordPress</title>
		<link>https://www.webtips.es/deshabilitar-la-barra-de-administracion-en-wordpress/</link>
					<comments>https://www.webtips.es/deshabilitar-la-barra-de-administracion-en-wordpress/#comments</comments>
		
		<dc:creator><![CDATA[Webtips]]></dc:creator>
		<pubDate>Sun, 06 Mar 2011 16:30:46 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[admin bar]]></category>
		<category><![CDATA[tips]]></category>
		<guid isPermaLink="false">http://www.webtips.es/?p=566</guid>

					<description><![CDATA[<p>Una de las novedades de WordPress 3.1 es la barra de administración (Admin Bar) que se muestra en la parte superior de nuestra página. Esta barra contiene enlaces directos a las opciones de administración que se usan más habitualmente como el dashboard, añadir una entrada o página nueva, ver los comentarios, editar los menús y [&#8230;]</p>
<p>The post <a href="https://www.webtips.es/deshabilitar-la-barra-de-administracion-en-wordpress/">Deshabilitar la barra de administración en WordPress</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Una de las novedades de WordPress 3.1 es la barra de administración (Admin Bar) que se muestra en la parte superior de nuestra página. Esta barra contiene enlaces directos a las opciones de administración que se usan más habitualmente como el dashboard, añadir una entrada o página nueva, ver los comentarios, editar los menús y los widgets y, si estamos en una página de una entrada del blog, ver la url corta.</p>
<p>A pesar de ser una barra muy útil, a veces puede resultar molesta, como por ejemplo cuando queremos hacer un pantallazo de nuestro blog. Hay varias formas de eliminarla según lo que necesitemos.</p>
<div id="attachment_604" style="width: 658px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-604" src="http://www.webtips.es/wp-content/uploads/barra-administracion.jpg" alt="Barra de Administración (Admin Bar) en WordPress 3.1" title="Barra de Administración (Admin Bar) en WordPress 3.1" width="650" height="132" class="size-full wp-image-604" srcset="https://www.webtips.es/wp-content/uploads/barra-administracion.jpg 650w, https://www.webtips.es/wp-content/uploads/barra-administracion-300x60.jpg 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /><p id="caption-attachment-604" class="wp-caption-text">Barra de Administración (Admin Bar) en WordPress 3.1</p></div>
<h3>No mostrar la barra de administración para nuestro perfil</h3>
<p>WordPress trae en su administrador una opción para esconder la barra de administración. Ir al menú Usuarios &gt; Tu Perfil y desmarcar las dos opciones en «Mostrar la barra de administración». La primera de ellas esconde la barra en el frontend (cuando estás viendo el sitio) y la segunda en el backend (en el administrador de WordPress).</p>
<div id="attachment_576" style="width: 658px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-576" src="http://www.webtips.es/wp-content/uploads/desactivar-en-perfil.png" alt="Desmarcar las dos opciones en &quot;Mostrar la barra de administración&quot;" title="Desmarcar las dos opciones en &quot;Mostrar la barra de administración&quot;" width="650" height="305" class="size-full wp-image-576" srcset="https://www.webtips.es/wp-content/uploads/desactivar-en-perfil.png 650w, https://www.webtips.es/wp-content/uploads/desactivar-en-perfil-300x140.png 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /><p id="caption-attachment-576" class="wp-caption-text">Desmarcar las dos opciones en &quot;Mostrar la barra de administración&quot;</p></div>
<p>Este método sólo deshabilita la barra de administración de tu usuario. Cada usuario de tu blog tiene que realizar este procedimiento en su propio perfil.</p>
<h3>Deshabilitar la barra de administración para todos los usuarios</h3>
<p>Si lo que necesitas es deshabilitar la barra para todos los usuarios, tendrás que usar el siguiente método. En el archivo functions.php del <em>template</em> que estés usando, añade el siguente código:</p>
<pre lang="php" line="1">
function quitar_barra_administracion(){
    return false;
}

add_filter( 'show_admin_bar' , 'quitar_barra_administracion');
</pre>
<p>La barra de administración ya no se mostrará para ningún usuario, aunque las opciones de configuración de la barra de administración (en Usuarios > Tu Perfil) siguen mostrándose. Vamos a ver cómo quitar esta parte de la pantalla de editar perfil.</p>
<h3>Quitar las preferencias de barra de administración de la pantalla de editar perfil</h3>
<p>En el archivo functions.php añadimos el siguiente código:</p>
<pre lang="php" line="1">
function quitar_preferencias_barra_admin() { ?>
<style type="text/css">
    .show-admin-bar { display: none; }
</style>
<?php
}

add_action( 'admin_print_scripts-profile.php', 'quitar_preferencias_barra_admin' );
</pre>
<p>Con este código, cuando un usuario va a la página de editar su perfil (Usuarios > Tu Perfil), ya no podrá ver la configuración de la barra de administración. </p>
<div id="attachment_597" style="width: 658px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-597" src="http://www.webtips.es/wp-content/uploads/quitar-opciones-barra-administracion.png" alt="Las opciones de configuración de la barra de administración ya no aparecen" title="Las opciones de configuración de la barra de administración ya no aparecen" width="650" height="321" class="size-full wp-image-597" srcset="https://www.webtips.es/wp-content/uploads/quitar-opciones-barra-administracion.png 650w, https://www.webtips.es/wp-content/uploads/quitar-opciones-barra-administracion-300x148.png 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /><p id="caption-attachment-597" class="wp-caption-text">Las opciones de configuración de la barra de administración ya no aparecen</p></div>
<p>Si añadimos este código al de la sección anterior, la barra de administración estará deshabilitada y ningún usuario verá las preferencias de esta barra.</p><p>The post <a href="https://www.webtips.es/deshabilitar-la-barra-de-administracion-en-wordpress/">Deshabilitar la barra de administración en WordPress</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.webtips.es/deshabilitar-la-barra-de-administracion-en-wordpress/feed/</wfw:commentRss>
			<slash:comments>16</slash:comments>
		
		
			</item>
		<item>
		<title>Personalizar botón «Leer más» (more) en WordPress</title>
		<link>https://www.webtips.es/personalizar-boton-leer-mas-more-en-wordpress/</link>
					<comments>https://www.webtips.es/personalizar-boton-leer-mas-more-en-wordpress/#comments</comments>
		
		<dc:creator><![CDATA[Webtips]]></dc:creator>
		<pubDate>Wed, 16 Dec 2009 15:15:04 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[hooks]]></category>
		<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">http://www.webtips.es/?p=458</guid>

					<description><![CDATA[<p>Al escribir una nueva entrada en Wordpress, podemos hacer que en la página principal del blog aparezca sólo parte del artículo de dos formas distintas. La primera es usar el <strong>extracto</strong> (o <em>excerpt</em>) y la segunda es usar la etiqueta <strong>&#60;!––more––&#62;</strong> en el texto del artículo. Luego tendremos que editar el archivo <strong>index.php</strong> de nuestro <em>theme</em> y usar <strong>the_excerpt()</strong> o <strong>the_content()</strong> según la técnica que hayamos elegido. ¿Cómo podemos personalizar el botón de "leer más"?</p>
<p>The post <a href="https://www.webtips.es/personalizar-boton-leer-mas-more-en-wordpress/">Personalizar botón «Leer más» (more) en WordPress</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Al escribir una nueva entrada en WordPress, podemos hacer que en la página principal del blog aparezca sólo parte del artículo de dos formas distintas. La primera es usar el <strong>extracto</strong> (o <em>excerpt</em>) y la segunda es usar la etiqueta <strong>&lt;!––more––&gt;</strong> en el texto del artículo. Luego tendremos que editar el archivo <strong>index.php</strong> de nuestro <em>theme</em> y usar <strong>the_excerpt()</strong> o <strong>the_content()</strong> según la técnica que hayamos elegido.</p>
<p>Si usamos la segunda opción, WordPress mostrará en la página principal todo el texto del artículo hasta donde hayamos colocado la etiqueta <strong>&lt;!––more––&gt;</strong> y, a continuación, creará automáticamente un enlace para leer el resto del artículo. ¿Cómo podemos personalizar este enlace?</p>
<h3>Cambiar el texto del enlace</h3>
<p>Para cambiar el texto del enlace, simplemente hay que pasarle el nuevo texto como parámetro a la función the_content(). Por ejemplo:</p>
<pre lang="php" line="1">the_content("Leer más");
</pre>
<p>También podemos usar etiquetas HTML en el texto del enlace:</p>
<pre lang="php" line="1">the_content("<span>Leer más</span>");
</pre>
<p>E incluso podemos hacer que en cada post el enlace tenga un texto diferente sin modificar el código PHP:</p>
<pre lang="php" line="1"><span id="more-458"></span>
</pre>
<h3>Dar estilos al enlace</h3>
<p>El enlace que crea automáticamente WordPress lleva la clase <strong>more-link</strong> por defecto, así que podremos abrir el archivo <strong>styles.css</strong> de nuestro <em>theme</em> y añadir algo como:</p>
<pre lang="css" line="1">.more-link{
  /* estilos del enlace */
}
</pre>
<p>En mi caso, quería tener el botón a la derecha. La solución más intuitiva es añadir <strong>float:right</strong> al estilo del enlace, pero el resultado no fue el esperado ya que se superponía a algunos elementos del post. Así que decidí meter el enlace en un contenedor (&lt;div&gt; o &lt;p&gt;) con una altura determinada, y que el enlace flotase dentro de ese contenedor. Dado que el enlace es generado automáticamente, ¿cómo podemos hacer esto sin tocar los ficheros del motor de WordPress?</p>
<h3>Incrustar el enlace en un contenedor</h3>
<p>Si no queremos tocar el <em>core</em> de WordPress, lo mejor es usar un filtro para modificar el enlace que se genera automáticamente.</p>
<p>Abrimos el fichero <strong>functions.php</strong> de nuestro <em>theme</em> (si no existe, lo creamos) y añadimos el siguiente código:</p>
<pre lang="php" line="1">function editMoreLink($link) {
    $link = '<p class="more-container">'.$link.'</p>';
    return $link;
}

add_filter('the_content_more_link', 'editMoreLink');
</pre>
<p>¿Qué hace esto exactamente?</p>
<p>En la línea 6 creamos el filtro, usando el <em>hook</em> <strong>the_content_more_link</strong>, que ejecutará la función editMoreLink (es un nombre inventado por mí, puedes usar el que quieras) cuando se vaya a generar el enlace para «leer más».</p>
<p>En la función, que toma como parámetro el propio enlace, lo único que hacemos es añadirle un &lt;p&gt; (también podría ser otro elemento, como un &lt;div&gt;) y retornamos la cadena compuesta. La clase more-container también es inventada y puedes usar la que sea.</p>
<p>Al final, podremos estilar el contenedor y el enlace de la siguiente forma:</p>
<pre lang="css" line="1">.more-container {
   /* estilos del contenedor */
}

.more-link {
  /* estilos del enlace */
}
</pre>
<p>Si le añadimos el estilo <strong>float:right</strong> al enlace, flotará dentro del contenedor y no dentro de todo el post como pasaba antes, y podremos controlar la altura del contenedor y el tamaño del botón. También podemos mantener el enlace como elemento de línea y añadir el estilo <strong>text-align:right</strong> al contenedor.</p><p>The post <a href="https://www.webtips.es/personalizar-boton-leer-mas-more-en-wordpress/">Personalizar botón «Leer más» (more) en WordPress</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.webtips.es/personalizar-boton-leer-mas-more-en-wordpress/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Recopilación de Cheat Sheets para desarrolladores web</title>
		<link>https://www.webtips.es/recopilacion-de-cheat-sheets-para-desarrolladores-web/</link>
		
		<dc:creator><![CDATA[Webtips]]></dc:creator>
		<pubDate>Tue, 15 Dec 2009 00:48:18 +0000</pubDate>
				<category><![CDATA[Miscelánea]]></category>
		<category><![CDATA[cheat sheets]]></category>
		<category><![CDATA[Recursos]]></category>
		<guid isPermaLink="false">http://www.webtips.es/?p=438</guid>

					<description><![CDATA[<p>Recopilación de Cheat Sheets (o "chuletas") imprescindibles para cualquier desarrollador web. CSS, Javascript, PHP, Wordpress, Ruby, MySQL, jQuery...</p>
<p>The post <a href="https://www.webtips.es/recopilacion-de-cheat-sheets-para-desarrolladores-web/">Recopilación de Cheat Sheets para desarrolladores web</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Estoy recopilando enlaces de <em>cheat sheets</em> (o «chuletas») imprescindibles para cualquier desarrollador web. Las he dividido en las siguientes secciones: ActionScript, ASP/ASP.NET, C# .NET, CSS, CSS: colores, CSS: fuentes, Dojo, Drupal, Expresiones Regulares, Flex, Google, htaccess/mod_rewrite, HTML/xHTML, Javascript, JSP, jQuery, MooTools, MySQL, Perl, PHP, PostgreSQL, Prototype-Scriptaculous, Phyton, RSS/Atom, Ruby, Ruby on Rails, SEO, SQL Server, Subversion, WordPress, XML y YUI.</p>
<p>Si tienes un <em>cheat sheet</em> que quieras compartir en Weptips.es, envíanos el enlace y lo añadiremos.</p>
<p>Sin más dilación, aquí están: <a href="http://www.webtips.es/cheat-sheets/">recopilación de cheat sheets (o «chuletas») para desarrolladores web</a>.</p><p>The post <a href="https://www.webtips.es/recopilacion-de-cheat-sheets-para-desarrolladores-web/">Recopilación de Cheat Sheets para desarrolladores web</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Agrupar estilos en CSS (shorthand)</title>
		<link>https://www.webtips.es/agrupar-estilos-en-css-shorthand/</link>
					<comments>https://www.webtips.es/agrupar-estilos-en-css-shorthand/#comments</comments>
		
		<dc:creator><![CDATA[Webtips]]></dc:creator>
		<pubDate>Thu, 10 Dec 2009 12:49:26 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[shorthand]]></category>
		<guid isPermaLink="false">http://www.webtips.es/?p=318</guid>

					<description><![CDATA[<p>En <abbr title="Cascading Style Sheet">CSS</abbr>, <strong>shorthand</strong> (literalmente, taquigrafía) es la forma de agrupar varias reglas de un estilo dentro de una sola regla, lo que hará que nuestro fichero de estilos sea más ligero. ¿Qué reglas tienen shorthands?</p>
<p>The post <a href="https://www.webtips.es/agrupar-estilos-en-css-shorthand/">Agrupar estilos en CSS (shorthand)</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>En <abbr title="Cascading Style Sheet">CSS</abbr>, <strong>shorthand</strong> (literalmente, taquigrafía) es la forma de agrupar varias propiedades de un estilo dentro de una sola propiedad, lo que hará que nuestro fichero de estilos sea más ligero.</p>
<h3>Background</h3>
<p>La propiedad <a href="http://www.w3.org/TR/CSS2/colors.html#propdef-background">background</a> tiene 5 variaciones distintas: background-color, background-image, background-repeat, background-attachment y background-position. Todas ellas pueden agruparse en una sola de la siguiente manera:</p>
<p><strong>background: color image repeat attachment position;</strong></p>
<p><u>Ejemplo:</u></p>
<pre lang="css">
background: red url(test.jpg) repeat-x scroll center;
</pre>
<p>Si no ponemos uno de los valores, se tomarán los <strong>valores por defecto</strong>. Para la propiedad background, los valores por defecto son:</p>
<ul>
<li>background-color: transparent</li>
<li>background-image: none</li>
<li>background-repeat: no-repeat</li>
<li>background-attachment: scroll</li>
<li>background-position: top left</li>
</ul>
<h3>Font</h3>
<p>La propiedad <a href="http://www.w3.org/TR/CSS2/fonts.html#font-shorthand">font</a> tiene 6 variaciones: font-style, font-variant, font-weight, font-size, line-height y font-family. La forma abreviada o shorthand es:</p>
<p><strong>font: style variant weight size/height family;</strong></p>
<p><u>Ejemplo:</u></p>
<pre lang="css">
font: italic small-caps bold 12px/16px Arial, Verdana;
</pre>
<p>Se pueden omitir todos los valores excepto font-size y font-family. Si omitimos uno de los valores se tomarán los <strong>valores por defecto</strong> que son los siguientes:</p>
<ul>
<li>font-style: normal</li>
<li>font-variant: normal</li>
<li>font-weight: normal</li>
<li>line-height: normal</li>
</ul>
<p>Hay que tener especial cuidado a la hora de estilar con shorthands elementos que lleven ciertos estilos por defecto. Por ejemplo, si usamos el shorthand de font para estilar un elemento strong o h1, hay que tener en cuenta de que, por defecto, van en negrita. Veamos el siguiente ejemplo:</p>
<pre lang="css">
strong {
   font: 16px Arial;
}
</pre>
<p>Al no llevar el valor de la propiedad font-weight, tomará el valor por defecto (normal), y nuestra etiqueta strong dejará de estar en negrita. </p>
<h3>Margin</h3>
<p>La propiedad <a href="http://www.w3.org/TR/CSS2/box.html#margin-properties">margin</a> tiene 4 variaciones: margin-top, margin-right, margin-bottom y margin-left. La forma shorthand es:</p>
<p><strong>margin: top right bottom left;</strong></p>
<p><u>Ejemplo:</u></p>
<pre lang="css">
margin:10px 20px 30px 40px;
</pre>
<p>En caso de que algunos valores se repitan, podemos incluso acortar más el estilo:</p>
<pre lang="css">
margin:10px; /* top/right/bottom/left=10px */
margin:10px 20px; /* top/bottom=10px, right/left=20px */
margin:10px 20px 30px; /* top=10px, right/left=20px, bottom=30px */
</pre>
<h3>Padding</h3>
<p>Al igual que margin, la propiedad <a href="http://www.w3.org/TR/CSS2/box.html#padding-properties">padding</a> tiene 4 variaciones: padding-top, padding-right, padding-bottom y padding-left, y su forma shorthand es:</p>
<p><strong>padding: top right bottom left;</strong></p>
<p><u>Ejemplo:</u></p>
<pre lang="css">
padding:10px 20px 30px 40px;
</pre>
<p>La propiedad padding se parece mucho a margin, y también tiene otras 3 formas de escribirse en shorthand:</p>
<pre lang="css">
padding:10px; /* top/right/bottom/left=10px */
padding:10px 20px; /* top/bottom=10px, right/left=20px */
padding:10px 20px 30px; /* top=10px, right/left=20px, bottom=30px */
</pre>
<h3>Border</h3>
<p>La propiedad <a href="http://www.w3.org/TR/CSS2/box.html#border-shorthand-properties">border</a> tiene 3 variaciones: border-width, border-style y border-color. Además, cada una de estas variaciones pueden usarse para cada uno de los 4 bordes (border-top, border-right, border-bottom y border-left), con lo que tendríamos un total de 12 variaciones distintas (border-top-width, border-top-style, border-top-color, etc&#8230;). El shorthand general es:</p>
<p><strong>border: width style color;</strong></p>
<p><u>Ejemplo:</u></p>
<pre lang="css">
border:2px dotted blue;
</pre>
<div style="border:2px dotted blue;width:100px;height:50px;margin-bottom:15px"></div>
<p>Para un borde en particular podemos escribir:</p>
<pre lang="css">
border:2px dotted blue;
border-top: 5px dashed green;
</pre>
<div style="border:2px dotted blue;border-top:5px dashed green;width:100px;height:50px;margin-bottom:15px"></div>
<p>Si queremos definir una de las variaciones de border (border-width, border-style o border-color) para cada uno de los 4 bordes individualmente, podemos hacerlo siguiendo la misma sintaxis que usamos en margin o padding (top, right, bottom, left). Por ejemplo:</p>
<pre lang="css">
border:2px dotted blue;
border-color: red green black pink;
</pre>
<div style="border:2px dotted blue;border-color: red green black pink;width:100px;height:50px;margin-bottom:15px"></div>
<p>En resumen, si queremos estilar los 4 bordes o uno en particular, usaremos los shorthands:</p>
<p><strong>border: width style color;</strong><br />
<strong>border-top: width style color;</strong><br />
<strong>border-right: width style color;</strong><br />
<strong>border-bottom: width style color;</strong><br />
<strong>border-left: width style color;</strong></p>
<p>Pero si queremos estilar una de las propiedades de border individualmente, usaremos los shorthands:</p>
<p><strong>border-width: top right bottom left;</strong><br />
<strong>border-style: top right bottom left;</strong><br />
<strong>border-color: top right bottom left;</strong></p>
<p>Esta combinación de valores (top, right, bottom, left) funciona igual que en margin y padding. Es decir, si en vez de 4, escribimos 1 valor, todos los bordes tomarán ese valor. Si escribimos 2 valores, top y bottom tomarán el primer valor, left y right tomarán el segundo valor. Y si escribimos 3 valores, top tomará el primer valor, left y right tomarán el segundo valor y bottom tomará el tercer valor.</p>
<p><u>Ejemplo:</u> </p>
<pre lang="css">
border-style:solid;
border-width:2px 5px;
border-color: red green blue;
</pre>
<div style="border-style:solid;border-width:2px 5px;border-color: red green blue;width:100px;height:50px;margin-bottom:15px"></div>
<p>Fácil, ¿no? Pues otra cosa más, Recuerda que si no escribimos uno de los valores, como siempre se tomarán los valores por defecto, que son:</p>
<ul>
<li>border-width: medium</li>
<li>border-style: none</li>
<li>border-color: el valor de la propiedad color</li>
</ul>
<p><u>Ejemplo:</u></p>
<pre lang="css">
color:red;
border:dotted;
</pre>
<div style="color:red;border:dotted;width:100px;height:50px;margin-bottom:15px"></div>
<h3>Outline</h3>
<p>La propiedad <a href="http://www.w3.org/TR/CSS2/ui.html#dynamic-outlines">outline</a> tiene 3 variaciones: outline-width, outline-style y outline-color. Su shorthand se escribe de la siguiente manera:</p>
<p><strong>outline: width style color;</strong></p>
<p><u>Ejemplo:</u></p>
<pre lang="css">
outline: 2px dashed red;
</pre>
<div style="outline:2px dashed red;width:100px;height:50px;margin-bottom:15px"></div>
<p>Outline se parece a border (ver más arriba), pero no existen las propiedades outline-top, outline-right, outline-bottom ni outline-left.</p>
<h3>List-style</h3>
<p>La propiedad <a href="http://www.w3.org/TR/CSS2/generate.html#list-style">list-style</a> tiene 3 variaciones: list-style-type, list-style-position y list-style-image. Su shorthand es:</p>
<p><strong>list-style: type position image;</strong></p>
<p><u>Ejemplo:</u></p>
<pre lang="css">
list-style: disc inside url(test.jpg);
</pre>
<p>Para eliminar cualquier estilo de las listas podemos usar un shorthand especial:</p>
<pre lang="css">
list-style: none;
</pre>
<p>Los valores por defecto son:</p>
<ul>
<li>list-style-type: disc</li>
<li>list-style-position: outside</li>
<li>list-style-image: none</li>
</ul>
<p>W3C recomienda utilizar la propiedad list-style en los elementos &lt;ul&gt; y &lt;ol&gt; ya que, por herencia, también se estilarán los elementos &lt;li&gt; hijos.</p><p>The post <a href="https://www.webtips.es/agrupar-estilos-en-css-shorthand/">Agrupar estilos en CSS (shorthand)</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.webtips.es/agrupar-estilos-en-css-shorthand/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Evitar contenido duplicado con .htaccess</title>
		<link>https://www.webtips.es/evitar-contenido-duplicado-con-htaccess/</link>
					<comments>https://www.webtips.es/evitar-contenido-duplicado-con-htaccess/#comments</comments>
		
		<dc:creator><![CDATA[Webtips]]></dc:creator>
		<pubDate>Sun, 06 Dec 2009 19:56:20 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[htaccess]]></category>
		<guid isPermaLink="false">http://www.webtips.es/?p=298</guid>

					<description><![CDATA[<p>A los buscadores no les gusta el contenido duplicado. Les gusta tan poco que te penalizan con una bajada en el puesto que ocupará tu página en sus resultados de búsquedas si encuentran el mismo contenido en distintas direcciones dentro de tu web. Pero los buscadores no son perfectos y cuando mandan a sus <em>crawlers</em> a rastrear tu página pueden considerar duplicado un contenido que en realidad no lo es.</p>
<p>The post <a href="https://www.webtips.es/evitar-contenido-duplicado-con-htaccess/">Evitar contenido duplicado con .htaccess</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>A los buscadores no les gusta el contenido duplicado. Les gusta tan poco que te penalizan con una bajada en el puesto que ocupará tu página en sus resultados de búsquedas si encuentran el mismo contenido en distintas direcciones dentro de tu web. Pero los buscadores no son perfectos y cuando mandan a sus <em>crawlers</em> a rastrear tu página pueden considerar duplicado un contenido que en realidad no lo es. Por ejemplo, un buscador (pongamos Google, así al azar) puede considerar duplicado un contenido en las siguientes direcciones:</p>
<ul>
<li><strong>http://tudominio.com/hola-mundo.html</strong></li>
<li><strong>http://www.tudominio.com/hola-mundo.html</strong></li>
</ul>
<p>Y si tenemos permalinks, la cosa se agrava:</p>
<ul>
<li><strong>http://tudominio.com/hola-mundo</strong></li>
<li><strong>http://tudominio.com/hola-mundo/</strong></li>
<li><strong>http://www.tudominio.com/hola-mundo</strong></li>
<li><strong>http://www.tudominio.com/hola-mundo/</strong></li>
</ul>
<p>Es decir, para los buscadores una página en un dominio con www no es la misma que si está en un dominio sin www, y en los permalinks la barra final también influye en la diferenciación. Como el contenido de todas esas direcciones es el mismo, Google te penalizará y te dirá que tienes el mismo contenido hasta en 4 direcciones distintas.</p>
<p>Si nuestro servidor web es <strong>Apache</strong>, podemos usar <strong>.htaccess</strong> para solucionar esta duplicidad mediante dos sencillas reglas.</p>
<p><span id="more-298"></span></p>
<h3>Añadir www al dominio</h3>
<p>Abrimos el archivo <strong>.htaccess</strong> (si no existe, lo creamos en el directorio raíz) y escribimos:</p>
<pre lang="bash" line="1">
RewriteCond %{HTTP_HOST} ^tudominio.com [NC]
RewriteRule (.*) http://www.tudominio.com/$1 [L,R=301]
</pre>
<p>En la línea 1 escribimos la condición que se tiene que dar para que se aplique la regla de la línea 2. En este caso, la condición es que el dominio (HTTP_HOST) se haya escrito «tudominio.com» tal cual, sin nada delante (^). La directiva NC indica que no tenga en cuenta la concordancia de mayúsculas y minúsculas.</p>
<p>Si esta condición se cumple, haremos una <a href="http://es.wikipedia.org/wiki/Anexo:C%C3%B3digos_de_estado_HTTP#3xx:_Redirecciones">redirección 301</a> al dominio «www.tudominio.com». La directiva R significa redirección, y la directiva L significa que esa es la última regla a tener en cuenta en ese bloque.</p>
<h3>Quitar www al dominio</h3>
<p>También podemos hacer que nuestro dominio se muestre siempre sin www. En este caso, escribiremos en nuestro .htaccess:</p>
<pre lang="bash" line="1">
RewriteCond %{HTTP_HOST} ^www.tudominio.com [NC]
RewriteRule (.*) http://tudominio.com/$1 [L,R=301]
</pre>
<h3>Añadir una barra (<em>slash</em>) al final</h3>
<p>Si usamos permalinks, todas nuestras urls deben terminar con barra o sin ella para evitar el contenido duplicado. Si queremos añadir una barra, editamos nuestro .htaccess y escribimos:</p>
<pre lang="bash" line="1">
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule (.*) http://www.tudominio.com/$1/ [L,R=301]
</pre>
<p>La explicación de las condiciones es bastante intuitiva: si no es un fichero (línea 1) y no acaba con una barra (línea 2), aplicamos la regla de la línea 3.</p>
<p><strong>Nota:</strong> algunos añaden dos líneas más al bloque, y escriben la regla de la siguiente manera:</p>
<pre lang="bash" line="1">
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule (.*) http://www.tudominio.com/$1/ [L,R=301]
</pre>
<p>La línea 1 establece el directorio raíz, y la línea 3 es similar a la condición de la línea 2, pero comprobando si no es un directorio existente en lugar de un fichero. Dependiendo de la configuración de nuestro Apache podremos necesitarlas. </p>
<h3>Quitar la barra (<em>slash</em>) del final</h3>
<p>Igual que antes, tan sólo tendremos que quitar la última barra de la condición de la línea 2 y de la redirección de la línea 3:</p>
<pre lang="bash" line="1">
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)$
RewriteRule (.*) http://www.tudominio.com/$1 [L,R=301]
</pre>
<h3>Ejemplo completo</h3>
<p>A continuación, os dejo un ejemplo de un archivo .htaccess completo (aunque bastante básico) que tendríamos en nuestro <em>site</em> si queremos añadir www al principio y <em>slashs</em> al final.</p>
<pre lang="bash" line="1">
Options +FollowSymLinks
RewriteEngine on

# añadir www
RewriteCond %{HTTP_HOST} ^tudominio.com [NC]
RewriteRule (.*) http://www.tudominio.com/$1 [L,R=301]

# añadir slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule (.*) http://www.tudominio.com/$1/ [L,R=301]

# un permalink sencillo
RewriteRule ^hola-mundo/$ /hola-mundo.php
</pre>
<p>Las dos primeras líneas son obligatorias y lo que hacen es iniciar el motor mod_rewrite de apache.</p>
<p>En este ejemplo, si escribimos cualquiera de las variaciones posibles (con o sin www, y con o sin barra final), nos llevará a la página: <strong>http://www.tudominio.com/hola-mundo/</strong> y evitaremos el contenido duplicado.</p>
<p>Se recomienda leer la ayuda sobre el <a href="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html">módulo mod_rewrite de Apache</a> para obtener más información.</p><p>The post <a href="https://www.webtips.es/evitar-contenido-duplicado-con-htaccess/">Evitar contenido duplicado con .htaccess</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.webtips.es/evitar-contenido-duplicado-con-htaccess/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>En defensa de los derechos fundamentales de Internet</title>
		<link>https://www.webtips.es/en-defensa-de-los-derechos-fundamentales-de-internet/</link>
		
		<dc:creator><![CDATA[Webtips]]></dc:creator>
		<pubDate>Fri, 04 Dec 2009 20:53:56 +0000</pubDate>
				<category><![CDATA[Derechos]]></category>
		<category><![CDATA[Miscelánea]]></category>
		<category><![CDATA[derechos]]></category>
		<category><![CDATA[internet]]></category>
		<guid isPermaLink="false">http://www.webtips.es/?p=294</guid>

					<description><![CDATA[<p>Ante la inclusión en el Anteproyecto de Ley de Economía sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de internet manifestamos nuestra firme oposición al proyecto, y declaramos que…</p>
<p>The post <a href="https://www.webtips.es/en-defensa-de-los-derechos-fundamentales-de-internet/">En defensa de los derechos fundamentales de Internet</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Ante la inclusión en el Anteproyecto de Ley de Economía sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de internet manifestamos nuestra firme oposición al proyecto, y declaramos que…</p>
<p>1.- Los derechos de autor no pueden situarse por encima de los derechos fundamentales de los ciudadanos, como el derecho a la privacidad, a la seguridad, a la presunción de inocencia, a la tutela judicial efectiva y a la libertad de expresión.</p>
<p>2.- La suspensión de derechos fundamentales es y debe seguir siendo competencia exclusiva del poder judicial. Ni un cierre sin sentencia. Este anteproyecto, en contra de lo establecido en el <a href="http://narros.congreso.es/constitucion/constitucion/indice/sinopsis/sinopsis.jsp?art=20&#038;tipo=2">artículo 20.5 de la Constitución</a>, pone en manos de un órgano no judicial -un organismo dependiente del ministerio de Cultura-, la potestad de impedir a los ciudadanos españoles el acceso a cualquier página web.</p>
<p>3.- La nueva legislación creará inseguridad jurídica en todo el sector tecnológico español, perjudicando uno de los pocos campos de desarrollo y futuro de nuestra economía, entorpeciendo la creación de empresas, introduciendo trabas a la libre competencia y ralentizando su proyección internacional.</p>
<p>4.- La nueva legislación propuesta amenaza a los nuevos creadores y entorpece la creación cultural. Con Internet y los sucesivos avances tecnológicos se ha democratizado extraordinariamente la creación y emisión de contenidos de todo tipo, que ya no provienen prevalentemente de las industrias culturales tradicionales, sino de multitud de fuentes diferentes.</p>
<p>5.- Los autores, como todos los trabajadores, tienen derecho a vivir de su trabajo con nuevas ideas creativas, modelos de negocio y actividades asociadas a sus creaciones. Intentar sostener con cambios legislativos a una industria obsoleta que no sabe adaptarse a este nuevo entorno no es ni justo ni realista. Si su modelo de negocio se basaba en el control de las copias de las obras y en Internet no es posible sin vulnerar derechos fundamentales, deberían buscar otro modelo.</p>
<p>6.- Consideramos que las industrias culturales necesitan para sobrevivir alternativas modernas, eficaces, creíbles y asequibles y que se adecuen a los nuevos usos sociales, en lugar de limitaciones tan desproporcionadas como ineficaces para el fin que dicen perseguir.</p>
<p>7.- Internet debe funcionar de forma libre y sin interferencias políticas auspiciadas por sectores que pretenden perpetuar obsoletos modelos de negocio e imposibilitar que el saber humano siga siendo libre.</p>
<p>8.- Exigimos que el Gobierno garantice por ley la neutralidad de la Red en España, ante cualquier presión que pueda producirse, como marco para el desarrollo de una economía sostenible y realista de cara al futuro.</p>
<p>9.- Proponemos una verdadera reforma del derecho de propiedad intelectual orientada a su fin: devolver a la sociedad el conocimiento, promover el dominio público y limitar los abusos de las entidades gestoras.</p>
<p>10.- En democracia las leyes y sus modificaciones deben aprobarse tras el oportuno debate público y habiendo consultado previamente a todas las partes implicadas. No es de recibo que se realicen cambios legislativos que afectan a derechos fundamentales en una ley no orgánica y que versa sobre otra materia.</p>
<p><em>Este manifiesto, elaborado de forma conjunta por varios autores, es de todos y de ninguno. Si quieres sumarte a él, difúndelo por Internet.</em></p><p>The post <a href="https://www.webtips.es/en-defensa-de-los-derechos-fundamentales-de-internet/">En defensa de los derechos fundamentales de Internet</a> first appeared on <a href="https://www.webtips.es">Webtips</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
