人気のあるウェブサイト(eHowなど)では、サイトからコピーされたテキストに「続きを読む」リンクを付けることがあります。これは新しいユーザーを獲得するための素晴らしい方法です。しばしば、人々はウェブサイトからメールにテキストをコピー&ペーストします。情報を将来のために保存するために使用する人もいれば、単に友人、家族、同僚と共有するために使用する人もいます。この記事では、WordPressブログのコピーされたテキストに簡単に「続きを読む」リンクを追加する方法を紹介します。これにより、追加のトラフィックを獲得できます。
注:これを実際に確認するには、この投稿の何かをコピーして、メールやメモ帳に貼り付けてください。
まず、以下のコードをテーマのfunctions.phpファイルまたはサイト固有のプラグインにコピーする必要があります。
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 at WPBeginner: <?php the_title(); ?> <a href='<?php echo wp_get_shortlink(get_the_ID()); ?>'><?php echo wp_get_shortlink(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');
これで、誰かがあなたのウェブサイトに来てコンテンツをコピーしようとすると、コピーしたコンテンツと一緒に「続きを読む」リンクが含まれるようになります。著作権表示を変更し、そこにあなた自身のサイトのタイトルを追加することを忘れないでください。
編集: 当初はウィンドウURLを取得していましたが、ユーザーの指摘によりURLが不格好に見えるため、単一投稿ページでのみ表示し、wp_shortlinkを使用するように更新しました。そのため、somesite.com/?p=23 のようになります。もし私たちが使用しているようなカスタムショートリンク(例: wpbeg.in)を使用している場合は、ブランド化されたショートリンクが表示されます。


Bee
こんにちは。
このコードは、あなたのウェブサイトでも、あなたのスニペット(WP 6.2)を使用した私のウェブサイトでも動作しないようです。確認していただけますか?ありがとうございます。
WPBeginnerサポート
コードはまだ機能しています。プラグインをすべて無効にしたり、アドオンが競合を引き起こしていないか確認するためにシークレットブラウザを使用することをお勧めします。
管理者
Edward Elric
最新のWordPressで2020年もこれはまだ機能していますか?
WPBeginnerサポート
他に情報がない限り、コードはサイトに追加しても機能するはずです。
管理者
Junuk
こんにちは、良い情報をありがとうございます!
Bitlyプラグインと一緒に教えていただいたコードをウェブサイトに適用しましたが、時々機能したりしなかったりします。
このコードはキャッシュプラグインと関係がありますか?私のウェブサイトのどこを確認すればよいか教えていただけますか?
WPBeginnerサポート
キャッシュプラグインが有効になっている場合、正しく更新するにはサイトのすべてのキャッシュをクリアする必要があるでしょう。キャッシュのクリアについては、こちらのガイドをご覧ください: https://www.wpbeginner.com/beginners-guide/how-to-clear-your-cache-in-wordpress/
管理者
Pierre
こんにちは、
ありがとう、2019年の記事では正常に動作しましたが、カスタム投稿タイプでも機能するようにできますか?
EventonとWP News、Scrolling Widgetsを持っています。
WPBeginnerサポート
is_singleをis_singularに変更し、カスタム投稿タイプ名を追加する必要があります
管理者
Will
各URLの末尾にGoogleトラッキングパラメータを追加する方法について、何かアドバイスはありますか?すでに投稿名の末尾に?p=を使用していることを考慮すると。
Akash
カテゴリでも機能するように簡単な方法がありますか?
ジャスミン
これ、ありがとうございます。投稿にはうまく機能しますが、イベントからテキストをコピーすると、ページのURLが取得されません。何かアドバイスはありますか?ありがとうございます。
ミケーレ
これは素晴らしいです。ありがとうございます。クラス – entry content と表示された場合、それは私のサイトのテキストの約90%で機能しなかったことを意味します。なぜなら、私のテキストはそのクラス名を使用していなかったからです。したがって、他の誰かがこの問題に遭遇した場合、「entry content」を「body」に変更できます。それが私がやったことです。
var body_element = document.getElementsByTagName(‘body’)[0]; (13行目)
これでどこでも機能します。
Meenu
コンテンツを制限するにはどうすればよいですか?
Dave
どうもありがとうございます。すべてのテキストフォーマットが変更され、1行として貼り付けられました。しかし、テキストフォーマットはそのままにしておきたいのです。なので、これを取得する方法を教えてください。
Ark
こちらも同じです。貼り付け後にすべての改行が失われています。
Jens | Sir Apfelot
Damn… I am stupid… I added it to the themes custom JS… thats not working.
Jens | Sir Apfelot
WordPressブログにスクリプトを追加しましたが、クリップボードの最後に付録が表示されません…
Any ideas? I am not sure, if its because I am working on a mac… but I guess the javascript should work on Firefox on a mac too…
ヤシュ・ジャデ
ブロガーに貼り付けると、次のエラーが発生します。
XMLの解析エラー、2237行目、96列目:「a」要素タイプの属性「href」の値に「<」文字を含めることはできません。
何か解決策はありますか?
ありがとうございます。
matt
この機能は、コピー&ペーストをよりフラストレーションのたまるものにします。例えば、Wikipediaの編集のために見出しをコピー&ペーストすると、注意しないとフォーマットが崩れる可能性があり、追加の作業が必要になります。
匿名
ユーザーとして、これは我慢できません。追加しないでください。
Alan
フォーマットを維持する方法を知っている人はいますか?
このプラグインを使用すると、すべてのスペース、改行、フォーマットが失われます。
フィリップ=ダニエル・クロイドゲン
驚くほどうまく機能します!ただ、コピーされるテキストの量を例えば150語などに制限できれば、さらに良いのですが。
Salud Casera
もう機能しません。
前は機能していましたが、WPのバージョンよりもテーマに起因する問題だと思います。
アリソン
残念ながら、このコードはWP 3.8では動作しません
新規インストールでテストしました。ご自由に確認してください。このコードを機能するように更新する予定はありますか?
WPBeginnerサポート
WP 3.8の新規インストールでテストしたところ、当方では問題なく動作しています。
管理者
エリック
実は私もこれを機能させることができません。
Roselle
Hello,
最初はうまくいきませんでした。しかし、よく調べた結果、原因を突き止めました。
コードの8行目に、次のように表示されます。
document.getElementsByClassName(‘entry-content’)[0], true))
これはコードに「このクラス名のテキストから誰かがテキストをコピーした場合、続きを読むリンクを挿入する」と指示する行です。
やるべきことは、Firebugを使って投稿コンテンツがどのクラス名の下にあるかを調べるだけです。
私は何度も編集した子テーマを持っているので、私のものはデフォルトの「entry-content」ではありませんでした。あなたのクラス名もそれとは異なると疑っています。
頑張ってね、
ロゼル
Salud Casera
Firebugを使用して投稿のクラス名を見つけるには、どのような手順を踏めばよいですか?
Gabriel
Hello,
この素晴らしい記事に大変感謝していますが、問題があります。ショートリンクではなく、パーマリンクを取得したいのですが。どうすればそれができるか、どなたか教えていただけますか?
Cheers
編集スタッフ
echo wp_get_shortlink(get_the_ID());をthe_permalink();に置き換えてください管理者
グレッチェン・ルイーズ
単一のページでも機能するようにする簡単な方法はありますか?
編集スタッフ
はい。2行目のコードを以下から変更してください。
if (is_single()) を if (is_singular()) に
管理者
グレッチェン・ルイーズ
ありがとうございます!それは機能しますが、ページへのリンクは取得できず、投稿のみです。
編集スタッフ
それは奇妙ですね。get_the_idはページと投稿の両方で機能するはずです。
グレッチェン・ルイーズ
KindredGrace.com で動作していますが、ページではなく投稿の ID しか取得できません。
編集スタッフ
グローバル変数を追加してみてください。get_the_idは投稿に機能し、ページも「投稿タイプ」であるためです。
グレッチェン・ルイーズ
ページ用のショートリンクを取得しようとしましたが、うまくいきませんでした。
// コピーライトテキストを追加
function add_copyright_text() {
global $post; { ?>
ブライアン・ヨーク
この変更は私にはうまくいきました。ただし、コンテンツが「entry-content」の下にあることを再確認してください。そうでない場合は変更してください(ChromeでF12)。WPBeginnerさん、ありがとうございます!!
ブライアン・ヨーク
実はこれはあまりうまくいきません。IEでは全く動作せず、何をしてもHTML部分をコピーせずに常にプレーンテキストに変換してしまうため、リンクにはなりません。
アラン
同じ問題を抱えています。すべてのフォーマットが削除されてしまいます。誰か修正方法を知っていますか?
VIVROCKS
素晴らしいトリックです。これにはプラグインもあります: http://wordpress.org/extend/plugins/read-more-copy-link/
コリン・ウィークス
ウェブサイト大好きです!皆さんと共有する時間を取ってくれてありがとう。
Mairaj Pirzada
ナイスな投稿ですが、コーディングはいつも好きではありません。混乱します!
Helder
wpbeginner.comのコンテンツでも動作していません
編集スタッフ
ウェブサイトからコードを削除しました。一部のユーザーから、迷惑だと苦情がありました。
管理者
ラフィウル・イスラム
わー…共有してくれて本当に本当にありがとう。これに苦しんでいました…
改めて感謝します。
Lorenzo Solís
投稿のタイトルがコピーされたときに「続きを読む」リンクが表示されないようにする方法を知っている人はいますか?
ありがとうございます!
編集スタッフ
はい、可能です。セレクタータグをbodyからdiv IDなどに変更してください。リクエストは送信済みです。開発者から連絡があり次第、記事を更新します。
管理者
Lorenzo Solís
ありがとう。6行目に var div = document.getElementById(‘copyright’); を追加し、divコンテンツに id=”copyright” を追加して試しましたが、あなたのコードと同じ結果になりました。すみません、私はプログラマーではありません。
編集スタッフ
コードを確認してください。動作するはずです。
ポール
ありがとう、これは面白そうですね。すぐに試してみます。
リサ
Outlookから新規作成したメールでも正常に動作したので、Gmailの問題だと思います。ありがとうございます!
編集スタッフ
Gmailで試してみました…ここでは問題なく動作します。
管理者
リサ
面白くて役立ちますが、コピーテストがGmailでメールを作成する際に機能しなかったことに驚きました(少なくとも私には)。貼り付けたコピーテキストの後には何も表示されず、作成メールウィンドウの本文テキストエリアがフリーズしました。Notepadでコピーした部分をテストすると問題なく機能したので、Gmailの問題が何であるかはわかりません。
ヒントをありがとうございます!
Albert Albs
それは良い選択肢ですね、Syedさん。共有ありがとうございます。しかし、投稿の短いURLを印刷できれば、ウェブサイトの所有者にとってはさらに良いでしょう。
現在、長いURLが出力されています。Feedburnerのニュースレター購読でここに来た場合、UTMトラッキングURLも表示されます。
ご理解いただけると幸いです。可能でしょうか?
編集スタッフ
あはは。良い提案ですね。WPBeginnerのやることリストに書き留めておきます。
Edit: Just updated the code
管理者
Albert Albs
それは迅速かつスマートです。
質問です:コメントフォームから著者URLを削除したのはなぜですか?常に、WordPress搭載の多くのブログは、コメント著者にURLフィールドでNoFollow属性を付けてクレジットを与えています。
Author URIフィールドを削除した特別な理由がありますか?それともPenguinアップデートに関する実験ですか?
ところで、メールでフォローアップコメントの通知を受け取る」オプションを選択した後でも、コメント通知が一切届きません。
Gabe Diaz
わあ、これは素晴らしいヒントですね!引用して出典を表示しやすく、また、内容をざっと見て盗む人向けにリンクも追加できます。とてもクールです!
エミリー・サンフォード
これ、本当にありがとうございます。とても簡単にできて、しばらく疑問に思っていたことでした。感謝します!