Überschreiben Sie eine classnfunktion, um eine benutzerdefinierte Vorlage hinzuzufügen

Ich möchte eine Vorlage von einem Plugin von Drittanbietern durch eine classnfunktion mit einem benutzerdefinierten ersetzen. Ich versuche, diese classnfunktion zu überschreiben, indem ich die Elternklasse erweitere, aber im Moment verdoppelt sich die erwartete Ausgabe. Wie entferne ich die ursprüngliche function? Ich muss den Filter entfernen, der in der Elternklasse hinzugefügt wird? Wie geht das?

Die Hauptklasse sieht so aus:

class Import_Some_Events_Cpt { public function __construct() { add_filter( 'the_content', array( $this, 'some_events_meta_before_content' ) ); } function some_events_meta_before_content( $content ) { $event_details = $this->some_events_get_event_meta( get_the_ID() ); $content = $event_details . $content; return $content; } function some_events_get_event_meta() { //here is included the original plugin template } } 

Mein Erweiterungskurs sieht so aus:

 class Import_Some_Events_Cpt_Ext extends Import_Some_Events_Cpt { function some_events_meta_before_content( $content ) { $event_details = $this->some_events_get_event_meta( get_the_ID() ); $content = $event_details . $content; return $content; } function some_events_get_event_meta() { //here is included the customized template } } 

AKTUALISIEREN

Die ursprüngliche class Import_Some_Events_Cpt ist in einer anderen class enthalten:

 class Import_Some_Events{ private static $instance; public static function instance() { if( ! isset( self::$instance ) && ! (self::$instance instanceof Import_Some_Events ) ) { self::$instance = new Import_Some_Events; self::$instance->setup_constants(); add_action( 'plugins_loaded', array( self::$instance, 'load_textdomain' ) ); self::$instance->cpt = new Import_Some_Events_Cpt(); } return self::$instance; } } 

Diese class setzt sich aus einer separaten function zusammen:

 function run_import_some_events() { return Import_Some_Events::instance(); } 

Und die obige function wird auf eine Variable gesetzt:

 $ife_events = run_import_some_events(); 

Der gesamte Code befindet sich in einer anderen Datei als der class, die ich überschreiben möchte.

Tut mir leid, wenn ich Fehler mache, ich bin kein Programmierer.

Solutions Collecting From Web of "Überschreiben Sie eine classnfunktion, um eine benutzerdefinierte Vorlage hinzuzufügen"

Versuchen Sie etwas wie der folgende Code:

 function wpse282960_remove_filter() { $run_import_some_events = run_import_some_events(); remove_filter( 'the_content', array($run_import_some_events->cpt, 'some_events_meta_before_content') ); } add_action( 'template_redirect', 'wpse282960_remove_filter' );