جهت ایجاد ویجت میبایست 6 هوک را ایجاد نمایید.
برای رجیستر ویجت، یک شناسه مورد نیاز می باشد، شناسه 900 تا 999 آزاد می باشد و میتوانید در این رنج، ویجت های دلخواه خود را اضافه نمایید.
*در این مثال شناسه ویجت 900 تنظیم شده است.
رجیستر ویجت:
با این هوک، ویجت در پنجره اضافه کردن ویجت در بخش پیشخوان شما نمایش داده میشود.
در این هوک، نام، آیکون و شناسه ویجت را مشخص و آن را برگردانید.
add_filter("lavin24_register_widget", "la24_register_widget_900", 1, 1);
function la24_register_widget_900($widgets)
{
$widgets[900] = array(
"name" => "your widget name",
"class_icon" => "fa fa-id-card-o" //your class icon
);
return $widgets;
}
نمایش ویجت در صفحه:
با ایجاد این هوک، دیگر قادر هستید ویجتی که در حال طراحی آن هستید را در صفحه مشاهده نمایید.
add_action('wp_ajax_la24_widget_design_900', 'la24_widget_design_900');
function la24_widget_design_900()
{
if (!wp_verify_nonce($_POST['ajax_nonce'], "widget_design__nonce")) {
exit("Get Out!");
}
//$role = $_POST['role'];
//$widget_id = $_POST['widget_id'];
if (!empty($_POST['uniqid'])) :
$res['uniqid'] = $_POST['uniqid'];
else:
$res['uniqid'] = uniqid();
endif;
//Get widget settings
$settings = $_POST['settings'];
//sample setting
$sample_setting = $settings['sample_setting'];
if (empty($sample_setting)) {
$sample_setting = "Your default value";
}
if (user_can(get_current_user_id(), "la24_view_widget_900")) {
if (user_can(get_current_user_id(), "la24_edit_dashboard")) {
//setting button for modal setting
$setting_widget_btn = "<button type='button'
data-uniqid='" . $res['uniqid'] . "'
data-target='#setting_widget'
data-toggle='modal'
data-id='900'
data-name='" . "Your widget name" . "'
class='widget_action la24-icon-settings-widget'>
<i class='right fa fa-ellipsis-v'></i>
</button> ";
}
//content widget
$res['html'] = "<div class='layout_block gridster-box'>
" . $setting_widget_btn . "
<div class='handle-resize'>
<div class='small-box'>
<div class='inner'>
Your New Widget Content
<hr>
" . $sample_setting . "
</div>
</div>
</div>
</div>";
}
if ($_POST['device_type'] == 2) {
//mobile size
$res['size_x'] = 2;
$res['size_y'] = 1;
$res['minx'] = 1;
$res['maxx'] = 2;
$res['maxy'] = 1;
$res['miny'] = 1;
} else {
//desktop size
$res['size_x'] = 2;
$res['size_y'] = 1;
$res['minx'] = 1;
$res['maxx'] = 6;
$res['maxy'] = 1;
$res['miny'] = 1;
}
$res['status'] = 200;
wp_send_json(json_encode($res));
wp_die();
}
تنظیم سایز ویجت:
add_filter("lavin24_min_max_size_widget", "lavin24_min_max_size_widget_900", 2, 2);
function lavin24_min_max_size_widget_900($widgets, $device)
{
if ($device == 2) {
//mobile size
$widgets[900]['minx'] = 1;
$widgets[900]['maxx'] = 2;
$widgets[900]['maxy'] = 1;
$widgets[900]['miny'] = 1;
} else {
//desktop size
$widgets[900]['minx'] = 1;
$widgets[900]['maxx'] = 6;
$widgets[900]['maxy'] = 1;
$widgets[900]['miny'] = 1;
}
return $widgets;
}
فرم تنظیمات عمومی و مدیریتی ویجت:
با کمک هوک زیر یک ایجکس برای نمایش تنظیمات ویجت با شناسه 900 ایجاد می کنیم.
add_action('wp_ajax_la24_form_setting_900', 'la24_widget_form_setting_900');
function la24_widget_form_setting_900()
{
if (!wp_verify_nonce($_POST['ajax_nonce'], "widget_form_setting__nonce")) {
exit("Woof Woof Woof");
}
$uniqid = $_POST['uniqid'];
$res['html'] = "";
$settings = unserialize(get_user_meta(get_current_user_id(), "la24_widget_settings_" . $uniqid, true));
if (empty($settings)) {
$settings = unserialize(get_option("la24_widget_settings_" . $uniqid, true));
}
//general settings
if (user_can(get_current_user_id(), "la24_setting_public_widget_900")) {
$res['html'] .= La24_Form::start_form(0, "la24-section-box");
$res['html'] .= La24_Form::header(__("General settings:", "la24ums"), 12, "la24-titr");
$sample_setting = $settings['sample_setting'];
$res['html'] .= "<input type='text' name='sample_setting' value='". $sample_setting."'";
$res['html'] .= La24_Form::close_form();
}
//administrator settings
if (user_can(get_current_user_id(), "la24_setting_admin_widget_900")) {
$res['html'] .= La24_Form::start_form(0, "la24-section-box");
$res['html'] .= La24_Form::header(__("Management settings:", "la24ums"), 12, "la24-titr");
$sample_setting2 = $settings['sample_setting2'];
$res['html'] .= "<input type='text' name='sample_setting2' value='". $sample_setting2."'";
$res['html'] .= La24_Form::close_form();
}
$res['status'] = 200;
wp_send_json(json_encode($res));
wp_die();
}
ذخیره تنظیمات در صفحه پیشخوان:
add_action('wp_ajax_la24_widget_setting_action_user', 'la24_widget_setting_action_user_900');
function la24_widget_setting_action_user_900()
{
if (!wp_verify_nonce($_POST['ajax_nonce'], "user__la24_widget_form_setting_save_action_nonce")) {
exit("Woof Woof Woof");
}
$widget_id = $_POST['widget_id'];
$uniqid = $_POST['uniqid'];
$user_id = get_current_user_id();
if ($widget_id != 900) {
return;
}
if (user_can(get_current_user_id(), "la24_my_dashboard")) {
$settings = unserialize(get_user_meta($user_id, "la24_widget_settings_" . $uniqid, true));
if (user_can(get_current_user_id(), "la24_setting_public_widget_900")) {
$settings['sample_setting'] = $_POST['sample_setting'];
}
if (user_can(get_current_user_id(), "la24_setting_admin_widget_900")) {
$settings['sample_setting3'] = $_POST['sample_setting3'];
}
if (add_user_meta($user_id, "la24_widget_settings_" . $uniqid, serialize($settings))) {
update_user_meta($user_id, "la24_widget_settings_" . $uniqid, serialize($settings));
}
$res['script'] = "<script> //your script </script>";
$res['status'] = 200;
}
wp_send_json(json_encode($res));
wp_die();
}
ذخیره تنظیمات در صفحه شخصی سازی پیشخوان (تنظیمات سیستم):
add_action('wp_ajax_la24_widget_setting_action', 'la24_widget_setting_action_900');
function la24_widget_setting_action_900()
{
if (!wp_verify_nonce($_POST['ajax_nonce'], "la24_widget_form_setting_save_action_nonce")) {
exit("Woof Woof Woof");
}
$widget_id = $_POST['widget_id'];
$uniqid = $_POST['uniqid'];
$role = $_POST['role'];
if ($widget_id != 900) {
return;
}
if (user_can(get_current_user_id(), "la24_customize_dashboard")) {
$settings = unserialize(get_option("la24_widget_settings_" . $uniqid, true));
if (user_can(get_current_user_id(), "la24_setting_public_widget_900")) {
$settings['sample_setting'] = $_POST['sample_setting'];
}
if (user_can(get_current_user_id(), "la24_setting_admin_widget_900")) {
$settings['sample_setting2'] = $_POST['sample_setting3'];
}
if (!add_option("la24_widget_settings_" . $uniqid, serialize($settings))) {
update_option("la24_widget_settings_" . $uniqid, serialize($settings));
}
$res['script'] = "<script> //your script </script>";
$res['status'] = 200;
}
wp_send_json(json_encode($res));
wp_die();
}