解决微慕小程序版本更新后和WPJAM浏览量统一字段后,wordpress 浏览量+2的问题

前言

✅这次用的是manus解决的,特别方便;之前用deepseek,chatgpt 用了好久都没能解决。

✅使用manus,不到半小时就能解决问题了;不过manus需要用🪜,才能使用;

🔻manus官网🔻

Manus

Manus

Manus is a general AI agent that turns your thoughts into actions. It excels at various tasks in work and life, getting everything done while you rest.

🔻🪜🔻

狮子云加速Pinterest.top

狮子云加速外贸网站,访问Pinterest、Behance等设计素材平台,提升工作效率。为您提供稳定高速的网络体验,是众多追求品质的用户首选。

🔻这是我用manus解决BUG的过程🔻

Fixing WordPress Bug and Optimizing Theme Appearance - Manus

Fixing WordPress Bug and Optimizing Theme Appearance - Manus

Manus is a general AI agent that turns your thoughts into actions. It excels at various tasks in work and life, getting everything done while you rest.

下面就是解决浏览量+2需要修改的代码

第一步:还是需要修改下面的代码(统一微信小程序和wordpress浏览量字段)

解决微慕小程序版本更新后和WPJAM文章浏览量统计不一致问题 | SaiitaのBlog

解决微慕小程序版本更新后和WPJAM文章浏览量统计不一致问题 | SaiitaのBlog

解决微慕小程序插件更新后,博客文章和微信小程序文章浏览量不一致的问题;微慕小程序 + WPJAM

第二步:修改解决浏览量+2代码;

1、注释掉WordPress端自动计数钩子

rest-api-to-miniprogram.php中注释掉了第75行的add_action('wp_head', 'addPostPageviews'),避免WordPress端重复计数

2、优化小程序端浏览量递增逻辑

wp-content/plugins/rest-api-to-miniprogram/includes/ram-views-api.php

把下面的代码全部替换掉ram-views-api.php里的代码

<?php
// includes/ram-views-api.php

class RAM_Weixin_API {
    private $cache_key_prefix = 'ram_post_views_';
    private static $updated_posts = array(); // 静态变量,用于跟踪已更新的文章

    // 获取浏览量的方法
    public function get_views($post_id) {
        $cache_key = $this->cache_key_prefix . $post_id;
        $views = wp_cache_get($cache_key, 'views');
        if ($views === false) {
            $views = (int) get_post_meta($post_id, 'views', true);
            wp_cache_set($cache_key, $views, 'views', 3600); // 缓存1小时
        }
        return $views;
    }

    // 增加浏览量的方法 - 优化版本,确保每次请求只增加一次
    public function increment_views($post_id) {
        // 检查该文章是否已经在本次请求中更新过
        if (isset(self::$updated_posts[$post_id])) {
            return self::$updated_posts[$post_id]; // 直接返回已缓存的浏览量
        }

        // 获取当前浏览量
        $views = (int) get_post_meta($post_id, 'views', true);
        $views++;
        
        // 直接更新数据库,绕过缓存
        global $wpdb;
        $meta_key = 'views';
        $meta_value = $views;
        $meta_id = $wpdb->get_var($wpdb->prepare("SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s", $post_id, $meta_key));
        
        if($meta_id) {
            $wpdb->update(
                $wpdb->postmeta, 
                array('meta_value' => $meta_value), 
                array('meta_id' => $meta_id)
            );
        } else {
            $wpdb->insert(
                $wpdb->postmeta, 
                array(
                    'post_id' => $post_id,
                    'meta_key' => $meta_key,
                    'meta_value' => $meta_value
                )
            );
        }
        
        // 更新缓存
        $cache_key = $this->cache_key_prefix . $post_id;
        wp_cache_set($cache_key, $views, 'views', 3600);
        
        // 记录此文章已在本次请求中更新过
        self::$updated_posts[$post_id] = $views;
        
        // 记录调试信息
        if(defined('WP_DEBUG') && WP_DEBUG) {
            error_log('RAM Views Update: Post ID ' . $post_id . ', Views: ' . $views . ', Time: ' . date('Y-m-d H:i:s'));
        }

        return $views;
    }
}
小程序二维码

小程序

微信赞赏二维码

微信赞赏

支付宝赞赏二维码

支付宝赞赏

© 2025 SaiitaのBlog by 程厚锋

Licensed under CC BY 4.0

CC BY

相关推荐

暂无评论

目录展开

Optimized by WPJAM Basic