调用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(); } ?>
问题分析与解决办法
核心问题点
- 静态方法调用方式错误:
clear_single_feed_cache()是静态方法,不需要实例化类,直接通过类名调用即可。 - 命名空间遗漏:目标类在
CustomFacebookFeed\Builder命名空间下,调用时必须完整指定,否则PHP找不到该类。 - 依赖文件缺失:目标类用到了Trait和其他依赖类(比如
CFF_Feed_Templates_Settings),仅引入两个文件不足以让类正常加载。 - 环境加载不完整:手动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
相关产品推荐
相关产品推荐

