'warning', 'dismiss' => false, 'force' => false, 'message' => __('Plugin settings has been successfully reset.', 'woo-mailerlite') ); */ // Integration setup (in case setup was not yet completed via settings handling) if (MailerLiteSettings::getInstance()->isActive() && ! woo_ml_integration_setup_completed()) { $notices[] = array( 'type' => 'warning', 'dismiss' => false, 'force' => true, 'message' => sprintf(wp_kses(__('In order to complete our integration setup, please click here.', 'woo-mailerlite'), array('a' => array('href' => array()))), esc_url(TrackingData::getInstance()->getCompleteIntegrationSetupUrl())) ); } //message to be displayed for users who are only using the old functionalities just now if (MailerLiteSettings::getInstance()->isActive() && woo_ml_shop_not_active()) { $notices[] = array( 'type' => 'error', 'dismiss' => false, 'force' => true, 'message' => __('Your shop is currently not active. Please reconnect to MailerLite.', 'woo-mailerlite') ); } // Integration setup completed if ('integration_setup_completed' === $admin_notice) { $notices[] = array( 'type' => 'success', 'dismiss' => true, 'force' => false, 'message' => __('Integration setup has been successfully completed.', 'woo-mailerlite') ); } if (MailerLiteSettings::getInstance()->syncFailed()) { $notices[] = array( 'type' => 'error', 'dismiss' => true, 'force' => true, 'message' => __('We did not manage to sync all of your shop resources. Please try again.', 'woo-mailerlite') ); } // Hook $notices = apply_filters('woo_ml_admin_notices', $notices); $is_plugin_area = true; // Maybe add a check here later // Output messages if (sizeof($notices) > 0) { foreach ($notices as $notice_id => $notice) { // Maybe showing the notice on plugin related admin pages only if (isset($notice['force']) && false === $notice['force'] && ! $is_plugin_area) { continue; } $classes = 'woo-ml-notice notice'; if ( ! empty($notice['type'])) { $classes .= ' notice-' . $notice['type']; } if (isset($notice['dismiss']) && true === $notice['dismiss']) { $classes .= ' is-dismissible'; } ?>

WooCommerce MailerLite:

get_product($product_id); if ($product) { $products[$product_id] = $product->get_title(); } } } if (TrackingData::getInstance()->updateData($products) !== false) { add_option('woo_ml_version', WOO_MAILERLITE_VER); } } /** * Handle admin actions */ function woo_ml_admin_actions() { woo_ml_migrations(); if ( ! isset($_GET['woo_ml_action'])) { return; } // Handle admin actions here if ('setup_integration' === $_GET['woo_ml_action']) { // Setup integration woo_ml_setup_integration(); // Afterwards redirect to settings and show success notice wp_redirect(add_query_arg('woo_ml_admin_notice', 'integration_setup_completed', TrackingData::getInstance()->getSettingsPageUrl())); exit; } } add_action('admin_init', 'woo_ml_admin_actions'); /** * Add checkbox element to bulk and quick edit menu on a product */ function woo_ml_bulk_edit_quick_edit() { echo '
'; woocommerce_wp_checkbox(array( 'id' => 'ml_ignore_product', 'label' => __('MailerLite e-commerce automations', 'woo-mailerlite'), 'description' => __('Ignore product', 'woo-mailerlite'), 'value' => '', 'desc_tip' => false )); echo '
'; } add_action('woocommerce_product_quick_edit_end', 'woo_ml_bulk_edit_quick_edit', 99); add_action('woocommerce_product_bulk_edit_end', 'woo_ml_bulk_edit_quick_edit', 99); /** * Populate MailerLite ignore product checkbox */ function woo_ml_product_custom_column($column, $post_id) { $ignore_list = ProductProcess::getInstance()->getIgnoredProductList(); switch ($column) { case 'name' : ?> post_type) { return $post_id; } $ignore_list = ProductProcess::getInstance()->getIgnoredProductList(); if (isset($_REQUEST['ml_ignore_product'])) { $ignore_list[$post_id] = $post->post_title; MailerLiteSettings::getInstance()->ignoreProduct($post_id); } else { MailerLiteSettings::getInstance()->removeIgnoreProduct($post_id); if (array_key_exists($post_id, $ignore_list)) { $ignore_list = TrackingData::getInstance()->removeProductFromList($ignore_list, array($post_id)); } } TrackingData::getInstance()->saveLocalIgnoreProducts($ignore_list); } add_action('woocommerce_product_bulk_and_quick_edit', 'woo_ml_bulk_edit_quick_edit_save', 10, 2); /** * Add a product tab for MailerLite options */ function woo_ml_product_data_tab($product_data_tabs) { $product_data_tabs['woo-ml'] = array( 'label' => __('MailerLite', 'woo-mailerlite'), 'target' => 'woo-ml-product-data', 'priority' => 99 ); return $product_data_tabs; } add_filter('woocommerce_product_data_tabs', 'woo_ml_product_data_tab'); /** * Add options to MailerLite product tab */ function woo_ml_product_data_fields() { global $post; ?>
getIgnoredProductList(); woocommerce_wp_checkbox(array( 'id' => 'ml_ignore_product', 'label' => __('Ignore Product', 'woo-mailerlite'), 'description' => __('Select if you do not wish to trigger any e-commerce automations for this product', 'woo-mailerlite'), 'value' => array_key_exists($post->ID, $ignore_list) ? 'yes' : 'no', 'desc_tip' => true, )); ?>
getIgnoredProductList(); if (isset($_POST['ml_ignore_product'])) { $ignore_list[$post_id] = $title; MailerLiteSettings::getInstance()->ignoreProduct($post_id); } else { MailerLiteSettings::getInstance()->removeIgnoreProduct($post_id); if (array_key_exists($post_id, $ignore_list)) { $ignore_list = TrackingData::getInstance()->removeProductFromList($ignore_list, array($post_id)); } } TrackingData::getInstance()->saveLocalIgnoreProducts($ignore_list); } add_action('woocommerce_process_product_meta', 'woo_ml_product_data_save'); /** * Add additional script when editing a product */ function woo_ml_edit_product_enqueue_admin_scripts() { wp_enqueue_script('woo-ml-bulk-quick-edit', WOO_MAILERLITE_URL . 'assets/js/bq_edit.js', array('jquery', 'inline-edit-post'), WOO_MAILERLITE_VER, true); } add_action('admin_print_scripts-edit.php', 'woo_ml_edit_product_enqueue_admin_scripts');