WordPress 近期浏览最多(热门)文章添加缩略图


文章目录 隐藏

在网站开发中,我们经常需要展示一段时间内浏览量最多的热门文章,并且这些文章通常会带有缩略图,以增加视觉吸引力。以下是一个示例代码,展示如何获取最近一段时间内浏览量最多的文章,并为每篇文章添加缩略图的功能。

功能需求说明

以下代码展示了如何使用自定义查询获取最近一段时间内浏览量最多的文章,并在输出中添加缩略图。

整理和修正后的代码

// 按时间获得最受欢迎文章(带缩略图)
function get_timespan_most_viewed($mode = 'post', $limit = 10, $days = 7, $display = true) {  
    global $wpdb, $post;      
    
    // 计算限制日期
    $limit_date = current_time('timestamp') - ($days * 86400);   
    $limit_date = date("Y-m-d H:i:s", $limit_date);    
    $where = '';  
    
    // 根据模式设置查询条件
    if(!empty($mode) && $mode != 'both') {  
        $where = "post_type = '$mode'";  
    } else {  
        $where = '1=1';  
    }  
    
    // 查询最近一段时间内浏览量最多的文章
    $most_viewed = $wpdb->get_results("
        SELECT $wpdb->posts.*, (meta_value+0) AS views 
        FROM $wpdb->posts 
        LEFT JOIN $wpdb->postmeta ON $wpdb->postmeta.post_id = $wpdb->posts.ID 
        WHERE post_date < '".current_time('mysql')."' 
        AND post_date > '".$limit_date."' 
        AND $where 
        AND post_status = 'publish' 
        AND meta_key = 'views' 
        AND post_password = '' 
        ORDER BY views DESC 
        LIMIT $limit
    ");  
    
    $temp = '';  
    
    if($most_viewed) {  
        foreach ($most_viewed as $post) {  
            setup_postdata($post);
            $post_title = get_the_title();  
            $post_views = intval($post->views);  
            $post_views = number_format($post_views);  
            
            // 获取特色图像(如果有)
            if (has_post_thumbnail()) {
                $thumb = get_the_post_thumbnail($post->ID, 'thumbnail');
            } else {
                $thumb = "<img src=\"".get_post_meta(get_the_ID(), 'thumbnail', true)."\">";
            }
            
            $temp .= "<li><a href=\"".get_permalink()."\">$post_title $thumb</a> (浏览次数: $post_views)</li>";  
        }  
        wp_reset_postdata();
    } else {  
        $temp = '<li>'.__('N/A', 'wp-postviews').'</li>'."\n";  
    }  
    
    if($display) {  
        echo $temp;  
    } else {  
        return $temp;  
    }  
}

调用方法

在主题模板的适当位置添加以下代码来调用上述函数:

<ul>  
    <?php if (function_exists('get_timespan_most_viewed')): ?>   
        <?php get_timespan_most_viewed('post', 8, 60, true); ?>   
    <?php endif; ?>  
</ul>

代码解析

  1. 计算限制日期

    $limit_date = current_time('timestamp') - ($days * 86400);   
    $limit_date = date("Y-m-d H:i:s", $limit_date);
  2. 根据模式设置查询条件

    if(!empty($mode) && $mode != 'both') {  
        $where = "post_type = '$mode'";  
    } else {  
        $where = '1=1';  
    }
  3. 查询最近一段时间内浏览量最多的文章

    $most_viewed = $wpdb->get_results("
        SELECT $wpdb->posts.*, (meta_value+0) AS views 
        FROM $wpdb->posts 
        LEFT JOIN $wpdb->postmeta ON $wpdb->postmeta.post_id = $wpdb->posts.ID 
        WHERE post_date < '".current_time('mysql')."' 
        AND post_date > '".$limit_date."' 
        AND $where 
        AND post_status = 'publish' 
        AND meta_key = 'views' 
        AND post_password = '' 
        ORDER BY views DESC 
        LIMIT $limit
    ");
  4. 获取并显示文章缩略图

    if (has_post_thumbnail()) {
        $thumb = get_the_post_thumbnail($post->ID, 'thumbnail');
    } else {
        $thumb = "<img src=\"".get_post_meta(get_the_ID(), 'thumbnail', true)."\">";
    }

通过以上代码,可以在页面上显示最近一段时间内浏览量最多的文章,并在每篇文章旁边显示缩略图。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至123@#-@12-3.com举报,一经查实,本站将立刻删除。

共有 30 条评论