Можно ли создать свой виджет "Последние записи" или настроить существующий?

13 окт. 2011 г., 23:23:02
Просмотры: 21.4K
Голосов: 14

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

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

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

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

1
Комментарии

Для дополнительного чтения, API виджетов является полезным ресурсом.

manafire manafire
9 нояб. 2012 г. 23:48:43
Все ответы на вопрос 1
3
22

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

Скопируйте класс 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.

13 окт. 2011 г. 23:28:11
Комментарии

+1 Круто. Хорошо, я добавил его в специальный файл с пользовательскими виджетами, который подключается через "require_once()" в моем functions.php. Однако, хотя я изменил имя класса, похоже, что он переопределяет стандартный виджет WP Recent Posts. Есть идеи?

N2Mystic N2Mystic
13 окт. 2011 г. 23:38:06

Вы должны присвоить виджету уникальное имя. parent::__construct('recent-posts', __('Recent Posts'), $widget_ops); 'recent-posts' следует изменить на что-то вроде 'my-recent-posts', а также изменить метку на что-то, что делает виджет узнаваемым как ваш: 'My Recent Posts'

Bendoh Bendoh
13 окт. 2011 г. 23:43:37

Для инициализации моего виджета мне пришлось добавить add_action( 'widgets_init', create_function( '', 'register_widget( "My_Widget_Recent_Posts" );' ) ); в functions.php.

manafire manafire
9 нояб. 2012 г. 23:46:46