用户复制和链接时链接回网站粘贴文本在Wordpress中不起作用

时间:2013-12-22 00:42:41

标签: javascript php wordpress url copy-paste

每当用户复制文字时,我都希望将链接添加回我的网站。

每当用户从我的网站复制文本时,我都希望将链接添加回我的网站。比如“在我的网站上阅读更多内容:URL”。我相信你以前碰到过这个。

我在野外发现了这个代码(对于Wordpress),但它根本不起作用。我使用最新版本的Firefox和Safari在Wordpress 3.8上进行了测试。 Javascript代码有什么问题吗?还是Wordpress代码本身?

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);
}
}


document.oncopy = addLink;
</script>

<?php
}
}

add_action( 'wp_head', 'add_copyright_text');

2 个答案:

答案 0 :(得分:1)

我使用的是同一个帖子,它对我也没有用。我所做的是稍微更改代码以始终允许此功能。

<?php

/*******************************
*
*  Read more Copyright Text
*
*******************************/



function add_copyright_text() {
?>

<script type='text/javascript'>
function addLink() {
    var body_element = document.getElementsByTagName('body')[0];
    var selection;
    selection = window.getSelection();
    var oldselection = selection
    var pagelink = "<br /><br /> Read more at XXX: <?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);
}


document.oncopy = addLink;
</script>

<?php
}

add_action( 'wp_head', 'add_copyright_text');
?>

这不是一个很大的改变。我所做的就是删除以下条件:

  1. if (is_single()) { ?> .... <?php }
  2. if (window.getSelection().containsNode(document.getElementsByClassName('entry-content')[0], true)) { ...}
  3. 希望它对你有所帮助。此外,还有一个plugin您可能想要检查,这应该可以帮助您这样做。 (虽然我还没试过)。

答案 1 :(得分:1)

这是我更好的解决方案,它会链接到当前打开的网址:

/*---------------------------------------------------------------------------*/
/* give paste content link back
/*---------------------------------------------------------------------------*/
function add_copyright_text() {
?>

<script type='text/javascript'>
function addLink() {
    var body_element = document.getElementsByTagName('body')[0];
    var selection;
    selection = window.getSelection();
    var oldselection = selection
    var pagelink = "<br /><br /> link : <a href='http://<?php echo $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>'>http://<?php echo $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?></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);
}


document.oncopy = addLink;
</script>

<?php
}

add_action( 'wp_head', 'add_copyright_text');
?>