近期 WordPress 实用代码收集分享

2017-11-1010:28:32 20 1,696
摘要

这些代码都不是明月原创的,所以如果转载的话,请大家一定要记得注明代码来源哦!对每一个代码制作者的尊重是我们站长一定要遵循的美德之一,这些代码至少都是明月当前正在使用的或者是已经使用过的,基本上兼容性都非常的好,都是可以单独放在主题目录function.php里直接使用的(可以参考【如何方便的在更新主题时保留functions.php里的自定义】一文)。

今天明月收集整理了一些很不错的实用 WordPress 代码,一是为了方便自己的使用和记录,二也分享给大家,以便大家有选择的实用。

WordPress 文章分页智能伪静态化

我们通常将 WordPress 固定链接设为 /%postname%.html 或者/%post_id%.html,这样可以让页面看起来像静态页,但当文章有分页时,分页链接会变得奇怪,比如:

  • /morning-paper-news.html/3
  • /132.html/2

html 既然是后缀就应该一直在最后,来自solagirl的《用.html作为url后缀时的分页链接问题》一文,为我们提供了解决办法。不过原代码只提供了 /%postname%.html 的修改方法,本文就补充完善一下,提供一下 /%post_id%.html 的修改方法。具体做法也很简单,只需要将以下代码添加到当前主题 functions.php 中:

  1. // 适合/%post_id%.html分页链接修正
  2. class Rewrite_Inner_Page_Links_id{
  3.     var $separator;
  4.     function __construct(){
  5.         $this->separator = '/page-';
  6.         if( !is_admin() || defined( 'DOING_AJAX' ) ) :
  7.             add_filter( 'wp_link_pages_link', array$this, 'inner_page_link_format' ), 10, 2 );
  8.             add_filter( 'get_comments_pagenum_link', array$this, 'comment_page_link_format' ) );
  9.             add_filter( 'redirect_canonical', array$this, 'cancel_redirect_for_paged_posts' ), 10, 2 );
  10.         endif;
  11.         if( is_admin() ) :
  12.             add_filter( 'rewrite_rules_array', array$this, 'pagelink_rewrite_rules' ) );
  13.             register_activation_hook( __FILE__array$this, 'flush_rewrite_rules' ) ) ;
  14.             register_deactivation_hook( __FILE__array$this, 'flush_rewrite_rules' ) );
  15.         endif;
  16.     }
  17.     function flush_rewrite_rules(){
  18.         flush_rewrite_rules();
  19.     }
  20.     // 修改post分页链接的格式
  21.     function inner_page_link_format( $link$number ){
  22.         if$number > 1 ){
  23.             if( preg_match( '%<a href=".*\.html/\d*"%', $link ) ){
  24.                 $link = preg_replace( "%(\.html)/(\d*)%"$this->separator."$2$1"$link );
  25.             }
  26.         }
  27.         return $link;
  28.     }
  29.      // 为新的链接格式增加重定向规则,移除原始分页链接的重定向规则,防止重复收录
  30.     function pagelink_rewrite_rules( $rules ){
  31.         foreach ($rules as $rule => $rewrite) {
  32.             if ( $rule == '([0-9]+).html(/[0-9]+)?/?$' ) {
  33.                 unset($rules[$rule]);
  34.             }
  35.         }
  36.         $new_rule['([0-9]+)('.$this->separator.'([0-9]+))?.html/?$'] = 'index.php?p=$matches[1]&page=$matches[3]';
  37.         return $new_rule + $rules;
  38.     }
  39.     // 禁止WordPress将页面分页链接跳转到原来的格式
  40.     function cancel_redirect_for_paged_posts( $redirect_url$requested_url ){
  41.         global $wp_query;
  42.         if( is_single() && $wp_query->get( 'page' ) > 1 ){
  43.             return false;
  44.         }
  45.         return true;
  46.     }
  47. }
  48. new Rewrite_Inner_Page_Links_id();

添加代码后,需要到后台 >> 设置 >> 固定链接中保存一下设置,之后再次打开文章分页链接,就会变成类似的:

  • /morning-paper-news/page-2.html
  • /132/page-2.html

 代码来自:Boke112导航


禁止“讨论”黑名单中关键词的评论发表

WordPress 的垃圾评论骚扰是个很烦人的事儿,在【再说说博客评论这些事儿!】一文里明月专门讲过我自己喜欢使用 WordPress 后台的“黑名单”来屏蔽关键词以达到自动拉黑这里评论的目的,但是每天还是会在评论“回收站”里看到这些垃圾评论,下面的代码就是直接拒绝“讨论”黑名单中关键词的评论发表。自从用上以后感觉垃圾评论就少了很多了,一旦发现漏网的垃圾评论,及时的找出“关键词”放到 WordPress “讨论”的“黑名单”里就可以了。很完美呀!

  1. //拒绝黑名单中信息的评论发表
  2. function mac_fuckspam($comment) {
  3.         if(  is_user_logged_in()){ return $comment;} //登录用户无压力...  
  4.         if( wp_blacklist_check($comment['comment_author'],$comment['comment_author_email'],$comment['comment_author_url'], $comment['comment_content'], $comment['comment_author_IP'], $comment['comment_agent'] )){
  5.             header("Content-type: text/html; charset=utf-8");
  6.             exit('你填写的某项信息或IP地址已被列入黑名单,无法进行评论,请文明评论!');
  7.         }  else  {
  8.             return $comment;
  9.         }
  10. }
  11. add_filter('preprocess_comment', 'mac_fuckspam');

代码来自:闲鱼博客


  WordPress 的RSS里排除指定文章分类

这个主要是方便又RSS订阅用户的博客站点的,有些文章分类下的文章不需要输出到RSS源里那么就可以使用这个代码来排除这个分类。

  1. //RSS排除分类ID
  2. function exclude_category($query) {
  3.     if ( $query->is_feed ) {
  4.         $query->set('cat', '-55, -1');
  5.     }
  6. return $query;
  7. }
  8. add_filter('pre_get_posts', 'exclude_category');

注意参数cat后面的数字替换为自己需要排除的文章分类ID哦。

代码来自:云落博客


我们在访问网站时,看到一篇文章,想发表评论时,是否经常要在评论框里手动填写自己的昵称、E-mail 和网址等留言评论信息?重复的打字会让我们感到很乏味。

今天,要介绍的也是同样的方法,把 Javascript 代码存为书签来使用,但又有很大的不同,因为网上的所有(至少我搜索到的...)方法都有很大缺陷,他们不能实现跨平台跨网站,也就是说,可能适用于wordpress、Typecho、zblog和emlog等平台中的一个或几个,但都不能全部适用!我这里介绍的就是全平台全网通用的留言评论自动填写个人信息方法!

博客全平台通用评论神器一键自动填写昵称、邮箱和网址

  1. // By 龙笑天下 http://www.ilxtx.com/automatically-fill-in-personal-information.html
  2. javascript:void function(){var lauthor=["#author","input[name='comname']","#inpName","input[name='author']","#ds-dialog-name"],lmail=["#mail","#email","input[name='commail']","#inpEmail","input[name='email']","#ds-dialog-email"],lurl=["#url","input[name='comurl']","#inpHomePage","#ds-dialog-url","input[name='url']"];for(i=0;i<lauthor.length;i++){var author=document.querySelector(lauthor[i]);if(author!=null){author.value='明月登楼';break}}for(j=0;j<lmail.length;j++){var mail=document.querySelector(lmail[j]);if(mail!=null){mail.value='mingyue@ymanz.com';break}}for(k=0;k<lurl.length;k++){var url=document.querySelector(lurl[k]);if(url!=null){url.value='https://www.imydl.com';break}}return!1}()

代码说明:lauthor、lmail和lurl中引号 ""面的内容即为需要填写的评论留言框 input 元素里面的对应id、class或标签等,如遇到不能自动填写的博客网站,可以右键“审查元素”根据各个博客网站评论留言框 input 元素的相关变化在上述代码相关地方进行增删修改!

PS:由于原代码无法正确保存,已将代码压缩,大家可以放心使用。

  • 简单赘述下,具体的使用方法:

将本页添加到收藏夹保存为书签;

右键刚刚创建的书签,选择“编辑”或“属性”;

将“名称”一栏改为“一键填写留言评论信息”(见名知意即可,名称可换成其它的),并将“网址”或“地址”或“url”一栏原有的网址链接替换成上述javascript代码(代码里面的相关个人信息改为自己的哦~~),确定即可。

以后遇到留言评论时,点一个这个书签即可自动一键填写个人信息!

  • 本方法适用平台:
    • WordPress
    • Typecho
    • ZBlog
    • Emlog
    • 多说
    • 其他

代码来自:Boke112导航

上述这些代码都不是明月原创的,所以如果转载的话,请大家一定要记得注明代码来源哦!对每一个代码制作者的尊重是我们站长一定要遵循的美德之一,这些代码至少都是明月当前正在使用的或者是已经使用过的,基本上兼容性都非常的好,都是可以单独放在主题目录function.php里直接使用的(可以参考【如何方便的在更新主题时保留functions.php里的自定义】一文)。

本文最后更新于2017年11月10日,已超过 1 年没有更新,如果文章内容或图片资源链接失效和错位的,请留言反馈,我们会及时处理,谢谢!

历史文章推荐:

  • 打赏明月一下下
  • 多谢您的赞赏!
  • weinxin
  • 本博客小程序
  • 微信内浏览本博客
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:20   其中:访客  10   博主  10

    • 看全网影视 1

      谢谢分享,留个脚印。

      • Koolight 6

        黑名单想用,但一直没有用,有个滑动评论,少有机器人了。

          • 明月登楼  博主

            @Koolight 你可以试试的!没有滑动提交的评论还是很给力的! :cool: 评论起来6666 :idea:

          • 99八十一 3

            都很实用,黑名单那个我一直在用。

              • 明月登楼  博主

                @99八十一 嗯,是的,黑名单这个真心很赞的,我用了以后,垃圾评论里干净了很多!

              • 里维斯社 5

                很实用,感谢博主分享

                • 米扑博客 4

                  博主很勤奋,创作热情很高,还都是经篇文章

                  • 请输入您的QQ号 3

                    与博主算得上老朋友了,今天看了我博客读者墙,博主是铜牌读者,与博主博客相识,好像已两年了,其间好多博客已不在,感触颇深,兴趣是唯一持之以恒的动力。好久不见,来看我老朋友。

                    我已经不喜欢鼓捣代码了,一开始就没学会过,这东西鼓捣不来,其实买个主题也挺好,就觉得知更鸟主题很漂亮,祝博主博客更上一层楼。

                    • 烤德香 6

                      评论的代码。我一直都在用。挺棒的!

                      • 历史趣谈 2

                        好文章,非常值得收藏

                        • 姜辰 6

                          最喜欢的还是评论神器

                            • 明月登楼  博主

                              @姜辰 哈哈,是的,这个神器真的是居家旅行必备大杀器呀!

                            • 懿古今 9

                              那个评论神器代码非常实用,要不然很多时候都要输入评论者信息,那样会非常累

                                • 明月登楼  博主

                                  @懿古今 是的,并且这个代码的兼容性很不错,几乎兼容了所有的博客平台!好神奇!!!