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

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

۱- ابتدا افزونه گراویتی فرم را دانلود و نصب نمایید . ( این افزونه تجاری می باشد اما تحت مجوز gpl عرضه می شود ) .

۲- ابتدا کد زیر را در فایل functions.php قالبتون کپی نمایید ( اگر این فایل را ندارید خودتان ایجاد نمایید ) .

<?php
/**
 * Gravity Wiz // Gravity Forms // Schedule a Post by Date Field
 *
 * Schedule your Gravity Form generated posts to be published at a future date, specified by the user via GF Date and Time fields.
 *
 * @version	  ۱٫۰
 * @author    David Smith <david@gravitywiz.com>
 * @license   GPL-2.0+
 * @link      https://gravitywiz.com/...
 */
// CHANGE: "546" to the ID of your form
add_filter( 'gform_post_data_546', 'gw_schedule_post_by_date_field', 10, 3 );
function gw_schedule_post_by_date_field( $post_data, $form, $entry ) {
    $date = $entry['7']; // CHANGE: "7" to the ID of your Date field
    $time = $entry['8']; // CHANGE: "8" to the ID of your Time field
    ### don't touch the magic below this line ###
    if( empty( $date ) ) {
        return $post_data;
    }
    if( $time ) {
        list( $hour, $min, $am_pm ) = array_pad( preg_split( '/[: ]/', $time ), 3, false );
        if( strtolower( $am_pm ) == 'pm' ) {
            $hour += 12;
        }
    } else {
        $hour = $min = '00';
    }
    $schedule_date = date( 'Y-m-d H:i:s', strtotime( sprintf( '%s %s:%s:00', $date, $hour, $min ) ) );
    $post_data['post_status']   = 'future';
    $post_data['post_date']     = $schedule_date;
    $post_data['post_date_gmt'] = get_gmt_from_date( $schedule_date );
    $post_data['edit_date']     = true;
    return $post_data;
}

۴-در خط هفتم کد عدد ۵۴۶ را به آیدی فرم ساخته شده خودتان تغییر بدهید .

۳- در خطوط ۱۵ و ۱۶ کد  بایستی زمینه های $date و $time که با اعداد ۷ و ۸ برابر قرار گرفته اند را با آیدی زمینه تاریخ و زمان خودتان جایگزین نمایید .

  • در صورتی که مایلید تا زمان ارسال نوشته ساعتی ثابت باشد می توانید خط ۱۶ را به صورت زیر دربیاورید.
$time = '09:00 am'
  • توجه نمایید که برای نوشتن ساعت بهتر است آن را به صورت ۲۴ ساعته بنویسید و یا عدد صفر قبل از عدد را فراموش نکنید .