Czy mogę utworzyć własny widżet „Najnowsze posty” lub dostosować istniejący?

14

Chciałbym włączyć widżet Ostatnie posty z możliwością pokazywania linku „Wyświetl wszystko”, gdy jest więcej postów, niż widżet ustawiony do wyświetlenia.

Chciałbym również móc wykluczyć z niej określone kategorie lub posty.

Czy można to zrobić za pomocą funkcji funkcji mojego motywu. Php?

(1) Dostosuj istniejący widget lub (2) Stwórz jego kopię, którą mogę dostosować?

N2Mystic
źródło
1
Do dalszego czytania interfejs API Widgets jest pomocnym źródłem.
manafire

Odpowiedzi:

20

Zwykle najlepiej jest skopiować istniejący, nazwać go czymś wyjątkowym, a następnie dodać własną funkcjonalność.

Skopiuj WP_Widget_Recent_Postsklasę z wp-include / class-wp-widget-latest-posts.php do swojego functions.php (lub, najlepiej, innego pliku w kompozycji poświęconego tylko widżetom) i zmień nazwę na coś innego, na przykładMy_Widget_Recent_Posts

Dodaj tam swoją funkcjonalność.

Nie zapomnij również zadzwonić register_widget('My_Widget_Recent_Posts')w ramach tej initfazy.

Bendoh
źródło
+1 Słodki. Ok, dodałem go do specjalnego pliku niestandardowych widżetów, który mam „dołączony” przez „wymagany_once ()” w moim functions.php. Jednak chociaż zmieniłem nazwę klasy, wydaje się, że przejmuje domyślny widżet WP Ostatnie posty. Jakieś pomysły?
N2Mystic
2
Musisz przypisać unikalną nazwę widżetowi. parent::__construct('recent-posts', __('Recent Posts'), $widget_ops); 'recent-posts'należy zmienić na coś podobnego 'my-recent-posts', a także należy zmienić etykietę na coś, dzięki czemu widget można zidentyfikować jako swój:'My Recent Posts'
Bendoh
3
Init mój widżet musiałem dodać add_action( 'widgets_init', create_function( '', 'register_widget( "My_Widget_Recent_Posts" );' ) );do functions.php.
manafire