داشبورد یا پیشخوان محل خیلی خوبی برای نمایش بروزرسانی ها و یا هر نوع اطلاعات مربوط به فعالیت هاست. در واقع داشبورد با یک نگاه اطلاعات زیادی رو در اختیار کاربر قرار میده. تو این آموزش هم میخوایم با هم یک ابزارک رو در بخش داشبورد یا اصطلاحا پیشخوان ایجاد کنیم. پس با ما همراه باشید:
تو این پروژه یه افزونه می نویسیم که یه سری اطلاعات رو مثلا خبار ورزشی رو در قسمت پیشخوان به کاربر نشون بده. البته هر نوع استفاده ای میشه کرد مهم پیاده سازی ابزارکه که انجامش میدیم.
۱ – ایجاد افزونه
یه پوشه جدید داخل دایرکتوری افزونه ها( wp-content/plugins )
بسازید و یه فایل با نام dashboard_widget_sport_news.php
هم داخل ایجاد کنین.
<?php
/*
Plugin Name: ابزارک پیشخوان اخبار ورزشی
Plugin URI:
Description: این افزونه ابزارکی در اختیار شما قرار میدهد تا با آن آخرین اخبار ورزشی را در پیشخوان خود داشته باشید
Version: 0.1
Author: حامد مودی
Author URI: http://ircodex.ir/?author=1
License: GPL2
*/
defined('ABSPATH') || exit;
این فایل رو ذخیره کنید و از قسمت افزونه ها این افزونه رو که فعلا کار خاصی انجام نمیده رو ذخیره کنین. این دفعه میخوایم یه کلاس ایجاد کنیم که توابع مارو مرتب نگه داری کنه. در کل نتیجه میشه این:
class Ircodex_Dashboard_Widgets_Sport_News {
function __construct() {
add_action( 'wp_dashboard_setup', array( $this, 'add_dashboard_widgets' ) );
}
function add_dashboard_widgets() {
wp_add_dashboard_widget(
'Ircodex_Dashboard_Widgets_Sport_News',
'اخبار ورزشی',
array( $this, 'news_render'),
array( $this, 'news_control')
);
}
function news_render(){
$sportNewsRss = array(
'http://www.varzesh3.com/rss/all',
'http://www.varzesh3.com/rss/domesticFootball',
'http://www.varzesh3.com/rss/foreignFootball',
'http://www.varzesh3.com/rss/otherSports'
);
$randomIndex = rand(0, count($sportNewsRss) - 1 );
wp_widget_rss_output(array(
'url' => $sportNewsRss[$randomIndex],
'title' => 'اخیار ورزشی',
'items' => 10,
'show_summary' => true
));
}
}
$ircodex_news = new Ircodex_Dashboard_Widgets_Sport_News();
وقتی به داشبورد میرید یه همچین ابزراکی میبینین:

توضیحات کد:
خط ۴ – نکته مهم اینه برای ایجاد ابزارک در قسمت داشیبورد باید از اکشن هوکی استفاده کرد و کد رو در جایی تزریق کرد که داشبورد در حال ساخته پس هیچ گزینه ای بهتر از اکشن wp_dashboard_setup
پیدا نمیشه. و تابعی که معرفی کردیم چون داخل کلاسه بنابراین در یه آرایه که آرگومان اول منبع کلاس و آرگومان دوم متد اون کلاس قرار میگیره.
خط ۲۲ – از تابع wp_add_dashboard_widget
برای ساخت ابزارک داشبورد استفاده میکنیم که آرگومان هاش به این ترتیبه:
آرگومان اول: شناسه ابزارک که همون id در کد html میشه با کمکش برای استایل دادن یا جاوا اسکریپت ازش استفاده کرد.
آرگومان دوم: نام ابزارک که نیازی به توضیح نداره.
آرگومان سوم: تابعی که محتوای ابزارک رو نمایش میده که باز هم متدی از همین کلاسه.
آرگومان چهارم: تابعی که محتوای بخش پیکربندی ابزارک رو نمایش میده. والا وقتی وردپرس خودم رو از ۴.۳ به ۴.۴ ارتقاء دادم آرگومان چهارم دیگه کاری انجام نمیده و غیر فعاله و نمیدونم چرا. برا همین دیگه راجع بهش بحث نمیکنم.
جدیدا آپدیت نسخه ۴.۴.۱ این مشکل رو رفع کرده!!!(۲۹ دی ۱۳۹۴)
خط ۲۰ – از سایت ورزش ۳ چهار آدرس rss رو گرفتیم و میخوایم بصورت تصادفی با هم برا لود یکی از این اخبار نشون داده بشه.
خط ۲۷ – یه عدد تصادفی از بین ۰ تا ۳ استخراج میکنیم.
خط ۲۹ – از تابع wp_widget_rss_output
برای چاپ خروجی rss در قاب ابزارک استفاده میکنیم. آرگومان هاش هم نیازی به توضیح نداره.
خط ۴۰ – یک شی از کلاس افزونه مون ساختیم تا افزونه اجرا بشه.
کد کامل افزونه:
/*
Plugin Name: ابزارک پیشخوان اخبار ورزشی
Plugin URI:
Description: این افزونه ابزارکی در اختیار شما قرار میدهد تا با آن آخرین اخبار ورزشی را در پیشخوان خود داشته باشید
Version: 0.1
Author: حامد مودی
Author URI: http://ircodex.ir/?author=1
License: GPL2
*/
defined('ABSPATH') || exit;
class Ircodex_Dashboard_Widgets_Sport_News {
function __construct() {
add_action( 'wp_dashboard_setup', array( $this, 'add_dashboard_widgets' ) );
}
function add_dashboard_widgets() {
wp_add_dashboard_widget(
'Ircodex_Dashboard_Widgets_Sport_News',
'اخبار ورزشی',
array( $this, 'news_render'),
array( $this, 'news_control')
);
}
function news_render(){
$sportNewsRss = array(
'http://www.varzesh3.com/rss/all',
'http://www.varzesh3.com/rss/domesticFootball',
'http://www.varzesh3.com/rss/foreignFootball',
'http://www.varzesh3.com/rss/otherSports'
);
$randomIndex = rand(0, count($sportNewsRss) - 1 );
wp_widget_rss_output(array(
'url' => $sportNewsRss[$randomIndex],
'title' => 'اخیار ورزشی',
'items' => 10,
'show_summary' => true
));
}
}
$ircodex_news = new Ircodex_Dashboard_Widgets_Sport_News();