Support » Plugins » IMPress Listings

  • Hallo zusammen,

    ich möchte gerne das Plugin ImPress Listings anpassen.

    1. Wie kann ich das updatesicher machen?
    2. Die single-listing.php habe ich angepasst und in mein Child-Theme gelegt. Das funktioniert auch. Jetzt müsste ich noch die class-featured-listings-widget.php ändern. Jedoch wenn ich diese in mein Child-theme lege wird trotzdem immer noch auf die Ursprungsdatei zugegeriffen.

    Kann mir da jemand helfen.

    Gruß
    Eddy

Ansicht von 1 Antwort (von insgesamt 1)
  • 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.

Ansicht von 1 Antwort (von insgesamt 1)
  • Das Thema „IMPress Listings“ ist für neue Antworten geschlossen.