¿Puedo crear mi propio widget de "Entradas Recientes" o personalizar el existente?

13 oct 2011, 23:23:02
Vistas: 21.4K
Votos: 14

Me gustaría habilitar el widget de Entradas recientes con la capacidad de mostrar un enlace "Ver todo" cuando hay más entradas que las que tengo configuradas actualmente para mostrar en el widget.

También me gustaría poder excluir ciertas categorías o entradas del mismo.

¿Es posible hacer cualquiera de estas opciones a través del archivo functions.php de mi tema?

(1) Personalizar el widget existente o (2) Crear una copia del mismo que pueda personalizar?

1
Comentarios

Para más información, la API de Widgets es un recurso útil.

manafire manafire
9 nov 2012 23:48:43
Todas las respuestas a la pregunta 1
3
22

Normalmente es mejor copiar el existente, darle un nombre único y luego añadir tu propia funcionalidad.

Copia la clase WP_Widget_Recent_Posts desde wp-includes/class-wp-widget-recent-posts.php en tu functions.php (o, preferiblemente, en otro archivo de tu tema dedicado solo a widgets) y renómbrala a algo diferente, como My_Widget_Recent_Posts

Añade tu funcionalidad ahí.

No olvides llamar a register_widget('My_Widget_Recent_Posts') como parte de la fase init también.

13 oct 2011 23:28:11
Comentarios

+1 Genial. Bien, lo he añadido a un archivo especial de widgets personalizados que tengo que se "incluye" mediante "require_once()" en mi functions.php. Sin embargo, aunque cambié el nombre de la clase, parece que se apodera del widget predeterminado de WP Recent Posts. ¿Alguna idea?

N2Mystic N2Mystic
13 oct 2011 23:38:06

Debes asignar un nombre único al widget. parent::__construct('recent-posts', __('Recent Posts'), $widget_ops); 'recent-posts' debería cambiarse por algo como 'my-recent-posts', y también deberías cambiar la etiqueta a algo que haga que el widget sea identificable como tuyo: 'My Recent Posts'

Bendoh Bendoh
13 oct 2011 23:43:37

Para inicializar mi widget tuve que añadir add_action( 'widgets_init', create_function( '', 'register_widget( "My_Widget_Recent_Posts" );' ) ); a functions.php.

manafire manafire
9 nov 2012 23:46:46