WordPress后台中实现图片上传功能的实例讲解

图片上传

文件准备:新建php文件,我用默认主题Twenty Ten来测试,首先在这个主题的文件夹下新建一个文件-myfunctions.php   然后打开functions.php文件在最底部添加下面的代码载入我们新建的这个文件:

include_once('myfunctions.php');

类的代码如下:

<?php
//类ClassicOptions
class ClassicOptions {
  /* -- getOptions函数获取选项组 -- */
  function getOptions() {
    // 在数据库中获取选项组
    $options = get_option('classic_options');
    // 如果数据库中不存在该选项组, 设定这些选项的默认值, 并将它们插入数据库
    if (!is_array($options)) {
      //初始默认数据
      $options['ashu_copy_right'] = '阿树工作室';  

      //这里可添加更多设置选项  

      update_option('classic_options', $options);
    }
    // 返回选项组
    return $options;
  }
  /* -- init函数 初始化 -- */
  function init() {
    // 如果是 POST 提交数据, 对数据进行限制, 并更新到数据库
    if(isset($_POST['classic_save'])) {
      // 获取选项组, 因为有可能只修改部分选项, 所以先整个拿下来再进行更改
      $options = ClassicOptions::getOptions();
      // 数据处理
      $options['ashu_copy_right'] = stripslashes($_POST['ashu_copy_right']);   

      //在这追加其他选项的限制处理   

      // 更新数据
      update_option('classic_options', $options);   

    } else {
      // 否则, 重新获取选项组, 也就是对数据进行初始化
      ClassicOptions::getOptions();
    }  

    //添加设置页面
    add_theme_page("主题设置", "主题设置", 'edit_themes', basename(__FILE__), array('ClassicOptions', 'display'));
  }
  /* -- 标签页 -- */
  function display() {
    $options = ClassicOptions::getOptions(); ?>
    <form method="post" enctype="multipart/form-data" name="classic_form" id="classic_form">
    <div class="wrap">
    <h2><?php _e('阿树工作室主题设置', 'classic'); ?></h2>
    <!-- 设置内容 -->
    <table class="form-table">
      <tbody>
        <tr valign="top">
          <td>
            <label>
              <input type="text" name="ashu_copy_right" value="<?php echo($options['ashu_copy_right']); ?>" size="20"/><?php _e('阿树工作室版权文字');?>
            </label>
          </td>
        </tr>
      </tbody>
    </table>
    <!-- TODO: 在这里追加其他选项内容 -->
    <p class="submit">
      <input type="submit" name="classic_save" value="<?php _e('保存设置'); ?>" />
    </p>
  </div>
</form>
<?php
  }
}  

/*初始化,执行ClassicOptions类的init函数*/
add_action('admin_menu', array('ClassicOptions', 'init'));
?>

之后查看我们的后台设置页面,看一下我添加之后的效果图:

此时文本域和上传按钮已经有了,但是点击还是没有任何效果。为了点击后弹出那个上传框架,我们还需要添加js代码。

为了便于管理,我们新建一个js文件,在twentyten主题文件夹下新建一个文件夹js然后,在这个文件加下新建一个upload.js文件。添加js代码:

jQuery(document).ready(function() {
  //upbottom为上传按钮的id
  jQuery('#upbottom').click(function() {
    //ashu_logo为文本域
     targetfield = jQuery(this).prev('#ashu_logo');
     tb_show('', 'media-upload.php?type=image&TB_iframe=true');
     return false;
  });  

  window.send_to_editor = function(html) {
     imgurl = jQuery('img',html).attr('src');
     jQuery(targetfield).val(imgurl);
     tb_remove();
  }  

}); 

下面就是加载js和css了。
在上面的类中display()函数中添加以下代码:

//加载upload.js文件
    wp_enqueue_script('my-upload', get_bloginfo( 'stylesheet_directory' ) . '/js/upload.js');
    //加载上传图片的js(wp自带)
    wp_enqueue_script('thickbox');
    //加载css(wp自带)
    wp_enqueue_style('thickbox');

之后如果你查看后台设置页面的源码,在源码的大概最后面位置能看到你加载的这个js文件。

好了,可以去试用了:

多个图片上传表单
首先我们修改表单,添加多个上传按钮,还加上显示图片用的div容器。
上面教程中的js代码中是通过文本域的id值来获取元素的,如果有多个文件上传表单,但是在一个html文档中id不能相同,那样的话,就得针对每个表单都写一个js,这样很繁琐,所以今天我们修改一下表单,并且将js改成通过class获取对象。

将类中的display()函数修改为(我新加了一个ashu_ico项,并且将上传按钮的id属性去掉改成class="ashu_bottom"):

function display() {
    //加载upload.js文件
    wp_enqueue_script('my-upload', get_bloginfo( 'stylesheet_directory' ) . '/js/upload.js');
    //加载上传图片的js(wp自带)
    wp_enqueue_script('thickbox');
    //加载css(wp自带)
    wp_enqueue_style('thickbox');
    $options = ClassicOptions::getOptions(); ?>
    <form method="post" enctype="multipart/form-data" name="classic_form" id="classic_form">
    <div class="wrap">
    <h2><?php _e('阿树工作室主题设置'); ?></h2>
    <p>
    <label>
      <input type="text" size="80" name="ashu_logo" id="ashu_logo" value="<?php echo($options['ashu_logo']); ?>"/>
      <input type="button" value="上传" class="ashu_bottom"/>
    </label>
    </p>
    <p>
    <label>
      <input type="text" size="80" name="ashu_ico" id="ashu_ico" value="<?php echo($options['ashu_ico']); ?>"/>
      <input type="button" value="上传" class="ashu_bottom"/>
    </label>
    </p>
    <p class="submit">
      <input type="submit" name="classic_save" value="<?php _e('保存设置'); ?>" />
    </p>
  </div>
</form>
<?php
  }

这里新加了一个设置项,前面默认数据设置、数据更新都需要相应的增加项目,很简单,这里不赘述。

且看新的js代码,用编辑器打开我们的upload.js,修改代码为:

jQuery(document).ready(function() {
  //查找class为ashu_bottom的对象
  jQuery('input.ashu_bottom').click(function() {
    //获取它前面的一个兄弟元素
     targetfield = jQuery(this).prev('input');
     tb_show('', 'media-upload.php?type=image&TB_iframe=true');
     return false;
  });  

  window.send_to_editor = function(html) {
     imgurl = jQuery('img',html).attr('src');
     jQuery(targetfield).val(imgurl);
     tb_remove();
  }  

});

到此多个图片上传已经实现,其实也很简单。。

(0)

相关推荐

  • Wordpress ThickBox 点击图片显示下一张图的修改方法

    以wordpress 3.0.2为例,打开 wp-includes/js/thickbox/thickbox.js,找到以下代码行: 复制代码 代码如下: jQuery("#TB_window").append("<a href='' id='TB_ImageOff' title='"+thickboxL10n.close+"'><img id='TB_Image' src='"+url+"' width='"

  • WordPress中自定义后台管理界面配色方案的小技巧

    WordPress 3.8 开始的全新设计的后台支持多颜色选择,默认有八种非常精美的配色,可以让用户自己选择. 关于配色 WordPress 提供了一个函数 wp_admin_css_color() 可以让开发者自定义配色,只需要调用一下这个函数即可完成所有的注册操作. 参数 wp_admin_css_color( $key, $name, $url, $colors = array(), $icons = array() ); $key(string):颜色的 ID $name(string)

  • 给WordPress的编辑后台添加提示框的代码实例分享

    WordPress 3.5 新添加了一个提示框功能,可以创建一个提示框,然后指向任何元素,比如下边的例子: 本文就来教你怎么创建一个这样的提示框. 首先需要添加提示框的脚本,这样才能使用提示框的 JS 方法. //挂载提示框脚本 function Bing_admin_pointer_enqueue_scripts(){ wp_enqueue_style( 'wp-pointer' ); wp_enqueue_script( 'wp-pointer' ); } add_action( 'admi

  • WordPress中给文章添加自定义字段及后台编辑功能区域

    add_post_meta add_post_meta 函数是 WordPress 中用来给文章或页面添加自定义字段值的一个函数, 其用法与在编写文章时在文章编写界面中利用自定义栏目面板为文章添加自定义字段值的效果是一样的. add_post_meta函数描述 为文章添加自定义字段. 常见的使用有:文章浏览次数.喜欢按钮.seo插件等常用插件就是使用的自定义字段功能. 参数详解 add_post_meta($post_id, $meta_key, $meta_value,$unique); $p

  • 在WordPress的后台中添加顶级菜单和子菜单的函数详解

    添加设置页面-add_menu_page函数 add_menu_page(),这个函数是往后台添加顶级菜单先,也就是和"外观"."插件"等一样的顶级菜单. 函数介绍如下: <?php add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position ); //page_title页面title标签信息 //$menu_title 菜

  • 整理的一些实用WordPress后台MySQL操作命令

    不过假设你的WordPress网站上有成百上千篇文章,而你需要进行全站范围的改动, 这时从后台逐条编辑就有点费时费力了,并且犯错的几率也会提高. 最好的方法是进入WordPress的MySQL数据库执行必要的查询(改动). 通过MySQL可以迅速地完成以上任务,为你节省更多时间. 下面要介绍的就是一些省时省力的WordPress SQL查询方法. 事先备份 WordPress数据库里存储了你精心发表的每一篇文章,来自你的读者的所有评论,以及你对自己网站进行的所有个性化设置. 因此,无论你对自己有

  • WordPress后台中实现图片上传功能的实例讲解

    图片上传 文件准备:新建php文件,我用默认主题Twenty Ten来测试,首先在这个主题的文件夹下新建一个文件-myfunctions.php   然后打开functions.php文件在最底部添加下面的代码载入我们新建的这个文件: include_once('myfunctions.php'); 类的代码如下: <?php //类ClassicOptions class ClassicOptions { /* -- getOptions函数获取选项组 -- */ function getOp

  • Android中使用GridView实现仿微信图片上传功能(附源代码)

    由于工作要求最近在使用GridView完成图片的批量上传功能,我的例子当中包含仿微信图片上传.拍照.本地选择.相片裁剪等功能,如果有需要的朋友可以看一下,希望我的实际经验能对您有所帮助. 直接上图,下面的图片就是点击"加号"后弹出的对话框,通过对话框可以根据自己需求进行相片选择. 项目结构: 下面直接上代码. 整体的布局文件activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/

  • node.js中实现kindEditor图片上传功能的方法教程

    前言 最近由于工作需要使用在线编辑器,找了几个对比了下KindEditor还是不错的,国产的但文档还是不全,还好能参考官方插件,kindEditor官网上中提供了ASP,ASP.NET,JSP相关的整合应用 可以参照官方文档实现nodejs的kindEditor上传功能:http://kindeditor.net/docs/upload.html 在线下载kindEditor编辑器:http://www.jb51.net/codes/36131.html 实现方法: 1.在客户端js中定义upl

  • FCKeditor编辑器添加图片上传功能及图片路径问题解决方法

    现在很多CMS系统因为安全原因会把后台编辑器里的上传功能给去除,但这样一来对实际使用过程造成了很多麻烦,今天我们以ASPCMS系统的FCKeditor编辑器为例,说明一下如何增加图片上传功能. 1. 打开网站后台编辑器里的admin/editor/fckconfig.js这个文件 找到FCKConfig.ImageUpload = false 这句,把false改成true就行啦. FCKConfig.ImageBrowser = false ; 这里也同样把false改成true 2. 看一下

  • Laravel+Layer实现图片上传功能(整理篇)

    ♩ 背景 昨天在自己的 Laravel5.5 框架项目中,希望集成 Layer 的图片上传功能 但是在 ajax(POST) 提交请求时,一直显示 500 报错 ♪ 分析 ⒈ 问题所在 最后将核心代码摘出,放到 Larvel 框架以外运行,发现代码是没有问题的,因为对 Laravel 框架接触的太浅,忽视了 CSRF 的限制 ⒉ 解决方案 一般在表单提交时,都会存放一个隐藏的输入框 <input type="hidden" name="_token" valu

  • ThinkPHP框架实现FTP图片上传功能示例

    本文实例讲述了ThinkPHP框架实现FTP图片上传功能.分享给大家供大家参考,具体如下: 背景: 图片上传功能应该是个极为普遍的,在此参考了ThinkPHP 框架中的集成方法整理了一下FTP图片的上传功能,这样方便在后台操作时,把有关的图片直接上传到线上的图片服务器,避免大流量访问的图片加载缓慢,降低网站的访问压力,不合理之处,敬请指摘... 操作: 1.前端设计 这里主要为了测试功能的实现,使用最简单的设计,既方便参考又有利于后期的功能扩展.如下附upload.html主要代码,着重注意红框

  • yii2高级应用之自定义组件实现全局使用图片上传功能的方法

    本文讲述了yii2高级应用之自定义组件实现全局使用图片上传功能的方法.分享给大家供大家参考,具体如下: 此例为yii2高组应用,这里只提供一个简单的事例 在yii2中,在使用到上传图片时有自带的一个上传图片类,但不太好用. 其中有一种方式,把自己写的一个上传图片类文件,注册成一个组件,在全局中使用.(我记得我在里面有写过一篇小物件的使用) 这里,我只作一个简单的自定义组件介绍 1.在backend(或frontend)定义一个 upload.php(注意路径: backend/component

  • Summernote实现图片上传功能的简单方法

    还是接着之前说过的最近在写一个BootStrap网页....然后要用富文本编辑器,随便搜了下就选了这货 然后发现了很尴尬的问题...图片上传功能无效....然后各种搜索各种无果...最后怒翻Summernote官方文档总算解决了,总之写下解决过程 后端部分就不提供代码了,满大街都是,这里假设后端拿到上传文件后返回文件的地址 首先附上参考资料:Summernote官方开发文档 简单说下Summernote的图片上传功能实现方案 首先根据官方文档提供的API,挂接文件上传事件,然后自己用JS重新上传

  • 使用express+multer实现node中的图片上传功能

    下文给大家介绍使用express+multer实现node中的图片上传功能,具体内容介绍如下所示: 在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中 在node中使用multer中间件来对上传路由接口进行处理 multer文档 package.json html部分 <body> <div class="form-group"> <label>File input

  • webuploader 实现图片批量上传功能附实例代码

    1.导入资源 2.JSP代码 <div class="page-container"> <div class="row cl"> <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>项目名称:</label> <div class="formCont

随机推荐