调试 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 gravity-forms-plugin gravity gravityforms
1个回答
-1
投票

请尝试

init
瞬间
wp

add_action('init', 'asf_schedule_auto_submit');

也许这会有帮助。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.