PLUGIN : Rapls Copy Notice
Rapls Copy Notice wordpress.org から最新版をダウンロード 訪問者が投稿の本文をコピーすると、コピーされた文と投稿をログに残し、サイトの管理者にテキストのメールで知らせる WordPress プラグインです。どの記事のどの段落が持っていかれているのかが、あとから確かめられます。 特徴は 3 つです。- コピーは止めない — 読者はいつもどおり選択・コピー・右クリックができます。プラグインは記録して知らせるだけです。
- 外部のサービスと通信しない — 報告は自分のサイトにだけ届き、メールは WordPress のメール機能で送ります。Cookie も使いません。
- 訪問者のデータを疑ってかかる — コピーされた文やブラウザーの情報は、表示する場所に合わせて毎回エスケープし、メールはテキストだけで送ります。
USE CASE : こんな場面で使えます
コピーされること自体は、悪いことばかりではありません。引用やメモのためにコピーする読者もいます。どの文がコピーされているかがわかると、次のような判断がしやすくなります。- 個人ブログ・メディア — よくコピーされる段落から、読者が何を持ち帰っているかを知る。引用されている記事を見つける
- レシピ・ハウツー・解説記事 — 手順や数値の段落がコピーされているなら、その部分をまとめ直したり、表にしたりする
- 教材・資料のサイト — 同じ段落が短い間に何度もコピーされていないかを見る
- 転載が気になるサイト — コピーの多い段落を、転載を探すときの手がかりにする。別売りの Pro アドオンを入れると、その段落を Web で検索する作業まで自動にできます
WHY : 選ばれる理由
1. 読者の邪魔をしない
右クリックや文字の選択を禁止しても、コピーは止まりません。ページのソースを開けば文は読めますし、スクリーンショットも撮れます。困るのは、引用したい人や、読み上げ・翻訳の機能を使う普通の読者のほうです。このプラグインは止める代わりに、何がコピーされたかを記録して知らせます。コピーを妨げる機能は入れていません。2. 訪問者のデータを持ちすぎない
IP アドレスは、既定で短くしてから保存します (IPv4 は最後の区切り、IPv6 は下位 80 ビットを消します)。Cookie は使わず、訪問者のブラウザーには何も保存しません。回数の制限のためだけに、IP アドレスを元に戻せない形に変えた値を最長1時間使います。記録は既定で 90 日たつと自動で消えます。プラグイン自身は外部のサービスに何も送りません。3. 軽くて、ページキャッシュと相性がよい
検出のスクリプトは依存ライブラリなしの小さな JavaScript 1 本で、defer で読み込みます。訪問者ごとのトークンを使わないので、キャッシュされたページでもそのまま動きます。サイト側は報告を 1 行保存するだけで、メールは 1 時間に 1 回まとめて送るのが既定です。 4. 訪問者から来た値を信用しない作り
同じ目的のプラグインには前例がありますが、訪問者から届いた値を管理画面にそのまま表示したことで、蓄積型の XSS (クロスサイトスクリプティング) を抱えました。コピーの報告は、ログインしていない誰からでも届きます。中身はすべて訪問者のブラウザーが作ったものです。このプラグインは一から書き、次の点を最初から組み込んでいます。- コピーされた文、ユーザーエージェント、参照元、IP アドレスは、管理画面に出すたびに、出す場所 (HTML の本文・属性・URL) に合わせてエスケープします。保存のときに消毒したことは当てにしません
- 通知は常に
text/plainのメールで送ります。件名はサイト名・自分で決めた文言・件数だけで、訪問者が送ったものや投稿タイトルは入れません - 受け付ける回数に上限があります。超えた報告は保存もメールもしません
- 受け口は状態コードだけを返し、送られた値を返しません
5. 日本語の説明がある
開発者が日本人です。管理画面は英語ですが、このページと無料版マニュアルで、各画面の項目を日本語で説明しています。PRICING : 料金
無料版は体験版ではありません
このページで説明している機能は、すべて無料版に入っています。コピーの検出、ログ、メール通知、テスト送信、読者向けのメッセージと出典の追加、ダッシュボードウィジェット、サイトヘルスの検査です。期限も、件数の制限もありません。無料版はそれだけで動き、ほかに何も要りません。Pro アドオンの価格
- 1 サイト : ¥1,980 (税込)
- 5 サイト : ¥4,980 (税込)
- 統計 (Statistics) — 直近 7・30・90 日の日ごとのコピー数を、前の期間と重ねて表示します。コピーの多い投稿と前の期間からの増減、投稿ごとによくコピーされる段落もわかります
- チャンネル (Channels) — メールに加えて Slack・Discord・Chatwork・自分の HTTPS の Webhook に通知します。チャンネルごとにテスト送信ができ、送る訪問者の情報を選べます。直近 50 件の配信履歴 (30 日保存) を見て、失敗した配信を送り直せます。ほかのチャンネルには届いたのに失敗したチャンネルは、自動で送り直します
- ルール (Rules) — 投稿・カテゴリー・文字数でコピーを振り分け、メール・Slack・Discord・Chatwork・Webhook のどれに送るか (どこにも送らないか) を決めます。1 つの投稿のコピーが急に増えたときにすぐ知らせる急増アラートもあります。「振り分けを試す」で、ある投稿・文字数のコピーがどこへ送られるかを確かめられます
- 転載の検索 (Reposts) — 既定でオフです。違う IP アドレスから何度もコピーされた段落を、1 日 1 回、自分の Brave Search API か SerpApi のキーで Web 検索し、転載かもしれないページを一覧にします。結果は手がかりで、証拠ではありません (ページそのものは取得しません)。既定では、このタブで承認した段落だけを検索します。段落ごとに「検索しない」も選べます。検索の料金は、それぞれのサービスの自分のアカウントにかかります
- CSV 書き出し (Export) — 期間と、必要なら投稿を 1 つ選んで、ログを CSV で書き出します。表計算ソフトで数式として動かないように書き出します
- ライセンス (License) — 上の機能と更新を有効にするライセンスを登録します
HOW IT WORKS : コピーが記録されるまで
- 監視対象の投稿を 1 件表示しているページで、読者が本文の中の文をコピーします。
- ページに読み込まれた小さなスクリプト (
rapls-copy-notice.js) が、選択された文字数と範囲を確かめます。条件を満たすと、文 (最大 500 文字) と投稿 ID をサイトの REST API (/wp-json/rapls-copy-notice/v1/log) に送ります。 - サイト側で、回数の上限、投稿が公開中で監視対象か、無視する IP・投稿に当たらないかを確かめます。通ったものだけを専用のテーブル (
{接頭辞}rapls_cn_log) に 1 行保存します。 - まとめモードなら次の毎時の処理で、即時モードならその場でメールを送ります。
INSTALLATION : 設置方法
動作要件
- WordPress 6.3 以上
- PHP 8.2 以上
- WordPress からメールが送れること (
wp_mail())。SMTP プラグインを使っている場合は、その設定どおりに送られます - ログインしていない訪問者が
/wp-json/rapls-copy-notice/v1/logに POST できること
セットアップ手順
- 管理画面の「プラグイン > 新規追加」で「Rapls Copy Notice」を検索してインストール (または
rapls-copy-noticeフォルダを/wp-content/plugins/にアップロード) - 「プラグイン」メニューから有効化。この時点で記録が始まります。設定を保存する必要はありません
- 「ツール > Rapls Copy Notice」の Notifications (通知) タブで、Send notifications to (通知の送信先) を確かめる。空なら「設定 > 一般」の管理者メールアドレスに届きます
- 同じタブの Send a test email (テストメールを送る) を押して、メールが届くか確かめる
- 必要なら Detection (検出) タブなどで設定を変える
- 投稿と固定ページの本文から 20 文字以上コピーされると記録します
- 記録は 1 時間に 1 回まとめて、サイトの管理者メールアドレスに送ります
- ログイン中の管理者・編集者のコピーは数えません
- IP アドレスは短くしてから保存し、記録は 90 日で消えます
動作の確認
- ブラウザーのプライベートウィンドウで、公開中の投稿を 1 件開きます。ログインしたままだと数えられません
- 本文から 20 文字以上を選んでコピーします
- 「ツール > Rapls Copy Notice」の Log (ログ) タブに 1 行増えていれば動いています
FEATURES : 機能一覧
1. 本文からのコピーだけを検出
選んだ投稿タイプの個別ページで、本文の中からのコピーだけを数えます。トップページやアーカイブ、サイドバーでは数えません。- 最小文字数 (既定 20 文字) に満たないコピーは数えません
- 選択の全体が本文の範囲の中にあるときだけ数えます。本文とサイドバーにまたがる選択は数えません
- 同じ文を 10 秒以内にもう一度コピーしても、2 回目は送りません
- サイトが受け付けるのは、公開中で監視対象の投稿タイプの投稿への報告だけです。下書きやプレビューは数えません
.entry-content, .post-content, article) で見つけます。テーマがこのどれも使っていない場合は、本文の最後に目印を置いて見つける方法も選べます (SETTINGS の Detection タブを参照)。 2. 入力欄からのコピーは記録しない NEW
本文の中にあるコメント欄やお問い合わせフォームなど、入力欄や編集できる領域からのコピーは記録しません。そこにあるのは、たいてい読者が自分で書いている文だからです。読者向けのメッセージも出典の追加も、このコピーには働きません。3. コピーのログ
「ツール > Rapls Copy Notice」の Log (ログ) タブに、日時・投稿・コピーされた文・短くした IP アドレス・ブラウザーを一覧で表示します。投稿で絞り込めます。選んだ行だけ、またはすべての行を削除できます。削除の前には確認が出ます。4. テキストのメール通知

- One summary email per hour (1 時間に 1 通のまとめ):既定。まだ知らせていない記録がなければ送りません
- One email per copy, right away (コピーごとにすぐ 1 通):1 時間あたりの上限 (既定 20 通) を超えた分は、次の毎時のまとめに入ります
件名: [サンプルブログ] Copy notification (2 copies) Content-Type: text/plain; charset=UTF-8 --------------------------------------------------- It appears that the following text was copied. --------------------------------------------------- > ドリップの前に、ペーパーフィルターをお湯でさっと湿らせておきます。 Date: 2026年10月9日 3:14 PM Post: ハンドドリップの基本 URL: https://example.com/hand-drip/ Length: 33 characters IP: 203.0.113.0 Browser: Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X) ... Referrer: www.google.com --------------------------------------------------- > 蒸らしの時間は 30 秒ほど。粉がふくらみきるまで待ちます。 Date: 2026年10月9日 3:40 PM Post: ハンドドリップの基本 URL: https://example.com/hand-drip/ Length: 30 characters IP: 2001:db8:85a3:: Browser: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ... --------------------------------------------------- Log: https://example.com/wp-admin/tools.php?page=rapls-copy-notice Settings: https://example.com/wp-admin/tools.php?page=rapls-copy-notice&tab=notifications
- 件名は常に「[サイト名] 件名の文言 (〇 copies)」の形です。文言は Email subject (メールの件名) で変えられるので、メールソフトの振り分けに使えます
>で始まる行は、コピーされた文の先頭 200 文字です。改行があれば 1 行ずつ>を付けるので、文がほかの項目になりすますことはありません- 改行や文字の向きを変える特殊な文字は、コピーされた文やブラウザーの情報から取り除いてから書きます
- Length は元の選択の文字数です。保存する文は 500 文字までですが、ここには選択全体の長さが出ます
- Referrer は直前に見ていたページのホスト名だけです。わからないときはこの行を省きます
- 1 通に詳しく載せるのは 100 件までです。それを超えた分は件数だけを書きます。1 回のまとめで扱うのは最大 5,000 件です
- メールが送れなかった記録は「知らせ済み」にならず、次のまとめで送り直します。まとめの処理が同時に 2 回動いても、同じ記録を 2 回送らないようにしています
5. テストメール NEW
Notifications タブの Send a test email (テストメールを送る) で、いまの通知の送信先に短い固定の文面を送ります。件名の括弧の中は件数ではなく test になります。送信先を変えたときは、先に保存してから押してください。正しいアドレスがないときはボタンが押せず、理由がタブに表示されます。6. 同じ段落からのコピーをまとめて表示
コピーするたびに、そのコピーが始まった段落の指紋も記録します。段落の文から読者のブラウザーで計算した SHA-1 ハッシュで、段落の文そのものは保存しません。ログの Copies of this paragraph (この段落のコピー) を押すと、同じ投稿の同じ段落からのコピーだけが並びます。- 段落とみなすのは、本文の中の
p・li・blockquote・pre・見出し (h1〜h6)・表のセル・dt/dd・figcaptionです - 段落の文を 1 文字でも書き換えると、別の段落として扱います
- ブラウザーがハッシュの機能を HTTPS のページでしか提供しないため、HTTP のサイトではこのリンクが出ません。コピーの記録そのものは HTTP でも行います
7. 読者向けの 2 つの機能 (既定でオフ)


- コピー後のメッセージ:コピーした読者に、画面の下で 5 秒間メッセージを出します。たとえば「引用するときはリンクをお願いします」といった文です。コピーは止めません。Esc キーか閉じるボタンで閉じられ、マウスを乗せている間は消えません。スクリーンリーダーはコピーのたびにメッセージを読み上げます
- 出典の追加:コピーした文の後ろに、空行をはさんで投稿のタイトルと URL を付けます
ドリップの前に、ペーパーフィルターをお湯でさっと湿らせておきます。 Source: ハンドドリップの基本どちらも投稿のタイトルと URL、管理者が書いた文だけを使い、追加の記録はしません。 https://example.com/hand-drip/
8. ダッシュボードウィジェット

9. サイトヘルスの検査
「ツール > サイトヘルス」の「ステータス」に 6 つの検査を追加します。どれもサイトの中の状態を見るだけで、外部への通信はしません。- ログのテーブル:テーブルがないか古いと「重大な問題」。プラグインを停止して有効化し直すと作り直します
- 予定された処理:毎時のまとめか毎日の古い記録の削除が、予定されていないか 1 時間以上遅れている
- 通知の送信先:正しいアドレスがない。記録は続きますが、メールは送れません
- 通知の配信:2 時間以上前の記録が、まだ知らされずに残っている。送信の失敗、送信先がない、まとめの処理が動いていない、のどれかが考えられます
- 監視する投稿タイプ:投稿タイプが 1 つも選ばれておらず、どこでもコピーを検出していない
- 訪問者の IP アドレス:信頼するプロキシに登録していないプロキシの後ろにあるかもしれない
10. ページキャッシュ対応
検出のスクリプトは訪問者ごとのトークンを使わないので、キャッシュされたページでも動きます。ページに埋め込む設定は、投稿 ID・最小文字数・本文のセレクターと、オンにしているときの読者向けメッセージ・出典の情報だけです。 Detection タブや Visitors タブを変えたら、ページキャッシュを削除してください。設定はページに埋め込まれるので、古いキャッシュには古い設定が残ります。11. マルチサイト
ログのテーブル、設定、予定された処理はサイトごとです。ネットワークで有効化して使います。各サイトは、最初に読み込まれたときに自分のテーブルを作ります。ネットワークからサイトを削除すると、そのサイトのログも一緒に削除します。大きなネットワークで停止するときは、サイトを 500 件ずつ処理します。12. 停止と削除
- 停止:毎時のまとめと毎日の削除の予定を外します。ログと設定は残ります
- 削除:ログのテーブル
{接頭辞}rapls_cn_log、設定rapls_cn_settings、名前がrapls_cn_で始まるオプションと一時データを消します。別売りの Pro アドオンの設定は残します。元に戻せません。マルチサイトでは、ネットワーク内のすべてのサイトで消します
SETTINGS : プラグイン設定画面
画面は、日本語訳を入れた状態で撮っています。無料版の日本語訳は translate.wordpress.org から配信されるまで、管理画面は英語で表示されます。
WordPress の管理画面「ツール > Rapls Copy Notice」の 1 ページだけで、上のタブで切り替えます。見られるのはmanage_options 権限のあるユーザー (通常は管理者) です。設定はタブごとに保存します。正しくない値を入れて保存すると、直した欄の名前が通知に出ます。 Log (ログ) タブ

- Date (日時):サイトのタイムゾーンと日付形式で表示。この列で並べ替えできます (既定は新しい順)
- Post (投稿):タイトルと ID。行にマウスを乗せると Show only this post (この投稿だけ表示) が出ます
- Copied text (コピーされた文):先頭 80 文字と元の選択の文字数。長い文はクリックすると保存した全文 (最大 500 文字) が開きます。段落の指紋があれば Copies of this paragraph が出ます
- IP:保存した IP アドレス。既定では短くした形 (例
203.0.113.0) - Browser (ブラウザー):「Chrome on macOS」のような要約。クリックするとユーザーエージェントの全文が開きます。その下に Came from: (参照元) のホスト名
Notifications (通知) タブ

- Send notifications to (通知の送信先):宛先を 1 つ。空ならサイトの管理者メールアドレス。正しくないアドレスは保存せず、そのあいだの通知がどこに届くかを通知で知らせます。既定は空
- Email subject (メールの件名):件名の真ん中に入る文言。改行は取り除きます。最大 100 文字。既定は Copy notification
- When to send (送るタイミング):One summary email per hour (1 時間に 1 通のまとめ) / One email per copy, right away (コピーごとにすぐ 1 通)。既定はまとめ
- Instant email limit (即時メールの上限):即時モードで 1 時間に送る上限。超えた分は次の毎時のまとめに入ります。1〜1000 通、既定 20
- Test email (テストメール):Send a test email ボタン。いまの送信先に固定の文面を送ります
Detection (検出) タブ

- Minimum length (最小文字数):この文字数以上のコピーを記録します。1〜500 文字、既定 20
- Post types (投稿タイプ):監視する投稿タイプ。公開されている投稿タイプ (メディアを除く) から選びます。既定は投稿・固定ページ。1 つも選ばないと、タブに警告が出ます
- Find the post body (本文を見つける):本文の最後に空の非表示要素を 1 つ足し、その親要素を本文の範囲として使います。オンのとき、下の Content area は予備になります。既定はオフ
- Content area (本文の範囲):本文を囲む要素の CSS セレクター。カンマ区切りで前から順に試し、ページで最初に何かに一致したものを使います。既定は
.entry-content, .post-content, article - Ignore logged-in users with these roles (この権限グループのログインユーザーは無視):選んだ権限グループでログインしているユーザーには、検出のスクリプトを読み込みません。既定は管理者・編集者
- Ignore IP addresses (無視する IP アドレス):1 行に 1 つ。
192.0.2.0/24のような範囲も使えます。ログに出ている短くしたアドレスをそのまま貼れば、そのアドレスに短くされる訪問者をすべて無視します (例:192.0.2.0で192.0.2.0〜192.0.2.255)。最大 500 件 NEW - Ignore posts (無視する投稿):投稿 ID を 1 行に 1 つ。ID はログのタイトルの後ろに #123 の形で出ています。最大 500 件
- Trusted proxies (信頼するプロキシ):リバースプロキシや CDN の IP アドレス (範囲も可)。その後ろにないサイトは空のままにします。最大 500 件
- Limit per IP (IP ごとの上限):1 つの IP アドレスから 1 分間に受け付ける報告の数。1〜1000、既定 10。IPv6 はネットワーク (/64) 単位で数えます。1 つのアドレスは、1 時間にサイト全体の上限の 5 分の 1 まで (既定 100 件) に抑えます
- Limit for the site (サイト全体の上限):サイト全体で 1 時間に受け付ける報告の数。1〜100000、既定 500
<span class="rapls-cn-content-marker" hidden></span>
Privacy (プライバシー) タブ
- IP addresses (IP アドレス):Shorten IP addresses before storing them (保存する前に短くする)。オフにすると完全なアドレスを保存します。すでに保存した記録は書き換えません。既定はオン
- Keep log entries for (ログの保存期間):この日数より古い記録を、1 日 1 回の処理で削除します。1〜3650 日、既定 90
- Privacy policy (プライバシーポリシー):Suggested text for your privacy policy (プライバシーポリシーの文例) のリンクから、「設定 > プライバシー」のポリシーガイドを開きます
Visitors (読者向け) タブ

- Message after copying (コピー後のメッセージ):Show a short message to the reader after they copy。画面の下に 5 秒間表示します。既定はオフ
- Message (メッセージ):表示する文。テキストのみ、最大 200 文字。空なら既定の文 (Thank you for reading. If you quote this article, please link to it.) を使います
- Source link (出典リンク):Add the post title and URL to copied text。コピーした文に投稿のタイトルと URL を付けます。既定はオフ
- Source label (出典のラベル):タイトルの前に付ける文字。最大 50 文字。空なら Source: を使います
Pro features (Pro の機能) タブ
別売りの Pro アドオンの説明だけを載せたタブです。設定の項目はなく、無料版の機能を制限するものでもありません。Log タブと Notifications タブの下の短い案内、プラグイン一覧の行のリンクも同じ扱いです。Pro を有効にするとすべて消えます。rapls_cn_show_upsell フィルターで隠すこともできます (DEVELOPERS を参照)。 PRIVACY : 訪問者のデータの扱い
コピーの報告に含まれるものは、すべて訪問者のブラウザーから来ます。プラグインはそのすべてを信用しない前提で扱います。受け付けるときの確認
- 回数の上限:既定では 1 つの IP アドレスから 1 分に 10 件、サイト全体で 1 時間に 500 件まで。1 つのアドレスは 1 時間に 100 件までです。超えた報告は保存もメールもしません
- 実在する投稿だけ:公開中で監視対象の投稿への報告だけを受け付けます
- 長さの上限:コピーされた文は 500 文字、ユーザーエージェントと参照元のホスト名は 255 文字で切ります
- 何も返さない:受け口は状態コードだけを返し、本文は空です
- 除外は黙って捨てる:無視する IP・無視する投稿に当たった報告は、ほかの報告と同じ応答を返して捨てます
IP アドレスの扱い
訪問者の IP アドレスは、直接の接続元 (REMOTE_ADDR) から取ります。X-Forwarded-For は誰でも偽れるので、通常は使いません。Detection タブの Trusted proxies に登録したアドレスから来たリクエストに限り、X-Forwarded-For を右から順に見て、登録したプロキシではない最初のアドレスを訪問者の IP とします。 保存の前に短くします (既定)。例:203.0.113.45 → 203.0.113.0、2001:db8:85a3:1:2:3:4:5 → 2001:db8:85a3::。設定を変えても、すでに保存した記録は書き換えません。 保存するもの
1 回のコピーにつき、専用テーブルに次を 1 行保存します。日時 (UTC)、投稿 ID、コピーされた文 (最大 500 文字)、元の選択の文字数、IP アドレス、ユーザーエージェント (最大 255 文字)、参照元のホスト名 (最大 255 文字)、段落の指紋 (HTTPS のときだけ)、通知済みかどうか。参照元はホスト名だけで、URL のパスやクエリは送りません。コピーされた文は、コピーされたままの形で保存します。表示するときにエスケープします。しないこと
- Cookie を使わず、ブラウザーには何も保存しません。回数の制限のためだけに、IP アドレスを元に戻せない形に変えた値を最長1時間使います
- 外部のサービスに何も送りません。報告は自分のサイトにだけ届き、メールは WordPress のメール機能で送ります
- クリップボードの中身は読みません。読むのはページで選択されている文字だけです
- 入力欄や編集できる領域からのコピーは記録しません
- ログや件数を
wp_optionsに保存しません
回数の上限の数え方
回数は WordPress の一時データ (transient) で数えます。オブジェクトキャッシュがないサイトでは、これがwp_options に入ります。量が増えないように、キーは IP ごとに 1 つで 1 時間で期限が切れ、自動読み込みはしません。サイト全体の上限を先に確かめるので、IP ごとのキーが 1 時間にサイト全体の上限より多く作られることはありません。キーには IP アドレスそのものではなくハッシュを使います。同時に届いたリクエストでも上限を超えないよう、1 件ずつ数えます。保存先は「サイトヘルス > 情報」の Rate-limit counters stored in でわかります。 プライバシーポリシーの文例
「設定 > プライバシー」のポリシーガイドに文例を追加します。次の 4 段落です。文例は英語です。- 記録する項目:コピーされた文、選択の長さ、投稿、日時、ユーザーエージェント、参照元のホスト名、段落の指紋 (段落の文は含まない)、IP アドレス
- IP アドレス NEW:Privacy タブの設定に合わせて変わります。短くする設定なら短くして保存すること、オフなら完全なアドレスを保存することを書きます
- 使い道:管理者へのメール通知だけに使い、ほかの誰にも、外部のサービスにも送らないこと。メールはサイトのメールの仕組み (外部のメール事業者のこともある) を通ること。ブラウザーには Cookie も識別子も保存せず、IP アドレスを元に戻せない形に変えた値を最長1時間だけ使うこと
- 保存期間:Keep log entries for の日数で自動で削除されること
FAQ : よくある質問
コピーを防げますか
防げません。このプラグインは防ぐためのものではありません。選択や右クリックを禁止すると普通の読者の邪魔になり、本気でコピーしたい人は止められません。何がコピーされているかを知らせることだけをします。無料で使えますか
使えます。コピーの検出、ログ、メール通知など、このページの FEATURES と SETTINGS にある機能はすべて無料版のものです。期限や件数の制限はありません。統計、チャット通知、転載の検索などが要るときだけ、別売りの Pro アドオンを足してください。何も記録されません
- ログアウトして試す:管理者と編集者は既定で数えません。プライベートウィンドウで試してください
- 投稿の個別ページで、本文から 20 文字以上コピーする:トップページ、アーカイブ、サイドバーでは数えません。コメント欄やフォームなどの入力欄からのコピーも記録しません
- 本文の範囲を確かめる:テーマが本文を
.entry-content・.post-content・articleのどれでも囲んでいないと、どのコピーも範囲外になります。Detection タブの Find the post body をオンにするか、Content area にテーマに合うセレクターを書いてください - キャッシュを消す:Detection の設定を変えたあとは、ページキャッシュを削除してください。JavaScript をまとめたり遅らせたりする最適化を使っている場合は、
rapls-copy-notice.jsを対象から外して確かめてください - REST API が止められていないか:セキュリティ系のプラグインで、ログインしていない人の REST API を止めていると報告が届きません。
/wp-json/rapls-copy-notice/v1/logを許可してください
通知メールが届くか確かめたい
Notifications タブの Send a test email を押してください。通知の送信先に短い固定の文面を送ります。届かないときは、迷惑メールのフォルダとサイトのメール設定を確かめてください。多くのサーバーでは SMTP プラグインが必要です。まとめのメールが遅れて届きます
まとめは WP-Cron で送ります。WP-Cron はサイトにアクセスがあったときに動くので、アクセスの少ないサイトでは、毎時ちょうどではなく、その後の最初のアクセスで送られます。wp-config.php で DISABLE_WP_CRON を使っている場合は、サーバーの cron で wp-cron.php を定期的に呼んでいるか確かめてください。遅れはサイトヘルスの「予定された処理」と「通知の配信」の検査でわかります。 IP アドレスがどれも同じになります
サイトが Cloudflare などの CDN やリバースプロキシの後ろにあり、プロキシのアドレスが記録されています。その場合、IP ごとの上限もすべての訪問者で分け合うことになります。プロキシの IP アドレスか範囲を、Detection タブの Trusted proxies に 1 行に 1 つ書いてください。登録前に保存された記録の IP は変わりません。IP アドレスの最後が 0 になっています
故障ではありません。既定で IP アドレスを短くしてから保存しています (Privacy タブ)。そのアドレスを Ignore IP addresses にそのまま貼れば、同じアドレスに短くされる訪問者をまとめて無視できます。Google アナリティクスなどでコピーを数えられますか
プラグインからは送りません。ページで発生するrapls-cn:copy イベントを、自分のスクリプトで受けて送ってください (下の DEVELOPERS を参照)。イベントはサイトが上限や無視する IP を確かめる前にブラウザーで発生するので、数はログより少し多くなることがあります。 以前使っていたプラグインから移れますか
移れます。Check Copy Contents (すでに保守されていないプラグイン) と同じ用途を扱いますが、一から書いた別のプラグインです。以前のプラグインの設定がデータベースに残っていれば、最初の有効化のときに、通知の送信先、最小文字数、独自に設定していた件名を引き継ぎます。引き継いだ値は、通常の保存と同じ検査を通してから使います。 引き継いだあとは、以前のプラグインを停止してください。停止しないと、1 回のコピーでメールが 2 通届きます。両方が有効なあいだは、管理画面に案内が出ます。以前のプラグインの記録 (過去のコピー) は移しません。Pro 版との違いは
Pro は別のプラグインで、無料版に統計、Slack・Discord・Chatwork・Webhook への通知、振り分けルールと急増アラート、転載の検索、CSV 書き出しを足します。無料版の動作は、Pro の有無で変わりません。価格は 1 サイト ¥1,980 / 5 サイト ¥4,980 (いずれも税込) の買い切りです。サポートはどこで受けられますか
WordPress.org のサポートフォーラムで質問してください。「サイトヘルス > 情報」の Rapls Copy Notice の節を添えると、状況が早く伝わります。ADVANCED FILTERS : フィルターフック
functions.php や独自のプラグインにフィルターを書いて、挙動を広げられます。訪問者のブラウザーから来た値は、保存したままの形で渡します。行の配列のうちid・created_at・post_id・text_length 以外は、すべて訪問者から来た値です。出力する場所に合わせて、必ずエスケープしてください。 通知メールに載せる行を選ぶ (rapls_cn_email_rows)
引数は行の配列と'instant' か 'digest'。空の配列を返すと、その通知のメールは送りません (処理済みとして扱います)。特定の投稿のコピーだけをメールから外す例です。 add_filter( 'rapls_cn_email_rows', function ( $rows, $context ) {
return array_filter( $rows, function ( $row ) {
return 42 !== (int) $row['post_id'];
} );
}, 10, 2 ); メール以外にも届ける (rapls_cn_notification_delivered)
引数は$delivered (ここまでに届けられたか)、行の配列 (まとめでは最大 5,000 件)、件数、'instant' か 'digest'。届けたら true、そうでなければ $delivered をそのまま返します。true を返すと、メールが失敗していても記録は「知らせ済み」になります。 add_filter( 'rapls_cn_notification_delivered', function ( $delivered, $rows, $total, $context ) {
$response = wp_remote_post( 'https://example.com/copy-hook', array(
'body' => array(
'count' => $total,
'context' => $context,
),
) );
if ( ! is_wp_error( $response ) && 200 === wp_remote_retrieve_response_code( $response ) ) {
return true;
}
return $delivered;
}, 10, 4 ); プライバシーポリシーの文例を変える (rapls_cn_privacy_policy_paragraphs)
引数はテキストの段落の配列で、キーはcollected・ip・use・retention。出力のときにエスケープされるので、HTML は書けません。コピーの記録を外に送るアドオンは use を書き換えてください。 add_filter( 'rapls_cn_privacy_policy_paragraphs', function ( $paragraphs ) {
$paragraphs['use'] = 'This information is emailed to the site administrator and posted to our team chat.';
return $paragraphs;
} ); Pro の案内を隠す・リンク先を変える (rapls_cn_show_upsell / rapls_cn_pro_url)
rapls_cn_show_upsell に false を返すと、Pro features タブと関連する案内が消えます。rapls_cn_pro_url は、案内から開く Pro のページの URL です (既定は管理画面の言語に合わせて日本語版か英語版の販売ページ)。 add_filter( 'rapls_cn_show_upsell', '__return_false' );
管理画面にタブを足す (rapls_cn_admin_tabs)
キーとラベルの配列を返します。既存のタブは置き換えも削除もできません。中身はrapls_cn_render_tab_{key} アクションで出力します。権限の確認とエスケープは、コールバック側で行ってください。 add_filter( 'rapls_cn_admin_tabs', function ( $tabs ) {
$tabs['notes'] = 'Notes';
return $tabs;
} );
add_action( 'rapls_cn_render_tab_notes', function () {
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
echo '<p>' . esc_html__( 'Notes for editors.', 'my-textdomain' ) . '</p>';
} ); このほか、rapls_cn_is_pro (既定 false、Pro アドオンが true にします) があります。 ACTION HOOKS : アクションフック
コピーを保存した直後 (rapls_cn_logged)
引数は行の ID と、保存した値の配列です。add_action( 'rapls_cn_logged', function ( $log_id, $row ) {
// $row['copied_text'] などは訪問者から来た値。出力するときはエスケープする。
error_log( sprintf( 'copy #%d on post %d', $log_id, $row['post_id'] ) );
}, 10, 2 ); ログをすべて削除した直後 (rapls_cn_log_emptied) NEW
Delete all entries ですべての記録を消したあとに発生します。引数はありません。新しい記録の ID は 1 から振り直されるので、記録の ID を持っているアドオンは、ここで捨ててください。add_action( 'rapls_cn_log_emptied', function () {
delete_option( 'myplugin_pending_log_ids' );
} ); 管理画面の出力前 (rapls_cn_admin_load)
引数は表示中のタブのキーです。追加したタブのフォーム処理などに使います。add_action( 'rapls_cn_admin_load', function ( $tab ) {
if ( 'notes' !== $tab ) {
return;
}
// 追加したタブのフォーム処理 (権限と nonce を確かめてから)
} ); ページ上のイベント rapls-cn:copy
プラグイン自身はアクセス解析のサービスに何も送りません。自分のスクリプトで解析ツールに渡したいときのために、スクリプトがコピーを報告するたびに、ページのdocument で rapls-cn:copy イベントを発生させます。detail には投稿 ID と選択の文字数が入ります。コピーされた文は入りません。 document.addEventListener( 'rapls-cn:copy', function ( e ) {
// e.detail.postId : 投稿 ID
// e.detail.length : 選択の文字数
console.log( e.detail.postId, e.detail.length );
} ); イベントはブラウザーが報告を送った時点で発生します。サイト側で上限や除外によって捨てられた報告でも発生します。 CHANGE LOG : バージョン履歴
- 1.3.17初回リリース。
RELATED PAGES : 関連ページ
Free 版
- 無料版マニュアル (日本語) – タブごとの操作手順、通知メールの読み方、困ったときの確認手順
- Free Manual (English)
- WordPress.org のプラグインページ
- サポートフォーラム
