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

AI摘要

使用Manus半小时解决WordPress浏览量重复计数问题:注释自动计数钩子,优化小程序端递增逻辑,确保每次请求只增加一次浏览量。

前言

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

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

🔻manus官网🔻

🔻🔑🔻

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

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

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

第二步:修改解决浏览量+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;
    }
}

Saiyintai

软件测试工程师

相关推荐

停止并删除dockers 网络

Ubuntu 24.04部署ai-manus存在安全风险,因无用户登录功能。关闭容器时网络被占用,需先停止相关容器再执行docker compose down。项目功能达manus的80%,但消耗tokens过多。

暂无评论