ONE 一个 WordPress API

调用方法


//图文接口APIs
http://211.152.49.184:7001/OneForWeb/one/getHpinfo?strDate=yyyy-mm-dd

下面的代码添加到functions.php中,由于使用wordpress的缓存函数(get_transient)所以只能在wordpress中使用


    function the_one(){
        $json = get_one_json();//获取内容
        $content = $json['hpEntity'];//获取hpEntity的值里嵌套内容
        $image = $content['strOriginalImgUrl'];
        $author = $content['strAuthor'];
        $words = $content['strContent'];
        $output = '<div id="one--feed">';
        $output .= '<img decoding="async" src="'.$image.'">';//如果不显示图片则删掉这行代码
        $output .= '<div class="oneContent">'.$words.'</div></div>';
        return $output;
    }

    function get_one_json(){
        if (get_transient('onecache')) { //判断是否存在缓存
            $content = get_transient('onecache'); 
        }else{
            delete_transient('onecache'); //清空临时缓存oncache
            $data = date("Y-m-d",time()); //当前日期
            $getjson = 'http://211.152.49.184:7001/OneForWeb/one/getHpinfo?strDate=' . $data; //json URL
            $content = file_get_contents($getjson); //读取json数据到字符串
            set_transient('onecache', $content, 60*60*24); //创建一个缓存 有效期为 60*60*24 即24小时
        }
        return json_decode($content,true); //返回json编码格式
    }

在你想使用的地方使用the_one()调用即可。

WordPress Transients API 缓存

什么是 WordPress Transients API

Transients 是瞬时的意思,WordPress Transients API 是 WordPress 用来缓存一些复杂的 SQL 查询和运算结果的最简单的方法。它给这些需要缓存的数据一个过期时间,并且时间一到就会自动删除,所以如果你在制作 WordPress 插件的时候,需要存储一些有一定生命周期的数据的时候,Transients API 是最好的选择。

WordPress Transients API 缓存的数据存储在哪里

这个取决你的服务器设置,如果你的服务器开启 Memcache 这类对象缓存,那么缓存的数据就存在 Memcached 的内存中。如果没有开启的话,则存储到 WordPress 数据库的 Options 表中。

WordPress Transients API 的函数

上面说到服务器没有开启的时候,数据是存储到 Options 表中的,所以它接口函数和 WordPress 的 Option API (get_option, add_option, update_option, delete_option))基本一样,唯一区别就是 Transients API 有一个过期时间。所以 WordPress Transients API 有类似的以下三个函数:


set_transient() // 保存一个临时数据到缓存中
get_transient() // 从缓存中获取一个临时数据
delete_transient() // 从缓存中删除一个临时数据

如果你使用函数 get_transient 去获取一个临时变量,它已经过期或者不存在,则返回 false。另外 Transients API 不会将数据库的 Options 表充满,因为临时变量一旦过期,下次获取的时候就会自动被删除。

WordPress Transients API 例子

假设你要获取博客的流量最高的 10 篇日志,这个要设计复杂的 SQL 查询,而流量最高的 10 篇日志一般来说在一段时间(比如:12小时)之内是不会变化的,所以我们可以把这个数据通过 Transients API 先缓存了。代码如下:


function wpjam_get_top_10_posts(){
    $top_10_posts = get_transient('top_10_posts');
    if(false === $top_10_posts){    // 临时变量过期了或者根本就没有创建

        // 通过 SQL 查询获取流量最高的 10 篇日志,get_most_viewed 是 Postviews 插件的函数,函数中有负责的 SQL 查询。
        $top_10_posts =  get_most_viewed(10);

        // 把临时变量存到数据库中,时间为 12 个小时
        set_transient('top_10_posts', $top_10_posts, 60*60*12);
    }
    return$top_10_posts;
}

其中 get_most_viewed是插件 Postviews 的函数,它是用来获取流量最高的日志。

如果由于某种原因某篇流行日志删除,或者新的日志发布了,这个时候可能流量最高的日志都可能发生变化,我们需要使用 delete_transient 函数把这个临时变量删除了。代码如下:


add_action('publish_post', 'wp_top_10_posts_delete', 0);
add_action('delete_post', 'wp_top_10_posts_delete', 0);
functionwp_top_10_posts_delete(){
    delete_transient('top_10_posts');
}

文章转自
《WordPress 调用韩寒「ONE · 一个」API》 Auhter:Bigfa URL:http://fatesinger.com/74443
《使用 WordPress Transients API 缓存复杂的 SQL 查询和运算结果》Auther:我爱水煮鱼 URL: http://blog.wpjam.com/article/wordpress-transients-api

0 thoughts on “ONE 一个 WordPress API
添加一条新回复 回到顶部

亲爱的,主人已经关闭了这篇文章的评论 。