Der Plugin-Entwickler schlägt auf der Plugin-Seite vor, ein eigenes, angepasstest Template zu erstellen und als single-listing-irgendwas.php
im Views-Ordner des Plugins abzulegen. Durch den individuellen Namen wird das Template bei Updates nicht überschrieben; das ist dann updatesicher (wenn auch nicht ungefährlich: es könnte ja sein, dass du mal das komplette Plugin-Verzeichnis löschst, dann ist auch das hinzugefügte Template weg).
In Child-Themes fügst du die Templates hinzu, die geändert werden sollen. Das funktioniert allerdings nicht mit der functions.php
– wenn du die einfach duplizierst, kommen Funktionsnamen doppelt vor, was zu einem fatalen PHP-Fehler führt. Allerdings haben Theme-Entwickler die Vorgabe, Funktionen „pluggable“ zu machen, also in ein if-Statement zu packen, in dem geprüft wird, ob die Funktion bereits anderswo existiert: if ( ! function_exists( 'functionname' ) ) functionname() {…}
. Wenn Funktionen aber nicht pluggable sind, bleibt immer noch der Weg, die Verknüpfung einer Funktion mit einem Hook aufzuheben.
Das Plugin lädt die Widget-Klasse WP_Listings_Featured_Listings_Widget
über die Funktion wp_listings_register_widgets()
, die mit add_action( 'widgets_init', 'wp_listings_register_widgets' );
mit dem Hook widgets_init
verknüpft ist. Mit remove_action( 'widgets_init', 'wp_listings_register_widgets' );
kannst du diese Verknüpfung aufheben. Damit die Ausführung nicht zu früh erfolgt (und die Verknüpfung mit dem Hook anschließend doch ausgeführt wird), verwendest du in einem eigenen Plugin oder deinem Child Theme
add_action( 'plugins_loaded', 'my_unload_widget' );
function my_unload_widget() {
remove_action( 'widgets_init', 'wp_listings_register_widgets' );
}
Da nun die Widget-Klasse nicht mehr geladen wird, kannst du anschließend eine eigene, abgeänderte Widget-Klasse einbinden.