自定义 WordPress 插件,用于每 30 分钟自动提交重力表格

问题描述 投票:0回答:1

我正在开发一个简单的自定义 WordPress 插件,旨在使用 WP Cron 计划任务每 30 分钟自动提交一份重力表格。但是,该插件似乎没有按预期工作,因为表单没有自动提交。

插件应该做什么:

添加自定义 Cron 计划每 30 分钟运行一次。
使用 Gravity Forms API 提交包含预定义数据的特定表单。
记录任何成功或错误消息以进行调试。

遇到的问题:
  • 计划的任务似乎没有执行,并且表单没有按计划提交。
  • 即使我启用了 WP_DEBUG 并检查了 debug.log 文件,也没有记录任何错误。

这是我完整的插件代码文件:

<?php
/*
Plugin Name: Auto Submit Form Every 30 Minutes
Description: A simple plugin to auto-submit a specific Gravity Form every 30 minutes.
Version: 1.0
Author: Your Name
*/

// Prevent direct access to the file
if (!defined('ABSPATH')) {
    exit;
}

// Add a new cron schedule for every 30 minutes
add_filter('cron_schedules', 'asf_add_half_hour_schedule');
function asf_add_half_hour_schedule($schedules) {
    $schedules['half_hour'] = array(
        'interval' => 1800, // 30 minutes in seconds
        'display'  => __('Every 30 Minutes')
    );
    return $schedules;
}

// Function to auto-submit the form
function asf_auto_submit_form() {
    $form_id = 1; // ID of the form to submit

    // Form data as an array, with field IDs as keys
    $form_data = [
        1 => 'User Name',        // Example data for field ID 1
        2 => '[email protected]', // Example data for field ID 2
        3 => 'Sample description' // Example data for field ID 3
    ];

    // Submit form using Gravity Forms API
    $result = GFAPI::submit_form($form_id, $form_data);

    if (is_wp_error($result)) {
        error_log('Form submission error: ' . $result->get_error_message());
    } else {
        error_log('Form submitted successfully! Entry ID: ' . $result['entry_id']);
    }
}

// Schedule the cron job if not already scheduled
function asf_schedule_auto_submit() {
    if (!wp_next_scheduled('asf_auto_submit_form_event')) {
        wp_schedule_event(time(), 'half_hour', 'asf_auto_submit_form_event');
    }
}
add_action('wp', 'asf_schedule_auto_submit');

// Hook cron event to form submission function
add_action('asf_auto_submit_form_event', 'asf_auto_submit_form');

// Clear the scheduled task when the plugin is deactivated
function asf_clear_scheduled_auto_submit() {
    wp_clear_scheduled_hook('asf_auto_submit_form_event');
}
register_deactivation_hook(__FILE__, 'asf_clear_scheduled_auto_submit');
我尝试过的故障排除步骤:
  • 启用 WP_DEBUG 和 WP_DEBUG_LOG 以检查错误。
  • 使用WP Crontrol插件来验证cron事件是否被安排,但它似乎没有运行。
  • 检查权限并验证重力形式插件是否处于活动状态。

什么可能导致此问题?
如何进一步调试?

php wordpress scheduled-tasks gravity-forms-plugin gravityforms
1个回答
-2
投票

请尝试

init
瞬间
wp

add_action('init', 'asf_schedule_auto_submit');

也许这会有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.