
寫了一篇用心的文章,過幾天發現被別的網站整篇貼走、連出處都沒有,是很多站長都遇過的事。這篇整理兩種常見的做法:
- 每篇文章最後自動加上版權聲明(或簽名檔):不用一篇一篇手動貼。
- 別人複製內容時,自動在後面附上出處:貼到 Word、LINE 或其他網站時,會帶著原文連結。
先說清楚:這兩種做法都是「提醒」和「方便對方註明出處」,擋不住真的要抄的人。後面會說明原因,以及發現被抄時可以怎麼處理。
(原本另一篇〈wordpress 在文章底部加入版權信息或者修改成簽名檔〉的內容已經整合到這裡。)
程式碼要放在哪裡?
下面的 PHP 程式碼都加在子主題的 functions.php,或用 Code Snippets 外掛新增。不要直接改主題本身的檔案,主題一更新就會被覆蓋。詳細說明可以看 WordPress functions.php 實用程式碼整理。動手前記得先備份網站。
方法一:每篇文章最後自動加上版權聲明
add_filter( 'the_content', 'ahwei_post_copyright', 20 );
function ahwei_post_copyright( $content ) {
// 只在單篇文章的本文加,其他地方不動
if ( ! is_singular( 'post' ) || ! in_the_loop() || ! is_main_query() || get_the_ID() !== get_queried_object_id() ) {
return $content;
}
$notice = sprintf(
'<div class="post-copyright"><p>本文為「%1$s」原創內容,歡迎分享,轉載請註明出處並附上原文連結:</p><p><a href="%2$s">%3$s</a></p></div>',
esc_html( get_bloginfo( 'name' ) ),
esc_url( get_permalink() ),
esc_html( get_the_title() )
);
return $content . $notice;
}網站名稱、文章標題、網址都會自動帶入,換網域或改網址也不用修改。開頭那一串判斷的用意:
is_singular( 'post' ):只在單篇「文章」頁加,頁面、首頁、分類列表都不加。想連「頁面」也加,改成is_singular( array( 'post', 'page' ) )。in_the_loop()和is_main_query():the_content不只在文章本文執行,小工具、外掛也可能呼叫它。加上這兩個判斷,版權聲明只會出現在本文最後。get_the_ID() !== get_queried_object_id():同一頁如果有其他文章的摘要(例如相關文章),不會被加上這一段。
改成簽名檔
文字可以自由改。例如想做成有作者名字的簽名檔,把 $notice 那一段換成:
$notice = sprintf(
'<div class="post-copyright"><p>✎ 作者:%1$s</p><p>本文連結:<a href="%2$s">%2$s</a></p><p>轉載請註明出處,謝謝!</p></div>',
esc_html( get_the_author() ),
esc_url( get_permalink() )
);加上外框樣式
再用 CSS 把它做成一個有底色、有邊框的區塊。傳統主題加在「外觀 → 自訂 → 額外 CSS」;區塊主題可以在「外觀 → 編輯器 → 樣式」裡找到額外 CSS 的設定。
.post-copyright {
margin: 2.5em 0 1em;
padding: 1em 1.25em;
border: 1px solid #cfe0f5;
border-left: 4px solid #4094ef;
border-radius: 6px;
background: #f5f9ff;
font-size: 0.95em;
line-height: 1.8;
}
.post-copyright p {
margin: 0;
}
.post-copyright a {
color: #c2185b;
word-break: break-all; /* 網址太長時自動換行,手機才不會破版 */
}舊做法:直接改 single.php
舊版教學是打開主題的 single.php,在 the_content() 下面直接貼一段 HTML。現在不建議這樣做:
- 主題更新時
single.php會被覆蓋,改過的東西就不見了。 - 區塊主題(例如 Twenty Twenty-Four)根本沒有
single.php可以改。 - 舊程式碼把網域寫死在連結裡,換網域或網址結構就會出錯;也用了已經淘汰的
align="center"寫法,CSS 還少了分號。
改用上面的 the_content 寫法就沒有這些問題,換主題也照樣有效。
不想寫程式的話,也可以把版權聲明存成可以重複使用的區塊,寫文章時手動插入。缺點是舊文章要一篇篇補,之後也可能忘記加。
RSS 也附上出處
有些網站會用程式自動抓 RSS 全文轉貼。在 RSS 的每篇內容後面加上原文連結,至少讓被轉貼出去的文章帶著你的出處:
add_filter( 'the_content_feed', function ( $content ) {
return $content . sprintf(
'<p>本文出自〈<a href="%1$s">%2$s</a>〉,原文刊登於 %3$s。</p>',
esc_url( get_permalink() ),
esc_html( get_the_title() ),
esc_html( get_bloginfo( 'name' ) )
);
} );也可以在「設定 → 閱讀」把 RSS 的文章內容改成只輸出摘要,對方就抓不到全文。
方法二:複製內容時自動附上出處
這段程式會在讀者複製文章內容時,在最後自動加上「出處:文章標題+網址」:
add_action( 'wp_footer', 'ahwei_copy_with_source' );
function ahwei_copy_with_source() {
if ( ! is_singular( 'post' ) ) {
return;
}
?>
<script>
document.addEventListener('copy', function (event) {
var selection = window.getSelection();
if (!event.clipboardData || !selection || selection.rangeCount === 0) return;
var text = selection.toString();
if (text.trim().length < 50) return; // 太短的不附加
// 在輸入框、程式碼區塊裡複製,保持原樣
var active = document.activeElement;
if (active && active.matches('input, textarea, [contenteditable="true"]')) return;
var node = selection.anchorNode;
var el = node && (node.nodeType === 1 ? node : node.parentElement);
if (el && el.closest('pre, code')) return;
var url = <?php echo wp_json_encode( get_permalink( get_queried_object_id() ) ); ?>;
var title = document.title;
// 純文字版本
event.clipboardData.setData('text/plain', text + '\n\n出處:' + title + '\n' + url);
// 保留格式的版本(貼到 Word、Email 時使用)
var box = document.createElement('div');
box.appendChild(selection.getRangeAt(0).cloneContents());
var p = document.createElement('p');
var a = document.createElement('a');
a.href = url;
a.textContent = title;
p.append('出處:', a);
box.appendChild(p);
event.clipboardData.setData('text/html', box.innerHTML);
event.preventDefault();
});
</script>
<?php
}不打擾正常讀者的設計
複製是讀者很常用的功能,這段程式刻意做了幾個限制:
- 選取少於 50 個字不附加:只是複製一個詞、一個電話、一個地址,不會被多塞兩行字。數字可以自己調整。
- 程式碼區塊、輸入框裡不附加:讀者複製程式碼時,拿到的是乾淨、可以直接用的內容。
- 原本的文字和格式都保留:只在最後多一段出處,貼到 Word 或 Email 時連結可以點。
- 用
addEventListener監聽:不會蓋掉其他外掛的複製功能。舊版程式碼用document.oncopy =的寫法,會把別的程式設定的複製功能蓋掉,而且是用「偷偷換掉選取範圍」的方式,現在改用瀏覽器標準的剪貼簿寫法比較穩定。
它擋不住真正要抄的人
- 對方貼上後,把最後兩行刪掉就好。
- 關掉 JavaScript、用瀏覽器的閱讀模式、直接看原始碼,都不會觸發。
- 用程式自動抓網頁的轉貼網站,根本不會執行 JavaScript。
所以把它當成「方便有禮貌的人註明出處」的小功能就好,不要期待它能防盜。
不建議:禁止右鍵、禁止選取文字
網路上也有「禁止右鍵」「禁止選取」「禁止複製」的程式碼或外掛,不建議使用:
- 一樣擋不住:看原始碼、關掉 JavaScript、截圖,都能拿到內容。
- 影響正常讀者:想複製地址、電話、程式碼,或選取一個不懂的詞去查,全都不行,手機長按也失效。
- 對輔助工具不友善:使用螢幕閱讀器、翻譯工具的讀者可能因此讀不到內容。
發現文章被抄了怎麼辦?
- 你本來就有著作權:在台灣,文章完成時作者就享有著作權,不需要登記。版權聲明只是提醒,沒加也一樣受保護。
- 保留證據:把對方的網頁截圖,記下網址與日期。
- 先聯絡對方:很多時候對方只是不清楚規矩,請他註明出處或下架,通常就能解決。
- 向平台或搜尋引擎檢舉:Google 有受理著作權侵權的移除要求,對方網站的主機商、社群平台也大多有侵權檢舉管道。
延伸閱讀
好內容是網站最重要的資產,值得用心經營,也值得好好保護。正威網路行銷是 25 年經驗的基隆網頁設計工作室,提供客製化網頁設計與 SEO 搜尋引擎優化,歡迎來聊聊。







發表留言
還沒有人留言,歡迎第一個分享你的想法或問題。留言經審核後才會顯示,Email 不會公開。