WordPress教程

WordPress上传图片时自动将图片重命名为文章标题

阿里云

为 WordPress 文章上传添加图片时自动重命名图片名称,可以简化操作过程序,之前的文章可以用时间或者 MD5 生成数字重命名所有媒体文件。这里再分享一段,在文章编辑时上传添加图片,自动将图片重命名为文章标题,并自动填充图片 ATL、说明、替代文本、描述等相关信息。将下面代码添加到当前主题函数模板 functions.php 中:

  1.     function file_renamer( $filename ) {
  2.     	$info = pathinfo( $filename );
  3.     	$ext  = empty( $info['extension'] ) ? '' : '.' . $info['extension'];
  4.     	$name = basename( $filename, $ext );
  5.     	if( $post_id = array_key_exists( "post_id", $_POST) ? $_POST["post_id"] : null ) {
  6.     		if($post = get_post($post_id)) {
  7.     			return $post->post_title . $ext;
  8.     		}
  9.     	}
  10.  
  11.     	$my_image_title = $post;
  12.     	$file['name'] = $my_image_title  . - uniqid() . $ext; // uniqid method
  13.     	// $file['name'] = md5($name) . $ext; // md5 method
  14.     	// $file['name'] = base64_encode( $name ) . $ext; // base64 method
  15.     	return $filename;
  16.     }
  17.  
  18.     add_filter( 'sanitize_file_name', 'file_renamer', 10, 1 );
  19.  
  20.     // 上传时自动设置图像标题、替代文本、标题和描述
  21.     add_action( 'add_attachment', 'my_set_image_meta_upon_image_upload' );
  22.     function my_set_image_meta_upon_image_upload( $post_ID ) {
  23.  
  24.     	// 检查上传的文件是否是图片
  25.     	if ( wp_attachment_is_image( $post_ID ) ) {
  26.  
  27.     		if( isset( $_REQUEST['post_id'] ) ) {
  28.     			$post_id = $_REQUEST['post_id'];
  29.     		} else {
  30.     			$post_id = false;
  31.     		}
  32.  
  33.     		if ( $post_id != false ) {
  34.     			$my_image_title = get_the_title( $post_id );
  35.     		} else {
  36.     			$my_image_title = get_post( $post_ID )->post_title;
  37.     		}
  38.  
  39.     		// 清理标题中特殊字符
  40.     		$my_image_title = preg_replace( '%\s*[-_\s]+\s*%', ' ',  $my_image_title );
  41.  
  42.     		// 将第一个字母大写
  43.     		$my_image_title = ucwords( strtolower( $my_image_title ) );
  44.  
  45.     		// 创建包含标题、说明、描述的数组
  46.     		$my_image_meta = array(
  47.     			'ID'        => $post_ID,             // ID
  48.     			'post_title'    => $my_image_title,  // 图像标题
  49.     			'post_excerpt'  => $my_image_title,  // 图像说明
  50.     			'post_content'  => $my_image_title,  // 图像描述
  51.     		);
  52.  
  53.     		// 添加图像 Alt
  54.     		update_post_meta( $post_ID, '_wp_attachment_image_alt', $my_image_title );
  55.  
  56.     		// 添加标题、说明、描述
  57.     		wp_update_post( $my_image_meta );
  58.     	}
  59.     }
也想出现在这里?联系我们
创客主机

提示:上面的方法只适合在文章编辑页面使用,如果在媒体库上传无效。另外,图片名称为中文貌似有的主机环境并不支持。

WordPress 上传图片时自动将图片重命名为文章标题

已有 306 人购买
查看演示升级 VIP立刻购买

收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!