2017-09-11 19 views
1

ich in einem Wordpress das folgende Filter haben Plugin an der Spitze des Plugin namens 'Jobboard-Paket' genannteinen Filter in Plugin Wordpress Überschreibung

 function apply_job_validate($validate){ 
     $package = jb_package_get_current_package(); 

     if(!$package){ 
      jb_notice_add(esc_html__('You need to purchase a package before applying job.', 'jobboard-package'), 'error'); 
      return true; 
     } 

     $applied = JB()->candidate->count_applied_all(); 
     $limit = get_post_meta($package->ID, '_apply', true); 
     if($applied >= $limit){ 
      jb_notice_add(esc_html__('Apply job limited, you can update your package.', 'jobboard-package'), 'error'); 
      return true; 
     } 
     return $validate; 
    } 

wie folgt sind:

private function actions(){ 
     add_action('wp_enqueue_scripts', array($this, 'add_scripts')); 
     add_action('admin_menu', array ($this, 'get_menu_notice') , 100); 
     add_action('admin_enqueue_scripts', array($this, 'add_admin_scripts')); 
     add_action('save_post_jobboard-post-jobs', array($this, 'save_post')); 

     add_filter('jobboard_query_endpoint_args', array($this, 'add_endpoint')); 
     add_filter('jobboard_query_endpoint_package_title', array($this, 'add_endpoint_package_title')); 
     add_filter('jobboard_query_endpoint_transactions_title', array($this, 'add_endpoint_transactions_title')); 
     add_filter('jobboard_employer_navigation_args', array($this, 'add_endpoint_menu')); 
     add_filter('jobboard_candidate_navigation_args', array($this, 'add_endpoint_menu')); 

     add_action('jobboard_endpoint_employer_new', array($this, 'get_template_add_new'), 0); 
     add_action('jobboard_endpoint_employer_package', array($this, 'get_template_package')); 
     add_action('jobboard_endpoint_candidate_package', array($this, 'get_template_package')); 

     add_filter('jobboard_form_handler_validate_add_job', array($this, 'add_new_job_validate')); 
     add_filter('jobboard_form_handler_validate_apply_job', array($this, 'apply_job_validate')); 
    } 

I habe versucht, apply_job_validate über die functions.php und als Plugin mit dem folgenden Code und seinen Varianten ohne Glück zu deaktivieren und würde mich über Hilfe freuen.

if(class_exists('JB_Package')){ 
    //This should work in whatever case 
    remove_filter('jobboard_form_handler_validate_apply_job', array('JB_Package', 'apply_job_validate')); 
    //or Instantiating a new instance 
    //remove_filter('jobboard_form_handler_validate_apply_job', array(new JB_Package(), 'apply_job_validate')); 
    //or Targeting the specific instance, not tested 
    //remove_filter('jobboard_form_handler_validate_apply_job', array(JB_Package::get_instance(), 'apply_job_validate')); 
} 

Ich habe versucht, es auch wie folgt:

function remove_package() { 
    if (class_exists('JB_Package')) { 
    remove_filter('jobboard_form_handler_validate_apply_job', array('JB_Package', 'apply_job_validate')); 
    } 
} 
add_action('plugins_loaded','remove_package'); 

Jede Hilfe würde geschätzt. Danke vielmals!

Antwort

1

Sie sollten einen späteren Aktionshaken verwenden, z. B. after_setup_theme. Du hookst in plugins_loaded, die gefeuert wird, bevor Ihre functions.php-Datei analysiert wird. Versuchen:

function remove_package() { 
    if (class_exists('JB_Package')) { 
    remove_filter('jobboard_form_handler_validate_apply_job', array('JB_Package', 'apply_job_validate')); 
    } 
} 
add_action('after_setup_theme','remove_package'); 

Allerdings sollten Sie überprüfen, um zu sehen, wenn die ‚JB_Package‘ Klasse süchtig ist (wenn es überhaupt angeschlossen ist). Wenn es bei init süchtig ist, dann müssen Sie später in etwas einhaken wie wp_loaded.

//if class 'JB_Package' is hooked at 'init' 
add_action('wp_loaded','remove_package'); 
+0

Danke, das hat funktioniert. Hast du Ratschläge, wie du überprüfen kannst, ob die Klasse gehakt ist? Ich bin immer noch neu mit Haken, aber verstehe, dass es der bessere Weg ist, Dinge zu tun. – Cozmoz

+0

Es funktioniert immer noch, wenn es mit wp_loaded verwendet wird. – Cozmoz

+0

Ich habe versucht, mehr wie folgt zu entfernen, aber es scheint nicht für den Rest zu funktionieren https://anotepad.com/notes/csi3as – Cozmoz