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

Posted 黄聪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了黄聪:如何使用钩子定制WordPress添加媒体界面,去除不需要的元素相关的知识,希望对你有一定的参考价值。

原文:http://www.solagirl.net/customize-wordpress-media-upload-ui.html

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

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

 

技术分享

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
)

 

参考资料:remove other tabs in new wordpress media gallery

以上是关于黄聪:如何使用钩子定制WordPress添加媒体界面,去除不需要的元素的主要内容,如果未能解决你的问题,请参考以下文章

黄聪:wordpress如何扩展TinyMCE编辑器,添加自定义按钮及功能

黄聪:主机宝安装wordpress注意事项

wordpress怎么添加留言板

黄聪:wordpress如何获取访问的网站的cookie值

黄聪:wordpress如何携带cookie模拟浏览器访问网站

黄聪:IIS7下wordpress上传大文件(30M以上)提示404页面失败的解决方法