• مدل های خروجی Json
  • هوک اکشن های سازنده مدل ها
  • هوک اکشن های ذخیره و نمایش
  • هوک اکشن های رویدادها
  • هوک اکشن ها در JoApp API به چه صورت عمل میکنند؟
  • معرفی تمامی هوک های JoApp API در وردپرس
  • هوک اکشن نمایش پست
  • هوک اکشن رویداد دسته بندی نوشته ها
  • هوک اکشن رویداد دریافت پست ها
  • هوک اکشن پست ها (دسته ای از پست ها)
  • هوک اکشن رویداد دریافت لیست نویسندگان مطالب
  • هوک اکشن رویداد درباره ما
  • هوک اکشن رویداد دریافت دیدگاه های یک پست
  • هوک اکشن اطلاعات کاربری
  • هوک اکشن رویداد دریافت لیست برگه ها (صفحات مهم)
  • هوک اکشن رویداد عضویت یک کاربر
  • هوک اکشن رویداد دریافت دسته بندی های محصولات فروشگاه
  • هوک اکشن رویداد درخواست تمامی سفارش های یک کاربر فروشگاه
  • هوک اکشن رویداد بررسی (دریافت) یک سفارش خرید فروشگاه
  • هوک اکشن درخواست آغاز یک سفارش (سبد خرید) فروشگاه
  • هوک اکشن محصولات فیلتر شده و جستجو شده فروشگاه
  • هوک اکشن رویداد ویژگی های محصولات فروشگاه
  • هوک اکشن رویداد محصولات یک دسته بندی فروشگاه
  • هوک اکشن رویداد محصول فروشگاه
  • هوک اکشن رویداد بارگزاری آدرس قالب پرداخت
  • هوک اکشن آدرس فاکتور برای پرداخت سبد خرید
  • هوک اکشن رویداد دریافت روش های حمل و نقل کالا
  • هوک اکشن رویداد ارسال دیدگاه
  • هوک اکشن رویداد دریافت فیلترهای محصولات
  • هوک اکشن دریافت آدرس پستی کاربر
  • هوک اکشن رویداد دانلود های یک کاربر فروشگاه
  • دانلود پلاگین های JoApp API

  • هوک اکشن ها در JoApp API به چه صورت عمل میکنند؟

    هوک اکشن ها در JoApp API به چه صورت عمل میکنند؟

    برای به کارگیری هوک اکشن ها از تابع add_action استفاده میکنیم. فرض کنید قرار است از هوک اکشن joapp_api_action_get_post که برای دریافت یک پست است استفاده کنیم. در این صورت هر زمان که اپلیکیشن درخواست دریافت اطلاعات یک پست را ارسال میکند هوک اکشن joapp_api_action_get_post صدا زده شده و با تغییر در متغیر های ساخته شده میتوانیم مقادیر تغییر داده شده را به سمت اپلیکیشن ارسال نماییم.

    لازم به ذکر است مقادیری که در هنکام اجرای یک اکشن هوک قابل ویرایش است با یک متغیر از نوع global و با نام joapp_result در دسترس است.

    برای مثال در قطعه کد زیر هنگام دریافت اطلاعات یک پست، به انتهای عنوان آن پست کاراکتر “:” اضافه میکنیم:

    <?php
    
    add_action("joapp_api_action_get_post", "function_name_hook_action_get_post");
    
    function function_name_hook_action_get_post() {
        global $joapp_result;
        $title = $joapp_result['post']->title;
        $joapp_result['post']->title = $title . ":";
    }
    
    ?>
    معرفی تمامی هوک های JoApp API در وردپرس

    معرفی تمامی هوک های JoApp API در وردپرس

    هوک های رویداد ها

    joapp_api_action_get_shipping_methods
    joapp_api_action_get_posts
    joapp_api_action_get_post
    joapp_api_action_get_about
    joapp_api_action_get_comment
    joapp_api_action_get_woo_categories
    joapp_api_action_get_user
    joapp_api_action_get_user_shipping
    joapp_api_action_posts_result
    joapp_api_action_get_woo_filters
    joapp_api_action_get_category_index
    joapp_api_action_open_pay_woo
    joapp_api_action_get_author_index
    joapp_api_action_get_page_index
    joapp_api_action_submit_comment
    joapp_api_action_register_user
    joapp_api_action_payment_template

     

    هوک های ساخت مدل ها

    joapp_api_action_author_init
    joapp_api_action_attachment_init
    joapp_api_action_category_init
    joapp_api_action_comment_init
    joapp_api_action_post_init
    joapp_api_action_tag_init
    joapp_api_action_product_init

    هوک های نمایشی و ذخیره در وردپرس

    joapp_api_action_view_about & joapp_api_action_save_about
    joapp_api_action_view_admin_menu
    joapp_api_action_view_tab_connection & joapp_api_action_save_tab_connection
    joapp_api_action_view_tab_posts & joapp_api_action_save_tab_posts
    joapp_api_action_view_tab_store & joapp_api_action_save_tab_store
    joapp_api_action_view_tab_custom_field
    joapp_api_action_view_tab_pushe
    joapp_api_action_view_edit_menus
    joapp_api_action_view_edit_tags

    هوک های نتایج ووکامرس

    joapp_api_action_get_woo_one_product
    joapp_api_action_get_woo_one_products_category
    joapp_api_action_get_woo_terms
    joapp_api_action_get_woo_products_term
    joapp_api_action_get_woo_products_search
    joapp_api_action_set_order_woo
    joapp_api_action_get_order_woo
    joapp_api_action_get_customer_orders_woo
    joapp_api_action_get_customer_downloads_woo

    هوک اکشن نمایش پست

    هوک اکشن نمایش پست

    joapp_api_action_get_post

    با استفاده از این هوک اکشن پستی (یک پست) که در اپلیکیشن قرار است بارگزاری شود با استفاده از متغیری (global) در دسترس است:

    <?php
    
    add_action("joapp_api_action_get_post", "function_name_hook_action_get_post");
    
    function function_name_hook_action_get_post() {
        global $joapp_result;
        //تغیییرات لازم را میتوانید بر روی $joapp_result اعمال نمایید
    }
    
    ?>

    خروجی و ورودی این رویداد به صورت json زیر میباشد. همچنین برای مشاهده مدل ساختاری پست ها به بخش “مدل های خروجی Json” مراجعه نمایید:

    {
    	"post_view": "",
    	"joapp_api_apk_url": "{bazaar:\/\/details?id=ir.bejo.joapp|Intent.ACTION_VIEW|com.farsitel.bazaar}",
    	"method": "GET",
    	"v": 400,
    	"joapp_api_version_code": 1,
    	"status": "ok",
    	"post": {
    		/** POST MODEL **/
    	},
    	"previous_url": "URL previous POST",
    	"next_url": "URL next POST"
    }

     

    هوک اکشن رویداد دسته بندی نوشته ها

    هوک اکشن رویداد دسته بندی نوشته ها

    joapp_api_action_get_category_index

    زمانی این هوک اکشن صدا زده میشود که اپلیکیشن برای اولین بار اجرا شده و از سرور درخواست دریافت لیست دسته بندی های بخش محتوایی را نماید. طبیعتا به همراه دریافت اطلاعات لیست دسته بندی ها لیست منو های برنامه در بخش محتوایی نیز دریافت میشود.

    اطلاعات این هوک اکشن در متغیر گلوبال joapp_result در دسترس بوده و به همراه آن فیلد های زیر وجود دارد.

    • count : تعداد دسته بندی ها.
    • using_woocommerce : بخش فروشگاه در اپلیکیشن استفاده شده است یا خیر.
    • menus : مدل منو های مروبوط به منوی کشویی سمت راست که در تنظیمات JoApp API ست کرده اید.
    • categories : آرایه ای از دسته بندی های تنظیم شده برای بخش محتوایی که هریک خانه های آرایه یک مدل دسته بندی است.

    مدل json از joapp_result در زیر نمایش داده شده است:

    {
    	"count": 3,
    	"using_woocommerce": true,
    	"menus": [{
    		"title": "menu1",
    		"event": "event_menu_1",
    		"icon": "ic_group"
    	},
    	{
    		"title": "menu2",
    		"event": "event_menu_2",
    		"icon": "ic_local_dining"
    	},
    	{
    		"title": "menu3",
    		"event": "event_menu_3",
    		"icon": "ic_info"
    	},...],
    	"categories": [{
    		"id": 27,
    		"slug": "slug_cat_1",
    		"title": "Category 1",
    		"description": "",
    		"parent": 0,
    		"post_count": 2,
    		"image": "",
    		"sliders": [],
    		"post_view": "one_news_large"
    	},
    	{
    		"id": 1,
    		"slug": "slug_cat_2",
    		"title": "Category 2",
    		"description": "",
    		"parent": 0,
    		"post_count": 13,
    		"image": "",
    		"sliders": [{
    			"url": "http:\/\/domain.com\/slide1.png",
    			"intent": "tel:09392376007"
    		},
    		{
    			"url": "http:\/\/domain.com\/slide2.png",
    			"intent": "http://domain.com"
    		},...],
    		"post_view": "one_news_large_2",
    		"is_menu": true
    	},
    	{
    		"id": 30,
    		"slug": "slug_cat_3",
    		"title": "Category 3",
    		"description": "",
    		"parent": 0,
    		"post_count": 2,
    		"image": "",
    		"sliders": [],
    		"post_view": "one_news_large",
    		"is_menu": true
    	},...],
    	
    }

     

    هوک اکشن رویداد دریافت پست ها

    هوک اکشن رویداد دریافت پست ها

    joapp_api_action_posts_result

    این هوک اکشن زمانی اجرا میشود که اپلیکیشن درخواست مجوعه ای (آرایه ای) از پست ها (نوشته ها) را در اپلیکیشن داشته باشید. این آرایه در متغیر گلوبال joapp_result و تحت فیلد posts در دسترس است. joapp_result درای فیلد های زیر است:

    • count : تعداد پست های این رویداد
    • count_total : کل پست های قابل دریافت از سرور
    • pages : صفحه جاری پست های درخواستی
    • posts : آرایه ای از مدل پست که تمامی پست های صفحه جاری را در خود دارد.
    هوک اکشن پست ها (دسته ای از پست ها)

    هوک اکشن پست ها (دسته ای از پست ها)

    joapp_api_action_get_posts

    با استفاده از این هوک اکشن آرایه ای از پست ها در متغیری از نوع global با نام joapp_result در دسترس است. دقت نمایید که پست ها در داخل “posts” با ساختار مدل پست و به صورت آرایه در دسترس میباشد.

    مثالی از روش استفاده از این هوک اکشن: به عنوان تمامی پست ها کاراکتر “:” اضافه میکند.

    <?php
    
    add_action("joapp_api_action_get_posts", "function_name_hook_action_get_posts");
    
    function function_name_hook_action_get_posts() {
        global $joapp_result;
        
        $posts = $joapp_result['posts'];
        foreach ($posts as $post){
            $post->title .= ":";
        }
    }
    
    ?>

    ورودی و خروجی رویداد این هوک به صورت json زیر میباشد:

    {
        "count": 10,
        "count_total": 59,
        "pages": 6,
        "posts": [{ /** POST MODEL **/ },{ /** POST MODEL **/ },{ /** POST MODEL **/ },...]
    }

     

    هوک اکشن رویداد دریافت لیست نویسندگان مطالب

    هوک اکشن رویداد دریافت لیست نویسندگان مطالب

    joapp_api_action_get_author_index

    هوک اکشن فوق زمانی اجرا میشود که اپلیکیشن لیست تمامی نویسندگان مطالب سایت را بخواهد. این لیست در متغیر گلوبال joapp_result در دسترس بوده و آرایه ای از ساختار مدل author (کاربر ، نویسنده) میباشد. این آرایه در فیلد authors قابل مدیریت است.

    مثال : فرض کنید بخواهید زمانی که اپلیکیشن ایست نویسندگان سایت را دریافت میکند جلوی نام نویسنده تعداد پست نوشته شده را نیز قرار دهد.

    <?php
    
    add_action("joapp_api_action_get_author_index", "function_name_hook_action_get_author_index");
    
    function function_name_hook_action_get_author_index() {
        global $joapp_result;
    
        $authors = $joapp_result['authors'];
        foreach ($authors as $author) {
            $user_post_count = count_user_posts( $author->id , 'post' );
            $author->first_name .= ' ('.$user_post_count.')'; 
        }
        
    }
    
    ?>

     

    هوک اکشن رویداد درباره ما

    هوک اکشن رویداد درباره ما

    joapp_api_action_get_about

    با این هوک اکشن میتوانید ساختار Json بخش درباره ما را کنترل نموده و موارد دلخواه خود را با استفاده از متغیر گلوبال joapp_result کنترل کنید:

    مثال : در مثال زیر در هر زمان که بخش درباره ما از سمت اپلیکیشن درخواست میشود تاریخ جاری نیز به انتهای بخش توضیحات (content) افزوده میشود

    <?php
    
    add_action("joapp_api_action_get_about", "function_name_hook_action_get_about");
    
    function function_name_hook_action_get_about() {
        global $joapp_result;
    
        $post = $joapp_result['post'];
        $post->content .= "<hr/><center>". date("Y-m-d")."</center>";
    }
    
    ?>

     

    هوک اکشن رویداد دریافت دیدگاه های یک پست

    هوک اکشن رویداد دریافت دیدگاه های یک پست

    joapp_api_action_get_comment

    با هوک اکشن فوق هر زمان که از طرف اپلیکیشن دیدگاههای یک نوشته درخواست میشود تابع تعریف شده در add_action وردپرس صدا زده شده و با استفاده از متغیر گلوبال joapp_result میتوانید عملیات کنترلی خود را انجام دهید.

    مثال : در مثال زیر تاریخ و ساعت تمامی کامنت های پست درخواست شده مخفی میشود.

    <?php 
    
    add_action("joapp_api_action_get_comment", "function_name_hook_action_get_comment");
    
    function function_name_hook_action_get_comment() {
        global $joapp_result;
    
        $post = $joapp_result['post'];
        $comments = $post['comments'];
        
        foreach ($comments as $comment) {
            $comment->date = "مخفی شده";
        }
    }
    
    ?>

     

    هوک اکشن اطلاعات کاربری

    هوک اکشن اطلاعات کاربری

    joapp_api_action_get_user

    این هوک اکشن زمانی رخ میدهد که اطلاعات کاربری برای ورود به اپلیکیشن درخواست شود. خروجی این هوک در متغیر گلوبال joapp_result در دسترس بوده و اطلاعات کاربری در فیلد authors به صورت آرایه ای از کاربران در دسترس میباشد.

    مثال : در مثال زیر nickname کاربر لاگین شده با دو کاراکتر “♥” تکمیل میشود:

    <?php
    
    add_action("joapp_api_action_get_user", "function_name_hook_action_get_user");
    
    function function_name_hook_action_get_user() {
        global $joapp_result;
    
        $author = $joapp_result['authors'][0];
        $author->nickname = '♥ ' . $author->nickname . ' ♥';
    }
    
    ?>

     

    هوک اکشن رویداد دریافت لیست برگه ها (صفحات مهم)

    هوک اکشن رویداد دریافت لیست برگه ها (صفحات مهم)

    joapp_api_action_get_page_index

    ساختار مدل برگه ها دقیقا مانند پست ها میباشد. در اپلیکیشن برگه ها با عنوان “صفحات مهم” یاد شده است. برای مدیریت محتوای لیست برگه ها میتوانیم از هوک اکشن فوق استفاده نماییم. این برگه ها که توسط مدیر سایت مشخص شده اند در آرایی با نام pages و در متغیر گلوبال joapp_result در دسترس میباشد.

    ساختار joapp_result به صورت json به شکل زیر میباشد:

    {
        "pages":[ 
            { /** POST MODEL **/ },
            { /** POST MODEL **/ }, 
            ... 
        ]
    }
    هوک اکشن رویداد عضویت یک کاربر

    هوک اکشن رویداد عضویت یک کاربر

    joapp_api_action_register_user

    تابع این هوک اکشن زمانی اجرا میشود که کاربری در اپلیکیشن عضو شود. اطلاعات عضویت کاربر پس از عضویت در متغیر گلوبال joapp_result با فیلد authors قرار میگیرد. طبیعتا به دلیل اینکه اطلاعات یک کاربر تنها مورد نیاز است این آرایه تنها یک خانه دارد.

    مثال : فرض کنیم بخواهیم پس از عضویت یک کاربر ایمیلی برای آن ارسال گردد.

    <?php
    
    add_action("joapp_api_action_register_user", "function_name_hook_action_register_user");
    
    function function_name_hook_action_register_user() {
        global $joapp_result;
        $autor = $joapp_result['autors'][0];
        $user_info = get_userdata($autor->id);
        $mailadress = $user_info->user_email;
        wp_mail($mailadress, "خوش آمدید", "از عضویت شما در اپلیکیشن ما سپاسگزاریم");
    }
    
    ?>

     

    هوک اکشن رویداد دریافت دسته بندی های محصولات فروشگاه

    هوک اکشن رویداد دریافت دسته بندی های محصولات فروشگاه

    joapp_api_action_get_woo_categories

    هوک اکشن این رویداد زمانی اجرا میشود که از طرف اپلیکیشن درخواست دسته بندی های فروشگاه شود. درواقع این هوک اکشن پس از اجرای صفحه اصلی فروشگاه اپلیکیشن رخ میدهد.

    مثال : در مثال زیر کلیه دسته های فروشگاه دریافت شده و در صورتی که تصویری برای یک دسته وجود نداشته باشد تصویر پیش فرض زیر جایگزین میشد.

     http://domain.com/icon.png
    <?php
    
    add_action("joapp_api_action_get_woo_categories", "function_name_hook_action_get_woo_categories");
    
    function function_name_hook_action_get_woo_categories() {
        global $joapp_result;
    
        $categories = $joapp_result['categories'];
    
        foreach ($categories as $category) {
            if ($category->image == "")
                $category->image = "http://domain.com/icon.png";
        }
    }
    
    ?>

     

    هوک اکشن رویداد درخواست تمامی سفارش های یک کاربر فروشگاه

    هوک اکشن رویداد درخواست تمامی سفارش های یک کاربر فروشگاه

    joapp_api_action_get_customer_orders_woo

    توابع این هوک اکشن زمانی اجرا میشود که کاربری در اپلیکیشن درخواست بررسی تاریخچه و وضعیت همه سفارش های خود را بدهد. طبیعتا این نتیجه یک آرایه از ساختار تمامی سفارشات بوده که در متغیر گلوبال joapp_result در دسترس است.

    ساختار json یکی از این درخواست کاربر در زیر آمده است:

    {
    	"orders": [{
    		"id": 177,
    		"order_number": "String Order Number",
    		"order_key": "String Order Key",
    		"payment_details":{
    			"method_id" : "cod",
    			"method_title" : "پرداخت در محل",
    			"paid" : true
    		},
    		"status":"pending",
    		"line_items": [ /* آرایه ای از کالاهای درخواست شده*/ ]
    	},
    	{
    		"id": 209,
    		"order_number": "String Order Number",
    		"order_key": "String Order Key",
    		"payment_details":{
    			"method_id" : "cod",
    			"method_title" : "پرداخت در محل",
    			"paid" : true
    		},
    		"status":"on_hold",
    		"line_items": [ /*آرایه ای از کالاهای درخواست شده*/ ]
    	},...]
    }

     

    هوک اکشن رویداد بررسی (دریافت) یک سفارش خرید فروشگاه

    هوک اکشن رویداد بررسی (دریافت) یک سفارش خرید فروشگاه

    joapp_api_action_get_order_woo

    توابع این هوک اکشن زمانی اجرا میشود که درخواست بررسی یک سفارش خرید در اپلیکیشن انجام شود. در واقع پس از اقدام به پرداخت یک سفارش و برگشت به صفحه اپلیکیشن این هوک اکشن برای بررسی صحت نتیجه پرداخت سفارش اجرا میشود. اطلاعات سفارش درخواست شده در متغیر گلوبال joapp_result طبق ساختار json زیر در دسترس است .

    نکته : status میتواند شامل یک کلید بررسی پرداخت باشد. در صورتی که status دارای مقدار completed باشد یعنی سفارش پرداخت و تکیمل و ارسال شده است.

    {
    	"order": {
    		"id": 177,
    		"order_number": "String Order Number",
    		"order_key": "String Order Key",
    		"payment_details":{
    			"method_id" : "شناسه روش پرداخت",
    			"method_title" : "عنوان روش پرداخت انجام شده",
    			"paid" : true /* ا پرداخت انجام شده است؟ */
    		},
    		"status":"pending | processing | on_hold | completed | cancelled | refunded | failed | paid | none"
    	}
    }

     

    هوک اکشن درخواست آغاز یک سفارش (سبد خرید) فروشگاه

    هوک اکشن درخواست آغاز یک سفارش (سبد خرید) فروشگاه

    joapp_api_action_set_order_woo

    توابع این هوک اکشن زمانی اجرا میشود که شما یک سفارش جدید در اپلیکیشن ثبت کرده اید و برای ورود به صفحه پرداخت بانکی آن آمده شده اید.

    اطلاعات مربوط به سفارش جدید در متغیر گلوبال joapp_result از طریق ساختار json زیر در دسترس میباشد:

    {
    	"order": {
    		"id": 177,
    		"order_number": "شماره درخواست سفارش",
    		"order_key": "کلید دسترسی به سفارش"
    	}
    }

     

    هوک اکشن محصولات فیلتر شده و جستجو شده فروشگاه

    هوک اکشن محصولات فیلتر شده و جستجو شده فروشگاه

    joapp_api_action_get_woo_products_term
    joapp_api_action_get_woo_products_search

    توابع دو هوک اکشن فوق از طریق متغیر گلوبال joapp_result اطلاعات لیست محصولات بخش جستجو و فیلتر کردن محصولات را در خود دارد. این اطلاعات شامل اطلاعات خلاصه شده یک محصول است. لیست محصولات یافت شده در joapp_result به صورت زیر در دسترس است:

    global $joapp_result;
    $array_products = $joapp_result['products'];
    هوک اکشن رویداد ویژگی های محصولات فروشگاه

    هوک اکشن رویداد ویژگی های محصولات فروشگاه

    joapp_api_action_get_woo_terms

    توابع این هوک اکشن زمانی اجرا میشود که اپلیکیشن درخواست نمایش ویژگی های محصولات فروشگاه برای فیلتر کردن محصولات را ارسال نماید.اطلاعات ویژکی ها در متغیر گلوبال joapp_result وجود دارد. که نمونه ای از آن به صورت json در زیر ارائه شده است:

    {
    	"terms": [{
    		"term_id": 41,
    		"name": "قرمز:5000",
    		"slug": "red5000",
    		"term_group": 0,
    		"term_taxonomy_id": 41,
    		"taxonomy": "pa_joapp_term1",
    		"description": "",
    		"parent": 0,
    		"count": 1,
    		"filter": "raw"
    	},
    	{
    		"term_id": 42,
    		"name": "سبز:0",
    		"slug": "green0",
    		"term_group": 0,
    		"term_taxonomy_id": 42,
    		"taxonomy": "pa_joapp_term2",
    		"description": "",
    		"parent": 0,
    		"count": 1,
    		"filter": "raw"
    	},
    	{
    		"term_id": 43,
    		"name": "محصول شیمیایی",
    		"slug": "green5000",
    		"term_group": 0,
    		"term_taxonomy_id": 43,
    		"taxonomy": "pa_joapp_term3",
    		"description": "",
    		"parent": 0,
    		"count": 1,
    		"filter": "raw"
    	}]
    }

     

    هوک اکشن رویداد محصولات یک دسته بندی فروشگاه

    هوک اکشن رویداد محصولات یک دسته بندی فروشگاه

    joapp_api_action_get_woo_one_products_category

    توابع این هوک اکشن زمانی اجرا میشود که از طرف اپلیکیشن درخواست لیست محصولات یک دسته بندی ارسال شود. اطلاعات محصولات در متغییر گوبال joapp_result در دسترس است.

    خروجی یک درخواست ثبت شده در joapp_result به صورت زیر میباشد:

    نکته : دقت نمایید که در آرایه joapp_result[‘products’] تمامی محصولات به صورت خلاصه شده ارسال میشود و بخش های اضافی از آن حذف شده است. دلیل آن عدم نیاز به بخش های غیر ضروری و افزایش سرعت تبادل اطلاعات میباشد.

    {
    	"products": [{
    		"id": 1,
    		"title": "محصول 1",
    		"featured": false,
    		"short_description": "",
    		"price": "5000",
    		"regular_price": "5000",
    		"in_stock": true,
    		"images": []
    	},
    	{
    		"id": 2,
    		"title": "محصول 2",
    		"featured": true,
    		"short_description": "",
    		"price": "1000",
    		"regular_price": "1000",
    		"in_stock": false,
    		"images": []
    	},
    	{
    		"id": 3,
    		"title": "محصول 3",
    		"featured": false,
    		"short_description": "",
    		"price": "1000",
    		"regular_price": "1000",
    		"in_stock": false,
    		"images": []
    	}],
    	"pages": 5,
    }

     

    هوک اکشن رویداد محصول فروشگاه

    هوک اکشن رویداد محصول فروشگاه

    joapp_api_action_get_woo_one_product

    توابع این هوک اشکن زمانی اجرا میشود که در اپلیکیشن درخواست نمایش یک محصول داده شود. اطلاعات محصول که از مدل محصول میباشد در متغیر گلوبال joapp_result قرار دارد.

    برای مثال خروجی محصول شماره 148 که از سمت اپلیکیشن در اپلیکیشن درخواست شده است در joapp_result به صورت زیر است که به همین شیوه میتوان اطاعات joapp_result برای نمایش در اپلیکیشن را تغییر داد :

    {
    	"product": {
    		"id": 148,
    		"title": "محصول دانلودی 1",
    		"type": "simple",
    		"permalink": "http:\/\/domain.com/shop/download",
    		"featured": false,
    		"description": "این یک محصول برای دانلود است",
    		"short_description": "محصول دانلودی ...",
    		"price": "5000",
    		"regular_price": "5000",
    		"in_stock": true,
    		"weight": null,
    		"dimensions": {
    			"length": "",
    			"width": "",
    			"height": "",
    			"unit": "cm"
    		},
    		"images": [{
    			"src": "http:\/\/domain.com/placeholder.png",
    			"name": ""
    		}],
    		"attributes": [],
    		"average_rating": "0.00",
    		"rating_count": 0,
    		"product_meta": {
    			"product_meta": {
    				"total_sales": "234",
    				"joapp_fealds": "[]"
    			}
    		},
    		"managing_stock": false,
    		"stock_quantity": 1000
    	},
    }
    هوک اکشن رویداد بارگزاری آدرس قالب پرداخت

    هوک اکشن رویداد بارگزاری آدرس قالب پرداخت

    joapp_api_action_payment_template

    تابع این هوک اکشن زمانی اجرا میشود که ، آدرس قالب پیش فرض joapp api در اپلیکیشن برای انجام پرداخت صدا زده شود. آدرس صفحه پرداخت در متغیر گلوبال joapp_result وجود دارد و ما میتوانی آن را ویرایش کنیم.

    مثال : فرض کنید ما یک قالب اختصاصی برای پرداخت ایجاد کرده باشیم و بخواهیم به اپلیکیشن بگوییم قالب پیش فرض را از روی مسیر دلخواه ما بارگزاری کن. و این مسیر مثلا در payment/templates/page.php است.

    <?php
    
    add_action("joapp_api_action_payment_template", "joapp_api_action_payment_template_func");
    
    function joapp_api_action_payment_template_func() {
        global $joapp_result;
        $joapp_result = dirname(__FILE__) . '/payment/templates/page.php';
    }
    
    ?>

     

    هوک اکشن آدرس فاکتور برای پرداخت سبد خرید

    هوک اکشن آدرس فاکتور برای پرداخت سبد خرید

    joapp_api_action_open_pay_woo

    این هوک اکشن زمانی رخ میدهد که سبد خرید نهایی شده و برای ارائه پیش فاکتور آدرسی را از سایت دریافت میکند تا کاربر آن را تایید و برای پرداخت انجام شود. در تابع این هوک اکشن متغیر joapp_result دارای آدرس نهایی صفحه پیش فاکتور است که پس از انجام اکشن کاربر توسط مرورگر گوشی به آن آدرس redirect میشود.

    مثال : فرض کنیم قبل از انتقال کاربر به آدرس پیش فاکتور، قرار است مقدار 123 از طریق کوئری فرضاً sign به url نهایی اضافه شود.

    <?php
    
    add_action("joapp_api_action_open_pay_woo", "function_name_hook_action_open_pay_woo");
    
    function function_name_hook_action_open_pay_woo() {
        global $joapp_result;
        $joapp_result .= $joapp_result."&sign=123";
    }
    
    ?>

     

    هوک اکشن رویداد دریافت روش های حمل و نقل کالا

    هوک اکشن رویداد دریافت روش های حمل و نقل کالا

    joapp_api_action_get_shipping_methods

    این هوک اکشن زمانی اجرا میشود که بخواهیم اطلاعات روش های حمل و نقل و روش پرداخت کالا را در بخش فروشگاهی اپلیکیشن دریافت کنیم. اطلاعات روش های حمل و نقل در متغیر گلوبال joapp_result قرار دارد.

    فیلد های موجود در joapp_result عبارتند از:

    • shipping : روش های حمل و نقل کاالا. بر اساس مدل json حمل و نقل.
    • payment_place : مدل پرداخت در محل برای این روش های حمل و نقل.

    ساختار json مدل joapp_result در زیر آمده است:

    {
    	"shipping": [{
        		"title": "حمل با پیک موتوری",
        		"tax_status": "taxable",
        		"cost": "5000",
        		"class_costs": "",
        		"class_cost_43": "",
        		"no_class_cost": "",
        		"type": "class",
        		"method_id": "flat_rate:13"
        	},
        	{
        		"title": "حمل و نقل رایگان",
        		"requires": "min_amount",
        		"min_amount": "1000000",
        		"method_id": "free_shipping:15"
        	},
        	{
        		"title": "دریافت کالا توسط مشتری در فروشگاه",
        		"tax_status": "taxable",
        		"cost": "",
        		"method_id": "local_pickup:16"
        	},
        	{
        		"title": "پست ویژه تیپاکس",
        		"tax_status": "none",
        		"cost": "10000",
        		"class_costs": "",
        		"class_cost_43": "",
        		"no_class_cost": "",
        		"type": "class",
        		"method_id": "flat_rate:17"
        	},
        	{
        		"title": "پست پیشتاز",
        		"tax_status": "taxable",
        		"cost": "8900",
        		"class_costs": "",
        		"class_cost_43": "",
        		"no_class_cost": "",
        		"type": "class",
        		"method_id": "flat_rate:18"
    	}],
    	"payment_place": {
    		"enabled": true, /** آیا پرداخت در محل فعال است؟ **/
    		"enable_for_method": [ /** پرداخت در محل برای کدامیک از روش های حمل و نقل باشد؟ **/
    		    "flat_rate",
    		    "free_shipping"
    		]
    	}
    }
    هوک اکشن رویداد ارسال دیدگاه

    هوک اکشن رویداد ارسال دیدگاه

    joapp_api_action_submit_comment

    این هوک اکشن زمانی رخ میدهد که کاربر بخواهد یک دیدگاه ارسال نماید. برخلاف هوک اکشن های دیگر که متغیر خروجی برای ویرایش در دسترس بود در این هوک اکشن ، متغیر ورودی برای انجام عملیات کنترلی در دسترس میباشد. اطلاعات ورودی در متغیر گلوبال joapp_data قرار گرفته است.

    فیلد های در دسترس joapp_data شامل موارد زیر می باشد:

     

    • comment_post_ID : شناسه پستی که دیدگاه برای آن ثبت خواهد شد.
    • comment_author : نام کاربری نویسنده دیدگاه.
    • user_id : شماره نویسنده دیدگاه.
    • comment_author_email : ایمیل نویسنده دیدگاه.
    • comment_author_url : آدرس سایت نویسنده دیدگاه (پیشفرض خالی است).
    • comment_content : متن دیدگاه.
    • comment_author_IP : آی پی نویسنده دیدگاه.
    • comment_agent : برچسب agent مرورگر نویسنده دیدگاه که به صورت پیشفرض خالی است.
    • comment_date : تاریخ و زمان ارسال دیدگاه.
    • comment_date_gmt : تاریخ و زمان ارسال دیدگاه براساس ساعت جهانی.
    • comment_approved : در صورت true بودن این مقدار، پس از ثبت دیدگاه به صورت خودکار دیدگاه تایید شده است و نیازی به بررسی مدیر سایت نیست.

     

    مثال : فرض کنید بخواهیم زمانی که کاربر دیدگاهی را ارسال میکند قبل از ذخیره شدن دیدگاه مقدار “Sent from Application” در انتهای متن دیدگاه قرار گیرد.

    <?php
    
    add_action("joapp_api_action_submit_comment", "function_name_hook_action_submit_comment");
    
    function function_name_hook_action_submit_comment() {
        global $joapp_data;
        $joapp_data['comment_content'] .= "\n\n Sent from Application";
        
    }
    
    ?>

     

    هوک اکشن رویداد دریافت فیلترهای محصولات

    هوک اکشن رویداد دریافت فیلترهای محصولات

    joapp_api_action_get_woo_filters

    از طریق این هوک اکشن امکان دریافت فیلترهای ثبت شده برای کاوش در محصولات فراهم میشود. فیلتر ها در متغیر گلوبال joapp_result در دسترس میباشد. خروجی فیلتر ها در joapp_result به صورت ساختار مدل json زیر در دسترس است:

    {
        "filters": [
            {
                "name": "filter name 1",
                "slug": "pa_slug_filter1",
                "id": 1,
                "count": 3
            },
            {
                "name": "filter name 2",
                "slug": "pa_slug_filter2",
                "id": 5,
                "count": 1
            },
            {
                "name": "filter name 2",
                "slug": "pa_slug_filter2",
                "id": 6,
                "count": 2
            },
            {
                "name": "filter name 3",
                "slug": "pa_slug_filter3",
                "id": 4,
                "count": 1
            }
            ,...
        ]
    }
    هوک اکشن دریافت آدرس پستی کاربر

    هوک اکشن دریافت آدرس پستی کاربر

    joapp_api_action_get_user_shipping

    این هوک اکشن در زمان دریافت فیلد های پستی کاربر در فروشگاه درخ میدهد. زمانی که کاربری برای نهایی کردن سبد خرید در اپلیکیشن اقدام میکند این هوک اکشن صدا زده شده خروجی آن در متغیر گلوبال joapp_result در دسترس است.

    مثال : در مثال زیر به صورت پیش آدرس کاربری که شهری بای آن ثبت نشده است به تهران تغییر می یابد.

    <?php
    
    add_action("joapp_api_action_get_user_shipping", "function_name_hook_action_get_user_shipping");
    
    function function_name_hook_action_get_user_shipping() {
        global $joapp_result;
    
        if($joapp_result['shipping']['state'] == ""){
            $joapp_result['shipping']['state'] = "THR";
        }
    }
    
    ?>

    فیلد های دیگر joapp_result در مدل خروجی آن به صورت زیر میباشد:

    • shipping : آدرس پستی کاربر
    • shipping_form : در صورت حذف هر یک از مقادیر این آرایه ورودی مروبوط به آن در اپلیکیشن مخفی میگردد. مثلا اگر شما FIRST_NAME را از shipping_form حذف کنید در اپلیکیشن برای دریافت آدرس تکست باکس مروبط به نام در اپلیکیشن مخفی میگردد.
    • check_orders : این فیلد در هنگام دریافت مشخصات کاربر بررسی میکند آیا خطایی برای محصولات درخواست شده وجود دارد یا خیر در صورتی که این فیلد خالی باشد درواقع خطایی در سفارش سبد خرید نیست.
    • locations : در صورتی که از موقعیت های استان و شهر پیشفرض وردپرس استفاده نکنید این فیلد از بخش شهر های ثبت شده در JOAPP API پر میشود.
    {
    	"shipping": {
    		"first_name": "Name",
    		"last_name": "Family",
    		"company": "Company Name",
    		"address_1": "Full Address 1",
    		"address_2": "Full Address 2",
    		"city": "Shemiran",
    		"state": "THR",
    		"postcode": "8888866554",
    		"country": "IR",
    		"email": "email_address@gmail.com",
    		"phone": "09392376007"
    	},
    	"shipping_form": [
    		"FIRST_NAME",
    		"LAST_NAME",
    		"COMPANY",
    		"ADDRESS_1",
    		"ADDRESS_2",
    		"CITY",
    		"STATE",
    		"POSTCODE",
    		"EMAIL",
    		"PHONE",
    		"NOTE"
    	],
    	"check_orders": [{
    	    "order_id" : 10,
            "message" : "کالای 10 به این تعداد در انبار نیست"
        },...],
    	"locations": {
    		"update_flag": "1522504496"
    	}
    }
    هوک اکشن رویداد دانلود های یک کاربر فروشگاه

    هوک اکشن رویداد دانلود های یک کاربر فروشگاه

    joapp_api_action_get_customer_downloads_woo

    توابع این هوک اکشن زمانی اجرا میشود که در اپلیکیشن کاربری درخواست لیست لینک های فایل های خریداری شده خود را ارسال نماید. در نتیجه سرور آرایه ای از فاطلاعات فایل های قابل دانلود را در اختیار کاربر قرار میدهد. اطلاعات این فایل ها در متغیر گلوبال joapp_result قرار دارد و برای انجام کنترل های لازم در دسترس میباشد.

    نمونه ای از json یکی از این درخواست ها در زیر مشاهده میشود:

    {
    	"downloads": [{
    		"download_url": "http://domain.com/download/file1.zip",
    		"download_name": "file_name1",
    		"downloads_remaining": 5,
    		"base_file_name": "file1.zip"
    	},
    	{
    		"download_url": "http://domain.com/download/file2.zip",
    		"download_name": "file_name2",
    		"downloads_remaining": 1,
    		"base_file_name": "file2.zip"
    	},...]
    }