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

Category: Wordpress
Posted on: 15.12.2010 в 04:20 - 2 комментария - Visited 3202 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@gala.net
 */
 
//Говорим вордпрессу, что появился новый виджет
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_Widget ('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 в 13:02

Leave a comment

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