WordPress

php — „acf/load_field” Krytyczny błąd podczas zapisywania/aktualizowania produktów WooCommerce

  • 21 czerwca, 2023
  • 3 min read
php — „acf/load_field” Krytyczny błąd podczas zapisywania/aktualizowania produktów WooCommerce


Próbuję wstępnie wypełnić pole ACF o nazwie „upcoming_class_date” przy użyciu „acf/load_field”, ale mój fragment kodu zwraca błąd krytyczny po zapisaniu/aktualizacji produktu w WooCommerce. Wraca do normy, gdy ponownie aktywuję fragment po zapisaniu.

Jestem naprawdę nowy w tym i chciałbym wiedzieć, co robię źle? Poniżej znajduje się kopia mojego fragmentu kodu. Dzięki!

add_filter('acf/load_field/name=upcoming_class_date', 'set_upcoming_class_date_to_acf');
function set_upcoming_class_date_to_acf($field) {
    global $product_object;
    $attr = $product_object->get_attribute('class-date');
    // Turn string attr into an array
    $attr = explode( ' | ', $attr );
    
    // Get WP Settings Local Time
    $wpLocalDateToday = current_datetime()->format('m/d/Y');
    
    // Get the closest class date from local date today
    function amet_get_closest_date($a, $b) {
            return strtotime($a) - strtotime($b);
        }
        usort($attr, "amet_get_closest_date");

        foreach ($attr as $count => $dateSingle) {
            if (strtotime($wpLocalDateToday) <= strtotime($dateSingle))  {
                $closestDate = date('m/d/Y', strtotime($dateSingle));
                break;
            }
        }
    // Render value
    if( !isset($field['value']) ){
        $field['value'] = $closestDate;
        $field['disabled'] = 0;
        return $field;
    } else {
        $current_value = get_field('upcoming_class_date');
        update_field('upcoming_class_date', $current_value);
        return $field;
    }
}

Oto błąd, który otrzymuję z dzienników

2023-06-21T01:43:06+00:00 Uncaught Error: Call to a member function get_attribute() on null in C:\xampp\htdocs\plugindev\wp-content\plugins\insert-headers-and-footers\includes\class-wpcode-snippet-execute.php(277) : eval()'d code:5
Stack trace:
#0 C:\xampp\htdocs\plugindev\wp-includes\class-wp-hook.php(308): set_upcoming_class_date_to_acf(Array)
#1 C:\xampp\htdocs\plugindev\wp-includes\plugin.php(256): WP_Hook->apply_filters(Array, Array)
#2 C:\xampp\htdocs\plugindev\wp-content\plugins\advanced-custom-fields\includes\acf-hook-functions.php(109): apply_filters_ref_array('acf/load_field/...', Array)
#3 C:\xampp\htdocs\plugindev\wp-includes\class-wp-hook.php(308): _acf_apply_hook_variations(Array)
#4 C:\xampp\htdocs\plugindev\wp-includes\plugin.php(205): WP_Hook->apply_filters(Array, Array)
#5 C:\xampp\htdocs\plugindev\wp-content\plugins\advanced-custom-fields\includes\acf-field-functions.php(58): apply_filters('acf/load_field', Array)
#6 C:\xampp\htdocs\plugindev\wp-content\plugins\advanced-custom-fields\includes\validation.php(331): acf_get_field('field_64912967e...')
#7 C:\xampp\htdocs\plugindev\wp-content\plugins\advanced-custom-fields\includes\validation.php(206): acf_validate_values(Array, 'acf')
#8 C:\xampp\htdocs\plugindev\wp-includes\class-wp-hook.php(308): acf_validation->acf_validate_save_post('')
#9 C:\xampp\htdocs\plugindev\wp-includes\class-wp-hook.php(332): WP_Hook->apply_filters(NULL, Array)
#10 C:\xampp\htdocs\plugindev\wp-includes\plugin.php(517): WP_Hook->do_action(Array)
#11 C:\xampp\htdocs\plugindev\wp-content\plugins\advanced-custom-fields\includes\validation.php(273): do_action('acf/validate_sa...')
#12 C:\xampp\htdocs\plugindev\wp-content\plugins\advanced-custom-fields\includes\validation.php(171): acf_validate_save_post()
#13 C:\xampp\htdocs\plugindev\wp-includes\class-wp-hook.php(308): acf_validation->ajax_validate_save_post('')
#14 C:\xampp\htdocs\plugindev\wp-includes\class-wp-hook.php(332): WP_Hook->apply_filters('', Array)
#15 C:\xampp\htdocs\plugindev\wp-includes\plugin.php(517): WP_Hook->do_action(Array)
#16 C:\xampp\htdocs\plugindev\wp-admin\admin-ajax.php(188): do_action('wp_ajax_acf/val...')
#17 {main}
  thrown
2023-06-21T01:43:06+00:00 Snippet "ACF Prepopulate Upcoming Class Date" (#81) was automatically deactivated due to a fatal error.


Źródło

Warto przeczytać!  Gutenberg i FSE: Jak wykluczyć blok z pełnej edycji strony