• Всем привет. Решил я недавно добавить на сайт функцию, чтобы при копировании текста добавлялась ссылка на источник, то есть на мой сайт. Порылся в интернете и нашёл вот такой скрипт:

    
    function add_copyright_text() {
        if (is_single()) { ?>
     
    <script type='text/javascript'>
    function addLink() {
        if (
    window.getSelection().containsNode(
    document.getElementsByClassName('entry-content')[0], true)) {
        var body_element = document.getElementsByTagName('body')[0];
        var selection;
        selection = window.getSelection();
        var oldselection = selection
        var pagelink = "<br /><br /> Источник: <a>'><?php echo get_permalink(get_the_ID()); ?></a>";
        var copy_text = selection + pagelink;
        var new_div = document.createElement('div');
        new_div.style.left='-99999px';
        new_div.style.position='absolute';
        body_element.appendChild(new_div );
        new_div.innerHTML = copy_text ;
        selection.selectAllChildren(new_div );
        window.setTimeout(function() {
            body_element.removeChild(new_div );
        },0);
    }
    }
    
    document.oncopy = addLink;
    </script>
    <?php
    }
    }
    add_action( 'wp_head', 'add_copyright_text');
    

    Скрипт рабочий, но поскольку домен у моего сайта кириллический, то ссылка, которая вставляется после «Источник:» во-первых очень длинная, а во-вторых сплошная абракадабра.

    Подскажите, что изменить в этом скрипте, чтобы ссылка была спрятана в название сайта и всё вместе это выглядело бы так «Источник: АВТО INFO», где АВТО INFO это анкор на страницу, с которой был скопирован текст?

    • Тема изменена 3 года, 6 месяцев назад пользователем Yui. Причина: please use CODE button for code formatting

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Попробуйте так

    ` var pagelink = «<br /><br /> Источник: <a>’><?php echo get_permalink(get_the_ID()); ?>AUTO.INFO</a>»;
    `

    Если не получится, то попробуйте другие варианты Исходя из этого руководства и не забудьте написать тут о результате

    Оказывается, в вашем коде полная каша, плюс какие то личные символы типа ‘> и прочее. Удалите, что написали и добавьте следующий код :

    /*функция ссылки на источник при копирования */
    function add_copyright_text() {
        if (is_single()) { ?>
     
    <script type='text/javascript'>
    function addLink() {
        if (
    window.getSelection().containsNode(
    document.getElementsByClassName('entry-content')[0], true)) {
        var body_element = document.getElementsByTagName('body')[0];
        var selection;
        selection = window.getSelection();
        var oldselection = selection
        var pagelink = '<br /><br /> Источник: <a href="<?php echo get_the_permalink(); ?>">Авто инфо</a>'
        var copy_text = selection + pagelink;
        var new_div = document.createElement('div');
        new_div.style.left='-99999px';
        new_div.style.position='absolute';
        body_element.appendChild(new_div );
        new_div.innerHTML = copy_text ;
        selection.selectAllChildren(new_div );
        window.setTimeout(function() {
            body_element.removeChild(new_div );
        },0);
    }
    }
    
    document.oncopy = addLink;
    </script>
    <?php
    }
    }
    add_action( 'wp_head', 'add_copyright_text');

    Если не прокатить, хотя у меня получилось, то :

    function add_copyright_text() {
        if (is_single()) { ?>
    
    <script type='text/javascript'>
    function addLink() {
        if (
    window.getSelection().containsNode(
    document.getElementsByClassName('entry-content')[0], true)) {
        var body_element = document.getElementsByTagName('body')[0];
        var selection;
        selection = window.getSelection();
        var oldselection = selection
        var pagelink = "<br /><br /> Read more: <?php the_title(); ?> <a href='<?php echo get_permalink(get_the_ID()); ?>'><?php echo get_permalink(get_the_ID()); ?></a>"; //Change this if you like
        var copy_text = selection + pagelink;
        var new_div = document.createElement('div');
        new_div.style.left='-99999px';
        new_div.style.position='absolute';
    
        body_element.appendChild(new_div );
        new_div.innerHTML = copy_text ;
        selection.selectAllChildren(new_div );
        window.setTimeout(function() {
            body_element.removeChild(new_div );
        },0);
    }
    }

    Где можете менять текст «Read More» на любой другой.
    Если вы используете различные сервисы для сокращения URL, замените get_permalink на wp_get_shortlink.

    Забыл сказать, что если при копировании с вашего сайта будут вставить «как текст»(без форматирования) , то ссылка не будет «гореть» а вставится голый текст, аж лучше перегенерируйте ваши постоянные ссылки на латиницу, для этой цели полно плагинов типа clearfy или воспользуйтесь короткими ссылками

    Rianovost, спасибо. Первый вариант «прокатил», по причине чего второй даже не стал пробовать. На счёт ссылки, то для меня не важно, будет она «гореть» или нет. Важен сам факт её наличия, а с форматированием или без она всё равно есть. Как перегенерировать ссылки на латиницу я знаю, но принципиально этого делать не хочу.
    Ещё раз вам огромное спасибо. Вы мне очень помогли.

    • Ответ изменён 3 года, 6 месяцев назад пользователем АВТО INFO.

    Ещё раз вам огромное спасибо. Вы мне очень помогли.

    И вам тоже спасибо, что напомнили меня, я хотел эту функцию применить давно и забыл, потом не как не смог вспомнить, что хотел добавить на сайт и случайно увидел в службе поддержки ваше сообщение ))) пишите если что, чрезмерно рад быть полезным!

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Тема «Ссылка на источник при копировании» закрыта для новых ответов.