1. خانه
  2. مستندات
  3. مدیریت ارتباط با مشتری (CRM)
  4. توسعه
  5. اضافه کردن ویجت

اضافه کردن ویجت

جهت ایجاد ویجت میبایست 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();
}
آیا این مقاله برای شما مفید بود؟ بله خیر

How can we help?