WP Carousel 1.0.1

Beware: This post was published 4 years ago and its content may be outdated.

En unos pocos minutos estará disponible la versión 1.0.1 de WP Carousel. Esta versión no incluye ninguna novedad, sino que está centrada en arreglar algunos errores que han afectado a algunos usuarios. Entre los cambios que tiene esta versión se encuentran:

  • Se ha desactivado el contador que impedía mostrar dos veces un carrusel debido a que algunos usuarios obtenían ese error aún cuando no habían mostrado más de un carrusel. Aún así persiste la limitación de no poder mostrar el mismo carrusel varias veces en la misma página.
  • A partir de ahora cuando un elemento no tenga extracto ni tenga valor en el campo personalizado que utiliza WP Carousel para las descripciones, se mostrará todo el contenido del elemento.
  • A partir de ahora los vídeos que se añadan a los contenidos personalizados funcionarán correctamente.
  • Se ha eliminado algo de código innecesario y se han hecho algunos cambios menores.

Como de costumbre, se puede actualizar desde el Panel de Administración de WordPress o descargar el plugin desde WordPress.org.

Se buscan Beta-Testers para Music Maniac 2.0

Beware: This post was published 4 years ago and its content may be outdated.

Music Maniac 2.0

Nota: Ya se han registrado suficientes probadores para Music Maniac 2.0. Muchas gracias a todos por mostrar vuestro interés.

El desarrollo de Music Maniac 2.0 va a buen ritmo, y ya ha llegado el momento de buscar voluntarios interesados en probar la aplicación, reportar errores y hacer sugerencias para mejorar aún más esta versión.

¿Qué se ofrece?

Colaborar en la creación de una aplicación para iOS, ser escuchado y ver las sugerencias que sean propuestas implementadas en la la versión final de la apliación. Poder sentir que se ha sido parte del proyecto y aparecer en los créditos de la aplicación, además de recibir una copia de la aplicación, incluidas todas las futuras actualizaciones de la misma.

¿Qué se necesita para ser probador?

Un dispositivo que soporte y tenga instalado iOS 4.0 (iPod Touch 2G/3G/4G, iPhone 3G/3GS/4 o iPad), con conexión a Internet vía Wi-Fi o 3G (imprescindible conexión a Internet en el dispositivo para poder instalar las Betas). Los dispositivos a los que se les ha realizado el Jailbreak no están excluidos, aunque no he comprobado que se puedan instalar las Betas en ellos.

¿En qué consiste la aplicación?

Se trata de la reescritura desde 0 de Music Maniac, el concurso musical para iOS. Describiendo a grandes rasgos la aplicación, he reescrito todo el código desde 0, he rediseñado toda la aplicación y la he reestructurado para hacerla estable, rápida y atractiva. Pero de momento quiero guardar en secreto las novedades, hasta tener lista la versión final.

¿Cómo inscribirse?

Ya se han registrado suficientes probadores y no se admiten más inscripciones. ¡Gracias por mostrar tu interés!

Mejora el aspecto de Google Reader con Stylish

Beware: This post was published 4 years ago and its content may be outdated.

Google Reader después de aplicar algo de CSS con Stylish

Google Reader antes de activar el nuevo estilo

Google Reader antes de activar el nuevo estilo

Google Reader no destaca precisamente por tener el diseño más bonito del mundo. De hecho no ha recibido ningún rediseño desde hace bastante tiempo, a diferencia de otros servicios de como Calendar o Gmail. Si sois de los que utilizáis Google Reader directamente desde su web, sin recurrir a ninguna aplicación que se sincronice con él, agradeceréis este artículo.

Lo que veis en la imagen de arriba es Google Reader tras activar algo de CSS a través de Stylish. Si no tenéis instalado Stylish, podéis hacerlo en Firefox o Google Chrome (en otros navegadores, como Opera o Safari, hay formas diferentes de aplicar los estilos CSS).

Si ya tenéis instalado Stylish, ahora tendréis que instalar los estilos. Al ser un archivo demasiado grande, el autor (Mestiso) no ha podido insertarlo directamente en userstyles.org, pero comparte el código en su página web. Para instalarlo (a través de Stylish) primero accederemos a userstyles.org y haremos clic en el botón Install with Stylish, a continuación editaremos el estilo y reemplazaremos todo el código por el que nos ofrece su autor en su página web. Para ello, en Firefox, mostraremos el panel lateral de Stylish (Ver » Panel lateral » Stylish) y haremos doble clic sobre el estilo Google Reader – 3 Column Reader. Una vez reemplazado el código haremos clic en Guardar y cuando accedamos de nuevo a Google Reader, veremos un diseño mucho más limpio y elegante.

El único inconveniente es que algunas características dejan de ser accesibles, como los patrones. Sin embargo esta función sigue estando activa. Para poder acceder a ella simplemente desactivaremos temporalmente el nuevo estilo (siguiendo los mismos pasos que antes, sólo que en lugar de hacer doble clic en Google Reader – 3 Column Reader lo haremos sobre el icono con una S que aparece a la izquierda del nombre, que tras el doble clic perderá el color, indicando que el estilo está desactivado).

Estilo: userstyles.org
Estilo: kamilb.info
Stylish: Firefox | Google Chrome

Ya disponible WP Carousel 1.0

Beware: This post was published 4 years ago and its content may be outdated.

WP Carousel 1.0Hará cosa de una par de horas he liberado la documentación de WP Carousel 1.0 y la nueva versión del plugin. Las novedades ya se han podido ir viendo en las Betas, así que no voy a hacer un recorrido completo por el plugin, sino a resumir brevemente las novedades.

Guardado AJAX, nuevos themes por defecto, galería de Addons y preguntas frecuentes

A partir de ahora, las opciones también se guardan inmediatamente sin salir de la página como los elementos del carrusel. Además cada vez que se guarden las opciones o se haga clic en cualquier botón para guardar los cambios, se creará una copia de seguridad, accesible desde el gestor de copias de seguridad. Desde ese mismo gestor se pueden ver por fechas y por carruseles todas las copias de seguridad, además se pueden ver los elementos que había en cada copia y se pueden restaurar con un sólo clic. Como en anteriores versiones, se puede extraer todo el contenido a través del código de exportación e importarlo a través de la página correspondiente.

WP Carousel 1.0 ofrece muchos nuevos themes por defecto, algunos de ellos basados en excelentes diseños creados por profesionales y ofrecidos de forma gratuita en 365psd.com. Además, para promocionar las capacidades de la nueva API de Extras y Themes de WP Carousel 1.0, he creado una galería de Addons, disponible para cualquier usuario. Quien quiera puede enviar su propio Addon para ser revisado y si supera un pequeño test para evitar scripts maliciosos, aparecerá en la galería.

Para facilitar el uso del plugin, la pestaña de ayuda muestra ahora las preguntas más frecuentes, además de las líneas exactas que se deben modificar para cambiar ciertos parámetros internos.

jCarousel, modo vertical y vídeos en el carrusel

En WP Carousel 1.0 se permite usar jCarousel como motor de carruseles. Este script permite, entre otras cosas, la disposición vertical de los carruseles. Los themes por defecto soportan en general esta característica, así como el nuevo script.

Además de imágenes y textos, en WP Carousel 1.0 también se pueden mostrar vídeos, siempre que el theme esté adaptado a esta característica. Mostrar un vídeo es tan fácil como completar un campo personalizado o simplemente dejar que WP Carousel tome el primer vídeo del artículo.

Para desarrolladores

La nueva API de Themes y Extras permite mostrar formularios para configurar el contenido de forma sencilla. Ahora un Extra puede dar la opción de seleccionar el orden de su contenido o de seleccionar elementos a través de filtros más complejos que por un identificador.

Por si fuera poco, se han añadido los Extras grupales, que permiten añadir no sólo un elemento individual, sino un grupo de elementos, como podrían ser artículos de una determinada categoría.

Como Extras de ejemplo se incluye un Extra para mostrar el contenido de otro carrusel del sitio web, uno para mostrar artículos con un determinado post_type o pertenecientes a una taxonomía personalizada específica, así como la integración con el plugin para WordPress TheCartPress, que permite crear una tienda online de forma fácil y rápida.

La documentación está traducida al inglés, y en combinación con los Extras y los Themes incluidos por defecto, permite expandir WP Carousel a un nuevo nivel.

Descarga

El plugin se puede descargar desde WordPress.org o instalar y actualizar directamente desde el panel de administración de WordPress.

Actualizando Sumolari.com

Beware: This post was published 4 years ago and its content may be outdated.

Entre ayer y hoy he actualizado Sumolari.com y el foro, además de liberar WP Carousel 1.0 (del que hablaré en el próximo artículo). El principal afectado es el foro, que a partir de ahora funcionará con bbPress. Pierde algunas características interesantes, como adjuntar archivos o crear encuestas pero gana en sencillez, organización e integración con la web. Veamos las principales novedades.

El blog

Mensaje que advierte de un artículo es antiguoMensaje que avisa de un proyecto está descontinuadoA partir de ahora los artículos antiguos (que tengan más de un año de edad) mostrarán un cartel de advertencia de color naranja. Así se evita confundir a usuarios con noticias más recientes sobre el mismo tema.

Del mismo modo, los proyectos que estén descontinuados también mostrarán una advertencia, de color rojo y tanto en la parte superior como en la inferior de la página, avisando de que el proyecto se encuentra descontinuado y que no se dará más soporte ni se actualizará.

Las imágenes se despliegan en un nueva ventana modal, con una animación y un diseño más elegante. Se puede pasar a la siguiente imagen pulsando la flecha derecha y regresar a la anterior pulsando la flecha izquierda y como de costumbre, hacer clic fuera de la imagen cierra la ventana. Para ver la imagen a tamaño real basta con hacer clic derecho en la imagen y seleccionar «Ver imagen» (dependiendo del navegador y del sistema operativo está opción puede tener otro nombre).

He arreglado algunos errores menores del blog, en especial del buscador, además de añadir el botón +1 de Google.

El foro

El foro ha sufrido un rediseño total, pasando hasta por un cambio de gestor de foros. Al final me he decantado por bbPress por lo fácil que es ampliar sus características (igual de fácil que WordPress), lo bien que se integra en WordPress y porque soporta Akismet.

He reducido los subforos a dos: uno para Music Maniac y otro para WP Carousel. Todas las preguntas, sean del idioma que sean, irán a uno de esos dos foros. En el anterior foro no se usaba prácticamente ningún otro subforo, así que no valía la pena mantenerlos. Además, el sistema de etiquetas de bbPress es estupendo para organizar el foro por temas y poder encontrar hilos que sean de interés. Para poder distinguir con facilidad los idiomas, he modificado bbPress para que muestre un icono dependiendo de si se le ha asignado al tema alguna etiqueta de idioma, de momento tan sólo utiliza español para indicar que el tema está escrito en español y english para reflejar que el tema está escrito en la lengua de Shakespeare.

Lamentablemente el foro está en spanglish. bbPress aún no dispone de traducción al español (pensaba dedicarme a ella yo mismo, pero al final lo he dejado de lado – tal vez más adelante traduzca algo del script) pero algunos fragmentos que pertenecen al diseño del foro están en español.

Resultados del foro en el buscador del blogEtiquetas que indican el tipo de resultadoEntre las principales ventajas del nuevo foro está que se integra a la perfección en el buscador de la web, así que a través del buscador AJAX podemos encontrar subforos, temas y respuestas del foro. Además al hacer clic en el enlace «Mostrar todos los artículos», veremos en los resultados de la búsqueda tanto los elementos del foro (que tendrán de color azul la etiqueta que indica la fecha) como mis otros proyectos (que tienen un foro naranja).

Mi intención es permitir que cualquiera pueda abrir temas sin necesidad de registrarse, al igual que ahora mismo se puede comentar en el blog, sin embargo dependiendo de la cantidad de spam que logre evitar los filtros de Akismet, puede que me vea obligado a requerir el registro de los usuarios.

Por último, los temas del antiguo foro siguen siendo visibles. El antiguo foro en realidad sigue activo, sólo que con el registro de nuevos usuarios deshabilitado y con los permisos de los usuarios reducidos a tan sólo leer los mensajes, sin posibilidad de editarlos, borrarlos o publicar nuevos. Se podría decir que está congelado. Se puede acceder al viejo foro a través del subdominio old-forum.sumolari.com. Aunque el nuevo foro ha cambiado de dirección, se pueden seguir usando las URL que se han estado hasta ahora.

Añade más páginas al Widget «bbPress View List»

Beware: This post was published 4 years ago and its content may be outdated.

Ahora hay dos vistas en la lista de views de bbPress 2.0El Widget de bbPress «View List» que viene por defecto en bbPress 2.0 no tiene demasiada utilidad, al menos aparentemente. Sin embargo ofrece una característica la mar de interesante: podemos añadir cualquier página a ese Widget. ¿Cómo? Ahora lo veremos.

En primero lugar hay que entender cómo funciona el Widget. Toma del objeto $bbp la matriz views, la recorre y genera una lista de vistas disponibles. Por defecto esta matriz sólo tiene una vista: la lista de temas sin respuesta, pero podemos añadir todas las que queramos. La estructura de la matriz views es la siguiente:

Array
(
    [no-replies] => Array
        (
            [title] => Topics with no replies
            [query] => Array
                (
                    [meta_key] => _bbp_reply_count
                    [meta_value] => 1
                    [meta_compare] => <
                    [orderby] =>
                    [show_stickies] =>
                )
            [feed] => 1
        )
    [IDENTIFICADOR] => Array
        (
            [title] =>Título
            [query] => Array
                ( /* Matriz con los parámetros de la consulta a realizar en dicha vista, equivale a query_vars en WP_Query */
                )
            [feed] => 1 /* Supongo que será si se quiere mostrar o no esta vista en el RSS Feed, pero no lo he comprobado, así que no sé realmente qué es lo que hace */
        )
)

Interesante, ¿verdad? Pues bien, jugando un poco con esta matriz no sólo podemos crear enlaces que lleven a páginas que muestren sólo determinados temas, sino que podemos hacer que redirijan a cualquier lugar.

function bbpress_add_rss_to_view_list()
	{
		global $bbp;
		$nombre_de_la_vista = 'sumolari_bbpress_rss_feed'; // Utilizo este nombre por si en un futuro añaden a bbPress una vista llamada rss_feed o algo similar
		$bbp->views[$nombre_de_la_vista] = array(
			'title' => __('RSS Feed', 'bbpress'),
			'query' => array(),
			'feed' => 1
		);
		if (bbp_get_view_id() == $nombre_de_la_vista)
		{
			header('Location: '.home_url().'/feed/?post_type='.$bbp->topic_post_type);
			exit;
		}
	}
	add_action('get_header', 'bbpress_add_rss_to_view_list');

¿Qué hace este código? En primer lugar obtiene el objeto $bbp. A continuación definimos un identificador para nuestra nueva vista. Después añadimos a la matriz views un nuevo índice con nuestro identificador y como valor una matriz que tiene por valor del title, “RSS Feed“, por valor del índice query una matriz vacía y por valor del índice feed el número 1. Tras esto verificamos que no nos encontramos en nuestra vista, ya que si así fuera, tendríamos que redirigir la página hacia el RSS Feed de los temas del foro. Por último añadimos esta nueva función a las acciones que se ejecutarán al obtener la cabecera del theme.

¿Cómo generamos el RSS Feed? WordPress lo hace de forma automática, y al ser los foros de bbPress 2.0 artículos de WordPress con post_type personalizados, basta con cargar el RSS Feed indicando el tipo de artículos que queremos ver, a través del parámetro de URL post_type.

Obviamente esta es sólo una de las cosas que se pueden hacer modificando la lista de vistas. El único límite es nuestra imaginación.

Muestra un widget con tags de bbPress en WordPress

Beware: This post was published 4 years ago and its content may be outdated.

Lista de temas de un foro bbPress como Widget de WordPressUna de las características que sorprendentemente no incluye bbPress 2.0 es un Widget para WordPress que muestre las etiquetas de los temas del foro. Es curioso que incluya un Widget que sólo muestre un enlace a la lista de mensajes sin responder y por contra no incluya un índice de etiquetas.

Esta tarde me he tomado la molestia de crear yo uno y quiero compartirlo con todo aquel al que le parezca interesante. Básicamente se copia el siguiente código en el archivo functions.php de nuestro theme de WordPress o en un archivo .php en la carpeta de plugins de WordPress.

class bbPress_Widget_Tag_Cloud extends WP_Widget {
		function bbPress_Widget_Tag_Cloud() {
			$widget_ops = array( 'description' => __( "Your most used tags in cloud format") );
			$this->WP_Widget('bbpress_tag_cloud', __('bbPress Tag Cloud'), $widget_ops);
		}
		function widget( $args, $instance ) {
			extract($args);
			$current_taxonomy = $this->_get_current_taxonomy($instance);
			if ( !empty($instance['title']) ) {
				$title = $instance['title'];
			} else {
				if ( 'post_tag' == $current_taxonomy ) {
					$title = __('Tags');
				} else {
					$tax = get_taxonomy($current_taxonomy);
					$title = $tax->labels->name;
				}
			}
			$title = apply_filters('widget_title', $title, $instance, $this->id_base);
			echo $before_widget;
			if ( $title )
				echo $before_title . $title . $after_title;
			echo '
<div class="tagcloud">';
			wp_tag_cloud( apply_filters('widget_tag_cloud_args', array('taxonomy' => $current_taxonomy) ) );
			echo "</div>
n";
			echo $after_widget;
		}
		function update( $new_instance, $old_instance ) {
			$instance['title'] = strip_tags(stripslashes($new_instance['title']));
			$instance['taxonomy'] = stripslashes($new_instance['taxonomy']);
			return $instance;
		}
		function form( $instance ) {
			global $bbp;
			$current_taxonomy = $this->_get_current_taxonomy($instance);
	?>
<label for="<?php echo $this->get_field_id('title'); ?>"><!--?php _e('Title:') ?--></label>
		<input id="<?php echo $this->get_field_id('title'); ?>" class="widefat" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php if (isset ( $instance['title'])) {echo esc_attr( $instance['title'] );} ?>" />
<label for="<?php echo $this->get_field_id('taxonomy'); ?>"><!--?php _e('Taxonomy:') ?--></label>
<select id="<?php echo $this->get_field_id('taxonomy'); ?>" class="widefat" name="<?php echo $this->get_field_name('taxonomy'); ?>">		<!--?php foreach ( get_object_taxonomies($bbp--->forum_post_type) as $taxonomy ) :					$tax = get_taxonomy($taxonomy);					if ( !$tax->show_tagcloud || empty($tax->labels->name) )						continue;		?>			<option value="<?php echo esc_attr($taxonomy) ?>">><!--?php echo $tax--->labels->name; ?></option>		<!--?php endforeach; ?-->		<!--?php foreach ( get_object_taxonomies($bbp--->topic_post_type) as $taxonomy ) :					$tax = get_taxonomy($taxonomy);					if ( !$tax->show_tagcloud || empty($tax->labels->name) )						continue;		?>			<option value="<?php echo esc_attr($taxonomy) ?>">><!--?php echo $tax--->labels->name; ?></option>		<!--?php endforeach; ?-->		<!--?php foreach ( get_object_taxonomies($bbp--->reply_post_type) as $taxonomy ) :					$tax = get_taxonomy($taxonomy);					if ( !$tax->show_tagcloud || empty($tax->labels->name) )						continue;		?>			<option value="<?php echo esc_attr($taxonomy) ?>">><!--?php echo $tax--->labels->name; ?></option>		<!--?php endforeach; ?--></select>
<!--?php<br /-->		}
		function _get_current_taxonomy($instance) {
			if ( !empty($instance['taxonomy']) && taxonomy_exists($instance['taxonomy']) )
				return $instance['taxonomy'];
			return 'post_tag';
		}
	}
register_widget('bbPress_Widget_Tag_Cloud');

¿Cómo funciona? Pues lo que he hecho ha sido copiar el código del Widget de nube de etiquetas que viene por defecto en WordPress (sobre la línea 986 del archivo wp-includes/default-widgets.php) y modificarlo para que en la lista de posibles taxonomías a mostrar muestre todas las taxonomías que pertenezcan a alguno de los post_type que añade bbPress 2.0.

Lamentablemente hay un pequeño problema en esto y es que aparecerán también las etiquetas que se aplican a temas publicados en foros privados, comprometiendo la privacidad de dichos foros. La solución me ha costado bastante más de encontrar, pero la tenéis a continuación. Se trata básicamente de aplicar un filtro al Widget, que añade a la lista de etiquetas a excluir cualquier etiqueta que haya sido asignada a un tema de un foro privado. De nuevo, se puede añadir en el archivo functions.php de nuestro theme o en un archivo aparte en wp-content/plugins.

function parchear_bug_tag_cloud($content)
	{
		global $bbp;
		$private_forums = bbp_get_private_forum_ids();
		if (bbp_user_can_view_forum(array('forum_id' => $private_forums[1])))
		{
			return $content;
		}
		$tags_to_remove = array();
		foreach ($private_forums as $pf_id => $pf_forum)
		{
			if ($pf_forum == '') { continue; }
			$temp_query = new WP_Query(array('suppress_filters' => true, 'post_type' => $bbp->topic_post_type, 'meta_query' => array(array('key' => '_bbp_forum_id', 'value' => $pf_forum, 'compare' => '='))));
			while ( $temp_query->have_posts() ) : $temp_query->the_post();
				$tags = wp_get_object_terms(get_the_ID(), $bbp->topic_tag_id);
				foreach ($tags as $t_key => $t_value)
				{
					$tags_to_remove[] = $t_value->term_id;
				}
			endwhile;
			wp_reset_postdata();
		}
		$content['exclude'] = $tags_to_remove;
		return $content;
	}
	add_filter('widget_tag_cloud_args', 'parchear_bug_tag_cloud');

¿Cómo funciona? Primero se obtienen los foros privados y se comprueba que el usuario no puede verlos. A continuación se recorren todos los temas de todos los foros privados (sí, se que no está demasiado optimizado, pero no he encontrado una forma mejor de hacerlo) y se añaden todas sus etiquetas a la lista de etiquetas a excluir. Por último se devuelven los nuevos parámetros del Widget.

La lástima es que hay un segundo bug, y es que si un usuario accede a la URL de una etiqueta que está asignada a un tema publicado en un foro privado, el usuario puede ver la lista de temas que tienen asignada dicha etiqueta, y entre esos temas, aparecerá también el tema que debería estar oculto al ser publicado en un foro privado.

De nuevo para solucionar esto podemos recurrir a los filtros de bbPress y WordPress, en concreto arreglar el error se logra con el siguiente código:

function parchear_bug_foros_privados($content)
	{
		global $bbp;
		$private_forums = bbp_get_private_forum_ids();
		if (bbp_user_can_view_forum(array('forum_id' => $private_forums[1])))
		{
			return $bbp->topic_query->post_count;
		}
		$topics_to_remove = array();
		foreach ($bbp->topic_query->posts as $key => $post)
		{
			if (in_array(get_post_meta($post->ID, '_bbp_forum_id', true), $private_forums))
			{
				$topics_to_remove[] = $key;
			}
		}
		foreach ($topics_to_remove as $key => $topic_to_remove)
		{
			unset($bbp->topic_query->posts[$topic_to_remove]);
		}
		$bbp->topic_query->post_count = count($bbp->topic_query->posts);
		$bbp->topic_query->post = reset($bbp->topic_query->posts);
		return $bbp->topic_query->post_count;
	}
	add_filter('bbp_has_topics', 'parchear_bug_foros_privados');

Esto tiene un efecto secundario: a partir del momento de aplicar estos dos parches, cualquier tema que tenga asignada una etiqueta que esté a su vez asignada a un tema publicado en un foro privado, será invisible para los usuarios que no tengan permiso para ver dicho foro, es decir, se volverá tan privado como los temas publicados en un foro privado. Este efecto desaparece al eliminar el código de ambos parches, sin embargo si no usamos estas funciones, queda a la vista de cualquier usuario (incluso los no registrados) la lista de temas privados.

Sencillo y limpio, pues si queremos eliminar este parche o el Widget basta con borrar el código anterior. Además, en caso de que este error no se arreglara en futuras versiones, el parche y el Widget seguirán disponibles tras actualizar bbPress, manteniendo la sencillez característica de WordPress.

De todos modos, espero que en la versión final de bbPress 2.0 se incluya un Widget que reemplace al mío, y que los fallos sean arreglados.

Aplica los filtros de WordPress a bbPress 2.0

Beware: This post was published 4 years ago and its content may be outdated.

Coloreado de sintaxis en bbPress

bbPress no se caracteriza por ser uno de los sistemas de foros más completos, de hecho no es posible utilizar etiquetas tan comunes en otros foros como la de coloreado de código o la posibilidad de añadir un vídeo con tan sólo usar la etiqueta [youtube]. Sin embargo, al ser un plugin de WordPress, podemos extender las características de bbPress aprovechándonos de las de WordPress. ¿De qué estoy hablando? De aplicar los mismos filtros que aplica WordPress al contenido de los artículos a los mensajes del foro, haciendo que cada característica que añadamos a WordPress a través de plugins también esté disponible al instante en el foro.

Aplicar estos cambios es muy sencillo. Podemos crear un nuevo plugin o modificar el archivo functions.php de nuestro theme de WordPress. En primer lugar definiremos una función que devuelva el contenido que se le pasa como parámetro tras aplicarle los filtros que aplica WordPress. A continuación añadiremos esta función a los filtros que aplica bbPress al contenido de los mensajes. Aquí va el código en cuestión.

function aplicar_filtros($content)
{
	global $bbp;
	$author_id = $bbp->reply_query->posts[$bbp->reply_query->current_post]->post_author;
	$author_info = get_userdata($author_id);
	if ($author_info->wp_capabilities['administrator'] == 1)
	{
		return apply_filters('the_content', $content);
	}
	return apply_filters('comment_text', $content);
}
add_filter('bbp_get_reply_content', 'aplicar_filtros');

¿Cómo funciona esta función? En primer lugar obtenemos la variable $bbp, que contiene, entre otras cosas, la información relativa al mensaje que estamos mostrando. A continuación obtenemos la ID del usuario que ha publicado el mensaje, y con ésta, la información del usuario. Tras esto comprobamos que el autor del artículo tiene permisos de administrador. Si es así, el usuario puede utilizar cualquier filtro aplicado a los artículos del blog (es decir, cualquier filtro añadido a the_content); si por el contrario el autor no es un administrador, le dejaremos usar cualquier filtro que se pueda usar en los comentarios (es decir, que se añade a comment_text).

Por último añadimos la nueva función al filtro bbp_get_reply_content y ¡voilà! Ya tenemos nuevas características soportadas en nuestro foro. Ahora si queremos, por ejemplo, permitir el coloreado de código, basta con instalar un plugin como SyntaxHighlighter Evolved y activarlo desde el Panel de Administración de WordPress. También podremos usar otras características de WordPress, como embeber vídeos usando los shortcodes [video] o [youtube].

Del mismo modo, por ejemplo, se podrían añadir carruseles creados con WP Carousel 1.0 con utilizar el shortcode [wp_carousel].

Por medidas de seguridad, tan sólo los administradores gozarán de todos los filtros, ya que es posible que algún plugin añada un filtro a the_content que no queremos que los demás usuarios puedan usar públicamente, como por ejemplo añadir formularios de contacto o mostrar carruseles.

Proyectos veraniegos

Beware: This post was published 4 years ago and its content may be outdated.

¡Uff! ¡Cuánto tiempo sin escribir por aquí! Han sido meses de inactividad, pero al menos ya ha llegado el verano, he acabado las Pruebas de Acceso a la Universidad y vuelvo a disponer de tiempo libre para dedicarle al blog y a mis proyectos. En primer lugar, aunque he estado estos últimos meses algo desaparecido, he leído todos y cada uno de los mensajes que he recibido y los mensajes que han sido publicados en los foros de soporte, y los iré contestando uno a uno a lo largo de la semana.

En segundo lugar, voy a hablar sobre mis proyectos. Todos mis proyectos a excepción de Music Maniac y WP Carousel están descontinuados. Hace tiempo que aparecen marcados así en la página de proyectos, pero lo recuerdo por si acaso. Los motivos son diversos y cada proyecto tiene los suyos propios, pero en general vienen a ser que no puedo mantener tantos proyectos en desarrollo a la vez, y que los CMS para los que fueron diseñados han ido avanzando más rápido que el desarrollo de mis proyectos, de modo que se han quedado desfasados. Algunos (como WP Main Menu) ya no tienen sentido mientras que otros (como Portal Colorido) no merecen ser actualizados (sí, siento rechazo por algunos de mis proyectos antiguos).

WP Carousel

WP Carousel 1.0 está prácticamente terminado. Le dedicaré un artículo a él solito en unos pocos días. Solamente tengo que terminar de redactar la documentación, que está ya casi terminada medias, y traducirla al inglés. Calculo que en unos días lo tendré todo listo para el gran lanzamiento. Las novedades (muchas de ellas ya las he comentado) os encantarán, y llevarán a WP Carousel a un nuevo nivel. De hecho su desarrollo quedará “congelado” a partir de esta versión. Me explico: cualquier fallo que sea detectado será parcheado lo antes posible, pero no habrá grandes cambios por una buena temporada. Como podréis comprobar cuando publique la documentación y libere la nueva versión, no será necesario: las nuevas APIs permiten expandir WP Carousel hasta donde llegue nuestra imaginación, sin necesidad de que yo libere nuevas versiones con más funciones ya que todo se podrá hacer con Extras y Themes.

Music Maniac

Music Maniac también sigue activo. Han pasado meses sin ninguna actualización, y hay bugs sueltos que no han sido arreglados… ni lo serán. Me he dado cuenta de que es una tontería intentar arreglar un código que fue erroneo desde el momento de su concepción. Ha llegado el momento de comenzar de 0, con las mismas ganas de innovar y aportar lo mejor de uno mismo, pero sin un código que sólo podría calificar en estos momentos de infumable. A todos los que habéis comprado Music Maniac, tranquilos, la actualización a la versión 2.0 será gratuita para todos vosotros, y disculpad el mal rendimiento, los fallos y las pocas actualizaciones. Todo esto cambiará con la versión 2.0. Eso sí, no estará lista esta nueva versión hasta dentro de bastante tiempo (tirando para finales de verano – tal vez coincidiendo con el lanzamiento de iOS 5).

El foro

Lo de estos últimos días no tiene nombre: bots spam se han colado por el foro como Pedro por su casa y lo han invadido todo. He probado con nuevos captchas, con preguntas anti-spam, pero nada, se cuelan cuando quieren. Eso se une a que el foro no está bien organizado y es algo confuso. He decidido rediseñarlo por completo, y quiero tener un nuevo foro listo para dar soporte durante el lanzamiento de WP Carousel 1.0, así que hasta que no esté totalemente listo el nuevo foro, no habrá ningún otro lanzamiento.

Los mensajes antiguos serán conservados en una copia del foro actual, que será congelado y guardado en un nuevo subdominio para consultas antiguas. El foro quedará congelado en cuanto cierre todos los hilos de soporte abiertos. También se bloqueará a partir de ahora nuevos registros y publicar nuevos temas.

Ya iré comentando en más profundidad todos los cambios a medida que pase el tiempo.

WP Carousel 1.0 – Beta 2 disponible

Beware: This post was published 5 years ago and its content may be outdated.

Siguiendo con el desarrollo de WP Carousel, hoy os traigo la segunda Beta de la versión 1.0. En esta versión me he centrado en arreglar fallos sueltos que había en la versión anterior y en añadir un par de características nuevas.

Los bugs resueltos en esta Beta son:

  • Bug que no permitía seleccionar el texto de los elementos del carrusel en el Panel de Administración (presente desde la versión 0.5)
  • Bug que no permitía redimensionar las áreas de texto de los elementos añadidos al carrusel en el Panel de Administración en algunos navegadores (entre ellos Firefox 4)
  • Diversos bugs menores en la interfaz del Gestor de Backups que aparecían al tener carruseles sin backups
  • Actualizado el sistema de guardado AJAX para que en caso de error también se puedan guardar backups mediante el procedimiento no-AJAX
  • Otros bugs menores y ligeros cambios en diversas funciones de WP Carousel

Orden aleatorio en WP Carousel 1.0En cuanto a las nuevas características, la primera novedad es que ahora WP Carousel soporta el orden aleatorio en los artículos extraídos de categorías, tags o autores. Los elementos del carrusel serán ordenados al azar, de modo que puede darse el caso de que un elemento ordenado al azar aparezca en el carrusel antes de un elemento no añadido al azar. El orden aleatorio está pensado para carruseles en los que sólo hay contenido ordenado de forma aleatoria. Esta nueva opción se encuentra en la sección de orden de los elementos, junto con el orden cronológico y el orden cronológico inverso.

También he añadido la posibilidad de seleccionar el tamaño de las miniaturas de las imágenes, para lo cual tan sólo es necesario modificar una línea del archivo wp-carousel.php.

Por lo que respecta a la pestaña de ayuda, he añadido bastante más información a la misma, de modo que muchas de las dudas que surgen al comenzar a usar WP Carousel están resueltas ahí (cosas como la prioridad de las imágenes, de dónde sale el texto del carrusel, qué línea modificar para habilitar el modo de integración externa o cuáles son los campos personalizados que utiliza WP Carousel).

Taxonomías personalizadas en WP Carousel 1.0Por último, he añadido dos nuevos Extras por defecto: Custom Post Type y Custom Taxonomy que permiten mostrar, respectivamente, un artículo con un post type personalizado o artículos pertenecientes a cualquier taxonomía personalizada. La única pega es que en cualquiera de los dos casos es necesario indicar la ID del elemento, aunque tampoco es demasiado molesto teniendo en cuenta que se puede añadir artículos de cualquier taxonomía, sea del tipo que sea.

A aquellos que utilicéis la Beta 1, os recomiendo actualizar a la Beta 2. Aquellos interesados en las nuevas características también pueden actualizar a la Beta 2, aunque guardando siempre una copia de seguridad del contenido anterior, por si las moscas.

Descarga: WP Carousel 1.0 – Beta 2.