Могу ли я создать свой собственный виджет «Последние сообщения» или настроить существующий?

14

Я хотел бы включить виджет «Последние сообщения» с возможностью отображать ссылку «Просмотреть все», когда сообщений больше, чем у меня установлено на данный момент для отображения виджета.

Я также хотел бы иметь возможность исключить определенные категории или сообщения из него.

Можно ли сделать это через functions.php моей темы?

(1) настроить существующий виджет или (2) создать его копию, которую я могу настроить?

N2Mystic
источник
1
Для дальнейшего чтения API виджетов является полезным ресурсом.
Manafire

Ответы:

20

Обычно лучше скопировать существующий, назвать его чем-то уникальным, а затем добавить свои собственные функции.

Скопируйте WP_Widget_Recent_Postsкласс из wp-includes / class-wp-widget-Recent-posts.php в ваш functions.php (или, предпочтительно, другой файл в вашей теме, посвященный только виджетам) и переименуйте во что-нибудь еще, напримерMy_Widget_Recent_Posts

Добавьте туда свою функциональность.

Не забудьте также позвонить register_widget('My_Widget_Recent_Posts')как часть initфазы.

Bendoh
источник
+1 сладкий. Хорошо, я добавил его в специальный файл пользовательских виджетов, который «включен» через «require_once ()» в моем functions.php. Однако, хотя я изменил имя класса, он, по-видимому, перехватывает стандартный виджет WP Recent Posts. Есть идеи?
N2Mystic
2
Вы должны присвоить уникальное имя виджету. parent::__construct('recent-posts', __('Recent Posts'), $widget_ops); 'recent-posts'должно быть изменено на что-то вроде 'my-recent-posts', и вы также должны изменить ярлык на что-то, что делает виджет идентифицируемым как ваш:'My Recent Posts'
Bendoh
3
Для инициализации моего виджета мне пришлось добавить add_action( 'widgets_init', create_function( '', 'register_widget( "My_Widget_Recent_Posts" );' ) );в functions.php.
Manafire