zoukankan      html  css  js  c++  java
  • WordPress幻灯广告插件HelloFlash改良版

    WordPress中的幻灯效果一般用于首页广告展示,我想不少一部分人应该有这样的需求,我也曾经尝试很多的插件,但总觉得不够满意,包括HelloFlash插件,他们最致命的缺点是什么?我列举两条:

    1、一般幻灯效果插件都会去搜索文章中的第一张图片,发现有图片就放入到幻灯中。这似乎有点过份,因为我并不需要每一篇文章都需要放到幻灯广告里去。那么做的稍微好一点的呢,就要求你指定一个目录,但仍然不能指定哪一篇文章放到幻灯,所以完全不符合我的需求。

    2、HelloFlash插件应该说是非常满足我需求的一个插件,可以自定义将文章放入到幻灯中去,使用自定义模式就可以,但唯一要做的是:发表文章的时候需要添加一个自定义字段flash_image,值就是图片的链接地址了。但是,我不能接受如此繁琐的操作,特别不能接受的是自定义一个字段。

    以上都是我所遇到的问题,后来我在使用Simplybiz模板(下次和大家分享这个模板,非常适合企业站,并且我有意向将它的幻灯给改良一下)的时候,竟然可以添加独立的幻灯链接,很让我欣喜,想把它改造一下以满足我的需求,不过老外写的主题还是挺复杂的,而且不是插件,让我把主题的一个功能改成一个插件,我放弃了,我相信凭借我的三脚猫功夫我肯定做不到。不过,至少这个主题给了我一个思路,主题中引用了一个叫“特色图像”的功能,英文称之为Featured image,虽然在WP2.9的版本中就开始支持这个功能,但真正的开放算是在3.0的版本中,现在WP都已经到3.1.2版本了这个功能自然是成熟了。

    为了得到自动将文章添加到幻灯的效果,我要求操作简单,即:发表文章的时候,指定一个“特色图像”,这样发表的文章就自动加入到幻灯中了。

    根据我的猜测,既然HelloFlash插件使用了自定义字段flash_image,那么,我只需要将这个字段改成特色图像的字段就可以实现。查看HelloFlash的code果真如此,两个模式写了两个SQL语句。然后我去找特色图像这个字段,转了一大圈终于知道,特色图像字段在postmeta表中,其中meta_key字段的值为“_thumbnail_id”的即为特色图像,这一条记录的post_id表示文章在post表中的ID号,meta_value的值为图像附件在post表中的ID号。但在这个的过程中,遇到难题了,一个表中查询出两条记录并且他们的Where关键都是在另一个表中,不过最后还是解决了,将同一个表重复了一下,看上去是在三个表中查询,最后就可以得到结果了。这个SQL查询难了我好一会,不过看了上面的SQL语句得到的灵感,还不错。需要将插件的flash.php文件中的如下code:

    SELECT a.post_title AS title, a.guid AS link, b.meta_value AS img
    FROM wp_posts AS a, wp_postmeta AS b
    WHERE meta_key = 'flash_image'
    AND a.post_type = 'post'
    AND b.post_id = a.id
    ORDER BY `a`.`id` DESC
    LIMIT 6

    更改为如下code:

    SELECT a.post_title AS title, a.guid AS link, c.guid AS img
    FROM wp_posts AS a, wp_postmeta AS b, wp_posts AS c
    WHERE b.meta_key = '_thumbnail_id'
    AND a.ID = b.post_id
    AND c.ID = b.meta_value
    ORDER BY `a`.`id` DESC
    LIMIT 6

    需要稍稍注意一下的是:作者偷懒将表的名字直接写死了,所以若不是“wp_”表头的则需要你自己将上面的改成与你对应的头。

    这样以后,事情还没有完,将插件上传,然后激活,并进入HelloFlash的设置,需要设置为自定义模式,长宽由你自己确定,如下图示意:

    image

    再说一次:长宽设置成你自己的哦。

    好了,接下来就需要更改模板的代码了。一般是在首页显示幻灯,所以在首页模板中你需要幻灯的位置插入如下代码:

    if(function_exists(flash)) { flash();     }

    经过以上折腾,虽然算是一切完毕了,但也许你的模板还不支持“特色图像”功能,如何打开这个功能呢?方法:打开模板中的functions.php文件,添加如下code,这样你在发表文章的时候就可以看到设定特色像的功能了。

    if ( function_exists( 'add_theme_support' ) ) {
      add_theme_support( 'post-thumbnails' );
    }

     image

    好了,这才算是真正折腾完。至于前台表现的部分,你可以再继续自行优化。顺便说一下这个插件的问题:

    1、每次调用,都是查询数据库,如果做成缓存,是否更佳?不过我暂时没有想法去折腾了。

    2、有些模板本身支持特色图像功能,一般是放在首页文章的前边,这是最常规的做法,但这样的话就会导致:你幻灯里的图片大小和文章期望的图片大小不一致,这样的就肯定算是冲突了,两者只能二选一,除非你用回原版的HelloFlash,或者让模板不使用特色图像,小有痛苦,不过我想这样的需求应该在少数。

    好了,可以去我的实验室下载我改良版的HelloFlash插件

  • 相关阅读:
    React使用iconfont图标下载到本地symbol引用
    【汇编】求100以内的素数asm
    jQuery Ajax.BeginForm方法回调函数高版本3.3.1不兼容问题
    python中的深拷贝与浅拷贝
    闲来无事做个C#小项目——2
    C#使用MD5加密
    数据结构部分总结(c语言版)
    vue 上传视频和图片 并且截取视频第一帧作为播放前默认图片
    vue el-cascader取id和lable的值
    C# 枚举的定义,枚举的用法,获取枚举值
  • 原文地址:https://www.cnblogs.com/Tangf/p/2045030.html
Copyright © 2011-2022 走看看