WordPress后台删除文章通常是先把文章移至回收站,再前往回收站永久删除文章或者清空回收站,操作不方便。
可通过模板函数文件(functions.php),在文章列表中添加一个删除、删除(含图片)的链接按钮,方便快速删除文章或删除文章并删除图片。
使用方法
复制以下代码,粘贴到当前主题的模板函数文件中(functions.php)并更新文件。
代码:
// 在文章行动作中添加自定义操作按钮
add_filter('post_row_actions', 'custom_post_row_actions', 10, 2);
function custom_post_row_actions($actions, $post) {
// 添加仅删除文章的链接
$actions['delete_without_images'] = '<a href="' . wp_nonce_url(admin_url('admin.php?action=delete_post_without_images&post=' . $post->ID), 'delete-post_without_images_' . $post->ID) . '" onclick="return confirm(\'确定要删除这篇文章吗?\')" style="color: blue;">删除</a>';//方便区分删除链接按钮,增加了蓝色醒目提示
// 添加删除文章及图片的链接
$actions['delete_with_images'] = '<a href="' . wp_nonce_url(admin_url('admin.php?action=delete_post_with_images&post=' . $post->ID), 'delete-post_with_images_' . $post->ID) . '" onclick="return confirm(\'确定要删除这篇文章及其图片吗?\')" style="color: red;">删除(含图片)</a>';//方便区分删除链接按钮,增加了红色醒目提示
return $actions;
}
// 添加文章删除动作
add_action('admin_action_delete_post_with_images', 'delete_post_with_images');
add_action('admin_action_delete_post_without_images', 'delete_post_without_images');
// 删除文章及其图片的函数
function delete_post_with_images() {
// 检查nonce
check_admin_referer('delete-post_with_images_' . $_GET['post']);
// 获取文章ID
$post_id = intval($_GET['post']);
// 删除文章及其图片
delete_post_images($post_id);
// 重定向到文章列表
wp_redirect(admin_url('edit.php?post_type=post&deleted=true'));
exit;
}
// 仅删除文章的函数
function delete_post_without_images() {
// 检查nonce
check_admin_referer('delete-post_without_images_' . $_GET['post']);
// 获取文章ID
$post_id = intval($_GET['post']);
// 仅删除文章
wp_delete_post($post_id, true);
// 重定向到文章列表
wp_redirect(admin_url('edit.php?post_type=post&deleted=true'));
exit;
}
// 删除文章及其图片的函数
function delete_post_images($post_id) {
// 获取文章内容
$post_content = get_post_field('post_content', $post_id);
// 使用正则表达式匹配所有图片
preg_match_all('/<img[^>]+src=[\'"]([^\'"]+)[\'"][^>]*>/i', $post_content, $matches);
// 如果找到图片
if (isset($matches[1]) && count($matches[1]) > 0) {
foreach ($matches[1] as $image_url) {
// 从完整的URL中提取文件名
$file_path = parse_url($image_url, PHP_URL_PATH);
$file_name = basename($file_path);
// 构造完整的文件路径
$upload_dir = wp_upload_dir();
$file = $upload_dir['basedir'] . '/' . $file_name;
// 如果文件存在,则删除
if (file_exists($file)) {
@unlink($file); // 使用@符号抑制错误信息
}
// 同时删除数据库中的图片记录
$attachment_id = attachment_url_to_postid($image_url);
if ($attachment_id) {
wp_delete_attachment($attachment_id, true); // 尝试删除附件,true表示从数据库中删除
}
}
}
// 获取特色图片ID
$thumbnail_id = get_post_meta($post_id, '_thumbnail_id', true);
if ($thumbnail_id) {
// 删除特色图片
wp_delete_attachment($thumbnail_id, true);
}
// 删除文章
wp_delete_post($post_id, true);
}
欢迎访问秀主题博客,分享简单实用WP教程