Как в WordPress реализовать функционал, при котором копирование слова из текста статьи приведёт к автоматическому открытию новой вкладки браузера?

Как я могу настроить функционал на моем WordPress-сайте, чтобы при копировании промокода пользователем автоматически открывалась новая вкладка с страницей партнерской программы? На данный момент я знаю, как сделать слово в тексте кликабельным и открывать его в новой вкладке, но не могу найти информацию о срабатывании данного действия при копировании.
  • 5 декабря 2023 г. 13:49
Ответы на вопрос 2
В WordPress нет стандартного функционала для открытия новой вкладки при копировании текста. Тем не менее, можно реализовать это с помощью небольшого количества JavaScript.

Ниже приведён пример кода, который можно добавить в файл темы `functions.php` или, что предпочтительнее, в размещенный на вашем сайте специальный плагин для пользовательских скриптов.

Этот код добавляет обработчик событий на элементы с классом `copy-trigger`, который отслеживает выделение и копирование текста (в данном случае, промокода). Если выделенный текст совпадает с активным промокодом, скрипт автоматически открывает новую вкладку с указанным адресом страницы партнерской программы.

```javascript
function add_custom_script() {
    ?>
    <script type="text/javascript">
    document.addEventListener('DOMContentLoaded', function() {
        var promoCode = 'YOURPROMOCODE'; // Замените YOURPROMOCODE на ваш промокод
        var affiliateUrl = 'https://youraffiliatelink.com'; // Замените ссылкой на партнерскую программу
        
        document.addEventListener('copy', function(e) {
            var selectedText = window.getSelection().toString().trim();
            if (selectedText === promoCode) {
                window.open(affiliateUrl, '_blank');
            }
        });
    });
    </script>
    <?php
}

add_action('wp_footer', 'add_custom_script');
```

Этот код нужно добавить в функции темы WordPress или в отдельный файл плагина для пользовательских скриптов. Кусок кода `YOURPROMOCODE` нужно заменить на актуальный промокод, а `https://youraffiliatelink.com` - на ссылку вашей партнерской программы.

Как только кто-то скопирует промокод с вашего сайта, этот код автоматически откроет новую вкладку с указанной партнерской программой.

Обратите внимание, что вопросы, связанные с пользовательским опытом и безопасностью, должны быть приняты во внимание. Браузеры ограничивают всплывающие окна и вкладки в зависимости от контекста их открытия (например, могут блокироваться вкладки, открываемые без действий пользователя), и такое поведение может быть недружелюбным по отношению к пользователю, вызывая негативное отношение или восприниматься как назойливое. Используйте это решение с умом и с учетом воздействия на пользовательский опыт.
Вешать обработчик на какой то элемент, который будет открывать новую страницу. Как то так (нажатие ЛКМ):document.querySelector('#id').addEventListener('mousedown', () => window.open('example.com', '_blank').focus());Ну и хорошо бы отключать данный "спам" хотя бы после первого срабатывания:function spam() {
  window.open('example.com', '_blank').focus();
  element.removeEventListener('mousedown', spam);
}

const element = document.querySelector('#id');
element.addEventListener('mousedown', spam);
Похожие вопросы