当前位置:代码狗 > WordPress > WP建站 > 正文

WordPress博客实现历史上的今天小插件源码

今天群里一位大佬说WordPress历史上的今天插件作者撂挑子不干了,让我接盘,我一听,接盘这种事还是不干得好。更何况对方又不漂亮(不难),奈何那位大佬貌似很需要这个东西,仔细想想这个功能对内链的优化还是相当不错的,不过只适合上年龄的站点。再然后我就现场给他写了个插件。想起明天还没发布的内容,再然后就有了这篇文章。文章部分内容是直接摘取的网友分享的代码,说我抄袭也好,随便啦。我是搞不懂那些明明有现成的东西,非要自己挨着写的人,简直闲的蛋疼,失言勿怪,下面分享制作过程。

WordPress博客实现历史上的今天小插件源码

WordPress博客实现历史上的今天小插件源码

其实插件和functions.php文件差不多,把插件内容复制到functions.php中也是可以的,当然除了插件的特定函数外。下面一起来制作这个WordPress博客历史上的今天小插件吧!

  • 在WordPress插件文件夹下新建一个文件夹,里面用来存储我们的插件代码文件。
  • 新建一个插件代码文件我这里就用ls.php为例,然后再像其中写入插件信息。
    /**
    
    * @package his
    
    * @version 1.0
    
    */
    
    /*
    
    Plugin Name: wordpress历史上的今天
    
    Plugin URI: https://www.daimadog.com
    
    Description: 自动为WordPress文章末尾加上该站历史上的今天内容。
    
    Author: daimadog
    
    Version: 1.0
    
    Author URI: https://www.daimadog.com
    
    */
  • 然后就是取得历史上的今天发布的文章内容了。
    function wp_today($limit){
        global $wpdb;
        $post_year = get_the_time('Y');
        $post_month = get_the_time('m');
        $post_day = get_the_time('j');
        $sql = "select ID, year(post_date_gmt) as h_year, post_title, comment_count,post_author FROM 
                $wpdb->posts WHERE post_password = '' AND post_type = 'post' AND post_status = 'publish'
                AND year(post_date_gmt)!='$post_year' AND month(post_date_gmt)='$post_month' AND day(post_date_gmt)='$post_day'
                order by post_date_gmt DESC limit ".$limit;
        $histtory_post = $wpdb->get_results($sql);
        if( $histtory_post ){
             foreach( $histtory_post as $post ){
                $h_year = $post->h_year;
                $h_post_title = $post->post_title;
                $h_permalink = get_permalink( $post->ID );
                $h_comments = $post->comment_count;
                $user=get_user_by('ID',$post->post_author);
                $h_post .= "<li><strong>".$h_year."年:</strong><a href='".$h_permalink."' title='".$h_post_title."' target='_blank'>|《".$h_post_title."》-".$user->nickname."(".$h_comments.")</a></li>";
            }
        }
        if ( $h_post ){
            $result = "<h2>历史上的今天:</h2><ol>".$h_post."</ol>";
         }
        return $result;
    }
  • 上面使用了一个变量来控制每次输出多少条内容,所以我们需要写个后台。这里由于篇幅问题,就不一一贴代码了。最后就是在输出文章的时候在文章内容后面追加上这个历史上的今天的内容。
    function wp_today_auto($content){
    if( is_single() ){
    $content = $content.wp_today(esc_attr(get_option('wzsl')));
    }
    return $content;
    }
    add_filter('the_content', 'wp_today_auto',9999);

代码很简单,一看就明白,这些代码,除了插件信息那段外,复制在你的functions.php文件中也是一切OK的,但是要记住将传递的数量限制参数改为固定值!

感觉很棒!可以赞赏支持我哟~

赞(2) 打赏

评论 4

  1. #3

    很实用的一段代码,收藏一下

    楚狂人3个月前 (03-06)回复
  2. #2

    这篇文章的特色图片是真的丑!

    缙哥哥3个月前 (03-04)回复
    • 可以了,有图就行。

      代码狗3个月前 (03-04)回复
  3. #1

    我忽然又有好主意了,可以增加一下,嘿嘿!顺带明天的文章也给你解决了,啊哈哈哈哈哈!

    缙哥哥3个月前 (03-04)回复
×

请作者吃根烤肠!

支付宝