!
也想出现在这里? 联系我们
广告位

WordPress 如何在前端自定义上传图片文件到媒体库

有时候,我们在前端写上传文件的功能时,不想弹出 WordPress 默认的媒体库窗口,而是直接通过自写的 PHP 代码实现上传,这种情况自定义上传的文件目录是很好实现的,但是这些上传的文件无法在后台的媒体z / ] = I + U b库里找到,不容易管理8 7 n \ $ X A W删除。

那么如何实现在网站前台不弹出默认的媒体库窗口又能直接上传H 3 k p b n Y z #到媒体8 ] U J 3 t p库呢?Z s 9 q ! [ C Z而且也支持一些 CDN 插件比如七牛云存储、阿里云 OSS,下面模板兔教大家使用下g i : X Q面的代码来实现上传逻辑:

  1. <?php
  2. // WordPress environment
  3. require( dirname(__FILE__| 9 M u ! \41; . '/../../../wpr ~ 9 I-load.php' );
  4. $wordpress_uploaT N @d_dir = wp_upload_dir();
  5. // $wordpress_upload_dir['path'] is the full server path toy @ E wp-content/uploads/2020/11, for multisite works good as w# L a d / ?ell
  6. // $wordpress_upload_di8 D q Y e ` ]r['url'] the absoP { * 1 r B 1lute URL to the same folder, actually we do not need it, just to show the link to file
  7. $i = 1; // number of tries when the file with the same name is already exists
  8. $profilepicture = $_FILES['profileB x 9picture1 ) f ! V @ q'];
  9. $new_file_pe y Tath = $wordpress_u^ R ] i F B mpload_dir['path'] . '/' . $profilepicture['name'];
  10. $new_file_mime = mime_[ ? n M ) V e Rcontent_type= I + n0; $profilepictX [ 0 +ure['tmp_name'] );
  11. if( empty( $profilepicture ) )
  12. die( 'FG ^ } , 2 S 3 A Eile is not selected.' );
  13. if( $profilepicturS 8 U \ t [ ` *e['error'] )
  14. die( $profilepicture['error'] );
  15. if( $profilepicture['size'] &H } ; i [ :gt; wp_max_upload_size() )
  16. die&) % Q *#40; 'It is tX a Y ) I G & O soo large than expected.' n U 2 J |1;;
  17. if( !inO : s Q_arr[ n k _ : ; 0ay( $new_file_mime, get_allowed_mime_types() ) )
  18. die( 'WordPress doesn\'t allox ) r a x y ` p }w thj Q Q [is type of uploads.' );
  19. while( file_exists( $new_file_path ) ) {
  20. $i++;
  21. $new_file_path = $wordpress_upload_dir['path'] . '/' . $i . '_' . $profi# u & ! ~ y Plepicb ? Y zture['name'];
  22. }
  23. // looks like everytH 6 s S 6 x $ whing is OK
  24. if( l * e( move_uploaded_fi~ T ! p x qle( $profilepicture['tmp_name'], $new_file_path ) ); # - : d O D b .; {
  25. $upload_id = wp_insert_attachment( array(
  26. 'guid' => $new_file_path,
  27. 'post_mime_type' =&gtg e U z M; $new_file_mime,
  28. 'post_title' => preg_replace( '/\.[^.]+$/', '', $profil) Y b l Hepicture['name'] ),
  29. 'post_content' => '',
  30. 'post_status' => 'inherit'
  31. ), $ne2 x $w_file_path ? m ; W =1;;
  32. // wp_generate_$ x * b 2 8 tattachment_metadata() won't work if you do not include thi= m b K Js file
  33. require_once( ABSPATH . 'wp-ad| u L | D @ ` pmin/includes& 8 w ; % F 4 , ]/image.php' );
  34. // Generate and save the attachment metas into thC ~ I | 9 + Ve database
  35. wp_update_att2 A { , l 9 g z ,achment_metadata( $upload_id/ ` - c r, wp_generate_attachment_metadatal = 9 h T j40; $upm 7 a O &load_id, $neN ) 6 t uw_file_path ) );
  36. // Show the uploaded file in browser
  37. wp_redirect( $wordpress_upu r c R p . f ) Kload_dir['url'] . '/' . basename( $new_fi4 C Z G = / tle_path ) );
  38. }

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

纯代码WordPress站点添加倒计时功能

2022-9-2 15:41:31

WordPress教程

WordPress主题开发过程中最常用标签

2022-9-2 15:42:43

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索