¿Cómo puedo agregar enlaces a los títulos de los widgets?
Estoy usando tres widgets, dos de ellos son widgets predeterminados de WP (Entradas Recientes y Archivos) y el tercero es un widget personalizado que funciona como Entradas Recientes pero para un tipo de entrada personalizado específico.
Mi pregunta es ¿cómo puedo hacer que los títulos de los widgets sean enlaces clicables? Parece que WordPress no acepta HTML en el campo del título y lo elimina automáticamente. Idealmente no quiero hacer esto con un plugin aunque sé que existen opciones como Linkable Title HTML and PHP Widget. No es exactamente lo que busco.
El código para el widget personalizado que tengo hasta ahora se puede ver aquí: http://pastie.org/1847651

Hacer que el título sea clicable
WordPress no permite usar código HTML en el título del widget, pero tiene los útiles parámetros $before_title
y $after_title
que puedes usar para manipular esto.
En tu widget, simplemente añade la primera parte del enlace (<a href="...">
) al final de $before_title
y la parte final del enlace (</a>
) al principio de $after_title
y tu título estará automáticamente enlazado.
Debes hacer esto después de extraer los argumentos en el método widget()
... así que en tu código, busca la sección:
ob_start();
extract($args);
$title = apply_filters('widget_title', empty($instance['title']) ? __('Noticias Recientes del Personal') : $instance['title'], $instance, $this->id_base);
Y añade:
$before_title .= '<a href="http://something.com">';
$after_title = '</a>' . $after_title;
¡Y así tendrás tu título enlazado!
Modificando los widgets por defecto
No puedes aplicar este método directamente a los widgets por defecto, pero hay una solución usando herencia de objetos. Simplemente define tus propios widgets personalizados que extiendan los widgets por defecto:
class My_Widget_Recent_Posts extends WP_Widget_Recent_Posts {
}
Tendrás que redefinir el nombre del widget y otros parámetros en el constructor, luego redefinir el método widget()
copiando lo que ya está ahí pero aplicando nuestro truco de $before_title
/$after_title
mencionado anteriormente. ¡Tu nueva versión del widget por defecto tendrá títulos clicables!

¡Eso es genial, justo lo que estaba buscando! He conseguido que mi widget de Tipos de Entradas personalizados funcione con el título del enlace clicable, pero cuando se trata de extender el widget predeterminado de Entradas Recientes, aún no lo he logrado. He extendido la clase predeterminada y registrado el nuevo widget, pero no aparece en mi panel de widgets. El código que he añadido a mi archivo functions.php es: http://pastie.org/1848212

¿Puedes ver en qué me estoy equivocando al extender la clase predeterminada del widget? He extendido la clase, renombrado el widget en el constructor y copiado los contenidos del widget predeterminado de Entradas Recientes. No hay errores, pero no aparece en el panel de Widgets. También he registrado el nuevo widget.

Si los widgets predeterminados no ofrecen la funcionalidad que buscas, específicamente permitir enlaces personalizados en los títulos, lo mejor sería que escribieras los tuyos propios.
http://justintadlock.com/archives/2009/05/26/the-complete-guide-to-creating-widgets-in-wordpress-28
http://churchco.de/the-complete-guide-to-writing-a-wordpress-widget/
Esto generalmente implica escribir un plugin que agregue widgets personalizados a la pantalla de widgets. Hacer un pequeño ajuste a un widget existente es tan simple como copiar el código original e incluirlo de manera modificada en un plugin.
Los widgets predeterminados se encuentran en wp-includes/default-widgets.php
Editar Si no estás familiarizado con el código de WordPress, debes decidir si deseas familiarizarte más. Si es así, necesitas agregar un campo al formulario del widget que permita al usuario ingresar la dirección del enlace, y editar el código del widget para insertar el enlace cuando el código del widget muestre el título.
Si no deseas familiarizarte, entonces creo que no tienes suerte. Los widgets no tienen la capacidad de modificar sus funcionalidades sin modificar el código de WordPress.

Bueno, he creado un widget a partir de este ejemplo pero no estoy lo suficientemente familiarizado con el código de WP como para saber cómo modificarlo y que tenga un título clickeable. ¿Alguna sugerencia?

Acabo de lanzar un plugin que permite a cualquiera añadir un enlace en los ajustes del widget. Funciona con la mayoría de plugins. Consíguelo aquí: http://wordpress.org/extend/plugins/widget-title-links/

En realidad, SÍ puedes insertar HTML directamente en el encabezado. Con un poco de programación. Revisa este artículo que te muestra cómo hacerlo:
http://ponderwell.net/2011/05/how-to-use-html-in-wordpresss-widgets-title/

¡Bienvenido a WordPress Stack Exchange, Alfred! Tenemos un FAQ útil aquí: Una respuesta debe ser más que apenas un enlace a un sitio externo. ¿Podrías añadir una explicación básica a tu respuesta?
