Quantcast
Channel: 小赖子的英国生活和资讯
Viewing all articles
Browse latest Browse all 65

为博客WordPress添加两个显示十大文章的短指令 shortcode

$
0
0

每年年底看着很多博主都会列出今年最佳十大文章啥的作一个总结,这事以前我也干过,不过以前是登陆服务器,连接数据库,然后跑几个SQL指令,得到结果,然后拷贝到文章中,很麻烦,而且这结果还是当下的,当SQL跑出来后结果就静态了。

其实,可以通过 shortcode 短指令的方式把这个功能添加到 wordpress 博客中。

WordPress 短指令:获得十大评论最多的文章

这个短指令有几个参数可以配置:

  • “year”:帖子年份,可选,如果没有指定年份,则是基于当年博客中的所有文章来统计。
  • “type”:这个是HTML列表的类型,默认是 ol(ordered list) 也可以选择 ul(unordered list)
  • “urltype”:博客链接的方式(默认是short),可以是 full 也可以是 short。这里提供了两种方式,但实际上你可以稍微改一下代码自定义 permlink 的格式。
  • “count”:返回帖子的数目,默认是10个。

以下就是获得十大评论最多的文章的wordpress shortcode PHP函数,您需要复制添加到主题的 functions.php 文件中。

function show_top_posts_by_comments_func($atts) {
    global $wpdb;
    extract(shortcode_atts(
        array(
            'year' => '',
            'type' => 'ol',
            'urltype' => 'short',
            'count' => '10'
    ), $atts));
    $query = "
        SELECT 
            `id`, 
            `post_name`,
            `post_title` 
        FROM 
            `$wpdb->posts`
        WHERE 
            `post_type` = 'post' and 
            `post_status` = 'publish'  
    ";
    if ($year) {
        $query .= " and date_format(`post_date_gmt`, \"%Y\") = '$year' ";
    }
    $query .= "
        ORDER BY
            `comment_count` DESC
        LIMIT $count
    ";
    $result = $wpdb->get_results($query);
    $ans = "<$type>";
    if ($result) {
        foreach ($result as $post) {
            if ($urltype === "short") {
                $ans .= "<li><a title='".htmlentities($result->title, ENT_QUOTES)."' href='/archives/".($post->id)."'>".$post->post_title."</a></li>";
            } else {
                $ans .= "<li><a title='".htmlentities($result->title, ENT_QUOTES)."' href='/". $post->post_name . "/'>".$post->post_title."</a></li>";
            }
        }
    }
    $ans .= "</$type>";
    return $ans;
}

add_shortcode('show_top_posts_by_comments', 'show_top_posts_by_comments_func');

在Wordpress文章或者页面中使用,只需要这么添加:

// 在前面添加 [,在末尾添加 ]
show_top_posts_by_comments urltype="short" count="10" year="2023" type="ol"

实时效果,以下显示2023年十大评论最高的文章。

  1. 2023年生日: 快乐的时间很快就过去了
  2. 拍照或摄影中采用的"男友视角"是什么
  3. 虚拟货币USDT兑换法币英镑的汇率比较: Crypto.com, Ledger硬件钱包卡 和 WirexApps
  4. 剑桥新开了家中餐小点心 Your Dumplings 豆浆和生煎
  5. 整合 ChatGPT 到微信公众号机器人
  6. Windows提高系统运行速度最简单粗暴的方法
  7. 焦虑, 失眠, 梦游
  8. 孩子每天坐免费校车上学(英国初中)
  9. 不小心被Mr Muscle通下水道的胶水弄到皮肤上怎么办?
  10. Ledger硬件钱包的虚拟加密银行卡简介(Virtual Crypto Card)

请记住,如果您不指定“年”参数,则将返回有史以来十大帖子。

WordPress 短指令:获得十大评分最高的文章

同样,您可以调用短代码show_top_posts_by_rating通过评分最高的十大帖子。 此功能具有相同的参数/用法,因此请参见上面的示例。

把下面的PHP代码添加到 functions.php 用于添加获得十大评分最高的文章的 wordpress shortcode 函数。

function show_top_posts_by_rating_func($atts) {
    global $wpdb;
    extract(shortcode_atts(
        array(
            'year' => '',
            'type' => 'ol',
            'urltype' => 'short',
            'count' => '10'
    ), $atts));
    $query = "
    SELECT 
        `p`.`ID` as `id`, 
        `p`.`post_title` as `post_title`,
        `p`.`post_name` as `post_name`,
        `visitor_votes` + `user_votes` as `total_votes`, 
        `visitor_votes`, 
        `user_votes`  
    FROM  
        `".$wpdb->prefix."gdsr_data_article` as `da` 
        INNER JOIN `$wpdb->posts` as `p` ON `da`.`post_id` = `p`.`ID` 
    WHERE
        `p`.`post_type` = 'post' and 
        `p`.`post_status` = 'publish'  
    ";
    if ($year) {
        $query .= " and date_format(`post_date_gmt`, \"%Y\") = '$year' ";
    }    
    $query .= "
        HAVING
        `total_votes` > 0
        ORDER BY
        `total_votes` DESC
        LIMIT $count
    ";
    $result = $wpdb->get_results($query);
    $ans = "<$type>";
    if ($result) {
        foreach ($result as $post) {
            if ($urltype === "short") {
                $ans .= "<li><a title='".htmlentities($result->title, ENT_QUOTES)."' href='/archives/".($post->id)."'>".$post->post_title."</a></li>";
            } else {
                $ans .= "<li><a title='".htmlentities($result->title, ENT_QUOTES)."' href='/". $post->post_name . "/'>".$post->post_title."</a></li>";
            }
        }
    }
    $ans .= "</$type>";
    return $ans;
}

add_shortcode('show_top_posts_by_rating', 'show_top_posts_by_rating_func');

使用例子:

// 在前面添加 [,在末尾添加 ]
show_top_posts_by_rating urltype="short" count="10" year="2023" type="ol"

实时效果,显示2023年十大评分文章:

  1. 4个升级CloudFlare免费到Pro套餐的理由
  2. 出国20年, 英国物价翻了好几番
  3. "躺平"生日蛋糕, 祝媳妇早日躺平
  4. 海外漂泊一晃二十年
  5. 如何解决微博视频下载出现的403错误(Denied by Referer ACL)?
  6. 老大英国小学毕业了
  7. 互联网大厂的黑客马拉松/Hackathon简介
  8. 儿子问我软件工程师的工作体验是怎么样的?
  9. 整合 ChatGPT Prompt AI到 STEEM 区块链上!
  10. 数据和软件工程师职责区别

Wordpress博文统计

Wordpress博客技术文章

英文:Adding Two Short Code Functions to WordPress: Top Posts By Number of Comments and Top Posts by Ratings

本文一共 503 个汉字, 你数一下对不对.
为博客WordPress添加两个显示十大文章的短指令 shortcode. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 为博客Wordpress添加两个显示十大文章的短指令 shortcode PHP是最好的语言 wordpress 小技巧 编程 网站信息与统计
The post 为博客WordPress添加两个显示十大文章的短指令 shortcode first appeared on 小赖子的英国生活和资讯.

Viewing all articles
Browse latest Browse all 65

Latest Images

Trending Articles