autoship_load_product_summary_data_display_notice (function)
(src/product-page.php) Loads Autoship Cloud Data on Edit Product page.
Function
/** * Load Autoship Cloud Data on Edit Product Screen. * TODO: Currently hooked into the admin notices but could try to find * better hook for early data load. */ function autoship_load_product_summary_data_display_notice (){ // Get the Current Screen object and if doesn't exist escape. $screen = get_current_screen(); if ( !$screen ) return; if ( 'product' !== $screen->id || 'edit' !== $screen->parent_base ) return; global $post; $product = wc_get_product( $post->ID ); $valid = autoship_is_valid_sync_product( $post->ID ); $active = 'yes' == autoship_sync_active_enabled( $product ); // Allow devs to disable admin notice if desired. if( apply_filters('autoship_display_edit_product_sync_admin_notice', !$active || !$valid, $product ) ) return; /** * Get the Stored Autoship Product Sync Data * Retrieved and Initially stored in @see autoship_product_metaboxes_template_data() * hooked to add_meta_boxes_product */ $summary_data = $active ? autoship_get_stored_product_sync_summary_data( $post->ID ) : array(); // Get any Error or Warning Data. $error_data = autoship_get_product_summary_error_details( $summary_data, $product ); // Check for Sync Error for active and valid products if ( $active && $valid && ( !empty( $error_data['type'] ) && ( 'error' == $error_data['type'] ) ) ){ $title = __( 'Error', 'autoship' ); $status = 'error'; $notice = sprintf( "<p>%s</p>", $error_data['msg'] ); // If active and no general sync error } else if ( !empty( $summary_data ) && $active ){ if ( $summary_data['QuantityScheduled'] ){ $total_string = array(); if ( $summary_data['TotalQuantityScheduledActive'] ) $total_string[] = $summary_data['TotalQuantityScheduledActive'] . ' Active'; if ( $summary_data['TotalQuantityScheduledActive'] ) $total_string[] = $summary_data['TotalQuantityScheduledPaused'] . ' Paused'; if ( $summary_data['TotalQuantityFailed'] ) $total_string[] = $summary_data['TotalQuantityFailed'] . ' Failed'; if ( $summary_data['TotalQuantityProcessing'] ) $total_string[] = $summary_data['TotalQuantityProcessing'] . ' Processing'; } // get the notice $scheduled_notice = autoship_get_active_product_summary_general_notice( $summary_data, $product ); $title = __( 'Active', 'autoship' ); $status = 'active'; $notice = apply_filters( 'autoship_product_admin_summary_metabox_notice', sprintf( __('<p>This product is currently <strong>Active</strong>.%s', 'autoship'), $scheduled_notice ), $status, $summary_data, $product ); // Active but for some reason summary data isn't loaded. } else if ( $active ){ $products_report_url = autoship_admin_products_page_url(); $api_health_url = autoship_admin_settings_page_url(); $title = __( 'Error', 'autoship' ); $status = 'error'; $notice = sprintf( __( '<p>Product not synchronized: A problem was encountered while trying to retrieve this Product\'s Sync Information. Please confirm your <a href="%s">API connection is healthy</a> and ensure there are no issues with this product in the <a href="%s">Autoship Cloud > Products</a> report.</p>', "autoship" ), $api_health_url, $products_report_url); } ?> <div class="autoship-admin-notice notice autoship-<?php echo $status;?>-notice is-dismissible"> <h2><?php echo sprintf( __( 'Autoship Product Status: <span class="%s %s">%s</span>', 'autoship' ), $status, $error_data['type'], $title ); ?></h2> <?php echo $notice; ?> <?php do_action( 'autoship_product_admin_summary_metabox_notice', $status, $summary_data, $product ); ?> </div> <?php }