Currently browsing: June 2011

Ya disponible WP Carousel 1.0

This post was published 7 years ago. It may be exremely 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

This post was published 7 years ago. It may be exremely 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»

This post was published 7 years ago. It may be exremely 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

This post was published 7 years ago. It may be exremely 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

This post was published 7 years ago. It may be exremely 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

This post was published 7 years ago. It may be exremely 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.