Поддержка Проблемы и решения Ссылка на источник при копировании

  • Решено АВТО INFO

    (@jackson1979)


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

    
    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 года назад пользователем 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 или воспользуйтесь короткими ссылками

    Автор АВТО INFO

    (@jackson1979)

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

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

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

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

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