如何使用钩子定制WordPress添加媒体界面,去除不需要的元素

简介:

WordPress编写文章界面的添加媒体按钮允许用户上传多媒体文件,但并不是每个人都能用的顺手,有的人倾向于引用外部图片,所以希望“从URL上传”这一项是默认选中的,有的人喜欢从媒体库中挑选图片,如果定制一下WordPress添加媒体界面,就能称心如意了。

注:该代码只适用于<3.5的版本,3.5以上定制方法请看文章最后一节。

 

定制WordPress添加媒体界面

WordPress的好处就是提供了很多钩子函数(actions and filters),使用户不用更改核心文件就能改变很多WordPress的默认行为,媒体界面也不例外。

更改多媒体选项卡位置

多媒体选型卡通常有四项:从计算机上传、从URL上传、从相册上传(如果该文章已经有图片附件)和从媒体库选择图片。

改变它们的顺序只需要使用filter: media_upload_tabs。将下面的代码放到主题的functions.php中即可看到效果

这段代码会使“从URL”变成第一项,改变返回的数组的元素顺序,即可改变多媒体选项卡的顺序

复制代码
add_filter('media_upload_tabs', 'modify_media_tabs');
function modify_media_tabs($tabs) {
 return array(
  'type_url' => __('From URL'),
    'type' => __('From Computer'),
  'gallery' => __('Gallery'),
  'library' => __('Media Library')
 );
}
复制代码

 

设置默认选项卡

前面提到有人喜欢直接通过URL插入图片,那么就让“从URL”变成默认选中的选项卡吧,将下面代码放到主题的functions.php中查看效果

add_filter('_upload_iframe_src', 'change_default_media_tab');
function change_default_media_tab($uri) {
 return $uri.'&tab=type_url';
}

 

 

要默认选中其它选项卡,只需要更改tab后面的值:

从媒体库 – tab=library

从相册 – tab=gallery

从计算机 – tab=type

删除某个选项卡

将下面的代码放到主题的functions.php中

复制代码
add_filter('media_upload_tabs', 'remove_media_library_tab');
function remove_media_library_tab($tabs) {
    unset($tabs['library']);
    //unset($tabs['type_url']); //删除从URL
    //unset($tabs['gallery']); //删除从相册
    //unset($tabs['type']); //删除从计算机
  
    return $tabs;
}
复制代码

 

媒体库选项卡将被删除

添加自定义消息

复制代码
add_action( 'post-upload-ui', 'media_upload_infobox' );
add_action('pre-html-upload-ui','media_std_upload_infobox');
  
function media_upload_infobox() {
?>
<div style="background:#FFCC66; color:#000000; padding:10px; text-align:center">
自定义消息
</div>
  
<?php
}
  
function media_std_upload_infobox() {
?>
<div style="background:#FFCC66; color:#000000; padding:10px; text-align:center">
使用标准上传工具上传界面的自定义消息
</div>
  
<?php
}
复制代码

 

 

效果如下

添加自定义消息

WordPress 3.5.0以上版本的定制方法

3.5以上media_upload_tabs这个钩子虽然存在但已经没有任何用处,3.5以上可以用media_view_strings这个filter来修改界面。下面的代码演示如何删除Create Gallery和Set Featured Image。

复制代码
add_filter('media_view_strings', 'remove_media_library_tabs');
function remove_media_library_tabs( $strings ) {

    $strings["insertMediaTitle"] = "插入图片";
    $strings["insertIntoPost"] = "点击插入";
    $strings["addMedia"] = "添加图片";
    $strings["returnToLibrary"] = "回到已上传";
    
    $strings["mediaLibraryTitle"] = "已上传";
    
    //创建相册
    unset( $strings["createNewGallery"]);
    $strings["createGalleryTitle"] = "";

    //创建新的播放列表
    unset( $strings["createNewPlaylist"]);
    $strings["createPlaylistTitle"] = "";
    
    //创建音频播放列表
    unset( $strings["createNewPlaylist"] );
    $strings["createPlaylistTitle"] = "";
    
    //创建视频播放列表
    unset( $strings["createNewVideoPlaylist"] );
    $strings["createVideoPlaylistTitle"] = "";
    
    //特色图片
    unset( $strings["setFeaturedImageTitle"] );

    return $strings;
}
复制代码

 

可以unset的字符串变量如下

复制代码
Array
(
    [url] => URL
    [addMedia] => Add Media
    <a href="http://www.solagirl.net/?s="></a> => Search
    [select] => Select
    [cancel] => Cancel
    [selected] => %d selected
    [dragInfo] => Drag and drop to reorder images.
    [uploadFilesTitle] => Upload Files
    [uploadImagesTitle] => Upload Images
    [mediaLibraryTitle] => Media Library
    [insertMediaTitle] => Insert Media
    [createNewGallery] => Create a new gallery
    [returnToLibrary] => ← Return to library
    [allMediaItems] => All media items
    [noItemsFound] => No items found.
    [insertIntoPost] => Insert into post
    [uploadedToThisPost] => Uploaded to this post
    [warnDelete] => You are about to permanently delete this item.
  'Cancel' to stop, 'OK' to delete.
    [insertFromUrlTitle] => Insert from URL
    [setFeaturedImageTitle] => Set Featured Image
    [setFeaturedImage] => Set featured image
    [createGalleryTitle] => Create Gallery
    [editGalleryTitle] => Edit Gallery
    [cancelGalleryTitle] => ← Cancel Gallery
    [insertGallery] => Insert gallery
    [updateGallery] => Update gallery
    [addToGallery] => Add to gallery
    [addToGalleryTitle] => Add to Gallery
    [reverseOrder] => Reverse order
)
复制代码

 




本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/p/7647667.html,如需转载请自行联系原作者


相关文章
|
3月前
wordpress界面汉化
wordpress界面汉化
|
JavaScript PHP
解决 WordPress 升级更新后“添加媒体”按钮失效问题
最近有用户反映主题升级之后文章发布页面的“添加媒体”按钮点击没有反映,没有办法上传图片附件等问题,其实呢这个问题并非主题本身的问题,而是WordPress的js文件合并机制出了一点小状况,那么我们该怎么解决呢?
1685 0
|
存储 缓存 对象存储
将 WordPress 媒体迁移全部迁移至对象存储,降低服务器存储压力
虽然自己的 WordPress 博客很早就云化了,用了云服务器、云数据库、OSS 和 CDN,不过在 WordPress 的附件的云化其实自己一直都是沿用的老思路就是 我爱水煮鱼 大佬之前发布的七牛云插件,用镜像的方式把源站的图片在七牛进行存储再加速,这样的好处就是兼容性比较广,但是WP网站的目录随着网站的成长会越来越大。
3118 0
|
PHP Apache
wordpress无法上传超过2M的媒体
问题描述 wordpress不能上传大数据量的音频或视频文件! 解决方案 修改/etc/php.ini文件 upload_max_filesize = 128M post_max_size = 128M ...
1317 0
|
1月前
|
安全
SiteGround如何设置WordPress网站自动更新
iteGround Autoupdate功能会自动帮我们更新在他们这里托管的所有WordPress网站,这样做是为了保证网站安全,并且让它们一直保持最新状态。他们会根据我们选择的设置自动更新不同版本的WordPress,包括主要版本和次要版本。在每次自动更新之前,他们都会为我们的网站做一个完整的备份,这样如果有什么问题,我们可以轻松地恢复到之前的状态。在本文中,我们将介绍如何在SiteGround中设置WordPress网站自动更新。
37 0
SiteGround如何设置WordPress网站自动更新
|
3月前
WordPress网站更换域名后如何重新激活elementor
本文讲解WordPress网站更换域名后如何重新激活elementor。首先你需要在WordPress后台elementor下点击Disconnect断开原elementor连接,然后登录elementor官网,在后台解除原网站授权;接着在WordPress后台重新连接并激活elementor。
65 2
WordPress网站更换域名后如何重新激活elementor
|
3月前
给WordPress网站增加一个带时间的led广告牌
给WordPress网站增加一个带时间的led广告牌
32 3
|
1月前
|
关系型数据库 MySQL Apache
怎么在树莓派上搭建WordPress博客网站,并发布到外网可访问?
怎么在树莓派上搭建WordPress博客网站,并发布到外网可访问?
|
3月前
|
域名解析 弹性计算 数据安全/隐私保护
阿里云ECS免费搭建WordPress个人博客网站
阿里云ECS免费搭建WordPress个人博客网站
457 2
阿里云ECS免费搭建WordPress个人博客网站
|
5月前
|
NoSQL 安全 PHP
手把手教你搭建WordPress博客网站并发布至公网(上
手把手教你搭建WordPress博客网站并发布至公网
166 0