You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用WordPress插件类中clear_single_feed_cache函数失败求助

问题描述

尝试编写脚本调用WordPress插件中CFF_Feed_Saver_Manager类的clear_single_feed_cache()函数,但无法正常运行,怀疑是函数内部实例化其他类导致依赖缺失。

目标类及函数代码

<?php 
 namespace CustomFacebookFeed\Builder;

use CustomFacebookFeed\Admin\Traits\CFF_Feed_Templates_Settings;
use CustomFacebookFeed\SB_Facebook_Data_Encryption;
use CustomFacebookFeed\SB_Facebook_Data_Manager;
use CustomFacebookFeed\CFF_Events_Parser;
   
class CFF_Feed_Saver_Manager {
    use CFF_Feed_Templates_Settings;

    public static function hooks() {
        add_action( 'wp_ajax_cff_feed_saver_manager_clear_single_feed_cache', array( 'CustomFacebookFeed\Builder\CFF_Feed_Saver_Manager', 'clear_single_feed_cache' ) );
    }

    public static function clear_single_feed_cache() {
        $feed_id = '12';
        $feed_cache = new \CustomFacebookFeed\CFF_Cache( $feed_id );
        $feed_cache->clear( 'all' );
        $feed_cache->clear( 'posts' );
    }
} 
?>

我的调用代码

add_action( 'run_cff_clear_feed', 'myCFFclearFeed');

function myCFFclearFeed() {
    require_once '/var/www/wp-content/plugins/custom-facebook-feed-pro/inc/Builder/CFF_Feed_Saver_Manager.php';
    require_once '/var/www/wp-content/plugins/custom-facebook-feed-pro/inc/CFF_Cache.php';
    $object = new CFF_Feed_Saver_Manager();
    $object->clear_single_feed_cache();
} 
?>

问题分析与解决办法

核心问题点

  1. 静态方法调用方式错误:clear_single_feed_cache()是静态方法,不需要实例化类,直接通过类名调用即可。
  2. 命名空间遗漏:目标类在CustomFacebookFeed\Builder命名空间下,调用时必须完整指定,否则PHP找不到该类。
  3. 依赖文件缺失:目标类用到了Trait和其他依赖类(比如CFF_Feed_Templates_Settings),仅引入两个文件不足以让类正常加载。
  4. 环境加载不完整:手动require文件可能跳过了插件的初始化流程,最好在WordPress原生钩子中执行,确保插件已激活并加载所有依赖。

修正后的调用代码

add_action( 'init', 'myCFFclearFeed' );

function myCFFclearFeed() {
    // 先检查类是否存在,避免文件不存在报错
    if ( ! class_exists( 'CustomFacebookFeed\Builder\CFF_Feed_Saver_Manager' ) ) {
        require_once WP_PLUGIN_DIR . '/custom-facebook-feed-pro/inc/Builder/CFF_Feed_Saver_Manager.php';
    }

    // 直接调用静态方法,无需实例化对象
    CustomFacebookFeed\Builder\CFF_Feed_Saver_Manager::clear_single_feed_cache();
}

额外优化建议

  • 如果需要动态指定feed_id,可以修改原静态方法支持传参(原方法写死了12):
    // 修改后的静态方法
    public static function clear_single_feed_cache( $feed_id = '12' ) {
        $feed_cache = new \CustomFacebookFeed\CFF_Cache( $feed_id );
        $feed_cache->clear( 'all' );
        $feed_cache->clear( 'posts' );
    }
    
    // 调用时传入自定义ID
    CustomFacebookFeed\Builder\CFF_Feed_Saver_Manager::clear_single_feed_cache( '你的FeedID' );
    
  • 避免硬编码文件路径,使用WP_PLUGIN_DIR常量适配不同服务器配置。

内容的提问来源于stack exchange,提问作者Mike Muller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 14:22:14