{"id":336624,"date":"2026-08-01T18:56:17","date_gmt":"2026-08-01T18:56:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/store-enhancements-for-woocommerce\/"},"modified":"2026-08-22T12:12:19","modified_gmt":"2026-08-22T12:12:19","slug":"elevatestore-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/en-ca.wordpress.org\/plugins\/elevatestore-for-woocommerce\/","author":12667560,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.4","stable_tag":"1.0.4","tested":"7.1","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"ElevateStore for WooCommerce","header_author":"westerndeal","header_description":"Enhance your WooCommerce store with additional features.","assets_banners_color":"f9f7f4","last_updated":"2026-08-22 12:12:19","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.westerndeal.com\/","header_author_uri":"https:\/\/www.westerndeal.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":154,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.3":{"tag":"1.0.3","author":"abdullah17","date":"2026-08-15 13:41:38"},"1.0.4":{"tag":"1.0.4","author":"westerndeal","date":"2026-08-22 12:12:19"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3631746,"resolution":"128x128","location":"assets","locale":"","width":1254,"height":1254}},"assets_banners":{"banner-772x250.gif":{"filename":"banner-772x250.gif","revision":3631240,"resolution":"772x250","location":"assets","locale":"","width":2205,"height":713}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3660687,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"meta\":{\"title\":\"ElevateStore Demo Store\",\"description\":\"An interactive WooCommerce demo store showcasing ElevateStore product codes, barcodes, product badges, and order tools.\",\"author\":\"WesternDeal\",\"categories\":[\"WooCommerce\",\"E-commerce\",\"Plugins\"]},\"landingPage\":\"\\\/shop\\\/\",\"preferredVersions\":{\"php\":\"8.3\",\"wp\":\"latest\"},\"features\":{\"networking\":true,\"intl\":true},\"login\":true,\"steps\":[{\"step\":\"resetData\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"woocommerce\"},\"options\":{\"activate\":true}},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"elevatestore-for-woocommerce\"},\"options\":{\"activate\":true}},{\"step\":\"installTheme\",\"themeData\":{\"resource\":\"wordpress.org\\\/themes\",\"slug\":\"storefront\"},\"options\":{\"activate\":true}},{\"step\":\"setSiteOptions\",\"options\":{\"blogname\":\"ElevateStore Demo Store\",\"blogdescription\":\"Explore ElevateStore for WooCommerce in an interactive demo store.\",\"woocommerce_currency\":\"USD\",\"woocommerce_default_country\":\"US:NY\",\"woocommerce_store_city\":\"New York\",\"woocommerce_store_address\":\"100 Commerce Avenue\",\"woocommerce_store_postcode\":\"10001\",\"woocommerce_allow_tracking\":\"no\",\"woocommerce_onboarding_profile\":{\"skipped\":true}}},{\"step\":\"runPHP\",\"code\":\"<?php\\nrequire_once '\\\/wordpress\\\/wp-load.php';\\n\\nif ( ! class_exists( 'WooCommerce' ) || ! function_exists( 'wc_get_product' ) ) {\\n    throw new RuntimeException( 'WooCommerce is not available.' );\\n}\\n\\nglobal $wpdb;\\n\\n\\\/*\\n * Enable ElevateStore modules.\\n * Product Code option names are taken from the plugin configuration.\\n *\\\/\\nupdate_option( 'esfw_product_code', 'yes' );\\nupdate_option( 'esfw_order_duplicator', 'yes' );\\nupdate_option( 'esfw_product_barcode', 'yes' );\\nupdate_option( 'esfw_product_badge', 'yes' );\\n\\n\\\/*\\n * Product Code settings.\\n *\\\/\\nupdate_option( 'esfw_field_title', 'Product Code' );\\nupdate_option( 'esfw_column_title', 'Product Code' );\\nupdate_option( 'esfw_enable_auto_product_code', 'yes' );\\nupdate_option( 'esfw_auto_product_code', 'yes' );\\nupdate_option( 'esfw_auto_variation_product_code', 'yes' );\\nupdate_option( 'esfw_auto_grouped_product_code', 'yes' );\\nupdate_option( 'esfw_auto_external_product_code', 'yes' );\\nupdate_option( 'esfw_prefix_simple', 'EST-' );\\nupdate_option( 'esfw_prefix_variable', 'EST-VAR-' );\\nupdate_option( 'esfw_prefix_grouped', 'EST-GRP-' );\\nupdate_option( 'esfw_prefix_external', 'EST-EXT-' );\\nupdate_option( 'esfw_show_bulk_code_actions', 'yes' );\\nupdate_option( 'esfw_show_product_code_product_page', 'yes' );\\nupdate_option( 'esfw_hide_empty_product_code', 'yes' );\\nupdate_option( 'esfw_show_product_code_admin_column', 'yes' );\\nupdate_option( 'esfw_show_product_code_cart', 'yes' );\\nupdate_option( 'esfw_show_product_code_checkout', 'yes' );\\nupdate_option( 'esfw_show_product_code_order_details', 'yes' );\\nupdate_option( 'esfw_show_product_code_order_emails', 'yes' );\\nupdate_option( 'esfw_show_product_code_invoice', 'no' );\\n\\n\\\/*\\n * Create product categories for the demo catalog.\\n *\\\/\\n$categories = array(\\n    'Clothing'          => 'clothing',\\n    'Footwear'          => 'footwear',\\n    'Bags & Accessories' => 'bags-accessories',\\n    'Home & Lifestyle'  => 'home-lifestyle',\\n    'Electronics'       => 'electronics',\\n    'Stationery'        => 'stationery',\\n);\\n\\nforeach ( $categories as $name => $slug ) {\\n    if ( ! term_exists( $slug, 'product_cat' ) ) {\\n        wp_insert_term( $name, 'product_cat', array( 'slug' => $slug ) );\\n    }\\n}\\n\\n\\\/*\\n * Demo product photos.\\n *\\n * Keyed by SKU. Each entry has two URLs:\\n *\\n *   - \\\"primary\\\"  : a real, topically-matched product photo pulled from a\\n *                  public product-photography source (DummyJSON's e-commerce\\n *                  catalog CDN, the Platzi Fake Store API's seed images on\\n *                  Imgur, or a specific Wikimedia Commons file chosen to\\n *                  match the product) -- never a generic\\\/random stock photo.\\n *   - \\\"fallback\\\" : Picsum Photos, a plain photo CDN used only if the primary\\n *                  URL genuinely fails to download (e.g. that specific host\\n *                  is unreachable in a given Playground session). This\\n *                  guarantees the product still gets a real downloaded photo\\n *                  instead of the WooCommerce placeholder in that rare case.\\n *\\n * Both are imported into the Media Library as real attachments -- nothing\\n * here stores a bare URL in post meta. Swap either URL for branded product\\n * photography whenever you like; everything else in the import logic below\\n * stays the same.\\n *\\\/\\n$product_images = array(\\n    'EST-TSH-001' => array(\\n        'primary'  => 'https:\\\/\\\/i.imgur.com\\\/axsyGpD.jpeg',\\n        'fallback' => 'https:\\\/\\\/picsum.photos\\\/seed\\\/elevatestore-tshirt\\\/800\\\/800',\\n    ),\\n    'EST-HOD-002' => array(\\n        'primary'  => 'https:\\\/\\\/i.imgur.com\\\/1twoaDy.jpeg',\\n        'fallback' => 'https:\\\/\\\/picsum.photos\\\/seed\\\/elevatestore-hoodie\\\/800\\\/800',\\n    ),\\n    'EST-SNK-003' => array(\\n        'primary'  => 'https:\\\/\\\/cdn.dummyjson.com\\\/product-images\\\/mens-shoes\\\/sports-sneakers-off-white-red\\\/thumbnail.webp',\\n        'fallback' => 'https:\\\/\\\/picsum.photos\\\/seed\\\/elevatestore-sneakers\\\/800\\\/800',\\n    ),\\n    'EST-BAG-004' => array(\\n        'primary'  => 'https:\\\/\\\/cdn.dummyjson.com\\\/product-images\\\/womens-bags\\\/white-faux-leather-backpack\\\/thumbnail.webp',\\n        'fallback' => 'https:\\\/\\\/picsum.photos\\\/seed\\\/elevatestore-backpack\\\/800\\\/800',\\n    ),\\n    'EST-MUG-005' => array(\\n        'primary'  => 'https:\\\/\\\/commons.wikimedia.org\\\/wiki\\\/Special:FilePath\\\/Herbal_tea_in_white_mug.jpg',\\n        'fallback' => 'https:\\\/\\\/picsum.photos\\\/seed\\\/elevatestore-mug\\\/800\\\/800',\\n    ),\\n    'EST-MOU-006' => array(\\n        'primary'  => 'https:\\\/\\\/i.imgur.com\\\/w3Y8NwQ.jpeg',\\n        'fallback' => 'https:\\\/\\\/picsum.photos\\\/seed\\\/elevatestore-mouse\\\/800\\\/800',\\n    ),\\n    'EST-BOT-007' => array(\\n        'primary'  => 'https:\\\/\\\/commons.wikimedia.org\\\/wiki\\\/Special:FilePath\\\/Water_bottle_blue.jpg',\\n        'fallback' => 'https:\\\/\\\/picsum.photos\\\/seed\\\/elevatestore-bottle\\\/800\\\/800',\\n    ),\\n    'EST-KEY-008' => array(\\n        'primary'  => 'https:\\\/\\\/commons.wikimedia.org\\\/wiki\\\/Special:FilePath\\\/Keychron_K4_mechanical_keyboard.jpg',\\n        'fallback' => 'https:\\\/\\\/picsum.photos\\\/seed\\\/elevatestore-keyboard\\\/800\\\/800',\\n    ),\\n    'EST-TOT-009' => array(\\n        'primary'  => 'https:\\\/\\\/commons.wikimedia.org\\\/wiki\\\/Special:FilePath\\\/Tote_bag_blacu_tas_blacu.jpg',\\n        'fallback' => 'https:\\\/\\\/picsum.photos\\\/seed\\\/elevatestore-tote\\\/800\\\/800',\\n    ),\\n    'EST-LMP-010' => array(\\n        'primary'  => 'https:\\\/\\\/cdn.dummyjson.com\\\/product-images\\\/home-decoration\\\/table-lamp\\\/thumbnail.webp',\\n        'fallback' => 'https:\\\/\\\/picsum.photos\\\/seed\\\/elevatestore-lamp\\\/800\\\/800',\\n    ),\\n    'EST-NOT-011' => array(\\n        'primary'  => 'https:\\\/\\\/commons.wikimedia.org\\\/wiki\\\/Special:FilePath\\\/Blank_Notebook.jpg',\\n        'fallback' => 'https:\\\/\\\/picsum.photos\\\/seed\\\/elevatestore-notebook\\\/800\\\/800',\\n    ),\\n    'EST-SPK-012' => array(\\n        'primary'  => 'https:\\\/\\\/cdn.dummyjson.com\\\/product-images\\\/mobile-accessories\\\/amazon-echo-plus\\\/thumbnail.webp',\\n        'fallback' => 'https:\\\/\\\/picsum.photos\\\/seed\\\/elevatestore-speaker\\\/800\\\/800',\\n    ),\\n);\\n\\n\\\/*\\n * Download a demo photo and assign it as a product's real featured image\\n * via the normal WordPress Media Library \\\/ attachment mechanism.\\n *\\n * Idempotent: if the product already has a featured image (e.g. this\\n * Blueprint has already run once), the download is skipped entirely.\\n * Tries each URL in $image_urls in order (primary, then fallback); the file\\n * extension used for the Media Library attachment is taken from whichever\\n * URL actually succeeded, so .webp\\\/.jpg\\\/.jpeg sources are all stored with\\n * their real (matching) file type instead of being mislabeled. If every\\n * download genuinely fails, the function simply returns and the product is\\n * left showing WooCommerce's default placeholder -- it is never faked with\\n * a raw meta URL.\\n *\\\/\\nfunction esfw_demo_import_product_image( $product_id, $image_urls, $product_name ) {\\n    if ( has_post_thumbnail( $product_id ) ) {\\n        return;\\n    }\\n\\n    require_once ABSPATH . 'wp-admin\\\/includes\\\/media.php';\\n    require_once ABSPATH . 'wp-admin\\\/includes\\\/file.php';\\n    require_once ABSPATH . 'wp-admin\\\/includes\\\/image.php';\\n\\n    $tmp_file    = false;\\n    $source_url  = '';\\n\\n    foreach ( (array) $image_urls as $image_url ) {\\n        $attempt = download_url( $image_url, 60 );\\n\\n        if ( ! is_wp_error( $attempt ) ) {\\n            $tmp_file   = $attempt;\\n            $source_url = $image_url;\\n            break;\\n        }\\n    }\\n\\n    if ( ! $tmp_file ) {\\n        return;\\n    }\\n\\n    $allowed_extensions = array( 'jpg', 'jpeg', 'png', 'webp', 'gif' );\\n    $url_path            = (string) wp_parse_url( $source_url, PHP_URL_PATH );\\n    $extension           = strtolower( pathinfo( $url_path, PATHINFO_EXTENSION ) );\\n\\n    if ( ! in_array( $extension, $allowed_extensions, true ) ) {\\n        $extension = 'jpg';\\n    }\\n\\n    $slug      = sanitize_title( $product_name );\\n    $file_name = ( $slug ? $slug : 'elevatestore-product' ) . '.' . $extension;\\n\\n    $file_array = array(\\n        'name'     => $file_name,\\n        'tmp_name' => $tmp_file,\\n    );\\n\\n    $attachment_id = media_handle_sideload( $file_array, $product_id, $product_name );\\n\\n    if ( is_wp_error( $attachment_id ) ) {\\n        @unlink( $file_array['tmp_name'] );\\n        return;\\n    }\\n\\n    $alt_text = $product_name . ' - ElevateStore Demo Store product photo';\\n\\n    wp_update_post(\\n        array(\\n            'ID'           => $attachment_id,\\n            'post_title'   => $product_name,\\n            'post_excerpt' => $alt_text,\\n        )\\n    );\\n    update_post_meta( $attachment_id, '_wp_attachment_image_alt', $alt_text );\\n\\n    set_post_thumbnail( $product_id, $attachment_id );\\n}\\n\\n\\\/*\\n * Demo product catalog.\\n *\\n * Twelve realistic products covering Clothing, Footwear, Bags & Accessories,\\n * Home & Lifestyle, Electronics, and Stationery. Every product gets a unique\\n * SKU\\\/product code for the ElevateStore Product Code + Barcode demos, and\\n * five of them carry a representative Product Badge state (Sale, Featured,\\n * Low Stock, New, Best Seller\\\/Popular). Sale price, the Featured flag, and\\n * low-stock quantity\\\/threshold are set as real WooCommerce product data\\n * (not just a text label), so the corresponding native WooCommerce behavior\\n * (sale ribbon, featured status, low-stock notices) is genuinely present for\\n * ElevateStore to key off of, in addition to the plugin's own badge table.\\n *\\\/\\n$products = array(\\n    array(\\n        'name'        => 'Classic Cotton T-Shirt',\\n        'code'        => 'EST-TSH-001',\\n        'category'    => 'Clothing',\\n        'price'       => '29.99',\\n        'sale_price'  => '',\\n        'featured'    => false,\\n        'low_stock'   => false,\\n        'badge'       => 'New',\\n        'description' => 'A soft, breathable everyday tee made from 100% premium combed cotton. Pre-shrunk and tailored for a relaxed, true-to-size fit.',\\n        'short_description' => 'Premium combed cotton tee for everyday wear.',\\n    ),\\n    array(\\n        'name'        => 'Essential Pullover Hoodie',\\n        'code'        => 'EST-HOD-002',\\n        'category'    => 'Clothing',\\n        'price'       => '54.99',\\n        'sale_price'  => '44.99',\\n        'featured'    => false,\\n        'low_stock'   => false,\\n        'badge'       => 'Sale',\\n        'description' => 'A cozy fleece-lined pullover hoodie with a kangaroo pocket and an adjustable drawstring hood. Perfect for layering in any season.',\\n        'short_description' => 'Fleece-lined pullover hoodie for everyday layering.',\\n    ),\\n    array(\\n        'name'        => 'Urban Running Sneakers',\\n        'code'        => 'EST-SNK-003',\\n        'category'    => 'Footwear',\\n        'price'       => '89.99',\\n        'sale_price'  => '',\\n        'featured'    => true,\\n        'low_stock'   => false,\\n        'badge'       => 'Featured',\\n        'description' => 'Lightweight running sneakers with a cushioned sole and a breathable mesh upper, built for daily training and everyday wear.',\\n        'short_description' => 'Lightweight, cushioned sneakers for daily training.',\\n    ),\\n    array(\\n        'name'        => 'Minimal Leather Backpack',\\n        'code'        => 'EST-BAG-004',\\n        'category'    => 'Bags & Accessories',\\n        'price'       => '79.99',\\n        'sale_price'  => '',\\n        'featured'    => false,\\n        'low_stock'   => false,\\n        'badge'       => 'Best Seller',\\n        'description' => 'A minimalist backpack crafted from premium faux leather, with a padded laptop sleeve and multiple interior pockets for everyday organization.',\\n        'short_description' => 'Minimalist leather backpack with a padded laptop sleeve.',\\n    ),\\n    array(\\n        'name'        => 'Ceramic Coffee Mug',\\n        'code'        => 'EST-MUG-005',\\n        'category'    => 'Home & Lifestyle',\\n        'price'       => '19.99',\\n        'sale_price'  => '',\\n        'featured'    => false,\\n        'low_stock'   => false,\\n        'badge'       => 'Popular',\\n        'description' => 'A classic 12oz ceramic mug with a comfortable handle, dishwasher- and microwave-safe. Ideal for your morning coffee or tea.',\\n        'short_description' => 'Classic 12oz ceramic mug, dishwasher and microwave safe.',\\n    ),\\n    array(\\n        'name'        => 'Wireless Ergonomic Mouse',\\n        'code'        => 'EST-MOU-006',\\n        'category'    => 'Electronics',\\n        'price'       => '39.99',\\n        'sale_price'  => '',\\n        'featured'    => false,\\n        'low_stock'   => true,\\n        'badge'       => 'Low Stock',\\n        'description' => 'A wireless ergonomic mouse designed for all-day comfort, with precision tracking and a long-lasting rechargeable battery.',\\n        'short_description' => 'All-day-comfort wireless mouse with precision tracking.',\\n    ),\\n    array(\\n        'name'        => 'Stainless Steel Water Bottle',\\n        'code'        => 'EST-BOT-007',\\n        'category'    => 'Home & Lifestyle',\\n        'price'       => '24.99',\\n        'sale_price'  => '',\\n        'featured'    => false,\\n        'low_stock'   => false,\\n        'badge'       => 'New',\\n        'description' => 'A double-wall insulated stainless-steel bottle that keeps drinks cold for 24 hours or hot for 12. Leak-proof and BPA-free.',\\n        'short_description' => 'Double-wall insulated stainless-steel bottle.',\\n    ),\\n    array(\\n        'name'        => 'Mechanical Keyboard',\\n        'code'        => 'EST-KEY-008',\\n        'category'    => 'Electronics',\\n        'price'       => '99.99',\\n        'sale_price'  => '',\\n        'featured'    => false,\\n        'low_stock'   => false,\\n        'badge'       => 'Best Seller',\\n        'description' => 'A responsive mechanical keyboard with tactile switches and per-key backlighting, built for typing comfort and gaming performance.',\\n        'short_description' => 'Tactile mechanical keyboard with per-key backlighting.',\\n    ),\\n    array(\\n        'name'        => 'Everyday Canvas Tote Bag',\\n        'code'        => 'EST-TOT-009',\\n        'category'    => 'Bags & Accessories',\\n        'price'       => '34.99',\\n        'sale_price'  => '',\\n        'featured'    => false,\\n        'low_stock'   => false,\\n        'badge'       => 'Popular',\\n        'description' => 'A durable canvas tote bag with reinforced handles and a spacious interior, perfect for groceries, books, or everyday errands.',\\n        'short_description' => 'Durable canvas tote with reinforced handles.',\\n    ),\\n    array(\\n        'name'        => 'Smart Desk Lamp',\\n        'code'        => 'EST-LMP-010',\\n        'category'    => 'Home & Lifestyle',\\n        'price'       => '64.99',\\n        'sale_price'  => '54.99',\\n        'featured'    => false,\\n        'low_stock'   => false,\\n        'badge'       => 'Sale',\\n        'description' => 'A minimalist LED desk lamp with adjustable brightness and color temperature, plus a built-in USB charging port.',\\n        'short_description' => 'Adjustable LED desk lamp with a USB charging port.',\\n    ),\\n    array(\\n        'name'        => 'Premium Hardcover Notebook',\\n        'code'        => 'EST-NOT-011',\\n        'category'    => 'Stationery',\\n        'price'       => '16.99',\\n        'sale_price'  => '',\\n        'featured'    => false,\\n        'low_stock'   => false,\\n        'badge'       => 'New',\\n        'description' => 'A premium hardcover notebook with 192 pages of thick, smooth paper, an elastic closure band, and a ribbon bookmark.',\\n        'short_description' => 'Hardcover notebook, 192 pages, elastic closure.',\\n    ),\\n    array(\\n        'name'        => 'Compact Bluetooth Speaker',\\n        'code'        => 'EST-SPK-012',\\n        'category'    => 'Electronics',\\n        'price'       => '59.99',\\n        'sale_price'  => '',\\n        'featured'    => true,\\n        'low_stock'   => false,\\n        'badge'       => 'Featured',\\n        'description' => 'A compact Bluetooth speaker with rich, room-filling sound, 10-hour battery life, and a durable water-resistant shell.',\\n        'short_description' => 'Compact Bluetooth speaker, 10-hour battery life.',\\n    ),\\n);\\n\\n$product_ids = array();\\n\\nforeach ( $products as $item ) {\\n    $name     = $item['name'];\\n    $code     = $item['code'];\\n    $price    = $item['price'];\\n    $category = $item['category'];\\n    $badge    = $item['badge'];\\n\\n    $product_id = wc_get_product_id_by_sku( $code );\\n\\n    if ( ! $product_id ) {\\n        $product = new WC_Product_Simple();\\n    } else {\\n        $product = wc_get_product( $product_id );\\n    }\\n\\n    $product->set_name( $name );\\n    $product->set_status( 'publish' );\\n    $product->set_catalog_visibility( 'visible' );\\n    $product->set_sku( $code );\\n    $product->set_regular_price( $price );\\n\\n    if ( ! empty( $item['sale_price'] ) ) {\\n        $product->set_sale_price( $item['sale_price'] );\\n        $product->set_price( $item['sale_price'] );\\n    } else {\\n        $product->set_sale_price( '' );\\n        $product->set_price( $price );\\n    }\\n\\n    $product->set_featured( ! empty( $item['featured'] ) );\\n\\n    if ( ! empty( $item['low_stock'] ) ) {\\n        $product->set_manage_stock( true );\\n        $product->set_stock_quantity( 3 );\\n        $product->set_low_stock_amount( 5 );\\n        $product->set_stock_status( 'instock' );\\n    } else {\\n        $product->set_manage_stock( false );\\n        $product->set_stock_status( 'instock' );\\n    }\\n\\n    $product->set_description( $item['description'] );\\n    $product->set_short_description( $item['short_description'] );\\n\\n    $product_id = $product->save();\\n\\n    if ( ! $product_id ) {\\n        continue;\\n    }\\n\\n    $term = get_term_by( 'name', $category, 'product_cat' );\\n\\n    if ( $term && ! is_wp_error( $term ) ) {\\n        wp_set_object_terms(\\n            $product_id,\\n            array( (int) $term->term_id ),\\n            'product_cat'\\n        );\\n    }\\n\\n    if ( isset( $product_images[ $code ] ) ) {\\n        esfw_demo_import_product_image(\\n            $product_id,\\n            array(\\n                $product_images[ $code ]['primary'],\\n                $product_images[ $code ]['fallback'],\\n            ),\\n            $name\\n        );\\n    }\\n\\n    \\\/*\\n     * Metadata is useful for the demo setup and does not replace the\\n     * plugin's normal product-code\\\/badge functionality.\\n     *\\\/\\n    update_post_meta( $product_id, '_esfw_demo_badge', $badge );\\n    update_post_meta( $product_id, '_esfw_demo_barcode_type', 'code128' );\\n    update_post_meta( $product_id, '_esfw_demo_barcode_value', $code );\\n\\n    $product_ids[] = (int) $product_id;\\n}\\n\\n\\\/*\\n * Populate ElevateStore's existing Product Code table so the demo products\\n * have real Product Code records.\\n *\\\/\\n$code_table = $wpdb->prefix . 'esfw_product_codes';\\n\\nif ( $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $code_table ) ) === $code_table ) {\\n    foreach ( $products as $item ) {\\n        $name = $item['name'];\\n        $code = $item['code'];\\n        $product_id = wc_get_product_id_by_sku( $code );\\n\\n        if ( ! $product_id ) {\\n            continue;\\n        }\\n\\n        $exists = $wpdb->get_var(\\n            $wpdb->prepare(\\n                \\\"SELECT id FROM {$code_table} WHERE product_id = %d LIMIT 1\\\",\\n                $product_id\\n            )\\n        );\\n\\n        if ( ! $exists ) {\\n            $wpdb->insert(\\n                $code_table,\\n                array(\\n                    'product_id'    => $product_id,\\n                    'variation_id'  => null,\\n                    'product_code'  => $code,\\n                    'product_type'  => 'simple',\\n                    'sku'           => $code,\\n                    'status'        => 'active',\\n                    'source'        => 'manual',\\n                    'created_by'    => 1,\\n                    'created_at'    => current_time( 'mysql' ),\\n                    'updated_at'    => current_time( 'mysql' ),\\n                )\\n            );\\n        }\\n    }\\n}\\n\\n\\\/*\\n * Populate the existing Product Badge table with demo manual badges.\\n *\\\/\\n$badge_table = $wpdb->prefix . 'esfw_product_badges';\\n\\nif ( $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $badge_table ) ) === $badge_table ) {\\n    foreach ( $products as $item ) {\\n        $name  = $item['name'];\\n        $code  = $item['code'];\\n        $badge = $item['badge'];\\n        $product_id = wc_get_product_id_by_sku( $code );\\n\\n        if ( ! $product_id ) {\\n            continue;\\n        }\\n\\n        $exists = $wpdb->get_var(\\n            $wpdb->prepare(\\n                \\\"SELECT id FROM {$badge_table} WHERE product_id = %d LIMIT 1\\\",\\n                $product_id\\n            )\\n        );\\n\\n        if ( ! $exists ) {\\n            $wpdb->insert(\\n                $badge_table,\\n                array(\\n                    'product_id'    => $product_id,\\n                    'variation_id'  => null,\\n                    'badge_type'    => 'manual',\\n                    'custom_text'   => $badge,\\n                    'status'        => 'active',\\n                    'source'        => 'manual',\\n                    'created_by'    => 1,\\n                    'created_at'    => current_time( 'mysql' ),\\n                    'updated_at'    => current_time( 'mysql' ),\\n                )\\n            );\\n        }\\n    }\\n}\\n\\n\\\/*\\n * Create one real WooCommerce order so Order Duplicator can be tested.\\n *\\\/\\n$existing_orders = wc_get_orders(\\n    array(\\n        'limit'  => 1,\\n        'return' => 'ids',\\n    )\\n);\\n\\nif ( empty( $existing_orders ) && ! empty( $product_ids ) ) {\\n    $order = wc_create_order();\\n\\n    if ( $order && ! is_wp_error( $order ) ) {\\n        $first_product = wc_get_product( $product_ids[0] );\\n        $second_product = isset( $product_ids[1] )\\n            ? wc_get_product( $product_ids[1] )\\n            : false;\\n\\n        if ( $first_product ) {\\n            $order->add_product( $first_product, 1 );\\n        }\\n\\n        if ( $second_product ) {\\n            $order->add_product( $second_product, 1 );\\n        }\\n\\n        $address = array(\\n            'first_name' => 'Demo',\\n            'last_name'  => 'Customer',\\n            'address_1'  => '100 Commerce Avenue',\\n            'city'       => 'New York',\\n            'state'      => 'NY',\\n            'postcode'   => '10001',\\n            'country'    => 'US',\\n            'email'      => 'demo@elevatestore.test',\\n        );\\n\\n        $order->set_address( $address, 'billing' );\\n        $order->set_address( $address, 'shipping' );\\n        $order->calculate_totals();\\n        $order->set_status( 'processing' );\\n        $order->save();\\n    }\\n}\\n\\n\\\/*\\n * Make the setup idempotent.\\n *\\\/\\nupdate_option( 'esfw_playground_seeded', 'yes' );\\n\"}]}"}},"all_blocks":[],"tagged_versions":["1.0.3","1.0.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3660535,"resolution":"1","location":"assets","locale":"","width":1186,"height":701},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3660535,"resolution":"10","location":"assets","locale":"","width":1204,"height":1379},"screenshot-11.png":{"filename":"screenshot-11.png","revision":3660535,"resolution":"11","location":"assets","locale":"","width":1358,"height":943},"screenshot-12.png":{"filename":"screenshot-12.png","revision":3660535,"resolution":"12","location":"assets","locale":"","width":1204,"height":1356},"screenshot-13.png":{"filename":"screenshot-13.png","revision":3660535,"resolution":"13","location":"assets","locale":"","width":1193,"height":1387},"screenshot-14.png":{"filename":"screenshot-14.png","revision":3660535,"resolution":"14","location":"assets","locale":"","width":1201,"height":809},"screenshot-15.png":{"filename":"screenshot-15.png","revision":3660535,"resolution":"15","location":"assets","locale":"","width":1188,"height":869},"screenshot-16.png":{"filename":"screenshot-16.png","revision":3660535,"resolution":"16","location":"assets","locale":"","width":1194,"height":1574},"screenshot-17.png":{"filename":"screenshot-17.png","revision":3660535,"resolution":"17","location":"assets","locale":"","width":1327,"height":509},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3660535,"resolution":"2","location":"assets","locale":"","width":1204,"height":1164},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3660535,"resolution":"3","location":"assets","locale":"","width":1199,"height":1102},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3660535,"resolution":"4","location":"assets","locale":"","width":1203,"height":748},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3660535,"resolution":"5","location":"assets","locale":"","width":1200,"height":1151},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3660535,"resolution":"6","location":"assets","locale":"","width":1198,"height":799},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3660535,"resolution":"7","location":"assets","locale":"","width":1200,"height":649},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3660535,"resolution":"8","location":"assets","locale":"","width":1198,"height":1131},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3660535,"resolution":"9","location":"assets","locale":"","width":1197,"height":838}},"screenshots":{"1":"Plugin settings page","2":"Product code field in product editor","3":"Product code shown on frontend","4":"Bulk actions","5":"Product filters","6":"Order Duplicator settings and order actions","7":"Product Barcode preview and printable labels","8":"Product Badge settings"}},"plugin_section":[],"plugin_tags":[1292,249955,173988,167292,286],"plugin_category":[45],"plugin_contributors":[85967],"plugin_business_model":[],"class_list":["post-336624","plugin","type-plugin","status-publish","hentry","plugin_tags-barcode","plugin_tags-duplicate-orders","plugin_tags-product-badges","plugin_tags-product-code","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-westerndeal","plugin_committers-abdullah17","plugin_committers-westerndeal"],"banners":{"banner":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/banner-772x250.gif?rev=3631240","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/icon-128x128.png?rev=3631746","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/screenshot-1.png?rev=3660535","caption":"Plugin settings page"},{"src":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/screenshot-2.png?rev=3660535","caption":"Product code field in product editor"},{"src":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/screenshot-3.png?rev=3660535","caption":"Product code shown on frontend"},{"src":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/screenshot-4.png?rev=3660535","caption":"Bulk actions"},{"src":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/screenshot-5.png?rev=3660535","caption":"Product filters"},{"src":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/screenshot-6.png?rev=3660535","caption":"Order Duplicator settings and order actions"},{"src":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/screenshot-7.png?rev=3660535","caption":"Product Barcode preview and printable labels"},{"src":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/screenshot-8.png?rev=3660535","caption":"Product Badge settings"},{"src":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/screenshot-9.png?rev=3660535","caption":""},{"src":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/screenshot-10.png?rev=3660535","caption":""},{"src":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/screenshot-11.png?rev=3660535","caption":""},{"src":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/screenshot-12.png?rev=3660535","caption":""},{"src":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/screenshot-13.png?rev=3660535","caption":""},{"src":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/screenshot-14.png?rev=3660535","caption":""},{"src":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/screenshot-15.png?rev=3660535","caption":""},{"src":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/screenshot-16.png?rev=3660535","caption":""},{"src":"https:\/\/ps.w.org\/elevatestore-for-woocommerce\/assets\/screenshot-17.png?rev=3660535","caption":""}],"raw_content":"<!--section=description-->\n<p>ElevateStore for WooCommerce is a growing WooCommerce store management toolkit that adds product codes, barcode generation, product badges, order duplication, and other productivity features to your store.<\/p>\n\n<p>Manage custom product identifiers beyond the standard WooCommerce SKU, generate and print product barcodes, duplicate WooCommerce orders, and display customizable product badges \u2014 all from one plugin.<\/p>\n\n<p>ElevateStore is designed for WooCommerce store owners, administrators, warehouse teams, and developers who want practical tools to simplify everyday product and order management.<\/p>\n\n<h4>WooCommerce Product Codes<\/h4>\n\n<p>Need a custom product identifier in addition to the standard WooCommerce SKU?<\/p>\n\n<p>ElevateStore adds an independent Product Code system to WooCommerce. Create product codes manually or generate them automatically using configurable prefixes.<\/p>\n\n<p>Product codes can be used throughout your store, including product pages, cart, checkout, orders, emails, invoices, and the WooCommerce admin.<\/p>\n\n<p>Product Code Features<\/p>\n\n<p>\u2022 Add custom product codes to WooCommerce products.\n\u2022 Automatically generate product codes.\n\u2022 Automatically generate codes for product variations.\n\u2022 Configure product-type based prefixes.\n\u2022 Support for Simple products.\n\u2022 Support for Variable products.\n\u2022 Support for individual Variations.\n\u2022 Support for Grouped products.\n\u2022 Support for External\/Affiliate products.\n\u2022 Display product codes on product pages.\n\u2022 Display product codes in the cart.\n\u2022 Display product codes during checkout.\n\u2022 Display product codes in order details.\n\u2022 Display product codes in WooCommerce order emails.\n\u2022 Display product codes on invoices and packing slips.\n\u2022 Add a Product Code column to the WooCommerce Products admin screen.\n\u2022 Bulk generate product codes.\n\u2022 Bulk delete product codes.\n\u2022 Search WooCommerce products by product code.\n\u2022 Filter products with a Product Code.\n\u2022 Filter products without a Product Code.\n\u2022 Customize product code field labels.\n\u2022 Customize admin column labels.\n\u2022 Prevent duplicate product codes.\n\u2022 Validate product codes.<\/p>\n\n<p>Product Codes work independently from WooCommerce SKUs, allowing you to keep your existing SKU structure while maintaining another identifier for internal operations, suppliers, warehouses, catalogs, or customer communication.<\/p>\n\n<h4>WooCommerce Order Duplicator<\/h4>\n\n<p>Need to quickly copy or recreate an existing WooCommerce order?<\/p>\n\n<p>The Order Duplicator lets administrators duplicate WooCommerce orders without manually entering the same customer, product, shipping, fee, or coupon information again.<\/p>\n\n<p>Order Duplication Features<\/p>\n\n<p>\u2022 Duplicate an order from the Order Actions dropdown.\n\u2022 Duplicate an order directly from the WooCommerce orders list.\n\u2022 Bulk duplicate multiple WooCommerce orders.\n\u2022 Copy order items and order information.\n\u2022 Optionally duplicate order notes.\n\u2022 Optionally duplicate coupons.\n\u2022 Optionally duplicate fees.\n\u2022 Optionally duplicate shipping information.\n\u2022 Choose the status assigned to duplicated orders.\n\u2022 Supports Draft status.\n\u2022 Supports Pending payment status.\n\u2022 Supports Processing status.<\/p>\n\n<p>This can be useful when recreating customer orders, processing repeat orders, testing order workflows, or creating a new order based on an existing order.<\/p>\n\n<h4>WooCommerce Barcode Generator<\/h4>\n\n<p>Generate barcodes for WooCommerce products using your existing Product Codes.<\/p>\n\n<p>ElevateStore includes a Product Barcode Generator that can create product barcodes and QR codes, display them on supported WooCommerce locations, and generate printable barcode labels.<\/p>\n\n<p>Supported Barcode Types<\/p>\n\n<p>\u2022 Code 128.\n\u2022 Code 39.\n\u2022 EAN-13.\n\u2022 EAN-8.\n\u2022 UPC-A.\n\u2022 UPC-E.\n\u2022 QR Code.<\/p>\n\n<p>Barcode Features<\/p>\n\n<p>\u2022 Automatically generate barcodes from product codes.\n\u2022 Generate barcodes for WooCommerce products.\n\u2022 Generate barcodes for product variations.\n\u2022 Preview barcodes on product edit screens.\n\u2022 Preview barcodes on variation edit screens.\n\u2022 Display barcodes on WooCommerce product pages.\n\u2022 Display barcodes in WooCommerce admin orders.\n\u2022 Display barcodes on invoices and packing slips.\n\u2022 Bulk print barcode labels.\n\u2022 Printable barcode label page.<\/p>\n\n<p>Barcode Customization<\/p>\n\n<p>Control how your WooCommerce barcodes appear with options for:<\/p>\n\n<p>\u2022 Barcode label.\n\u2022 Barcode type.\n\u2022 Human-readable text.\n\u2022 Product name.\n\u2022 Barcode display locations.<\/p>\n\n<h4>WooCommerce Product Badges<\/h4>\n\n<p>Highlight important products with customizable WooCommerce Product Badges.<\/p>\n\n<p>ElevateStore lets you manually assign badges or automatically display badges based on product information, stock levels, sales activity, and other conditions.<\/p>\n\n<p>Manual Product Badges<\/p>\n\n<p>Add badges to supported WooCommerce products.<\/p>\n\n<p>Available badge options include:<\/p>\n\n<p>\u2022 Sale.\n\u2022 New.\n\u2022 Featured.\n\u2022 Bestseller.\n\u2022 Low Stock.\n\u2022 Out of Stock.\n\u2022 Trending.\n\u2022 Recently Added.\n\u2022 Custom text.<\/p>\n\n<p>Automatic Product Badges<\/p>\n\n<p>Automatically display badges such as:<\/p>\n\n<p>\u2022 Sale.\n\u2022 New Arrival.\n\u2022 Featured.\n\u2022 Best Seller.\n\u2022 Low Stock.\n\u2022 Out of Stock.\n\u2022 Limited Stock.\n\u2022 Trending.\n\u2022 Recently Added.\n\u2022 Popular.<\/p>\n\n<p>Manual, automatic, custom-text, and dynamic badge sources can be enabled or disabled independently.<\/p>\n\n<p>Product Badge Display Locations<\/p>\n\n<p>Choose where WooCommerce product badges appear:<\/p>\n\n<p>\u2022 Shop pages.\n\u2022 Product category pages.\n\u2022 Single product pages.\n\u2022 Related products.<\/p>\n\n<p>Badge Design &amp; Appearance<\/p>\n\n<p>Customize product badges with controls for:<\/p>\n\n<p>\u2022 Badge text.\n\u2022 Text color.\n\u2022 Background color.\n\u2022 Badge design.\n\u2022 Badge size.\n\u2022 Position.\n\u2022 Animation.\n\u2022 Shadow.<\/p>\n\n<p>Text Badges and Image Badges<\/p>\n\n<p>\u2022 Support text badges and image badges.\n\u2022 Use built-in badge images.\n\u2022 Upload custom badge images.\n\u2022 Replace or remove custom badge images.\n\u2022 Use automatic badge images for supported badge rules.<\/p>\n\n<p>Custom Badge Designs<\/p>\n\n<p>\u2022 Select custom badge designs directly from the Product and Variation editor.\n\u2022 Use the Badge Design grid to choose a design.\n\u2022 Save custom badge design selections for products and variations.\n\u2022 Render the selected design on the frontend.<\/p>\n\n<p>Badge Scheduling<\/p>\n\n<p>\u2022 Enable or disable badge scheduling.\n\u2022 Configure Start Date and Start Time.\n\u2022 Configure End Date and End Time.\n\u2022 Badge scheduling follows the WordPress site timezone.\n\u2022 View the configured timezone and current time.\n\u2022 Automatically activate and expire badges according to the configured schedule.<\/p>\n\n<h4>Plugin Settings<\/h4>\n\n<p>ElevateStore provides a central settings page for configuring its WooCommerce management modules.<\/p>\n\n<p>The plugin also provides a Settings link directly from the active plugin row on the WordPress Plugins page for quick access to the ElevateStore settings page.<\/p>\n\n<h4>Why ElevateStore for WooCommerce?<\/h4>\n\n<p>WooCommerce provides the essential features needed to run an online store, but many stores need additional tools for everyday product and order management.<\/p>\n\n<p>Installing a separate plugin for every small store-management task can add unnecessary complexity.<\/p>\n\n<p>ElevateStore brings multiple practical WooCommerce tools together in one plugin.<\/p>\n\n<p>Use ElevateStore to:<\/p>\n\n<p>\u2022 Create product identifiers separate from WooCommerce SKU.\n\u2022 Generate and manage product barcodes.\n\u2022 Print barcode labels.\n\u2022 Duplicate existing WooCommerce orders.\n\u2022 Highlight products with customizable badges.\n\u2022 Improve product and order management workflows.\n\u2022 Reduce repetitive WooCommerce administration tasks.<\/p>\n\n<p>ElevateStore is built as a growing WooCommerce toolkit, allowing additional store-management features to be added while keeping related functionality in one place.<\/p>\n\n<h4>Who Is ElevateStore For?<\/h4>\n\n<p>ElevateStore can be useful for:<\/p>\n\n<p>\u2022 WooCommerce store owners.\n\u2022 Store administrators.\n\u2022 eCommerce managers.\n\u2022 Warehouse teams.\n\u2022 Inventory managers.\n\u2022 Retail businesses.\n\u2022 Wholesale stores.\n\u2022 Stores managing large product catalogs.\n\u2022 Developers managing WooCommerce stores for clients.<\/p>\n\n<p>Whether you need custom product codes, printable barcodes, faster order duplication, or flexible product badges, ElevateStore provides these tools from one WooCommerce plugin.<\/p>\n\n<h4>Why use this plugin?<\/h4>\n\n<p>Running a WooCommerce store often requires multiple plugins for product identification, order management, barcode generation, and product promotions. Managing several plugins increases complexity, affects performance, and makes store administration more difficult.<\/p>\n\n<p>ElevateStore for WooCommerce brings these essential store management tools together in one lightweight WooCommerce plugin.<\/p>\n\n<p>Whether you need custom product codes for inventory, duplicate customer orders in a few clicks, generate printable product barcodes, or highlight products with attractive badges, ElevateStore helps streamline your daily WooCommerce workflow.<\/p>\n\n<h4>Benefits<\/h4>\n\n<ul>\n<li>Manage product codes independently from WooCommerce SKUs.<\/li>\n<li>Duplicate WooCommerce orders quickly without recreating them manually.<\/li>\n<li>Generate and print product barcodes for inventory and retail operations.<\/li>\n<li>Increase product visibility with customizable badges.<\/li>\n<li>Reduce repetitive admin tasks and improve productivity.<\/li>\n<li>Configure each feature independently from a single settings page.<\/li>\n<li>Designed to grow with new WooCommerce management tools in future releases.<\/li>\n<\/ul>\n\n<p>ElevateStore is built for WooCommerce store owners, warehouse teams, wholesalers, retailers, and developers who want practical tools to simplify product and order management while keeping their store organized and efficient.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/elevatestore-for-woocommerce\/<\/code> directory, or install through the WordPress plugin installer.<\/li>\n<li>Activate the plugin through the Plugins screen in WordPress.<\/li>\n<li>Go to WooCommerce &gt; ElevateStore.<\/li>\n<li>Enable the required ElevateStore modules.<\/li>\n<li>Configure your settings.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20replace%20woocommerce%20sku%3F\"><h3>Does this replace WooCommerce SKU?<\/h3><\/dt>\n<dd><p>No. Product Code works separately from SKU.<\/p><\/dd>\n<dt id=\"does%20it%20support%20variable%20products%3F\"><h3>Does it support variable products?<\/h3><\/dt>\n<dd><p>Yes. It supports variable products and variation-level product codes.<\/p><\/dd>\n<dt id=\"can%20i%20auto-generate%20product%20codes%3F\"><h3>Can I auto-generate product codes?<\/h3><\/dt>\n<dd><p>Yes. Auto-generation can be enabled from plugin settings.<\/p><\/dd>\n<dt id=\"can%20i%20bulk%20generate%20product%20codes%3F\"><h3>Can I bulk generate product codes?<\/h3><\/dt>\n<dd><p>Yes. Bulk actions are available in the WooCommerce products list.<\/p><\/dd>\n<dt id=\"can%20i%20search%20products%20by%20product%20code%3F\"><h3>Can I search products by product code?<\/h3><\/dt>\n<dd><p>Yes. Product code search is supported in the admin products screen.<\/p><\/dd>\n<dt id=\"can%20i%20duplicate%20an%20order%3F\"><h3>Can I duplicate an order?<\/h3><\/dt>\n<dd><p>Yes. Enable Order Duplicator in settings, then duplicate an order from the Order Actions dropdown, the orders list row action, or the bulk actions menu.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20generate%20barcodes%3F\"><h3>Does the plugin generate barcodes?<\/h3><\/dt>\n<dd><p>Yes. Enable Product Barcode in settings to generate barcodes from Product Codes. The plugin supports Code 128, Code 39, EAN-13, EAN-8, UPC-A, UPC-E, and QR Code. Barcodes can be displayed on supported product and admin locations and printed using the barcode label functionality.<\/p><\/dd>\n<dt id=\"is%20product%20badge%20available%3F\"><h3>Is Product Badge available?<\/h3><\/dt>\n<dd><p>Yes. Enable Product Badge in settings to add manual or automatic badges to products, choose supported display locations, customize badge text, designs, sizes, positions, animations, and shadows, use text or image badges, select custom badge designs, and schedule badge visibility.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.4<\/h4>\n\n<p>22 August 2026<\/p>\n\n<ul>\n<li>Added: Custom Badge Design selection to the Product and Variation edit screens.<\/li>\n<li>Added: Badge Design grid for selecting and configuring custom badge designs directly from the product editor.<\/li>\n<li>Added: Saved custom badge design selections for products and variations.<\/li>\n<li>Added: Settings link to the active plugin row on the WordPress Plugins page, allowing quick access to the ElevateStore settings page.<\/li>\n<li>Improved: Frontend badges now use the selected custom badge design correctly.<\/li>\n<li>Improved: Custom badge text, badge size, appearance, and selected design work together correctly.<\/li>\n<li>Improved: Badge Design settings and frontend rendering for consistent badge appearance.<\/li>\n<li>Improved: Barcode generation, preview, and document display reliability.<\/li>\n<li>Added: Additional Product Code management controls for efficient bulk administration.<\/li>\n<li>Fixed: Badge Scheduling now evaluates the complete Start Date + Start Time and End Date + End Time for precise badge activation and expiration.<\/li>\n<li>Fixed: Badge Scheduling now follows the WordPress site timezone configured under Settings &gt; General &gt; Timezone.<\/li>\n<li>Changed: Badge Scheduling status now uses Enable and Disable options.<\/li>\n<li>Added: A timezone notice showing the configured WordPress timezone and current time.<\/li>\n<li>Removed: Search Results, Upsells, and Cross-sells from the supported Product Badge display locations.<\/li>\n<li>Changed: Badge preview images are no longer displayed on Product or Variation edit screens; badges are rendered on the frontend.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<p>1 August 2026<\/p>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Added Advanced Product Code functionality with bulk generation, deletion, filtering, search, and variation support.<\/li>\n<li>Added Order Duplicator with individual and bulk order duplication and configurable duplication options.<\/li>\n<li>Added Product Barcode Generator with multiple barcode formats, product and variation previews, frontend display, and printable barcode labels.<\/li>\n<li>Added Product Badge functionality with text badges, image badges, built-in badge designs, custom badge images, and live customization options.<\/li>\n<li>Improved module settings and overall plugin usability.<\/li>\n<li>Updated plugin branding and metadata.<\/li>\n<li>Fixed various initial bugs and compatibility issues.<\/li>\n<\/ul>","raw_excerpt":"WooCommerce toolkit for product codes, barcode generation, product badges, duplicate orders, and essential store management tools.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/336624","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=336624"}],"author":[{"embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/westerndeal"}],"wp:attachment":[{"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=336624"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=336624"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=336624"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=336624"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=336624"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=336624"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}