对于喜欢关注热点新闻动态的朋友来说一般我们获取新闻的方式都是通过推送的方式,可是对于一些较大的平台中有很多新闻热点其实都有排行榜,而今天我们也可以利用 WordPress 中的功能来给您的网站添加一个实时的热门新闻事件。这里是通过获取新浪微博的实时搜索榜数据来添加到 WordPress 中,这样无论是您的网站用户还是您自己都可以在不访问新浪的情况下获取到最新的新浪热门内容。
以下的是一些技术大佬分享的 WordPress 中添加新浪微博实时搜索榜数据的方法,您可以参考教程手动添加即可。
1、新建个 Weibo.php 文件,复制以下代码并保存到您的 WordPress 主题目录。
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
<?php
/* Plugin Name: 微博热搜榜 Plugin URI: Description: 微博热搜最新10条,一键直达! Author: Meediy Author URI: Version: 1.0 */ header(“Content-type: text/json; charset=utf-8”); //取文本中间 function getSubstr($str, $leftStr, $rightStr) { $left = strpos($str, $leftStr); //echo ‘左边:’.$left; $right = strpos($str, $rightStr,$left); //echo ‘<br>右边:’.$right; if($left < 0 or $right < $left) return ”; return substr($str, $left + strlen($leftStr), $right–$left–strlen($leftStr)); } //curl封装 function http_get($url){ $oCurl = curl_init(); if(stripos($url,“https://”)!==FALSE){ curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1 } curl_setopt($oCurl, CURLOPT_URL, $url); curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 ); $sContent = curl_exec($oCurl); $aStatus = curl_getinfo($oCurl); curl_close($oCurl); if(intval($aStatus[“http_code”])==200){ return $sContent; }else{ return false; } } function http_post($url,$param,$post_file=false){ $oCurl = curl_init(); if(stripos($url,“https://”)!==FALSE){ curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1 } if (is_string($param) || $post_file) { $strPOST = $param; } else { $aPOST = array(); foreach($param as $key=>$val){ $aPOST[] = $key.“=”.urlencode($val); } $strPOST = join(“&”, $aPOST); } curl_setopt($oCurl, CURLOPT_URL, $url); curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt($oCurl, CURLOPT_POST,true); curl_setopt($oCurl, CURLOPT_POSTFIELDS,$strPOST); $sContent = curl_exec($oCurl); $aStatus = curl_getinfo($oCurl); curl_close($oCurl); if(intval($aStatus[“http_code”])==200){ return $sContent; }else{ return false; } } function curl_get_https($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_USERAGENT, ‘Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.1 Safari/537.11’); $res = curl_exec($ch); $rescode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return $res; } //添加小工具 function meediy_dashboard_weiboh(){ echo ‘<p>欢迎使用<a href=”https://www.xxxxx.com” title=”Meediy” target=”_blank”>Meediy</a> Weibo 热搜榜小工具!</p>’; echo ‘<ul>’; $data = http_get(“https://s.weibo.com/top/summary?cate=realtimehot”); $data = getSubstr($data, ‘<tbody>’, ‘</tbody>’); preg_match_all(‘/weibo\?q=(.*)&Refer/’ , $data , $matches); for ($x=0; $x<=9; $x++) { $str = urldecode($matches[1][$x]); $str = str_replace(“#”,“”,$str); $str = str_replace(“&topic_ad=1”,“”,$str); $arr[] = $str;//数组输出 } $i=1; foreach ($arr as $value) { echo ‘<li>’.$i.‘、<a href=”https://s.weibo.com/weibo?q=’.$value.‘” title=”‘.$value.‘” target=”_blank”>’.$value.‘</a></p></li>’; $i++; } echo ‘</ul>’; } function meediy_weiboh_register_widgets(){ wp_add_dashboard_widget( ‘our-css-id’, ‘微博热搜榜’, ‘meediy_dashboard_weiboh’); } add_action(‘wp_dashboard_setup’, ‘meediy_weiboh_register_widgets’ ); ?> |
2、把以下代码添加到你的 WordPress 主题中的 functions.php 文件。
1
2 3 |
// 微博热搜榜小工具
// 您也可以自定义您的 weibo.php 路径 require get_template_directory() . ‘/weibo.php’; |
3、完成以上操作后,我们在后台 外观 >> 小工具中,找到一个文本小工具,并切换编辑器到文本模式,添加以下代码:
1
|
<?php meediy_dashboard_weiboh();?>
|
保存之后,在 WordPress 前台就可以显示“微博热搜榜”了,目前“微博热搜榜”小工具默认为显示 10 条热搜,如果想要显示更多请直接修改 weibo.php 文件 89 行的 9 为其他数字即可。