不得不说AI的强大,由于我网站有将近400篇下载模块的链接需要提取出来,然后配合我的下载按钮
[b2_insert_post id=”1942″]
本来感觉要折腾两三天才能整理完,突发奇想用AI做半自动的操作代码,没想到十几分钟就搞完了。。
代码逻辑
提取下载模块编辑框中的地址链接 → 将链接填入下载按钮设置中 → 自动点击下载按钮的插入按钮 → 关闭下载模块 → 删除下载模块的列表 → 点击更新文章
好家伙一套小连招,一会就整完了,如果搭配自动点开编辑页面,和自动切换文章列表页,我可能什么都不用干了,不过我还是手动打开文章了,想着看一眼别有什么差错
相关代码
[content_hide]
/**
* B2主题下载模块链接自动迁移
* 最终版:支持批量打开+自动更新保存+防重复执行
*/
function b2_auto_migrate_download_link() {
// 只在文章编辑页面执行
global $pagenow, $post;
if ($pagenow !== 'post.php' && $pagenow !== 'post-new.php') {
return;
}
// 获取当前文章ID(用于标记执行状态)
$post_id = isset($post->ID) ? $post->ID : 0;
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
// ========== 核心保护机制 ==========
// 1. 检查当前文章是否已执行过迁移(通过localStorage标记)
var postId = <?php echo $post_id; ?>;
var executedKey = 'b2_download_migrate_' + postId;
// 如果已执行过,直接退出
if (localStorage.getItem(executedKey)) {
console.log('文章ID ' + postId + ' 已执行过链接迁移,跳过');
return;
}
// 2. 增加随机延迟(避免多个标签页同时执行)
var randomDelay = 1500 + Math.floor(Math.random() * 2000); // 1.5-3.5秒随机延迟
// 等待页面完全加载(确保所有元素都已渲染)
setTimeout(function() {
try {
// ========== 步骤1:检查是否有可迁移的资源(提前过滤) ==========
var downloadUrlTextarea = $('#b2_single_post_download_group_0_url');
var deleteBtn = $('.cmb-remove-group-row.dashicons-no-alt');
// 如果没有资源链接或没有删除按钮,直接标记为已执行并退出
if (!downloadUrlTextarea.length || !deleteBtn.length) {
localStorage.setItem(executedKey, 'done');
console.log('文章ID ' + postId + ' 无迁移资源,标记为已处理');
return;
}
// ========== 步骤2:提取下载设置中的第一条资源链接 ==========
var rawContent = downloadUrlTextarea.val().trim();
var extractedUrl = '';
if (rawContent) {
// 按换行分割内容,只处理第一行
var lines = rawContent.split(/\r?\n/);
var firstLine = lines[0].trim(); // 只取第一行
// 解析第一行内容中的链接
if (firstLine.indexOf('|') !== -1) {
var parts = firstLine.split('|');
// 遍历第一行的所有部分找URL
parts.forEach(function(part) {
if (part.match(/https?:\/\/[^\s]+/i) && !extractedUrl) {
extractedUrl = part.trim();
}
});
} else {
// 直接匹配第一行中的URL
var urlMatch = firstLine.match(/https?:\/\/[^\s]+/i);
if (urlMatch) {
extractedUrl = urlMatch[0];
}
}
}
if (!extractedUrl) {
localStorage.setItem(executedKey, 'no_url');
console.log('文章ID ' + postId + ' 未提取到有效链接,标记为已检查');
return;
}
console.log('文章ID ' + postId + ' 提取到的第一条链接:', extractedUrl);
// ========== 步骤3:选择Linkdown类型 ==========
var linkdownRadio = $('input[name="download_type"][value="linkdown"]');
if (linkdownRadio.length) {
linkdownRadio.prop('checked', true);
linkdownRadio.trigger('change');
}
// ========== 步骤4:填入Linkdown输入框 ==========
var linkdownInput = $('#linkdown_url');
if (linkdownInput.length) {
linkdownInput.val(extractedUrl);
}
// ========== 步骤5:点击插入访问按钮 ==========
var insertBtn = $('#insert-linkdown-btn');
if (insertBtn.length) {
insertBtn.trigger('click');
console.log('文章ID ' + postId + ' 已插入访问按钮短代码');
}
// ========== 步骤6:删除原下载设置中的资源项 ==========
if (deleteBtn.length) {
window.confirm = function() { return true; };
deleteBtn.trigger('click');
delete window.confirm;
console.log('文章ID ' + postId + ' 已删除原下载设置中的资源项');
}
// ========== 步骤7:自动更新保存文章(核心新增功能) ==========
// 生成2-4秒的随机延迟,避免批量更新服务器压力
var saveDelay = 2000 + Math.floor(Math.random() * 2000);
setTimeout(function() {
// 找到更新按钮并点击
var updateBtn = $('#publish');
if (updateBtn.length && updateBtn.val() === '更新') {
console.log('文章ID ' + postId + ' 开始自动保存更新');
updateBtn.trigger('click');
// 标记为已完成(包含更新)
localStorage.setItem(executedKey, 'updated');
console.log('文章ID ' + postId + ' 自动更新完成,标记为已处理');
} else {
// 兼容新建文章的"发布"按钮(可选)
if (updateBtn.length && updateBtn.val() === '发布') {
console.log('文章ID ' + postId + ' 是新建文章,跳过自动发布');
localStorage.setItem(executedKey, 'draft_skipped');
} else {
console.log('文章ID ' + postId + ' 未找到更新按钮');
localStorage.setItem(executedKey, 'no_update_btn');
}
}
}, saveDelay);
} catch (e) {
console.error('文章ID ' + postId + ' 自动迁移下载链接出错:', e);
// 出错也标记为已检查,避免重复报错
localStorage.setItem(executedKey, 'error');
}
}, randomDelay); // 初始随机延迟,分散执行压力
});
</script>
<?php
}
add_action('admin_footer', 'b2_auto_migrate_download_link');
/**
* 可选:添加后台清理标记的功能(在工具菜单显示)
*/
function b2_clear_download_migrate_marks() {
add_management_page(
'清理下载迁移标记',
'清理下载迁移标记',
'manage_options',
'b2-clear-migrate-marks',
function() {
?>
<div class="wrap">
<h1>清理下载迁移标记</h1>
<p>点击下方按钮可清理浏览器中记录的文章迁移标记,让所有文章重新执行迁移逻辑。</p>
<button id="clear-marks-btn" class="button button-primary">清理所有标记</button>
<p id="clear-result" style="margin-top: 10px; color: green; display: none;">标记已清理完成!</p>
</div>
<script>
jQuery('#clear-marks-btn').click(function() {
// 遍历localStorage删除所有迁移标记
for (var i = 0; i < localStorage.length; i++) {
var key = localStorage.key(i);
if (key.indexOf('b2_download_migrate_') === 0) {
localStorage.removeItem(key);
}
}
jQuery('#clear-result').show();
setTimeout(function() {
jQuery('#clear-result').hide();
}, 3000);
});
</script>
<?php
}
);
}
add_action('admin_menu', 'b2_clear_download_migrate_marks');
[/content_hide]

我也想迁移主题了,B2好久没更新了
现在能比B2功能多、优化好的主题我还没遇到,只能这样先用着了。瓜奇现在没做好,子主题教程也没有,完全不会用,只能等了。😤