Crear múltiples sidebars usando nuestros menús de WordPress

Los sidebars son las columnas de WordPress en las cuales podemos organizar y mostrar nuestros widgets. Para crear nuevos sidebars, estos deben registrarse como variables en el entorno, de este modo:

$sidebar_name = 'Sidebar 1';
register_sidebar(array(
	'name' => $sidebar_name,
	'before_widget' => '<div id="%1$s" class="%2$s">',
	'after_widget' => '</div>',
	'before_title' => '<h3>',
	'after_title' => '</h3>',
));

O también registrando varios a la vez:

register_sidebars(3, array('name'=>'Sidebar %d'));

Si necesitas crear nuevas columnas para cada sección de tu sitio, puedes hacerlo dinámicamente utilizando los ítems declarados en el menú. Continue reading Crear múltiples sidebars usando nuestros menús de WordPress

3 razones para desarrollar sitios web sobre WordPress

Una de las tareas que habitualmente tenemos quienes desarrollamos sitios sobre WordPress, es dar las explicaciones necesarias de porque usar esta herramienta para el desarrollo de un proyecto, si cumple con los innumerables requerimientos que los clientes demandan, o cuales son las ventajas comparativas sobre Drupal, Joomla, Movable Type, ExpressionEngine o cualquier CMS gratuito o de pago que exista en el mercado. Es evidente que este no es un tema menor a la hora de pensar un proyecto nuevo o rehacer uno existente, basta con buscar en Google: WordPress vs para encontrar una buena cantidad de artículos, argumentando porque esta herramienta es mejor o peor que las otras opciones.

Más allá de las comparaciones puntuales, es importante saber distinguir cuales son los aspectos de WordPress que le dan valor a los proyectos desarrollados sobre él, y que pueden ser importantes como argumentos de venta. Desde mi punto de vista, existen 3 rasgos fundamentales: experiencia de uso, desarrollo extensible y la comunidad. Continue reading 3 razones para desarrollar sitios web sobre WordPress

Parsear RSS en WordPress

Después de muuucho tiempo sin visitar el blog, estoy con el ánimo y las ganas de retomar todos mis pendientes y volver a escribir en mi querido Isotipo, aunque sea con entradas muy sencillas pero útiles como ésta.

WordPress trae integrado dentro de sus archivos la librería MagspieRSS, parseador de RSS en PHP que nos permite trabajar con ella invocándola desde cualquier función:

if (!function_exists('MagpieRSS')) {
	include_once (ABSPATH . WPINC . '/rss-functions.php');
	error_reporting(E_ERROR);
}
$rss = @ fetch_rss($_GET["url_rss"]);

La condición evita volver a llamar a la librería, en caso de que este siendo ocupada. Luego podemos contruir una función para descomponer el array, obteniendo una cantidad determinada de items:

function get_rss($url, $cantidad){
	if (!function_exists('MagpieRSS')) {
		include_once (ABSPATH . WPINC . '/rss-functions.php');
		error_reporting(E_ERROR);
	}
	$rss = @ fetch_rss($url);
	if ($rss) {
		$items = array_slice($rss->items, 0, $cantidad);
		$out .= '<ul>';
		foreach($items as $item){
			$date = date("d.m.y",strtotime($item['pubdate']));
			$out .= '<li><span class="date">'.$date.'</span><br /><a href="'.$item['link'].'" title="'.$item['title'].'" rel="External Follow">'.$item['title'].'</a></li>';
		}
		$out .= '</ul>';
	}
	return $out;
}

Por supuesto, siempre puedes conocer la información de la variable $rss a traves de un simple print_r($rss), y así elegir entre los items los valores que necesites mostrar.

CSS condicionado por navegador en distintos lenguajes

Una amiga me hizo esta pregunta en un mail ayer, así que esto fue lo que le conteste

HTML

Es una buena opción si estás trabajando sólo con documentos HTML. Aunque se dice que se pueden ocupar condiciones para todos los navegadores, la verdad es que nunca he conseguido aplicarla para otros agentes que no sean IE6 o IE7

<!--[if IE 7]>
<link href="css/ie7.css" rel="stylesheet" type="text/css" />
<![endif]-->
<!--[if IE 6]>
<link href="css/ie6.css" rel="stylesheet" type="text/css" />
<![endif]-->

JAVASCRIPT

Trabajando con la variable navigator se pueden obtener datos como el agente del usuario (userAgent) o el nombre de la aplicación (appName) que estemos usando. Sin embargo, no es 100% accesible, ya que no funciona si se tiene el javascript del navegador desactivado.

<script type="text/javascritp>
if(navigator.userAgent.match("MSIE 6")) {
     document.write('<link href="css/ie6.css" rel="stylesheet" type="text/css" />');
}
if(navigator.userAgent.match("Firefox")) {
     document.write('<link href="css/firefox.css" rel="stylesheet" type="text/css" />');
}
</script>

PHP

Perfecta si se esta trabajando en este lenguaje porque es más segura y accesible que la opción en JS. Además de obtener similares datos que la opción en JS

<?php
if(stristr($_SERVER["HTTP_USER_AGENT"],"firefox")) {
     echo '<link href="css/firefox.css" rel="stylesheet" type="text/css" />';
}

if(stristr($_SERVER["HTTP_USER_AGENT"],"firefox")) {
     echo '<link href="css/firefox.css" rel="stylesheet" type="text/css" />';
}
?>