<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Phil</title>
    <description>The latest articles on DEV Community by Phil (@iphil).</description>
    <link>https://dev.to/iphil</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3267015%2F69eee80a-db0b-48c8-8bf0-dfc6cddb42c8.png</url>
      <title>DEV Community: Phil</title>
      <link>https://dev.to/iphil</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/iphil"/>
    <language>en</language>
    <item>
      <title>Why PHP Arrays Use More Memory Than You Think (and What To Do About It)</title>
      <dc:creator>Phil</dc:creator>
      <pubDate>Wed, 18 Jun 2025 08:11:01 +0000</pubDate>
      <link>https://dev.to/iphil/why-php-arrays-use-more-memory-than-you-think-and-what-to-do-about-it-760</link>
      <guid>https://dev.to/iphil/why-php-arrays-use-more-memory-than-you-think-and-what-to-do-about-it-760</guid>
      <description>&lt;p&gt;Working with PHP arrays? You might be surprised how easily memory usage can skyrocket — even if you’re doing everything “right”. Here’s a breakdown of real-world pitfalls, internal mechanics, and concrete optimization tips, all tested on modern PHP.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Copy-on-Write: When “Nothing” Actually Consumes Memory
&lt;/h2&gt;

&lt;p&gt;PHP’s copy-on-write strategy means no memory is wasted… until you modify an array.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$arr1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$arr2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$arr1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// No extra memory yet!&lt;/span&gt;
&lt;span class="nv"&gt;$arr2&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;// NOW a full copy is made.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Takeaway:&lt;br&gt;
Changing an array in a function, a loop, or even after assignment always risks triggering a full copy.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Hidden Cost of foreach&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The foreach loop in PHP can silently consume more memory than expected, especially if you modify elements inside the loop — even with a reference.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$array&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$array&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nv"&gt;$v&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$v&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// A copy is already made!&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why?&lt;br&gt;
PHP must protect array iteration from unexpected side effects. As soon as you change the array’s contents inside the loop, PHP clones the data behind the scenes.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Key Types &amp;amp; Array “Shape” Impact Memory&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;PHP arrays are super-efficient (“packed”) for consecutive integer keys. Add a string key, and PHP flips to “associative” mode — memory cost jumps.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Efficient, packed&lt;/span&gt;
&lt;span class="nv"&gt;$arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'meta'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;     &lt;span class="c1"&gt;// Now it’s associative, more memory!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tip:&lt;br&gt;
If your array is a “table”, don’t mix keys or store metadata in the same array.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;How to Optimize: Practical Guidelines&lt;/p&gt;

&lt;p&gt;Pass arrays by reference if your function needs to modify them.&lt;/p&gt;

&lt;p&gt;Use for instead of foreach to modify big arrays in place.&lt;/p&gt;

&lt;p&gt;Don’t mix key types — keep your arrays “packed” for as long as possible.&lt;/p&gt;

&lt;p&gt;Profile memory (memory_get_usage()) and test on your PHP version — the details can change!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Key Takeaways&lt;/p&gt;

&lt;p&gt;Most PHP array “magic” is about flexibility and backward compatibility, but it comes with a hidden cost.&lt;/p&gt;

&lt;p&gt;PHP 8.x is better with memory, but these effects remain — especially in large-scale code or high-load scenarios.&lt;/p&gt;

&lt;p&gt;For huge datasets, try alternatives: SplFixedArray, custom data structures, or even generators.&lt;/p&gt;

&lt;p&gt;Compare memory usage for your code:&lt;br&gt;
&lt;a href="//3v4l.org"&gt;3v4l.org&lt;/a&gt; lets you see how the same code behaves on every PHP version.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you’re into monitoring not just memory but also errors and logins on your WP site, check out my WordPress Telegram notifier plugins - &lt;a href="https://wordpress.org/plugins/fatal-to-telegram/" rel="noopener noreferrer"&gt;Fatal message to Telegram&lt;/a&gt; and &lt;a href="https://wordpress.org/plugins/login-telegram-notifier/" rel="noopener noreferrer"&gt;Login Telegram Notifier&lt;/a&gt; .&lt;/p&gt;

&lt;p&gt;How do you handle arrays in your large PHP projects? Ever hit a memory wall? Let’s discuss below!&lt;/p&gt;

&lt;h1&gt;
  
  
  php #performance #optimization #backend #arrays #devto
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Instantly Get WordPress Fatal Error Alerts in Telegram (with Fatal to Telegram)</title>
      <dc:creator>Phil</dc:creator>
      <pubDate>Mon, 16 Jun 2025 20:07:44 +0000</pubDate>
      <link>https://dev.to/iphil/instantly-get-wordpress-fatal-error-alerts-in-telegram-with-fatal-to-telegram-fpe</link>
      <guid>https://dev.to/iphil/instantly-get-wordpress-fatal-error-alerts-in-telegram-with-fatal-to-telegram-fpe</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6dna3mkdxb8gxcmrbk5r.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6dna3mkdxb8gxcmrbk5r.jpg" alt="Image description" width="800" height="480"&gt;&lt;/a&gt;&lt;br&gt;
If you build or maintain WordPress sites, you know that fatal errors often go unnoticed until users start complaining.&lt;br&gt;&lt;br&gt;
Let’s fix that — here’s how to get real-time Telegram alerts for every critical error with &lt;a href="https://wordpress.org/plugins/fatal-to-telegram/" rel="noopener noreferrer"&gt;Fatal to Telegram&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What does it do?
&lt;/h2&gt;

&lt;p&gt;Whenever WordPress logs a fatal error, this plugin sends a detailed message to your Telegram:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Error message &amp;amp; stack&lt;/li&gt;
&lt;li&gt;File and line&lt;/li&gt;
&lt;li&gt;Timestamp&lt;/li&gt;
&lt;li&gt;Site URL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;🚨 Fatal error detected on mysite.com&lt;br&gt;
Error: Call to undefined function...&lt;br&gt;
File: /var/www/html/wp-content/plugins/someplugin.php&lt;br&gt;
Line: 45&lt;br&gt;
Time: 2024-06-16 13:37:42&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Set Up
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create a Telegram bot:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Use &lt;a href="https://t.me/BotFather" rel="noopener noreferrer"&gt;@BotFather&lt;/a&gt;, run &lt;code&gt;/newbot&lt;/code&gt;, copy your token.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Get your Chat ID:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Personal: &lt;a href="https://t.me/userinfobot" rel="noopener noreferrer"&gt;@userinfobot&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Group: add your bot, send a message, check via
&lt;code&gt;https://api.telegram.org/bot&amp;lt;your_token&amp;gt;/getUpdates&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Find the &lt;code&gt;"chat": { "id": "-XXXXXXXXX" }&lt;/code&gt; (negative for group).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fchc2bclli3bdknd3k42e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fchc2bclli3bdknd3k42e.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Install the plugin:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In WordPress admin, go to Plugins → Add New → search &lt;code&gt;Fatal to Telegram&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Install &amp;amp; activate.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configure:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paste your bot token &amp;amp; chat ID in plugin settings.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyck4erb8k8rpfbpubhrg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyck4erb8k8rpfbpubhrg.png" alt="Image description" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;One bot can be used for multiple sites and different chats!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Why use it?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Instant error monitoring (even while you sleep)&lt;/li&gt;
&lt;li&gt;Fix issues before users see the “white screen of death”&lt;/li&gt;
&lt;li&gt;Free, open-source, no coding required&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Bonus: &lt;a href="https://dev.to/iphil/get-instant-wordpress-login-alerts-in-telegram-with-login-telegram-notifier-4nm1"&gt;Login Monitoring&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Want to monitor logins as well?&lt;br&gt;&lt;br&gt;
Try my &lt;a href="https://wordpress.org/plugins/login-telegram-notifier/" rel="noopener noreferrer"&gt;Login Telegram Notifier&lt;/a&gt; — get alerts for every WordPress admin login.&lt;/p&gt;




&lt;h2&gt;
  
  
  Source &amp;amp; Feedback
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://wordpress.org/plugins/fatal-to-telegram/" rel="noopener noreferrer"&gt;Get Fatal to Telegram on WordPress.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open to ideas and feature requests!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Get Instant WordPress Login Alerts in Telegram (with Login Telegram Notifier)</title>
      <dc:creator>Phil</dc:creator>
      <pubDate>Sun, 15 Jun 2025 16:59:57 +0000</pubDate>
      <link>https://dev.to/iphil/get-instant-wordpress-login-alerts-in-telegram-with-login-telegram-notifier-4nm1</link>
      <guid>https://dev.to/iphil/get-instant-wordpress-login-alerts-in-telegram-with-login-telegram-notifier-4nm1</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff2syugd52tjltx0ej2gs.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff2syugd52tjltx0ej2gs.jpg" alt="Wordpress Login Telegram Notifier" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you manage WordPress sites for clients, agencies, or yourself, &lt;strong&gt;security matters&lt;/strong&gt; — and knowing who logs in (and when) gives you true peace of mind.&lt;/p&gt;

&lt;p&gt;Let’s set up detailed Telegram notifications for every WordPress login in under 2 minutes using &lt;strong&gt;Login Telegram Notifier&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What does it do?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Login Telegram Notifier&lt;/strong&gt; instantly sends you a message in Telegram every time someone logs into your WordPress admin area.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Each alert contains:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Login URL&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IP address&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geo location&lt;/strong&gt; (city, country, via ip-api.com)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Username&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Browser &amp;amp; OS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Timestamp&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Quick Setup
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Create a Telegram Bot
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Open &lt;a href="https://t.me/BotFather" rel="noopener noreferrer"&gt;BotFather&lt;/a&gt; in Telegram&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;/newbot&lt;/code&gt;, follow the steps, and copy your bot token&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Get Your Telegram Chat ID
&lt;/h3&gt;

&lt;p&gt;You can receive alerts in a personal chat or in a group chat.&lt;br&gt;&lt;br&gt;
There are several ways to get your Chat ID:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Personal chat:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start &lt;a href="https://t.me/userinfobot" rel="noopener noreferrer"&gt;@userinfobot&lt;/a&gt; in Telegram&lt;/li&gt;
&lt;li&gt;Copy your chat ID from the response&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Group chat:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add your bot to the group where you want to receive alerts&lt;/li&gt;
&lt;li&gt;Send any message in the group&lt;/li&gt;
&lt;li&gt;Go to:
&lt;code&gt;https://api.telegram.org/bot&amp;lt;your_token&amp;gt;/getUpdates&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Find &lt;code&gt;"chat": { "id": "-XXXXXXXXX" }&lt;/code&gt; (the group chat ID is negative)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft9rmkud1zmenjgk2i2di.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft9rmkud1zmenjgk2i2di.png" alt="Create a Telegram Bot, Get Your Telegram Chat ID" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; A single bot can send different notifications to different chats from different sites.&lt;br&gt;&lt;br&gt;
You can use one bot for multiple sites and configure each site's plugin to send messages to its own chat or group.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  3. Install the Plugin
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Plugins → Add New&lt;/strong&gt; in your WordPress admin&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;Login Telegram Notifier&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Install and activate&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Configure
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;In the plugin settings, paste your bot token and your Chat ID (user or group)&lt;/li&gt;
&lt;li&gt;Optionally, test the integration from settings to ensure you receive messages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm3c3f083260hj4r1mbm1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm3c3f083260hj4r1mbm1.png" alt="Paste your bot token in to plugin settings" width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Test&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Log out and log in again.&lt;br&gt;&lt;br&gt;
You should receive a Telegram message like:&lt;/p&gt;

&lt;p&gt;🔔 Login on yoursite.com/wp-login.php&lt;br&gt;
🌍 IP: 11.22.33.44 (US, New York)&lt;br&gt;
👤 User: editor&lt;br&gt;
ℹ️ Chrome, macOS&lt;br&gt;
⏰ 2024-06-15 10:30:21&lt;/p&gt;




&lt;h2&gt;
  
  
  Why use it?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Get notified instantly about all WordPress admin logins — legit or suspicious&lt;/li&gt;
&lt;li&gt;Works for single or multiple sites: one bot, many chats/groups, endless flexibility&lt;/li&gt;
&lt;li&gt;Track logins across teams, agencies, or staging environments&lt;/li&gt;
&lt;li&gt;No coding required&lt;/li&gt;
&lt;li&gt;GDPR-friendly (no sensitive data stored)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;The plugin sends login details via the &lt;a href="https://core.telegram.org/bots/api" rel="noopener noreferrer"&gt;Telegram Bot API&lt;/a&gt; and uses &lt;a href="https://ip-api.com" rel="noopener noreferrer"&gt;ip-api.com&lt;/a&gt; for geolocation.&lt;br&gt;&lt;br&gt;
No personal data is stored on your server — only the info needed for notifications is sent securely to Telegram.&lt;/p&gt;




&lt;h2&gt;
  
  
  Source and More Details
&lt;/h2&gt;

&lt;p&gt;👉 &lt;a href="https://wordpress.org/plugins/login-telegram-notifier/" rel="noopener noreferrer"&gt;Login Telegram Notifier on WordPress.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open-source, simple, and powerful — feel free to leave feedback or feature requests!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
