Pot să creez propriul widget "Articole Recente" sau să personalizez unul existent?

13 oct. 2011, 23:23:02
Vizualizări: 21.4K
Voturi: 14

Aș dori să activez widgetul Articole Recente cu posibilitatea de a afișa un link "Vezi Toate" atunci când există mai multe articole decât am setat momentan să fie afișate în widget.

De asemenea, aș dori să pot exclude anumite categorii sau articole din acesta.

Este posibil să fac oricare dintre aceste lucruri prin intermediul fișierului functions.php al temei mele?

(1) Să personalizez widgetul existent sau (2) Să creez o copie a acestuia pe care să o pot personaliza?

1
Comentarii

Pentru lectură suplimentară, API-ul Widgets este o resursă utilă.

manafire manafire
9 nov. 2012 23:48:43
Toate răspunsurile la întrebare 1
3
22

De obicei, cel mai bine este să copiați widget-ul existent, să-i dați un nume unic și apoi să adăugați propria funcționalitate.

Copiați clasa WP_Widget_Recent_Posts din wp-includes/class-wp-widget-recent-posts.php în fișierul functions.php (sau, de preferință, într-un alt fișier din tema dedicat doar widget-urilor) și redenumiți-o în ceva gen My_Widget_Recent_Posts.

Adăugați-vă funcționalitatea acolo.

Nu uitați să apelați register_widget('My_Widget_Recent_Posts') ca parte a fazei init.

13 oct. 2011 23:28:11
Comentarii

+1 Super. Ok, am adăugat-o într-un fișier special de widget-uri personalizate pe care îl am și care este "inclus" prin "require_once()" în functions.php. Cu toate acestea, deși am schimbat numele clasei, se pare că preia widget-ul WP Recent Posts implicit. Ai idee de ce?

N2Mystic N2Mystic
13 oct. 2011 23:38:06

Trebuie să atribui un nume unic widget-ului. parent::__construct('recent-posts', __('Recent Posts'), $widget_ops); 'recent-posts' ar trebui schimbat în ceva de genul 'my-recent-posts', și ar trebui să schimbi și eticheta în ceva care să identifice widget-ul ca fiind al tău: 'My Recent Posts'

Bendoh Bendoh
13 oct. 2011 23:43:37

Pentru a iniția widget-ul meu a trebuit să adaug add_action( 'widgets_init', create_function( '', 'register_widget( "My_Widget_Recent_Posts" );' ) ); în functions.php.

manafire manafire
9 nov. 2012 23:46:46