WordPress в отличие от Joomla! Ужасно еб… эксцентричный. Если в Joomla! просто рай для разработчика, то в WP очень много непонятных одноразовый вообще нелогичных функций, к которым надо просто привыкнуть. Причём полезность их под большим вопросом.
К примеру в Joomla! можно опознать администратора по id=62, то в WP для этого есть целая отдельная функция is_admin(). Полезно? не очень, для меня…
Ну так к чему всё это, а к тому, что свой виджет можно создать только через написание нового плагина. То есть имеем общие — плугины, и как бы дополнения, и далее тип, вид и так далее. Все конечно видели и слышали про Hello Word’ы, но это полнейшая шняга, которой вообще редко где встретишь.
Я не буду вдаваться в подробности что и как, вот выкладываю болванку для создания своего виджета, который потом можно будет вытащить в виджетах своей темы и просто урадоваться, что так всё просто!
<?php /* Plugin Name: Plugin name Plugin URI: http://ptipti.ru/ Description: Plugin Description Version: 1.0 Author: Pti_the_Leader Author URI: http://ptipti.ru/ Author Email: ptipti@ptipti.ru */ //Говорим вордпрессу, что появился новый виджет add_action ('widgets_init', 'new_widget_widgets_init'); function new_widget_widgets_init() { register_widget('new_widget'); } //Настройки и класс class new_widget extends WP_Widget { //Определяем то, что будет отображаться на квадратике, который утаскивается направо function new_widget() { $widget_ops = array( 'classname'=>'new_widget', 'description'=>'This will be shown in widget description' ); $this->WP_Widge('new_widget', 'New Wigget title', $widget_ops); } //Это системные функции, которые отображают нечто, а именно function widget($args, $instance) { extract($args); $title = apply_filters('widget_title', empty($instance['title']) ? 'Default Title' : $instance['title'], $instance, $this->id_base ); echo $before_widget; echo $before_title.$title.$after_title; //Что тут написано - будет собственно и показано в самом виджете. Ну по обычаю напишем echo 'Hello Word!'; echo $after_widget; } //Это обновлялки заголовка нашего виджета, который появится на сайте. function update($new_instance, $old_instance) { $instance = $old_instance; $instance['title'] = strip_tags($new_instance['title']); return $instance; } function form($instance) { $instance = wp_parse_args((array)$instance, array ('title'=>'')); $title = strip_tags($instance['title']); echo '<p><label for="'.$this->get_field_id('title').'">'.__('Title:'). '</label> <input class="widefat" id="'.$this->get_field_id('title'). '" name="'.$this->get_field_name('title').'" type="text" value="'.esc_attr($title). '" /></p>'; } } ?>