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

(编辑:jimmy 日期: 2024/10/1 浏览:2)

图片上传

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

include_once('myfunctions.php'); 

类的代码如下:

<"主题设置", "主题设置", 'edit_themes', basename(__FILE__), array('ClassicOptions', 'display'));   
  }   
  /* -- 标签页 -- */   
  function display() {   
    $options = ClassicOptions::getOptions(); "post" enctype="multipart/form-data" name="classic_form" id="classic_form">   
    <div class="wrap">   
    <h2><"form-table">   
      <tbody>   
        <tr valign="top">   
          <td>  
            <label>   
              <input type="text" name="ashu_copy_right" value="<" size="20"/><"submit">   
      <input type="submit" name="classic_save" value="<" />   
    </p>   
  </div>   
</form>   
<"2016111154528680.png (520×240)" src="/UploadFiles/2021-04-02/2016111154528680.png">

此时文本域和上传按钮已经有了,但是点击还是没有任何效果。为了点击后弹出那个上传框架,我们还需要添加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"htmlcode">
//加载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文件。

好了,可以去试用了:

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

多个图片上传表单
首先我们修改表单,添加多个上传按钮,还加上显示图片用的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(); "post" enctype="multipart/form-data" name="classic_form" id="classic_form">     
    <div class="wrap">     
    <h2><"text" size="80" name="ashu_logo" id="ashu_logo" value="<"/>  
      <input type="button" value="上传" class="ashu_bottom"/>  
    </label>  
    </p>  
    <p>  
    <label>  
      <input type="text" size="80" name="ashu_ico" id="ashu_ico" value="<"/>  
      <input type="button" value="上传" class="ashu_bottom"/>  
    </label>  
    </p>      
    <p class="submit">  
      <input type="submit" name="classic_save" value="<" />     
    </p>     
  </div>     
</form>     
<"htmlcode">
jQuery(document).ready(function() {  
  //查找class为ashu_bottom的对象  
  jQuery('input.ashu_bottom').click(function() {  
    //获取它前面的一个兄弟元素  
     targetfield = jQuery(this).prev('input');  
     tb_show('', 'media-upload.php"2016111154737103.png (213×240)" src="/UploadFiles/2021-04-02/2016111154737103.png">

一句话新闻
一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?