在 WordPress 中,您可以通过在主题的 functions.php 文件中添加代码片段,为每个文章分类设置默认特色图片。此代码会检查文章是否已分配了特色图片;如果没有,则根据文章的分类设置一个默认图片。

根据分类分配默认特色图片的代码

  1. 打开主题的 functions.php 文件(最好在子主题中操作,以避免更新时丢失更改)。
  2. 添加以下代码,并用每个分类的默认图片 URL 替换示例 URL:
function set_default_thumbnail($post_id) {
if (has_post_thumbnail($post_id)) {
return;
}// 定义每个分类的默认图片
$default_images = [
‘category-1’ => ‘https://your-site.com/wp-content/uploads/category-image1.jpg’,
‘category-2’ => ‘https://your-site.com/wp-content/uploads/category-image2.jpg’,
‘category-3’ => ‘https://your-site.com/wp-content/uploads/category-image3.jpg’,
];

// 获取文章分类
$categories = get_the_category($post_id);

// 检查是否分配了分类,并查找匹配的默认图片
foreach ($categories as $category) {
if (array_key_exists($category->slug, $default_images)) {
$image_url = $default_images[$category->slug];

// 下载图片并设置为特色图片
$image_id = attach_image_from_url($image_url, $post_id);
if ($image_id) {
set_post_thumbnail($post_id, $image_id);
}
break;
}
}
}
add_action(‘save_post’, ‘set_default_thumbnail’);

// 函数:从 URL 下载图片并附加到文章
function attach_image_from_url($image_url, $post_id) {
$upload_dir = wp_upload_dir();
$image_data = file_get_contents($image_url);
$filename = basename($image_url);

if (wp_mkdir_p($upload_dir[‘path’])) {
$file = $upload_dir[‘path’] . ‘/’ . $filename;
} else {
$file = $upload_dir[‘basedir’] . ‘/’ . $filename;
}

file_put_contents($file, $image_data);

$wp_filetype = wp_check_filetype($filename, null);
$attachment = [
‘post_mime_type’ => $wp_filetype[‘type’],
‘post_title’ => sanitize_file_name($filename),
‘post_content’ => ”,
‘post_status’ => ‘inherit’
];

$attach_id = wp_insert_attachment($attachment, $file, $post_id);
require_once(ABSPATH . ‘wp-admin/includes/image.php’);
$attach_data = wp_generate_attachment_metadata($attach_id, $file);
wp_update_attachment_metadata($attach_id, $attach_data);

return $attach_id;
}


代码说明

  • $default_images:使用分类别名作为键、图片 URL 作为值,定义每个分类的默认图片。
  • set_default_thumbnail:当文章被保存时运行此函数。如果文章没有特色图片,它会找到 $default_images 中第一个匹配的分类并设置为特色图片。
  • attach_image_from_url:此函数从 URL 下载图片并将其附加到文章,生成特色图片。

此代码将根据文章的分类自动分配默认特色图片,适用于新文章或编辑的文章。

注意:确保在开发环境中测试此代码,然后再在正式网站上实施,并用实际的默认图片 URL 替换示例 URL。