Создать свой виджет

Category: Wordpress
Posted on: 15.12.2010 в 04:20 - 2 комментария - Visited 4693 times

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>';
	}
}
?>

2 комментария on “Создать свой виджет”

1
Дмитрий

А где определяются переменные $after_widget и $before_widget?

31.05.2014 on 13:02
2
ptipti

http://codex.wordpress.org/Function_Reference/register_sidebar
Определяется при регистрации сайдбара в теме

register_sidebar(
		array(
			'name'          => 'Store left sidebar',
			'id'            => 'store_left_1',
			'before_widget' => '<div>',
			'after_widget'  => '</div>',
			'before_title'  => '<h2>',
			'after_title'   => '</h2>',
		)
	);
31.05.2014 on 23:54

Добавить комментарий

Включите изображения, чтобы увидеть вопрос *