Plugin Directory

Changeset 3415156


Ignore:
Timestamp:
12/09/2025 10:02:08 AM (4 months ago)
Author:
refatbd
Message:

New Update

Location:
refatbd-notifications-with-telegram-for-woocommerce
Files:
48 added
4 edited

Legend:

Unmodified
Added
Removed
  • refatbd-notifications-with-telegram-for-woocommerce/trunk/includes/class-rntfw-condition-evaluator.php

    r3390586 r3415156  
    564564        $type = $conditions['type'] ?? 'any_coupon_status';
    565565        $target_coupon_codes = array_map( 'wc_format_coupon_code', $conditions['coupon_codes'] ?? [] );
    566         $used_coupons = $order_obj->get_used_coupons(); // Returns an array of coupon codes
     566        $used_coupons = $order_obj->get_coupon_codes(); // Returns an array of coupon codes
    567567
    568568        $has_used_any_coupon = ! empty( $used_coupons );
  • refatbd-notifications-with-telegram-for-woocommerce/trunk/includes/class-rntfw-core.php

    r3390586 r3415156  
    4545    }
    4646
     47    /**
     48     * Default Templates Method
     49     * Moved from Admin class to Core to ensure availability on frontend/REST requests.
     50     */
     51    public static function get_default_status_templates() {
     52         return [
     53            'pending'                   => "🕒 Order Pending Payment Notification 🔴\n\nHello Admin,\n\nAn order has been received but the payment is still pending. 🛑\n\n📦 Order Details:\n\nOrder ID: {order_id} 🆔\nCustomer Name: {customer_name} 👤\nTotal Due: {total_price_formatted} 💰\nPayment Method: {payment_method} 💳\nBilling Address: {billing_address} 🏠\nEmail: {billing_email} 📧\nPhone: {billing_phone} 📱\n\n📅 Order Timeline:\n\nOrder Placed: {date_created} ⏳\n\n📝 Notes from Customer: {customer_note} ✏️\n\nAction: Please follow up with the customer to complete the payment or address any issues. 🚨\n\n— {site_title} Team 🤝",
     54            'processing'                => "🎉 Order Processing Update 🔵\n\nHello Admin,\n\nA new order is now being processed! 🚀\n\n📦 Order Details:\n\nOrder ID: {order_id} 🆔\nCustomer Name: {customer_name} 👤\nTotal Paid: {total_price_formatted} 💰\nPayment Method: {payment_method} 💳\nBilling Address: {billing_address} 🏠\nEmail: {billing_email} 📧\nPhone: {billing_phone} 📱\n\n📅 Order Timeline:\n\nOrder Placed: {date_created} ⏳\nPayment Received: {date_paid} ✅\n\n📝 Customer Notes: {customer_note} ✏️\n\nAction: Order is now in processing. Ensure timely shipping and handling. 🚚\n\n— {site_title} Team 🤝",
     55            'on-hold'                   => "⏸️ Order On Hold Alert 🟡\n\nHello Admin,\n\nThe following order is currently on hold. 🛑\n\n📦 Order Details:\n\nOrder ID: {order_id} 🆔\nCustomer Name: {customer_name} 👤\nTotal Paid: {total_price_formatted} 💰\nPayment Method: {payment_method} 💳\nBilling Address: {billing_address} 🏠\nEmail: {billing_email} 📧\nPhone: {billing_phone} 📱\n\n📅 Order Timeline:\n\nOrder Placed: {date_created} ⏳\n\n📝 Customer Notes: {customer_note} ✏️\n\nAction: Investigate the reason for the hold and update the customer accordingly. 🔍\n\n— {site_title} Team 🤝",
     56            'completed'                 => "🎉 Order Completion Notice ✅\n\nHello Admin,\n\nAn order has been successfully completed! 🏅\n\n📦 Order Details:\n\nOrder ID: {order_id} 🆔\nCustomer Name: {customer_name} 👤\nTotal Paid: {total_price_formatted} 💰\nPayment Method: {payment_method} 💳\nBilling Address: {billing_address} 🏠\nEmail: {billing_email} 📧\nPhone: {billing_phone} 📱\n\n📅 Order Timeline:\n\nOrder Placed: {date_created} ⏳\nPayment Received: {date_paid} ✅\nOrder Completed: {date_completed} 🎯\n\n📝 Customer Notes: {customer_note} ✏️\n\nAction: Ensure that the order is dispatched promptly. 🚚\n\n— {site_title} Team 🤝",
     57            'cancelled'                 => "❌ Order Cancelled Notification ❌\n\nHello Admin,\n\nThe following order has been cancelled. 🚫\n\n📦 Order Details:\n\nOrder ID: {order_id} 🆔\nCustomer Name: {customer_name} 👤\nTotal Paid: {total_price_formatted} 💰\nBilling Address: {billing_address} 🏠\nEmail: {billing_email} 📧\nPhone: {billing_phone} 📱\n\n📅 Order Placed: {date_created} ⏳\n\n📝 Customer Notes: {customer_note} ✏️\n\nAction: Follow up with the customer for any further questions or support. 🔄\n\n— {site_title} Team 🤝",
     58            'refunded'                  => "💸 Order Refunded Notification 💸\n\nHello Admin,\n\nThe following order has been refunded. 💵\n\n📦 Order Details:\n\nOrder ID: {order_id} 🆔\nCustomer Name: {customer_name} 👤\nTotal Refunded: {total_price_formatted} 💰\nPayment Method: {payment_method} 💳\nBilling Address: {billing_address} 🏠\nEmail: {billing_email} 📧\nPhone: {billing_phone} 📱\n\n📅 Order Timeline:\n\nOrder Placed: {date_created} ⏳\nPayment Received: {date_paid} ✅\nRefunded: {date_completed} 🔄\n\n📝 Customer Notes: {customer_note} ✏️\n\nAction: Investigate the reason for the refund and ensure proper follow-up. 🔍\n\n— {site_title} Team 🤝",
     59            'failed'                    => "🔥 Order Failed Notification ❌\n\nHello Admin,\n\nThe payment for the following order has failed. 🚨\n\n📦 Order Details:\n\nOrder ID: {order_id} 🆔\nCustomer Name: {customer_name} 👤\nOrder Total: {total_price_formatted} 💰\nPayment Method: {payment_method} 💳\nBilling Address: {billing_address} 🏠\nEmail: {billing_email} 📧\nPhone: {billing_phone} 📱\n\n📅 Order Placed: {date_created} ⏳\n\n📝 Customer Notes: {customer_note} ✏️\n\nAction: Contact the customer to assist with payment issues. 🔄\n\n— {site_title} Team 🤝",
     60            'checkout-draft'            => "📝 Order Draft Notification 🟡\n\nHello Admin,\n\nAn order draft has been created but hasn’t been finalized or paid yet. 📝\n\n📦 Order Details:\n\nOrder ID: {order_id} 🆔\nCustomer Name: {customer_name} 👤\nTotal (Unpaid): {total_price_formatted} 💰\nBilling Address: {billing_address} 🏠\nEmail: {billing_email} 📧\nPhone: {billing_phone} 📱\n\n📅 Order Created: {date_created} ⏳\n\n📝 Customer Notes: {customer_note} ✏️\n\nAction: Follow up with the customer to encourage completing the order. 🛒\n\n— {site_title} Team 🤝",
     61            'new_user'                  => "🎉 New User Registration 👤\n\nHello Admin,\n\nA new user has registered on {site_title}. 🎉\n\n📧 User Details:\n\nUsername: {user_login} 🆔\nEmail: {user_email} 📧\n\nAction: Welcome the new user and ensure their account is set up properly. ✅\n\n— {site_title} Team 🤝",
     62            'stock'                     => "🔔 Product Stock Update 📦\n\nHello Admin,\n\nThe following product has been updated in stock. 📊\n\n📦 Product Details:\n\nProduct Name: {product_name} 🏷️\nSKU: {product_sku} 🆔\nStock Status: {stock_status} 🏬\n\nAction: Update product listings accordingly and ensure inventory levels are accurate. ✅\n\n— {site_title} Team 🤝",
     63            'abandoned_cart'            => "⚠️ Abandoned Checkout Alert 🛑\n\nHello Admin,\n\nA potential customer has started checkout but left without completing it. 🚨\n\n📧 Customer Details:\n\nName: {customer_name} 👤\nEmail: {customer_email} 📧\nPhone: {customer_phone} 📱\n\n📅 Date Created: {date_created} ⏳\n\n📦 Cart Items:\n{product_list} 🛒\n{variation_data} 🔄\n\nAction: Consider reaching out to the customer to offer assistance or a discount to complete the purchase. 🎁\n\n— {site_title} Team 🤝",
     64            'product_low_out_stock'     => "📉 Product Stock Alert for {site_title} 🚨\n\nHello Admin,\n\nThe product '{product_name}' (SKU: {product_sku}) is now {alert_type}!\n\n📦 Current Stock: {stock_quantity}\n\nAction: Please restock or update inventory as soon as possible. urgent",
     65            'new_review'                => "⭐ New Product Review on {site_title}! 🎉\n\nHello Admin,\n\nA new review has been submitted for '{product_name}'.\n\n👤 Reviewer: {reviewer_name} ({reviewer_email})\n⭐ Rating: {review_rating}\n\n📝 Review Content:\n{review_content}\n\n🔗 View Product: {product_link}\n🔗 View Review: {review_link}\n\nAction: Moderate the review and engage with customer feedback. 💬",
     66            'coupon_usage'              => "🏷️ Coupon Usage Alert on {site_title}!💰\n\nHello Admin,\n\nA coupon has been used in a new order.\n\n🛒 Order ID: {order_id}\n👤 Customer: {customer_name}\n💲 Total: {total_price_formatted}\n🎟️ Coupon(s) Used ({coupon_count}): {coupon_codes}\n\nAction: Review promotional effectiveness and customer segments. 📈",
     67            'admin_user_registration'   => "🔒 New Admin User Registered on {site_title}! 🚨\n\nHello Admin,\n\nA new user with administrative privileges has registered or been created.\n\n👤 Username: {user_login}\n📧 Email: {user_email}\n🔑 Roles: {user_roles}\n\nAction: Verify this new user. If unauthorized, take immediate action to secure your site! 🛑",
     68            'failed_login_attempts'     => "🚫 Multiple Failed Login Attempts on {site_title}! 🛑\n\nHello Admin,\n\nThere have been {failed_attempts} failed login attempts for user '{username}' from IP address '{ip_address}'.\n\nThis exceeds your configured threshold of {threshold} attempts.\n\nAction: Investigate immediately for potential brute-force attacks! Consider blocking the IP. 🛡️",
     69            'product_price_change'      => "💲 Product Price Change Alert on {site_title}! 📊\n\nHello Admin,\n\nThe price for '{product_name}' (SKU: {product_sku}) has {price_change_text}.\n\nOriginal Price: {old_price}\nNew Price: {new_price}\nPercentage Change: {percentage_change}\n\n🔗 View Product: {product_link}\n\nAction: Verify the price change and update any marketing materials if necessary. ✅",
     70        ];
     71    }
    4772
    4873    /**
     
    206231        // Pass user_info object to check function
    207232        if ( $this->_should_send_notification( 'new_user', null, $user_info ) ) {
    208             $template = $notification_settings_user['template'] ?? RNTFW_Admin::get_default_status_templates()['new_user'] ?? ''; // Add fallback default
     233            $template = $notification_settings_user['template'] ?? self::get_default_status_templates()['new_user'] ?? ''; // Fixed call
    209234            $is_pro_active = class_exists('RNTFW_Pro_Init'); // Check if Pro is active
    210235
     
    247272            // Pass user_info object to check function
    248273            if ( $this->_should_send_notification( 'admin_user_registration', null, $user_info ) ) {
    249                 $template = $notification_settings_admin_user['template'] ?? RNTFW_Admin::get_default_status_templates()['admin_user_registration'] ?? ''; // Add fallback default
     274                $template = $notification_settings_admin_user['template'] ?? self::get_default_status_templates()['admin_user_registration'] ?? ''; // Fixed call
    250275                $is_pro_active = class_exists('RNTFW_Pro_Init'); // Check if Pro is active
    251276
     
    296321        // Pass product object to check function
    297322        if ( $this->_should_send_notification( 'stock', null, null, $product ) ) {
    298             $template = $notification_settings_stock['template'] ?? RNTFW_Admin::get_default_status_templates()['stock'] ?? ''; // Add fallback default
     323            $template = $notification_settings_stock['template'] ?? self::get_default_status_templates()['stock'] ?? ''; // Fixed call
    299324            $is_pro_active = class_exists('RNTFW_Pro_Init'); // Check if Pro is active
    300325
     
    335360             // Pass product object to check function
    336361            if ( $this->_should_send_notification( 'product_low_out_stock', null, null, $product ) ) {
    337                 $template = $notification_settings_low_stock['template'] ?? RNTFW_Admin::get_default_status_templates()['product_low_out_stock'] ?? ''; // Add fallback default
     362                $template = $notification_settings_low_stock['template'] ?? self::get_default_status_templates()['product_low_out_stock'] ?? ''; // Fixed call
    338363                $is_pro_active = class_exists('RNTFW_Pro_Init'); // Check if Pro is active
    339364
     
    422447        }
    423448
    424         $template = $ac_settings['template'] ?? RNTFW_Admin::get_default_status_templates()['abandoned_cart'] ?? ''; // Add fallback default
     449        $template = $ac_settings['template'] ?? self::get_default_status_templates()['abandoned_cart'] ?? ''; // Fixed call
    425450
    426451        // *** MODIFIED CHECK *** (Removed chat_id check here, handled above)
     
    543568        if ( ! $this->_should_send_notification( 'new_review', null, null, $product, [ 'comment_ID' => $comment_ID ] ) ) return;
    544569
    545         $template = $notification_settings['template'] ?? RNTFW_Admin::get_default_status_templates()['new_review'] ?? ''; // Add fallback default
     570        $template = $notification_settings['template'] ?? self::get_default_status_templates()['new_review'] ?? ''; // Fixed call
    546571        $is_pro_active = class_exists('RNTFW_Pro_Init'); // Check if Pro is active
    547572
     
    595620        }
    596621
    597         $used_coupons = $order->get_used_coupons();
     622        // FIX: Replace deprecated get_used_coupons() with get_coupon_codes()
     623        $used_coupons = $order->get_coupon_codes();
    598624        if ( empty( $used_coupons ) ) {
    599625            return; // No coupons used
     
    607633        if ( ! $this->_should_send_notification( 'coupon_usage', $order ) ) return; // Pass order object
    608634
    609         $template = $notification_settings['template'] ?? RNTFW_Admin::get_default_status_templates()['coupon_usage'] ?? ''; // Add fallback default
     635        $template = $notification_settings['template'] ?? self::get_default_status_templates()['coupon_usage'] ?? ''; // Fixed call
    610636        $is_pro_active = class_exists('RNTFW_Pro_Init'); // Check if Pro is active
    611637
     
    685711        }
    686712
    687         $template = $notification_settings['template'] ?? RNTFW_Admin::get_default_status_templates()['failed_login_attempts'] ?? ''; // Add fallback default
     713        $template = $notification_settings['template'] ?? self::get_default_status_templates()['failed_login_attempts'] ?? ''; // Fixed call
    688714        $is_pro_active = class_exists('RNTFW_Pro_Init'); // Check if Pro is active
    689715
     
    796822        delete_transient( 'rntfw_old_product_price_' . $product_id );
    797823
    798         $template = $notification_settings['template'] ?? RNTFW_Admin::get_default_status_templates()['product_price_change'] ?? ''; // Add fallback default
     824        $template = $notification_settings['template'] ?? self::get_default_status_templates()['product_price_change'] ?? ''; // Fixed call
    799825        $is_pro_active = class_exists('RNTFW_Pro_Init'); // Check if Pro is active
    800826
     
    910936        }
    911937
    912         $notification_data  = $status_notifications[ $status_key ];
    913         $template           = $notification_data['template'] ?? RNTFW_Admin::get_default_status_templates()[$status_key] ?? ''; // Add fallback default
     938        $notification_data  = $status_notifications[ $status_key ] ?? [];
     939        $template           = $notification_data['template'] ?? self::get_default_status_templates()[$status_key] ?? ''; // Fixed call
    914940        $is_pro_active = class_exists('RNTFW_Pro_Init'); // Check if Pro is active
    915941
  • refatbd-notifications-with-telegram-for-woocommerce/trunk/readme.txt

    r3390586 r3415156  
    44Tags: woocommerce, telegram, notifications, abandoned cart, conditional logic
    55Requires at least: 5.0
    6 Tested up to: 6.8
    7 Stable tag: 2.0.0
     6Tested up to: 6.9
     7Stable tag: 2.0.1
    88Requires PHP: 7.4
    99License: GPL v2 or later
     
    2626
    2727* **WooCommerce HPOS Compatible:** Fully supports WooCommerce High-Performance Order Storage (HPOS).
    28 * **Secure API Integration:** Connects to a private Telegram API Backend (`https://tgapi.refat.ovh/api.php`), keeping your sensitive Bot Token secure and off your server. See "External Services" section below for details.
     28* **Secure API Integration:** Connects to a private Telegram API Backend (`https://tgapi.refat.ovh/api.php`), keeping your sensitive Bot Token secure and off your server.
     29See "External Services" section below for details.
    2930* **Comprehensive Notifications:** Get alerts for order status changes, new user registrations (including admins), stock changes, low/out of stock alerts, abandoned checkouts, new product reviews, coupon usage, failed login attempts, and product price changes.
    3031* **Advanced Conditional Logic:** Create rules based on product IDs, categories, tags, order total, quantity, customer details (ID, role, guest status), payment methods, shipping zones, coupon codes, custom fields, time of day, and stock levels.
     
    47481.  **Connect Your Website:**
    4849    * In your WordPress admin, go to **Telegram Sync -> API Connection**.
    49     * The default API URL (`https://tgapi.refat.ovh/api.php`) is provided. Ensure this is correct. If you self-host the backend, enter your URL and click "Save API URL".
    50     * Click the **"Fetch API Key"** button. This securely connects your site to the backend and saves your API key automatically.
     50    * The default API URL (`https://tgapi.refat.ovh/api.php`) is provided. Ensure this is correct.
     51    If you self-host the backend, enter your URL and click "Save API URL".
     52    * Click the **"Fetch API Key"** button.
     53    This securely connects your site to the backend and saves your API key automatically.
    5154    * Verify that the API Status and Site Connection show as "Connected". Click "Refresh" if needed.
     55
    52562.  **Configure Chat ID:**
    5357    * Go to **Telegram Sync -> Settings -> Chat Management**.
    54     * Find the active bot's username on the **API Connection** page. Send the command `/myid` to that bot in Telegram. It will reply with your unique Chat ID (a number, possibly starting with a hyphen for groups).
     58    * Find the active bot's username on the **API Connection** page. Send the command `/myid` to that bot in Telegram.
     59    It will reply with your unique Chat ID (a number, possibly starting with a hyphen for groups).
    5560    * Enter a name for your reference (e.g., "Admin Chat") and the Chat ID you received into the fields on the Chat Management tab.
    5661    * Click "Save Changes".
    5762    * You can use the "Test" button to verify the Chat ID is correct.
     63
    58643.  **Configure Notifications:**
    5965    * Go through the tabs under **Telegram Sync -> Settings** (General, Order Status, User & Stock, etc.).
    6066    * Use the toggle switches to enable the notifications you want to receive.
    6167    * Customize the message templates using the available placeholders listed below each template field.
     68
    62694.  **Set Up Notification Rules (Optional):**
    6370    * Navigate to the **Notification Rules** tab to create advanced conditions for any enabled notification event, giving you precise control over when alerts are sent.
     71
    64725.  **Enable the Plugin:**
    6573    * Ensure the "Enable Plugin" toggle is switched on in the **General** tab.
     
    8290
    8391This plugin relies on a mandatory third-party API service hosted at `https://tgapi.refat.ovh/api.php` to function.
    84 
    85 * **What the service is and what it is used for:** The service acts as a secure intermediary between your WooCommerce store and the Telegram messaging service. It receives notification requests (containing message content and recipient ID) from your website via a secure API key, processes them, and delivers them to the specified Telegram chat using a bot managed by the service provider. This is necessary to avoid exposing your sensitive Telegram Bot Token directly on your website and allows the service to manage bot operations and message delivery. The service also enforces message usage limits for users of this free plugin.
     92* **What the service is and what it is used for:** The service acts as a secure intermediary between your WooCommerce store and the Telegram messaging service.
     93It receives notification requests (containing message content and recipient ID) from your website via a secure API key, processes them, and delivers them to the specified Telegram chat using a bot managed by the service provider.
     94This is necessary to avoid exposing your sensitive Telegram Bot Token directly on your website and allows the service to manage bot operations and message delivery.
     95The service also enforces message usage limits for users of this free plugin.
    8696* **What data is sent and when:**
    8797    * **Connection:** When you click "Fetch API Key" on the API Connection page, your website's domain (e.g., `yourstore.com`) and a unique, auto-generated secret key are sent to the service to register your site and issue your API Key.
    88     * **Notifications:** Whenever a configured WooCommerce event occurs (e.g., new order, stock change), the plugin constructs a message based on your template and sends the final message content along with your configured Telegram Chat ID and your API Key to the service. The message content may include order details, product names, customer information (name, email, phone - depending on your template configuration), etc., as needed to fulfill the notification's purpose.
    89     * **Chat Commands:** When you send a command (like `/sales`) from Telegram to the service's bot, the service sends the command details (command name, arguments, your chat ID) along with your API Key to your website's REST API endpoint (`/wp-json/rntfw/v1/command`). Your website processes the command and sends the result back to the service, which then relays it to you in Telegram.
     98    * **Notifications:** Whenever a configured WooCommerce event occurs (e.g., new order, stock change), the plugin constructs a message based on your template and sends the final message content along with your configured Telegram Chat ID and your API Key to the service.
     99    The message content may include order details, product names, customer information (name, email, phone - depending on your template configuration), etc., as needed to fulfill the notification's purpose.
     100    * **Chat Commands:** When you send a command (like `/sales`) from Telegram to the service's bot, the service sends the command details (command name, arguments, your chat ID) along with your API Key to your website's REST API endpoint (`/wp-json/rntfw/v1/command`).
     101    Your website processes the command and sends the result back to the service, which then relays it to you in Telegram.
    90102    * **Status Checks:** Periodically, and when you click "Refresh" or "Test Connection", the plugin sends your domain, secret key, and API key to the service to verify the connection status and retrieve the current bot username.
    91 * **Service's Terms of Use and Privacy Policy:** Connection to and use of this external service are subject to its terms and policies. Please review them carefully:
     103* **Service's Terms of Use and Privacy Policy:** Connection to and use of this external service are subject to its terms and policies.
     104Please review them carefully:
    92105    * [Terms of Use](https://refat.ovh/tgapi-terms-of-service)
    93106    * [Privacy Policy](https://refat.ovh/tgapi-privacy-policy)
     
    102115
    103116= How do I get my Telegram Chat ID? =
    104 First, connect your site on the **Telegram Sync -> API Connection** page to get the current bot username. Then, send the command `/myid` to that bot username in your Telegram app. The bot will reply with your unique Chat ID. Enter this ID in **Telegram Sync -> Settings -> Chat Management**.
     117First, connect your site on the **Telegram Sync -> API Connection** page to get the current bot username.
     118Then, send the command `/myid` to that bot username in your Telegram app.
     119The bot will reply with your unique Chat ID. Enter this ID in **Telegram Sync -> Settings -> Chat Management**.
    105120
    106121= Why am I not receiving notifications? =
    107122Please check the following:
    108 1.  **API Connection:** Go to **Telegram Sync -> API Connection**. Are the API Status and Site Connection both showing as "Connected"? If not, save the API URL and click "Fetch API Key".
    109 2.  **Bot Started:** Have you sent the `/start` command to the bot username shown on the API Connection page in Telegram? If the bot seems unresponsive, click "Refresh" on the API Connection page to get the latest username.
    110 3.  **Chat ID Correct:** Is the Chat ID entered in **Settings -> Chat Management** correct? Use the "Test" button there to verify.
    111 4.  **Notifications Enabled:** In **Settings -> General**, is the main "Enable Plugin" switch turned on? Also, in the specific notification tabs (e.g., Order Status, User & Stock), is the switch for the notification type you expect turned on?
     1231.  **API Connection:** Go to **Telegram Sync -> API Connection**.
     124Are the API Status and Site Connection both showing as "Connected"?
     125If not, save the API URL and click "Fetch API Key".
     1262.  **Bot Started:** Have you sent the `/start` command to the bot username shown on the API Connection page in Telegram?
     127If the bot seems unresponsive, click "Refresh" on the API Connection page to get the latest username.
     1283.  **Chat ID Correct:** Is the Chat ID entered in **Settings -> Chat Management** correct?
     129Use the "Test" button there to verify.
     1304.  **Notifications Enabled:** In **Settings -> General**, is the main "Enable Plugin" switch turned on?
     131Also, in the specific notification tabs (e.g., Order Status, User & Stock), is the switch for the notification type you expect turned on?
    1121325.  **Conditions Met:** If you configured rules under the **Notification Rules** tab, ensure all conditions for the specific event are being met for the notification to be sent.
    113 6.  **Message Limits:** This free version has message limits enforced by the API service. If you exceed the daily or monthly limit, notifications will stop until the limit resets. Check the **Logs** tab for any "Limit Reached" errors. Consider upgrading to Pro for unlimited messages.
     1336.  **Message Limits:** This free version has message limits enforced by the API service.
     134If you exceed the daily or monthly limit, notifications will stop until the limit resets.
     135Check the **Logs** tab for any "Limit Reached" errors. Consider upgrading to Pro for unlimited messages.
    1141367.  **Plugin Logs:** Check the **Telegram Sync -> Logs** tab for any specific error messages related to sending the notification.
    115137
     
    118140
    119141== Changelog ==
     142
     143
     144= 2.0.1 =
     145* COMPATIBILITY: Tested up to WordPress 6.9.
     146* FIX: Resolved fatal error "Class RNTFW_Admin not found" occurring during frontend checkout events.
     147* FIX: Fixed PHP warning for undefined "processing" array key in order status notifications.
    120148
    121149= 2.0.0 =
  • refatbd-notifications-with-telegram-for-woocommerce/trunk/refatbd-notifications-with-telegram-for-woocommerce.php

    r3390586 r3415156  
    44 * Plugin URI:    https://refat.ovh/refatbd-notifications-with-telegram-for-woocommerce
    55 * Description:   Sends instant, secure, and custom-templated notifications to Telegram for WooCommerce events with advanced conditional logic to a single chat ID.
    6  * Version:       2.0.0
     6 * Version:       2.0.1
    77 * Author:        Refat
    88 * Author URI:    https://refat.ovh
     
    2929
    3030// --- Constants ---
    31 define( 'RNTFW_VERSION', '2.0.0' ); // Updated version
     31define( 'RNTFW_VERSION', '2.0.1' ); // Updated version
    3232define( 'RNTFW_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
    3333define( 'RNTFW_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
Note: See TracChangeset for help on using the changeset viewer.