Matino Matino
  • Servers
    • Proxmox
  • Web Dev
  • Gaming
    • PC Gaming
  • Guides
  • Security

Language

  • English English ✓

Only reviewed, locally published translations can be opened.

Publication gate closed

Translation unavailable

This language will open after its translation is reviewed and published locally.

Font ResizerAa

Notifications

No new notifications. Follow a category to prepare local update alerts.

Manage notifications

My Matino

Personalization Your data Sign in
Joseph MatinoJoseph Matino
Servers Web Dev Gaming

Language

  • English English ✓

Only reviewed, locally published translations can be opened.

Publication gate closed

Translation unavailable

This language will open after its translation is reviewed and published locally.

Font ResizerAa

Notifications

No new notifications. Follow a category to prepare local update alerts.

Manage notifications

My Matino

Personalization Your data Sign in
Find a guide
Search Matino
  • Servers
    • Proxmox
  • Web Dev
  • Gaming
    • PC Gaming
  • Guides
  • Security
Servers Web Dev Gaming Guides Security
  • English English ✓

Only reviewed, locally published translations can be opened.

Publication gate closed

Translation unavailable

This language will open after its translation is reviewed and published locally.

Follow US
  • Terms & Conditions
  • Privacy Policy
  • Contact
© Joseph Matino. All Rights Reserved.

How to Add a Custom Copy Alert Script to Your WordPress Site

Joseph Matino
Last updated: July 9, 2026 11:01 am
By Joseph Matino
SHARE
+0Spark this articlePreferences consent remembers one private reader identity, so your spark stays reversible.

In most cases, as creative individuals, we want to protect our originality from those who merely copy others’ efforts and mislead their audience.

It’s frustrating when someone takes your hard work and tries to pass it off as their own, especially when it involves low-competitive keywords to outsmart your content.

However, they forget that search engines like Google value originality, experience, and the ability to help the search community.

I’ve encountered this issue many times and realized the importance of safeguarding my content. This guide isn’t for beginners; it’s for those who are comfortable with advanced setups using the WordPress functions.php area.

I’ll provide a comprehensive code snippet for functions.php and, for those who want to customize further, I’ll include the CSS and JavaScript separately.

We understand that not allowing copy or right-click functions can be frustrating for users and often leads to a poor user experience.

Instead, using a custom popup can be a more user-friendly solution if you are concerned about your original content not being credited and you want to acknowledge visitors who aim to copy your content.

First, let’s understand how the functions.php code works in your WordPress setup and why it’s essential for your site.

How Does functions.php Code in WordPress Work?

The functions.php file in your WordPress theme acts like a plugin and allows you to add custom functionality to your site. It’s a powerful tool that can be used to enhance your site’s features without altering the core WordPress files. This makes it ideal for adding a custom copy alert script.

This script will be compatible with any theme you are using, whether it’s a custom-built theme or one purchased from any provider. If you encounter any issues, feel free to comment, and I’ll do my best to help you out.

Before we start with the code, make sure you have basic knowledge of HTML, CSS, and JavaScript, and access to your WordPress site’s functions.php file. I assume you are comfortable making advanced modifications to your site’s code.

Adding the Custom Copy Alert Script

To begin, we’ll add the necessary CSS for styling the modal popup, followed by the JavaScript for handling the copy events. Finally, we’ll integrate everything into your WordPress functions.php file.

By the end of this guide, you’ll have a robust system in place to protect your content and ensure proper credit is given when it’s shared. Let’s get started.

Step 1: Access Your Theme’s functions.php File

Log in to your WordPress admin dashboard.

Navigate to the left-hand sidebar and hover over “Appearance.”

Click on “Theme File Editor.”

In the Theme File Editor, you’ll see a list of theme files on the right side. Make sure the correct theme is selected in the dropdown at the top right if you have multiple themes installed.

In the list of theme files, find and click on functions.php. This is where we will add our custom code.

Step 2: Add the Combined Code to functions.php

Add the following code to your functions.php file. This code includes both the CSS for styling the modal popup and the JavaScript for handling the copy events.

function add_jmatino_copy_alert_script() {
    ?>
    <style>
    #josephmatino-com-Copyscript {
        position: fixed;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(0, 0, 0, 0.8);
        display: flex;
        align-items: center;
        justify-content: center;
        z-index: 1050;
        visibility: hidden;
        opacity: 0;
        transition: opacity 0.4s ease-in-out;
    }
    #josephmatino-com-Copyscript.show {
        visibility: visible;
        opacity: 1;
    }
    #josephmatino-com-Copyscript .modal-content {
        background-color: #282c34;
        color: #fff;
        margin: auto;
        padding: 20px;
        border-radius: 8px;
        box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
        width: auto;
        max-width: 450px;
        text-align: center;
        font-size: 14px;
        transition: transform 0.3s ease-out;
        transform: scale(0.95);
        position: relative;
    }
    #josephmatino-com-Copyscript.show .modal-content {
        transform: scale(1);
    }
    #josephmatino-com-Copyscript .ok-copy-button {
        display: block;
        width: 80%;
        margin: 20px auto;
        padding: 10px 20px;
        background-color: #004400;
        color: white;
        border: none;
        border-radius: 5px;
        cursor: pointer;
        font-size: 16px;
        transition: background-color 0.3s;
    }
    #josephmatino-com-Copyscript .ok-copy-button:hover {
        background-color: #006600;
    }
    .highlight-backlink {
        font-weight: bold;
        color: #4CAF50;
    }
    .script-author-credit {
        position: absolute;
        bottom: 5px;
        left: 50%;
        transform: translateX(-50%);
        font-size: 8px;
        color: rgba(0, 255, 0, 0.3); /* Green color with 30% opacity */
        display: block;
    }
    .hide-dev-credit .script-author-credit {
        display: none !important;
    }
    </style>
    <script>
    document.addEventListener('DOMContentLoaded', function () {
        var copyCount = 0;
        var contentArea = document.querySelector('.entry-content');
        var selectedText = '';
        if (contentArea) {
            contentArea.addEventListener('copy', function(event) {
                selectedText = window.getSelection().toString().trim();
                var parentElement = window.getSelection().anchorNode.parentElement;
                while (parentElement != null && !parentElement.classList.contains('wp-block-kevinbatdorf-code-block-pro')) {
                    parentElement = parentElement.parentElement;
                }
                if (parentElement != null) {
                    return;
                }
                copyCount++;
                if (copyCount % 2 !== 0) {
                    event.preventDefault();
                    var modal = document.createElement('div');
                    modal.id = 'josephmatino-com-Copyscript';
                    modal.className = 'show';
                    modal.style.visibility = 'visible';
                    modal.innerHTML = '<div class="modal-content"><p>Thank you for copying our content! Please mention our site when sharing or referencing this material. Proper credit supports us and adds trustworthiness to your work. We appreciate your acknowledgment!</p><span class="script-author-credit"><a href="https://matino.io/" style="color: rgba(0, 255, 0, 0.3);" rel="dofollow">Made by Joseph Matino</a></span><button class="ok-copy-button">OK Copy</button></div>';
                    document.body.appendChild(modal);
                    document.querySelector('.ok-copy-button').onclick = function() {
                        navigator.clipboard.writeText(selectedText).then(() => {
                            modal.parentNode.removeChild(modal);
                        });
                    };
                    modal.addEventListener('click', function(event) {
                        if (event.target === modal) {
                            modal.parentNode.removeChild(modal);
                        }
                    });
                } else {
                    event.preventDefault();
                }
            });
        }
    });
    </script>
    <?php
}
add_action('wp_footer', 'add_jmatino_copy_alert_script');

The above script adds a custom copy alert popup to your WordPress site, providing a gentle reminder to credit the source when copying content.

What The Above JavaScript Does

The JavaScript code provided above creates a modal popup that appears when a user copies content from your WordPress site. Here’s a detailed explanation to help you understand its functionality and customization options:

  • Functionality: The script monitors copy events within the content area of your posts.
  • Target Element: It specifically targets the .entry-content class, ensuring compatibility with most WordPress themes. This is usually the class used for the main content area of posts.
  • Trigger Frequency: The modal popup appears on the first copy attempt and every second attempt thereafter. This design balances user experience with content protection.
  • Scope: The script is designed to work primarily with paragraph elements, which means it will function on posts but not on static pages. This helps keep the focus on your main content.

Customization Options

The script includes a visible credit link with the class script-author-credit, which acknowledges the source of the script. If you prefer to hide it, you can use the provided class in your custom CSS. However, if this script has been helpful to you, I encourage you to leave the credit visible as a sign of appreciation.

Modal Appearance:

The modal uses the class #josephmatino-com-Copyscript for styling. You can customize the look and feel by modifying the CSS rules associated with this class.

The button within the modal uses the class .ok-copy-button. You can change its style to match your site’s design.

Example CSS Customization

If you want to change the appearance of the modal popup or button, here’s a brief guide:

  • Modal Background Color
#josephmatino-com-Copyscript .modal-content {
    background-color: #yourcolor;
}
  • Button Color:
.ok-copy-button {
    background-color: #yourcolor;
}
.ok-copy-button:hover {
    background-color: #yourhovercolor;
}

#Optional

If you need custom styles and prefer to use your custom CSS area instead of combining it in functions.php, you can separate the CSS and JavaScript. Below are the CSS and JavaScript snippets that you can use.

Custom CSS Only

Add the following CSS to your custom CSS area or your theme’s style.css file:

#josephmatino-com-Copyscript {
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.8);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1050;
    visibility: hidden;
    opacity: 0;
    transition: opacity 0.4s ease-in-out;
}
#josephmatino-com-Copyscript.show {
    visibility: visible;
    opacity: 1;
}
#josephmatino-com-Copyscript .modal-content {
    background-color: #282c34;
    color: #fff;
    margin: auto;
    padding: 20px;
    border-radius: 8px;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
    width: auto;
    max-width: 450px;
    text-align: center;
    font-size: 14px;
    transition: transform 0.3s ease-out;
    transform: scale(0.95);
    position: relative;
}
#josephmatino-com-Copyscript.show .modal-content {
    transform: scale(1);
}
#josephmatino-com-Copyscript .ok-copy-button {
    display: block;
    width: 80%;
    margin: 20px auto;
    padding: 10px 20px;
    background-color: #004400;
    color: white;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    font-size: 16px;
    transition: background-color 0.3s;
}
#josephmatino-com-Copyscript .ok-copy-button:hover {
    background-color: #006600;
}
.highlight-backlink {
    font-weight: bold;
    color: #4CAF50;
}
.script-author-credit {
    position: absolute;
    bottom: 5px;
    left: 50%;
    transform: translateX(-50%);
    font-size: 8px;
    color: rgba(0, 255, 0, 0.3); /* Green color with 30% opacity */
    display: block;
}

Custom Javascript Only

Add the following JavaScript to your custom JavaScript area or your theme’s scripts.js file. Ensure this script is loaded on your WordPress site, typically in the footer.

document.addEventListener('DOMContentLoaded', function () {
    var copyCount = 0;
    var contentArea = document.querySelector('.entry-content');
    var selectedText = '';
    if (contentArea) {
        contentArea.addEventListener('copy', function(event) {
            selectedText = window.getSelection().toString().trim();
            var parentElement = window.getSelection().anchorNode.parentElement;
            while (parentElement != null && !parentElement.classList.contains('wp-block-kevinbatdorf-code-block-pro')) {
                parentElement = parentElement.parentElement;
            }
            if (parentElement != null) {
                return;
            }
            copyCount++;
            if (copyCount % 2 !== 0) {
                event.preventDefault();
                var modal = document.createElement('div');
                modal.id = 'josephmatino-com-Copyscript';
                modal.className = 'show';
                modal.style.visibility = 'visible';
                modal.innerHTML = '<div class="modal-content"><p>Thank you for copying our content! Please mention our site when sharing or referencing this material. Proper credit supports us and adds trustworthiness to your work. We appreciate your acknowledgment!</p><span class="script-author-credit"><a href="https://matino.io/" style="color: rgba(0, 255, 0, 0.3);" rel="dofollow">Made by Joseph Matino</a></span><button class="ok-copy-button">OK Copy</button></div>';
                document.body.appendChild(modal);
                document.querySelector('.ok-copy-button').onclick = function() {
                    navigator.clipboard.writeText(selectedText).then(() => {
                        modal.parentNode.removeChild(modal);
                    });
                };
                modal.addEventListener('click', function(event) {
                    if (event.target === modal) {
                        modal.parentNode.removeChild(modal);
                    }
                });
            } else {
                event.preventDefault();
            }
        });
    }
});

Functions.php With JavaScript Only

If you prefer to include the JavaScript in your functions.php file, you can use the following code:

function add_jmatino_copy_alert_script() {
    ?>
    <script>
    document.addEventListener('DOMContentLoaded', function () {
        var copyCount = 0;
        var contentArea = document.querySelector('.entry-content');
        var selectedText = '';
        if (contentArea) {
            contentArea.addEventListener('copy', function(event) {
                selectedText = window.getSelection().toString().trim();
                var parentElement = window.getSelection().anchorNode.parentElement;
                while (parentElement != null && !parentElement.classList.contains('wp-block-kevinbatdorf-code-block-pro')) {
                    parentElement = parentElement.parentElement;
                }
                if (parentElement != null) {
                    return;
                }
                copyCount++;
                if (copyCount % 2 !== 0) {
                    event.preventDefault();
                    var modal = document.createElement('div');
                    modal.id = 'josephmatino-com-Copyscript';
                    modal.className = 'show';
                    modal.style.visibility = 'visible';
                    modal.innerHTML = '<div class="modal-content"><p>Thank you for copying our content! Please mention our site when sharing or referencing this material. Proper credit supports us and adds trustworthiness to your work. We appreciate your acknowledgment!</p><span class="script-author-credit"><a href="https://matino.io/" style="color: rgba(0, 255, 0, 0.3);" rel="dofollow">Made by Joseph Matino</a></span><button class="ok-copy-button">OK Copy</button></div>';
                    document.body.appendChild(modal);
                    document.querySelector('.ok-copy-button').onclick = function() {
                        navigator.clipboard.writeText(selectedText).then(() => {
                            modal.parentNode.removeChild(modal);
                        });
                    };
                    modal.addEventListener('click', function(event) {
                        if (event.target === modal) {
                            modal.parentNode.removeChild(modal);
                        }
                    });
                } else {
                    event.preventDefault();
                }
            });
        }
    });
    </script>
    <?php
}
add_action('wp_footer', 'add_jmatino_copy_alert_script');

Conclusion

Adding a custom copy alert popup to your WordPress site is a user-friendly way to protect your content and remind visitors to credit your work. I spent almost four days working on this code, testing it, and ensuring it will help you.

Leaving the credit is a great choice if it helps you. If you notice any problems, feel free to comment below or contact me for more adjustments. I will be updating this article regularly with any improvements or new tricks, so stay tuned for more updates.

Was this guide useful?Send one spark to support practical, tested writing.
Share This Article
Facebook Whatsapp Whatsapp Reddit Copy Link
Joseph Matino
ByJoseph Matino
Follow:
Full-stack developer, quant systems builder, and server-performance engineer working across WordPress, Linux, Docker, private networks, automation, and trading-system research. Matino documents real builds from my own work, including what I tested, what broke, what improved, and what I would change before using the same idea again.
Previous Article Will GTA 6 Have Steering Wheel Support?
Next Article Best ReShade Presets for Red Dead Redemption 2 13 Best ReShade Presets for Red Dead Redemption 2
guest
guest
0 Comments
Most Voted
Newest Oldest

Latest Posts

View all
Step-by-step guide to install Brotli nginx compression on Ubuntu 22.04. Includes compilation, HestiaCP configuration, and troubleshooting tips.

How to Build and Enable Brotli for Nginx on Ubuntu 22.04

Servers
4 weeks ago
Proxmox VE 9.0 brings Debian 13, better hardware support, and storage snapshots. Complete upgrade guide for bare metal servers.

Proxmox VE 9.0: Better Bare Metal Performance with Debian 13

Proxmox
2 months ago
Best Black Myth Wukong Mods

Best Black Myth Wukong Mods in 2024

PC Gaming
2 months ago
Starlink Vs Safaricom: Could Kenya’s Internet Shift in 2024?

Starlink Vs Safaricom: Could Kenya’s Internet Shift in 2024?

Networking
2 months ago
Matino

I build and document production systems across WordPress, Proxmox and Linux infrastructure, cloud applications, private networks, developer tools, automation, and quantitative software.

EXPERTISE

Cloud Application Architect

Software, systems & infrastructure

WordPress Specialist

Performance, security & plugins

Quant Systems Builder

Algorithms, data & risk

Explore

Blog
Servers
Algorithms & Quant
WordPress
Web Development
Gaming
Guides

About

About Me
Contact
Privacy Policy
Terms of Use
Cookie Policy
Legal Notice
Disclaimer

Work with Joseph

Available for WordPress, Proxmox and Linux infrastructure, cloud applications, automation, and quantitative software.

Let's Build

Connect

Follow new engineering articles, developer tools, and build notes.

Github Facebook-f X-twitter Youtube Instagram Rss
WordPress

Built with

Linux

Engineered on

Docker

Containerized with

Best Practices

Secured by

Privacy First

Designed for

Linode

Hosted on

© 2026 Matino. All rights reserved.

Building in public. Sharing knowledge. Shipping systems.

Privacy Policy • Terms of Use • Cookie Policy • Legal Notice

  • Sitemap
  • RSS
  • Back to top

Your privacy

Choose how Matino uses cookies

Essential storage keeps the site working. Analytics, advertising, and external video stay off unless you allow them.

Privacy policy Cookie policy
wpDiscuz