我只想使用functions.php删除一个消息块。 这是我想删除的动作:
if( empty( $active_ids ) ){
add_action( 'sensei_loop_course_inside_before',
array( $this, 'active_no_course_message_output' ) );
}
所以我想我必须先参考课程才能访问它我希望删除它的功能,所以我做了:
function remove_no_active_courses_message(){
//classname where the function i want to remove is:
//class Sensei_Shortcode_User_Courses implements Sensei_Shortcode_Interface
remove_action( 'sensei_loop_course_inside_before', array( 'Sensei_Shortcode_User_Courses', 'active_no_course_message_output' ) );
remove_action( 'sensei_loop_course_inside_before', array( $Sensei_Shortcode_User_Courses, 'active_no_course_message_output' ) );
}
add_action('sensei_loop_course_inside_before', 'remove_no_active_courses_message');
但是这两个都不起作用,有什么建议吗?
编辑2 (注意:当我尝试对类对象进行全局化时,它会在此类上转储null,因此可能问题是我无法访问它的全局元素?woothemes sensei对象工作正常,我可以从那里打印东西。但不能通过类对象实例访问该函数) 我尝试了一些建议的答案:
function remove_no_active_courses_message(){
//classname where the function i want to remove is:
//class Sensei_Shortcode_User_Courses implements Sensei_Shortcode_Interface
global $Sensei_Shortcode_User_Courses; //DOESNT SEEM TO INSTANTIATE?
global $woothemes_sensei; //WORKS FINE AND CAN ACCES IT'S OBJECTS HERE
//var_dump($Sensei_Shortcode_User_Courses); //PRINTS NULL
//var_dump($woothemes_sensei); //PRINTS THE ENTIRE THINGY SUCCESFULLY
remove_action( 'sensei_loop_course_inside_before', array( $Sensei_Shortcode_User_Courses, 'active_no_course_message_output' ), 99 );
}
add_action('wp_footer', 'remove_no_active_courses_message');
答案 0 :(得分:0)
试试这个。 我没有测试过它。但它应该工作。
如果已在某个类中添加了某个操作,例如a 插件,删除它将需要访问类变量。
function remove_my_class_action()
{
global $my_class; // your class name
remove_action( 'sensei_loop_course_inside_before', array( $my_class, 'active_no_course_message_output' ) );
}
add_action( 'wp_head', 'remove_my_class_action' );
修改:如果无效,请尝试添加优先级或更改挂钩。
值得注意的是,您可能需要优先删除 添加操作后发生的挂钩操作。你不能 在添加动作之前成功删除。
解决方案1:调整优先级
function remove_my_class_action()
{
global $my_class; // your class name
remove_action( 'sensei_loop_course_inside_before', array( $my_class, 'active_no_course_message_output', 99 ) );
}
add_action( 'wp_head', 'remove_my_class_action' );
解决方案2:使用wp_footer
function remove_my_class_action()
{
global $my_class; // your class name
remove_action( 'sensei_loop_course_inside_before', array( $my_class, 'active_no_course_message_output', 99 ) );
}
add_action( 'wp_footer', 'remove_my_class_action' );
答案 1 :(得分:0)
问一下,有没有办法在functions.php之后调用这些文件?
这很难看,但试试吧,
创建一个返回并清空字符串的函数:
function emptyString(){
return ' ';
}
然后添加到钩子
add_action('sensei_loop_course_inside_before', 'emptyString', 11)
让我们这样做并检查是否有事情发生