由于 Ripro 主题没有提供 pre 标签的自动复制代码功能,我在网上搜索了一番,却发现大多数相关资源都是收费的。
因此,我决定尝试使用 AI 来实现这个功能。经过多次调整提示词,最终成功了。
将以下代码添加到主题的 functions.php 文件中,即可完美实现该功能。本站的效果正是基于以下代码。
//为pre标签添加复制按钮 function add_copy_code_button() { ?> <!-- 引入 Clipboard.js 库 --> <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.8/clipboard.min.js"></script> <script> document.addEventListener("DOMContentLoaded", function () { // 初始化 Clipboard.js var clipboard = new ClipboardJS('.copy-btn'); // 添加复制按钮的逻辑 function createCopyButton(preBlock, index) { // 包裹 pre 标签,创建一个相对定位的容器 var wrapper = document.createElement('div'); wrapper.style.position = 'relative'; wrapper.style.display = 'inline-block'; preBlock.parentNode.insertBefore(wrapper, preBlock); wrapper.appendChild(preBlock); // 创建复制按钮 var button = document.createElement('button'); button.textContent = '复制'; button.className = 'copy-btn'; button.style.position = 'absolute'; button.style.top = '3px'; button.style.right = '3px'; button.style.background = 'transparent'; button.style.color = 'white'; button.style.border = 'none'; button.style.fontSize = '10px'; button.style.cursor = 'pointer'; button.style.zIndex = '10'; button.style.transition = 'color 0.3s ease'; button.setAttribute('data-clipboard-target', '#code-block-' + index); wrapper.appendChild(button); // 为 pre 添加唯一 ID preBlock.id = 'code-block-' + index; } // 遍历所有 <pre> 标签并添加复制按钮 document.querySelectorAll('pre').forEach(createCopyButton); // 成功复制事件 clipboard.on('success', function (e) { var button = e.trigger; button.textContent = '✔ 复制成功'; button.style.color = '#e74c3c'; setTimeout(function () { button.textContent = '复制'; button.style.color = 'white'; }, 3000); //5秒后恢复 e.clearSelection(); }); // 复制失败事件 clipboard.on('error', function (e) { var button = e.trigger; button.textContent = '✘ 复制失败'; button.style.color = '#e74c3c'; setTimeout(function () { button.textContent = '复制'; button.style.color = 'white'; }, 3000); //5秒后恢复 }); }); </script> <?php } add_action('wp_footer', 'add_copy_code_button');
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。Bzdrj.com 本站分享的WordPress主题/插件均遵循GPLv2 许可协议(免费开源),相关介绍资料仅供参考,实际版本可能会因版本迭代或开发者调整而产生变化。如程序中涉及有第三方原创图像、设计模板、远程服务等内容,应获得作者授权后方可使用。本站不提供该程序/软件的产品授权与技术服务,亦不收取相关费用。
评论(0)