UcallWeconn

Стварэнне ўласных віджэтаў WordPress

Original on www.darrenhoyt.com

The translation of the article is provided by UcallWeconn S.M.B.A., ask us for voip wholesale rates, and buy cheap international termination

З кожнай новай версіяй WordPress, аргумент ці яно кваліфікуецца як CMS становіцца трохі цішэй.

У асноўнай WordPress мы віджэты, карыстацкія палі, карыстацкія таксанаміі, і з версіі 2,9, пашырэнне get_post_type. Дадаць некалькі ўбудоў і ўсякіх пост-тыпы і карыстацкія запісы панэляў стаць рэальнасцю.

Усё гэта функцыянальнасць вялікае так доўга як вы, распрацоўнік, ажыццяўляць яе ў спосаб які цвёрдай зламаць. Паколькі раз у руках кліента, небудзь ідзе.

Гнуткія Макет

Тады ёсць пытанне пра макет. Для кліентаў, перасоўванні змесціва з адной калонкі ў іншую можа быць тэхнічнай перашкодай, асабліва для дынамічных сайтаў, якія змяніць утрыманне часта, каб задаволіць рэкламадаўцаў, аўдыторыя патрабуе, і гэтак далей.

Па змаўчанні перацягнуць і падзенне віджэты значная частка нашага арсенала, але дадаўшы свае уласныя віджэты сапраўды можа зрабіць жыццё прасцей як для распрацоўніка і кліента.

Прыклад карыстацкіх віджэтаў

У пошуках, каб даць больш кантролю для канчатковых карыстачоў, Pro Тэма эксперыментуе з больш карыстацкіх віджэтаў. Ад'езд дэма-версію для такіх тэм, як мясцовыя і Elemental прыклады.

мясцовых тэма

Ніжэй прыведзены віджэты мы пачалі ў тым ліку з найболей тэмы, у тым ліку Mimbo Pro :

  • Google Adsense. У панэлі кіравання вы ўводзіце ваш лагін і Adsense віджэтаў паказу аб'яў адпаведна. Працуе ў любым з стандартных памераў блока.
  • Супольнасць Tweets. Агрэгаты Twitter дзейнасць у адпаведнасці з шыратой месца / даўготы. Утрымоўвае палі для Колькасць Tweets і мільнай зоны.
  • Апошні Tweets. Утрымоўвае палі для Імя карыстача і колькасць Tweets
  • Паведамленне Аўтар Падрабязнасці. Утрымоўвае аўтара аватара, дата і каментары карміць.
  • Хуткія паведамленні. Адлюстроўвае спіс будучыні ад пасады.
  • Больш ад гэтага аўтара. Для адной старонкі паведамленняў. Адлюстроўвае пяць загалоўкі з жа аўтара.
  • Больш з гэтай катэгорыі. Для адной старонкі паведамленняў. Адлюстроўвае пяць загалоўкі з той жа катэгорыі.
  • Папярэдні прагляд. Выкарыстанне JavaScript для адлюстравання старонкі Версія для друку і без малюнкаў.
  • Спасылкі. Дазваляе паведамленню бягучую старонку ў Twitter, StumbleUpon, Digg, Delicious і Facebook.
  • YouTube. Адлюстраванне відэа "з палямі для Уставіць код і апісанне
  • Карта вашага месцазнаходжання. Карты Google віджэт з палямі для Месца, павялічыць колькасць і тып Выгляд карты (дарожнай карты, спадарожнікавага ці мясцовасці).
  • Папулярныя паведамленні. Адлюстроўвае пяць загалоўкі найболей пракаментаваў паведамленні.
  • Падпіска на канал. Уключае значок RSS і спасылкі на канал.

Мы атрымалі тон вялікую зваротную сувязь ад карыстачоў, якія належаць на пазіцыянаванне блокаў Adsense Google і жадаеце, каб наладзіць іх утрыманне адпаведна. У выпадку мясцовых, усяго хатнюю старонку на 90% віджэты, з чатырма калонамі наладзіць. Не кажучы ўжо пра пісьменнікаў у гиперлокальные прасторы, якія пішуць унікальны кантэнт, але і абапірацца на агульную з іншых сайтаў і сацыяльных СМІ.

Як карыстацкіх віджэтаў працы

У найпростым магчымым узроўні, карыстацкіх віджэтаў ажыццяўляюцца 1) стварэнне класа, і 2) рэгістрацыя новага віджэта. Забудзьцеся пра функцыянальнасць у рамках віджэт на хвіліну і паглядзець на базавыя налады, якія вы б пасты ў functions.php:

class My_Widget extends WP_Widget {
	function My_Widget() {
		parent::WP_Widget(false, 'Our Test Widget');
	}
function form($instance) {
		// outputs the options form on admin
	}
function update($new_instance, $old_instance) {
		// processes widget options to be saved
		return $new_instance;
	}
function widget($args, $instance) {
		// outputs the content of the widget
	}
}
register_widget('My_Widget');

Вось і ўсё. Зараз мы можам наведаць наш віджэты панэлі для пацверджання:

карыстацкіх віджэтаў

Даданне функцыянальнасці у рэдагуемыя нашага віджэта гэта ўжо іншая гісторыя. Выкарыстанне "Папулярныя запісы" віджэтаў, як, напрыклад, мой партнёр Бэн Gillbanks будзе хадзіць з намі праз стварэнне адпачынку.

Стварэнне "Папулярныя запісы" Виджет

Па-першае, мы павінны назваць клас віджэта. Я прэфікс сваіх функцый і класаў з bm_ (двайковых Месяцы), а гэта азначае, што ніколі не будзе ніякага сутыкнення з іншымі функцыямі і ўбудоў.

Мы можам затым назва віджэта ў канструктар, які з'яўляецца першай функцыі, і ён павінен мець то ж імя, як класа. Гэта будзе выкліканы, калі клас упершыню створаны і ён вызначае імя, якія вы бачыце ў віджэт рэдактара.

Затым я ствараю апошні метад, які з'яўляецца адной з формаў функцыю, якая вызначае, якія дадзеныя могуць быць даступныя для рэдагавання ў віджэт. У гэтым выпадку, гэта проста назва віджэта, які будзе адлюстроўвацца ў блогу. Метад абнаўлення часта можа заставацца як ёсць, хоць вы можаце зрабіць некаторыя праверкі дадзеных (пераканаецеся, што ўваходныя дадзеныя ў бяспецы / дапушчаецца).

І, нарэшце, віджэт метад. Гэта дзе сам віджэт адлюстроўваецца. Вы заўважыце, я насамрэч праходзілай аргументаў іншай функцыі, якія ў іншых месцах у тэму. Таму я зрабіць гэта, таму што я жадаў бы падзяліць дысплей асобна так, што я магу выкарыстоўваць функцыі непасрэдна ў тэму без віджэтаў, а таксама.

Звернеце ўвагу на $ аргументы параметр у віджэте метад. Гэтыя аргументы з'яўляюцца насамрэч аргументы, якія вы перайсці да бакавой панэлі метадам зарэгістравацца, before_widget, after_widget і г.д. Вы можаце пазнаць больш пра гэтых і стварэнні карыстацкіх віджэтаў на WordPress Кодэкс Виджет API старонцы.

Вось канчатковы код:

 
<?php
class bm_widget_popularPosts extends WP_Widget {
 
	function bm_widget_popularPosts() {
		parent::WP_Widget(false, 'Popular Posts');
	} 
	function widget($args, $instance) {
		$args['title'] = $instance['title'];
		bm_popularPosts($args);
	}
 
	function update($new_instance, $old_instance) {
		return $new_instance;
	}
 
	function form($instance) {
		$title = esc_attr($instance['title']);
?>
		<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?> <input class="widefat" 
        id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<

        ?php echo $title; ?>" /></label></p> <?php
	}
 }
function bm_popularPosts($args = array(), $displayComments = TRUE, $interval = '') {
 
	global $wpdb; 
	$postCount = 5; 
	$request = 'SELECT *
		FROM '. $wpdb->posts. '
		WHERE ';
 
	if ($interval != '') {
		$request .= 'post_date>DATE_SUB(NOW(), '. $interval. ') ';
	}
 
	$request .= 'post_status="publish"
			AND comment_count > 0
		ORDER BY comment_count DESC LIMIT 0, '. $postCount;
 
	$posts = $wpdb->get_results($request);
 
	if (count($posts) >= 1) {
 
		if (!isset($args['title']) {
			$args['title'] = 'Popular Posts';
		} 
		foreach ($posts as $post) {
			wp_cache_add($post->ID, $post, 'posts');
			$popularPosts[] = array(
				'title' => stripslashes($post->post_title),
				'url' => get_permalink($post->ID),
				'comment_count' => $post->comment_count,
			);
		} 
		echo $args['before_widget']. $args['before_title']. $args['title']. $args['after_title'];?> 
		<ol>

<?php
		foreach ($popularPosts as $post) {
?>
			<li>
				<a href="<?php echo $post['url'];?>"><?php echo $post['title']; ?></a>
<?php
			if ($displayComments) {
?>
			(<?php echo $post['comment_count']. ' '. __('comments', BM_THEMENAME); ?>)

<?php
			}
?>
			</li>
<?php
		}
?>
		</ol>
 
<?php
		echo $args['after_widget'];
	}
}
?>

Далейшага выкарыстання для ўласных віджэтаў?

Кліенты часта маюць патрэбу ў адмысловых апавяшчэнняў і іншых дынамічных біт для адлюстравання на сваім сайце з мінімальнымі ўсталёўкі. Якія іншыя кантэнт, які часта ажыццяўляюцца з дапамогай убудоў бы вялікі віджэта?

---