您好,欢迎来到链接目录 - 您的网站目录之家!

当前位置:链接目录 » 站长资讯 » 互联网资讯 » 文章详细 订阅RssFeed

WordPress优化:查询百度收录,自动同步微博带图片等

来源:海洋目录网 浏览:177次 时间:2019-12-03

WordPress的流行不是由Wordpress程序本身决定的,而是由广大的Wordpress开发者和爱好者推出来的。现在建站选择Wordpress,最方便的就是可以在网上找到非常多的优秀的免费Wordpress主题,还有各种用途的Wordpress插件,几乎想要的功能就能用插件来代替。

  对于Wordpress的折腾户来说,没有强大的兴趣作支撑是很难日复一日地研究和推出新的Wordpress优化技巧和方案,尤其是在国内作为一个Wordpress开发者有时可能感觉很孤独和寂寞。本篇文章就是来自热爱WP的张戈博主自己在折腾Wordpress过程中开发出来的WP实用技巧。

  有的朋友可能想要在自己的Wordpress的每篇文章上展示百度是否收录的情况。还有的为了提高网站人气,我们有必要将Wordpress的读者制作一个漂亮的展示墙,在评论中显示访客UA信息。对于“要求高”的朋友,可能还想要让自己的Wordpress的每篇文章的ID是连续的。

  如果你有以上几个需求,那么可以直接将本文分享的有关Wordpress优化代码拿去用了。前一天部落分享了WordPress同步更新到新浪微博,这次我们带来了张戈博主改进优化版本:让WordPress发布文章自动同步到新浪微博,并带上特色图片。

  WordPress优化:查询百度收录,自动同步微博带图片,年月日排名的读者墙一、查询并展示Wordpress文章是否被收录1、可能有的人会比较喜欢查询自己博客上的每篇文章是否被百度收录,并将结果展示出来,类似的效果如下:  

查询并展示Wordpress文章是否被收录

 

  2、实现在上述效果可以直接使用WP-Baidu-Record插件,官网:https://wordpress.org/plugins/wp-baidu-record/

  3、插件激活后,点击[设置]按钮进入插件设置界面,插件默认设置如下(默认是在文章内容的最后输出百度收录结果,而且是公开显示):  

使用WP-Baidu-Record插件

 

  4、如果你想自定义输出位置,那么请勾选自定义结果输出位置,前往WordPress主题目录,找到文章模板(一般是single.php),然后在想要显示的位置添加如下函数即可:<?php echo baidu_record(); ?>  

Wordpress添加代码

 

  5、喜欢使用纯代码的话,编辑WordPress主题目录下的functions.php文件,在最后一个?>标签之前,添加如下代码并保存: 

function baidu_check($url){
    global $wpdb;
    $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
    $baidu_record  = get_post_meta($post_id,'baidu_record',true);
    if( $baidu_record != 1){
        $url='http://www.baidu.com/s?wd='.$url;
        $curl=curl_init();
        curl_setopt($curl,CURLOPT_URL,$url);
        curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
        $rs=curl_exec($curl);
        curl_close($curl);
        if(!strpos($rs,'没有找到')){
            if( $baidu_record == 0){
                update_post_meta($post_id, 'baidu_record', 1);
            } else {
                add_post_meta($post_id, 'baidu_record', 1, true);
            }    
                return 1;
        } else {
            if( $baidu_record == false){
                add_post_meta($post_id, 'baidu_record', 0, true);
            }    
            return 0;
        }
    } else {
       return 1;
    }
}
function baidu_record() {
    if(baidu_check(get_permalink()) == 1) {
        echo '<a target="_blank" title="点击查看" rel="external nofollow" href="http://www.baidu.com/s?wd='.get_the_title().'">百度已收录</a>';
   } else {
        echo '<a style="color:red;" rel="external nofollow" title="点击提交,谢谢您!" target="_blank" href="http://zhanzhang.baidu.com/sitesubmit/index?sitename='.get_permalink().'">百度未收录</a>';
   }
}

  6、然后编辑WordPress主题下的文章模板(一般是single.php),在想要显示收录结果的位置添加如下代码并保存:<?php echo baidu_record(); ?>。和上文插件的安装方法一致,可进一步参考操作。

  7、代码说明如下:

  1、通过curl在百度查询url收录结果,如果已收录就将结果写入到文章的post meta记录中。待下一次再次打开页面时,先检查文章自定义栏目字段来判断是否已收录,若已收录则直接输出,而不再执行curl查询。

  2、若查询结果为已收录,亦会输出一个在百度查询文章标题的a标签,用于查看文章排名,甚至可以查看是否被人转载或篡改!

  3、 管理员可以随时在后台文章编辑界面中的自定义栏目来修改是否已收录的结果,自定义名称为baidu_record,1为已收录,0为未收录。

  二、 WordPress更新后自动同步文章到新浪微博1、Wordpress更新文章后自动将文章同步更新到新浪微博上,部落在WordPress同步更新到新浪微博有分享过,不过我们还想在自动同步更新文章时顺便带上文章的特色图片,这样让我们的微博变得更有吸引力一些。  

Wordpress更新后自动同步文章到新浪微博

 

  2、将之前的代码修改下就可以了,代码如下:  

/*** WordPress发布文章同步到新浪微博(带图片&自定义栏目版)* 文章地址:http://zhangge.net/4947.html*/function post_to_sina_weibo($post_ID) {   /* 此处修改为通过文章自定义栏目来判断是否同步 */   if(get_post_meta($post_ID,'weibo_sync',true) == 1) return;   $get_post_info = get_post($post_ID);   $get_post_centent = get_post($post_ID)->post_content;   $get_post_title = get_post($post_ID)->post_title;   if ($get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish') {       $appkey='1034947262'; /* 此处是你的新浪微博appkey,不修改的话就会显示来自张戈博客哦! */       $username='微博用户名';       $userpassword='微博密码';       $request = new WP_Http;       $keywords = "";        /* 获取文章标签关键词 */       $tags = wp_get_post_tags($post_ID);       foreach ($tags as $tag ) {          $keywords = $keywords.'#'.$tag->name."#";       }      /* 修改了下风格,并添加文章关键词作为微博话题,提高与其他相关微博的关联率 */     $string1 = '【文章发布】' . strip_tags( $get_post_title ).':';     $string2 = $keywords.' 查看全文:'.get_permalink($post_ID);     /* 微博字数控制,避免超标同步失败 */     $wb_num = (138 - WeiboLength($string1.$string2))*2;     $status = $string1.mb_strimwidth(strip_tags( apply_filters('the_content', $get_post_centent)),0, $wb_num,'...').$string2;            /* 获取特色图片,如果没设置就抓取文章第一张图片 */        if (has_post_thumbnail()) {          $url = get_post_thumbnail_url($post->ID);            /* 抓取第一张图片作为特色图片,需要主题函数支持 */       } else if(function_exists('catch_first_image')) {          $url = catch_first_image();        }       /* 判断是否存在图片,定义不同的接口 */       if(!empty($url)){           $api_url = 'https://api.weibo.com/2/statuses/upload_url_text.json'; /* 新的API接口地址 */           $body = array('status' => $status,'source' => $appkey,'url' => $url);       } else {           $api_url = 'https://api.weibo.com/2/statuses/update.json';           $body = array('status' => $status,'source' => $appkey);       }       $headers = array('Authorization' => 'Basic ' . base64_encode("$username:$userpassword"));       $result = $request->post($api_url, array('body' => $body,'headers' => $headers));       /* 若同步成功,则给新增自定义栏目weibo_sync,避免以后更新文章重复同步 */       add_post_meta($post_ID, 'weibo_sync', 1, true);    }}add_action('publish_post', 'post_to_sina_weibo', 0);/*//获取微博字符长度函数 */function WeiboLength($str){    $arr = arr_split_zh($str);   //先将字符串分割到数组中    foreach ($arr as $v){        $temp = ord($v);        //转换为ASCII码        if ($temp > 0 && $temp < 127) {            $len = $len+0.5;        }else{            $len ++;        }    }    return ceil($len);        //加一取整}/*//拆分字符串函数,只支持 gb2312编码  //参考:http://u-czh.iteye.com/blog/1565858*/function arr_split_zh($tempaddtext){    $tempaddtext = iconv("UTF-8", "GBK//IGNORE", $tempaddtext);    $cind = 0;    $arr_cont=array();    for($i=0;$i<strlen($tempaddtext);$i++) style="PADDING-BOTTOM: 0px; PADDING-TOP: 0px; PADDING-LEFT: 0px; MARGIN: 0px; PADDING-RIGHT: 0px" if(strlen(substr($tempaddtext,$cind,1))="" {=""> 0){            if(ord(substr($tempaddtext,$cind,1)) < 0xA1 ){ //如果为英文则取1个字节                array_push($arr_cont,substr($tempaddtext,$cind,1));                $cind++;            }else{                array_push($arr_cont,substr($tempaddtext,$cind,2));                $cind+=2;            }        }    }    foreach ($arr_cont as &$row)    {        $row=iconv("gb2312","UTF-8",$row);    }    return $arr_cont;}

  3、 如果你的主题没有抓取文章第一张图片作为特色图片的功能,请额外添加如下代码:  

/* 抓取文章第一张图片作为特色图片(已加上是否已存在判断,可放心添加到functions.php) */
if(!function_exists('catch_first_image')):
  function catch_first_image() {
    global $post, $posts;
    $first_img = '';
    ob_start();
    ob_end_clean();
    $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content,$matches);
    $first_img = $matches [1] [0];
    return $first_img;
   } 
}

  4、 一切准备就绪了,但是发布文章肯定不会同步,为啥?因为没权限呗~!原来这个接口需要在原先的基础上额外申请,点击应用名称,然后,在接口管理==>申请权限==>申请微博高级写入权限:  

Wordpress新浪微博申请权限

 

  5、有求于人,不管有多容易、门槛有多低,我们都要保持诚恳的态度:  

Wordpress新浪微博填写申请原因

 

  6、一般情况,一个工作日之内就能通过了,通过之后,你在去发布文章,就能看到效果了,不但有特色图片,而且还显示【来自XX博客】。  

Wordpress新浪微博开通成功

 

  三、WordPress酷炫CSS3读者墙:按年、月、日排名1、WordPress酷炫CSS3读者墙这个玩意一般不用我多说,大部分用WordPress的博主都了解过了,为了增强评论的积极性,我们可以热心读者按月份排行,甚至还可以一周为单位,进一步激励读者评论留言。  

WordPress酷炫CSS3读者墙:按年、月、日排名

 

  2、实现以上效果,可以直接使用以下代码(同时存在多个时间段):

<!-- 张戈博客修改版读者墙排行代码 -->
<style type="text/css">
.readers-list{line-height:18px;text-align:left;overflow:hidden;_zoom:1}
.readers-list li{width:200px;float:left;*margin-right:-1px}
.readers-list a,.readers-list a:hover strong{background-color:#f2f2f2;background-image:-webkit-linear-gradient(#f8f8f8,#f2f2f2);background-image:-moz-linear-gradient(#f8f8f8,#f2f2f2);background-image:linear-gradient(#f8f8f8,#f2f2f2)}
.readers-list a{position:relative;display:block;height:36px;margin:4px;padding:4px 4px 4px 44px;color:#999;overflow:hidden;border:#ccc 1px solid;border-radius:2px;box-shadow:#eee 0 0 2px}
.readers-list img,.readers-list em,.readers-list strong{-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;transition:all .2s ease-out}
.readers-list img{width:36px;height:36px;float:left;margin:0 8px 0 -40px;border-radius:2px}
.readers-list em{color:#666;font-style:normal;margin-right:10px}
.readers-list strong{color:#ddd;width:40px;text-align:right;position:absolute;right:6px;top:4px;font:bold 14px/16px microsoft yahei}
.readers-list a:hover{border-color:#bbb;box-shadow:#ccc 0 0 2px;background-color:#fff;background-image:none}
.readers-list a:hover img{opacity:.6;margin-left:0}
.readers-list a:hover em{color:#EE8B17;font:bold 12px/36px microsoft yahei}
.readers-list a:hover strong{color:#EE8B17;right:150px;top:0;text-align:center;border-right:#ccc 1px solid;height:44px;line-height:40px}
</style>
<h2>年度评论排行 TOP3</h2>
<?php   
    $query1="SELECT COUNT(comment_ID) AS cnt, comment_author, comment_author_url, comment_author_email FROM (SELECT * FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->posts.ID=$wpdb->comments.comment_post_ID) WHERE comment_date between date_sub(now(),interval 1 year) and now() AND user_id='0' AND comment_author_email != '改成你的邮箱账号' AND post_password='' AND comment_approved='1' AND comment_type='') AS tempcmt GROUP BY comment_author_email ORDER BY cnt DESC LIMIT 3";   
    $wall = $wpdb->get_results($query1);    
    $maxNum = $wall[0]->cnt;   
    foreach ($wall as $comment)   
    {   
        $width = round(40 / ($maxNum / $comment->cnt),2);   
        //此处是对应的条的宽度   
        if( $comment->comment_author_url )    
          $url = $comment->comment_author_url;    
        else $url="#"; 
  $avatar = get_avatar( $comment->comment_author_email, $size = '32', $default = get_bloginfo('wpurl').'/avatar/default.jpg' );    
        $tmp = "<li><a rel=\"friend\" alt=\"avatar头像\" target=\"_blank\" href=\"".$comment->comment_author_url."\">".$avatar."<em>".$comment->comment_author."</em> <strong>+".$comment->cnt."</strong></br>".$comment->comment_author_url."</a></li>";   
        $output1 .= $tmp;   
     }    
    $output1 = "<ul class=\"readers-list\">".$output1."</ul>";    
    echo $output1 ;   
?>    
<!-- end 年度排行 -->  
<div class="clear"></div>            
<br />
<h2>本月评论排行 TOP6</h2>
<?php   
    $query2="SELECT COUNT(comment_ID) AS cnt, comment_author, comment_author_url, comment_author_email FROM (SELECT * FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->posts.ID=$wpdb->comments.comment_post_ID) WHERE date_format(comment_date,'%Y-%m')=date_format(now(),'%Y-%m') AND user_id='0' AND comment_author_email != '改成你的邮箱账号' AND post_password='' AND comment_approved='1' AND comment_type='') AS tempcmt GROUP BY comment_author_email ORDER BY cnt DESC LIMIT 6";   
    $wall = $wpdb->get_results($query2);    
    $maxNum = $wall[0]->cnt;   
    foreach ($wall as $comment)   
    {   
        $width = round(40 / ($maxNum / $comment->cnt),2);   
        //此处是对应的条的宽度   
        if( $comment->comment_author_url )    
          $url = $comment->comment_author_url;    
        else $url="#"; 
  $avatar = get_avatar( $comment->comment_author_email, $size = '32', $default = get_bloginfo('wpurl').'/avatar/default.jpg' );    
        $tmp = "<li><a rel=\"friend\" alt=\"avatar头像\" target=\"_blank\" href=\"".$comment->comment_author_url."\">".$avatar."<em>".$comment->comment_author."</em> <strong>+".$comment->cnt."</strong></br>".$comment->comment_author_url."</a></li>";   
        $output2 .= $tmp;   
     }    
    $output2 = "<ul class=\"readers-list\">".$output2."</ul>";    
    echo $output2 ;   
?>    
<!-- end 本月排行 --> 
<div class="clear"></div>            
<br />
<h2>本周评论排行 TOP9</h2>
<?php   
    $query3="SELECT COUNT(comment_ID) AS cnt, comment_author, comment_author_url, comment_author_email FROM (SELECT * FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->posts.ID=$wpdb->comments.comment_post_ID) WHERE yearweek(date_format(comment_date,'%Y-%m-%d')) = yearweek(now()) AND user_id='0' AND comment_author_email != '改成你的邮箱账号' AND post_password='' AND comment_approved='1' AND comment_type='') AS tempcmt GROUP BY comment_author_email ORDER BY cnt DESC LIMIT 9";   
    $wall = $wpdb->get_results($query3);    
    $maxNum = $wall[0]->cnt;   
    foreach ($wall as $comment)   
    {   
        $width = round(40 / ($maxNum / $comment->cnt),2);   
        //此处是对应的条的宽度   
        if( $comment->comment_author_url )    
          $url = $comment->comment_author_url;    
        else $url="#"; 
  $avatar = get_avatar( $comment->comment_author_email, $size = '32', $default = get_bloginfo('wpurl').'/avatar/default.jpg' );    
        $tmp = "<li><a rel=\"friend\" alt=\"avatar头像\" target=\"_blank\" href=\"".$comment->comment_author_url."\">".$avatar."<em>".$comment->comment_author."</em> <strong>+".$comment->cnt."</strong></br>".$comment->comment_author_url."</a></li>";   
        $output3 .= $tmp;   
     }    
    $output3 = "<ul class=\"readers-list\">".$output3."</ul>";    
    echo $output3 ;   
?>    
<!-- end 本周排行·全部结束 -->

  3、将以上代码添加到主题目录的留言板模块的合适位置即可,代码中的三种时间段,最关键性的地方就修改变量名,否则一样的变量名会导致数据重复!需要修改的变量名是: output query,例如 output1 output2这种形式。

  四、Wordpress优化小结1、上面分享的几个Wordpress优化小技巧基本上都是大家平常折腾博客时要用到的,对于Wordpress有兴趣的朋友也可以从这些代码得到启示,从而开发出自己的Wordpress实用功能来。

  2、代码和插件都是张戈博主原创的,代码中都已经有具体的说明,基本上都是可以直接拿来用在自己的Wordpress,当然你可能需要一定的Wordpress折腾基础,例如添加函数,修改JS和CSS文件等。

推荐站点

  • 站长资源平台站长资源平台

    2898站长资源平台作为最全面的站长资源服务平台,致力于为广大站长和网站运营人员提供包含了友链交换、站长资讯、友情链接、网站交易、免费流量交换、站长工具、网站资源交换、软文投稿、软文推广等各个领域,是站长最好的选择

    www.2898.com
  • 落伍者落伍者

    落伍者创办于2001年,系国内历史最悠久的互联网创业者交流平台。

    https://www.im286.net
  • 域名交易平台域名交易平台

    域名交易平台立足于打造一个以域名交易为核心,域名拍卖、域名竞价、域名经纪中介交易为主要交易方式的域名买卖平台,并提供域名抢注、域名展示页等辅助工具及应用,并成功为CCTV、苏宁、微软、百度Baidu、新浪SINA、QIHU 360、腾讯QQ等多家企业买回域名。

    https://www.ename.com
  • 爱名网爱名网

    爱名网22.CN为顶级域名、商标、SSL证书、云计算的注册与中介交易服务提供商,提供域名注册、商标查询、https申请;商标域名中介交易与拍卖、云主机与SSL服务器证书申请的企业互联网+云计算服务门户。

    https://www.22.cn
  • A5创业网A5创业网

    A5创业网是面向互联网创业者的创业创新服务平台,提供全方位的创业资讯以及创业实战经验,推荐前沿创业项目。A5创业网全力支持创业者实现创业梦想。

    www.admin5.com