给WordPress版微信小程序增加获取随机文章功能

现在不少以worldpress为后台的微信小程序都是以github上开源的守望轩提供的WordPress 版微信小程序源码为基础开发的,但是其小程序源代码和配套的插件却并没有提供获取随机文章列表 Api .所以我们如果要实现小程序获取worldpress后端的随机文章的话,就需要给插件增加功能api,并适当修改微信小程序的源码才可以实现.首先需要给wp-rest-api-for-app插件增加一个random.php.

1、把下面的代码保存为 random.php 文件。

<?php
// 定义随机文章 API
add_action( 'rest_api_init', function () {
register_rest_route( 'wxapp/v1', 'post/random', array(
'methods' => 'GET',
'callback' => 'getRandomPosts'
));
});
function getRandomPosts( $data ) {
$data=get_random_post_data(10);
if ( empty( $data ) ) {
return new WP_Error( 'noposts', 'noposts', array( 'status' => 404 ) );
}
// Create the response object
$response = new WP_REST_Response( $data );
// Add a custom status code
$response->set_status( 200 );
return $response;
}
function get_random_post_data($limit = 10) {
global $wpdb, $post;
$today=date("Y-m-d H:i:s"); // 获取当天日期时间
$limit_date=date("Y-m-d H:i:s", strtotime("-1 year")); // 获取指定日期时间
$sql="SELECT ID, post_title,post_date FROM $wpdb->posts WHERE post_status = 'publish' AND post_title != '' AND post_password ='' AND post_type = 'post' ORDER BY RAND() LIMIT 0 , $limit";
$randposts = $wpdb->get_results($sql);
$posts=array();
foreach ($randposts as $post) {
$post_id = (int) $post->ID;
$post_title = stripslashes($post->post_title);
$pageviews = (int) $post->pageviews_total;
$post_date =$post->post_date;
$post_permalink = get_permalink($post->ID);
$_data["post_id"] =$post_id;
$_data["post_title"] =$post_title;
//$_data["pageviews"] =$pageviews;
$_data["post_date"] =$post_date;
$_data["post_permalink"] =$post_permalink;
$pageviews = (int) get_post_meta( $post_id, 'wl_pageviews',true);
$_data['pageviews'] = $pageviews;

$like_count = $wpdb->get_var("SELECT COUNT(1) FROM ".$wpdb->postmeta." where meta_value='like' and post_id=".$post_id);
$_data['like_count'] = $like_count;
$comment_total = $wpdb->get_var("SELECT COUNT(1) FROM ".$wpdb->comments." where comment_approved = '1' and comment_post_ID=".$post_id);
$_data['comment_total']= $comment_total;
$images =getPostImages($post->post_content,$post_id);

$_data['post_thumbnail_image']=$images['post_thumbnail_image'];
$_data['content_first_image']=$images['content_first_image'];
$_data['post_medium_image_300']=$images['post_medium_image_300'];
$_data['post_thumbnail_image_624']=$images['post_thumbnail_image_624'];
$posts[] = $_data;
}
return $posts;
}

2、在插件处引用这个文件。修改 wp-rest-api-for-app.php 这个文件,在最后加上

include(WP_REST_API_FOR_APP_PLUGIN_DIR . 'random.php'); // 随机文章列表

3、修改微信小程序源码 utils 目录下的 api.js,将

else if (flag == 4) {
url += "post/praisethisyear"

修改为:

      elseif (flag == 4) {
url += "post/random"
给WordPress版微信小程序增加获取随机文章功能
为了美观,我们还需要将微信小程序源码 \pages\hot\hot.js文件进行修改,改成如下的形式
topBarItems: [
// id name selected 选中状态
{ id: '1', name: '热评文章', selected: true },
{ id: '2', name: '热门阅读', selected: false },
{ id: '3', name: '大家喜歡', selected: false },
{ id: '4', name: '随机推荐', selected: false }
],
     4、经过上面的处理,我们就可以编译一下看看效果了,如果没有报错,那么我们就成功的给小程序增加了随机文章页面了.
     5、 最后需要说明的就是,如果你没有修改过api.js的配置选项,也就是
var HOST_URI_WATCH_LIFE_JSON = 'https://' + domain + '/wp-json/watch-life-net/v1/';
那么你需要把random.php文件中的wxapp也改成watch-life-net
【代碼部分非原創,參考自google。引用部分系自己補充完善】

暂无评论

发表评论

相关推荐

wordpress文章部分内容加密功能的实现方法

目前wordpress文章的可见性可以设置全部公开,也可以设置密码保护。但是如果是想实现文章的一部分内容加密,需要输入密码才能全部可见的话又如何实现呢? 最简单的方法莫过于使用短代码,网上很多要求关注公众号 ...

筹码力度副图及选股公式

副图指标 DRAWGBK(CLOSE>OPEN,RGB(40,40,40),RGB(40,40,40),1,2,1); NOTEXT箱底:LLV(MA((LOW+HIGH+CLOSE+OPEN)/4,6),88),COLORGREEN,LINETHICK2; X_1:=EMA((HIGH+LOW+CLOSE)/3*(HHV(HIGH,10)-CLOSE)/(HHV(HIG ...

通达信主力控盘主图指标源码

主力控盘主图指标 {阻力支撑线} V1:=ABS((2*CLOSE+HIGH+LOW)/4-EMA(CLOSE,20))/EMA(CLOSE,20); V2:=(1-7/100)*(DMA(CLOSE,V1)); V3:=(1+7/100)*(DMA(CLOSE,V1)); V5:=EMA((LOW+HIGH+CLOSE)/3,5); 支撑:REFDATE(V ...

小米ax3600官方固件安装adguardhome

小米ax3600路由器開啟SSH權限後就可以安裝插件了,目前使用最多的莫過於于shellclash+adguardhome,第一個shellclash安裝過於簡單,就一行代碼的事情,這裡就不過多贅述。adguardhome是一款非常好用的去廣告程序 ...