Schon mal was von WordPress gehört Steckbare Funktionen? Wenn nicht, sollte dieser Artikel Ihre Aufmerksamkeit auf sich ziehen. In zwei Worten sind steckbare Funktionen WordPress Kernfunktionen, die Sie überschreiben können. Alle diese Funktionen befinden sich in einer einzigen Datei: „wp-includes/pluggable.php“. Pluggable-Funktionen wurden in WordPress 1.5.1 eingeführt, aber in den neuesten Versionen von WordPress wird diese Methode nicht mehr verwendet. Neuere Funktionen verwenden jetzt Filter für ihre Ausgabe. Sie können jedoch immer noch steckbare Funktionen überschreiben, und darauf möchte ich in diesem Beitrag eingehen.
Welche Funktionen?
Steckbare Funktionen sind:
- auth_redirect
- check_admin_referer
- check_ajax_referer
- get_avatar
- get_currentuserinfo
- get_user_by_email
- get_user_by
- get_userdatabylogin
- get_userdata
- is_user_logged_in
- wp_authenticate
- wp_check_password
- wp_clear_auth_cookie
- wp_create_nonce
- wp_generate_auth_cookie
- wp_generate_password
- wp_get_current_user
- wp_hash_password
- wp_hash
- wp_logout
- wp_mail
- wp_new_user_notification
- wp_nonce_tick
- wp_notify_moderator
- wp_notify_postauthor
- wp_parse_auth_cookie
- wp_password_change_notification
- wp_rand
- wp_redirect
- wp_safe_redirect
- wp_salt
- wp_sanitize_redirect
- wp_set_auth_cookie
- wp_set_current_user
- wp_set_password
- wp_text_diff
- wp_validate_auth_cookie
- wp_validate_redirect
- wp_verify_nonce
Sie können auf den Namen jeder Funktion klicken, um auf ihre Codex-Seite zuzugreifen.
So überschreiben Sie steckbare Funktionen
Nun, das ist ziemlich einfach, alles, was Sie tun müssen, ist, eine Datei in Ihren Plugins zu erstellen, die eine „if (!function_exists())…“-Anweisung enthält, und dann die Funktion neu zu definieren. Ich empfehle Ihnen dringend, beim Start die Originalfunktion zu kopieren und einzufügen. Auf diese Weise können Sie sicher sein, dass die Funktion funktioniert. Hier ist ein leeres Beispiel:
if ( ! function_exists('wp_notify_postauthor') ) :
/**
* Notify an author of a comment/trackback/pingback to one of their posts.
*
* @since 1.0.0
*
* @param int $comment_id Comment ID
* @param string $comment_type Optional. The comment type either 'comment' (default), 'trackback', or 'pingback'
* @return bool False if user email does not exist. True on completion.
*/
function wp_notify_postauthor( $comment_id, $comment_type = '' ) {
/* This is where you redefine the function */
}
endif;
Ich möchte über die Funktion „wp_notify_postauthor()“ sprechen. Dieser ist dafür verantwortlich, den Autoren des Beitrags eine E-Mail zu senden, wenn ein neuer Kommentar hinzugefügt wird. In einem meiner Plugins, dem WordPress Issues Manager, musste ich diese Benachrichtigung deaktivieren, aber nur einen bestimmten benutzerdefinierten Beitragstyp. Also habe ich die ganze Funktion kopiert und einfach Folgendes hinzugefügt:
if ( ! function_exists('wp_notify_postauthor') ) :
/**
* Notify an author of a comment/trackback/pingback to one of their posts.
*
* @since 1.0.0
*
* @param int $comment_id Comment ID
* @param string $comment_type Optional. The comment type either 'comment' (default), 'trackback', or 'pingback'
* @return bool False if user email does not exist. True on completion.
*/
function wp_notify_postauthor( $comment_id, $comment_type = '' ) {
if( $post->post_type != 'issue'):
/* content of the original function */
endif;
}
endif;
Das ist einfach, aber das funktioniert hervorragend, ohne große Änderungen vornehmen oder eine vollständige benutzerdefinierte Funktion erstellen zu müssen, die mit einer benutzerdefinierten Aktion verknüpft ist.
wp_mail()
Wie Sie in der Liste der steckbaren Funktionen gesehen haben, ist wp_mail() eine steckbare Funktion. Diese Funktion wird zum Versenden von E-Mails verwendet. Überall in WordPress wird diese Funktion beim Senden einer E-Mail verwendet. Deshalb kann es sehr interessant sein, es anzupassen. Sie können beispielsweise eine HTML-Standardvorlage für alle E-Mails verwenden, die von Ihrer WordPress-Installation gesendet werden.
Sie können auch eine versteckte Kopie jeder Nachricht an eine bestimmte E-Mail senden, um eine Art Backup zu haben (glauben Sie mir, dies kann nützlich sein, wenn Ihnen jemand sagt, dass er die Nachricht nicht erhalten hat!).
wp_authenticate()
Sie könnten auch wp_authenticate() modifizieren und einige zusätzliche Parameter hinzufügen, um die Sicherheit auf Ihrer Site zu erzwingen (zum Beispiel Brute-Force-Angriffe).
auth_redirect()
Diese Funktion prüft, ob ein Benutzer angemeldet ist, und leitet ihn andernfalls auf die Anmeldeseite um. Das wäre ziemlich einfach, die Funktion zu überschreiben und den Benutzer auf eine benutzerdefinierte Seite umzuleiten, anstatt auf die Standard-Anmeldeseite (z. B. wenn Sie den wp-admin-Ordner ausblenden möchten).
wp_generate_password()
Diese Funktion ist diejenige, die Passwörter automatisch generiert. Ehrlich gesagt müssen Sie es nicht wirklich ändern, aber jetzt, da Sie wissen, was Brute-Force-Angriffe sind, könnten Sie daran interessiert sein, stärkere Passwörter zu erstellen. Nun, dies ist die Funktion, die verbessert werden muss.
Abschluss
Zum Abschluss dieses kurzen Beitrags über WordPress Pluggable Functions möchte ich darauf hinweisen, dass neue Funktionen nicht mehr so funktionieren. Wie ich oben geschrieben habe, verwenden sie jetzt Filter. Pluggable Functions sind aber gerade bei der Erstellung wirklich spezifischer Plugins wichtige Funktionen. Seien Sie jedoch vorsichtig, wenn Sie steckbare Funktionen verwenden. Wenn die neu erstellte Funktion nicht perfekt funktioniert, kann sie einen Teil Ihrer Website beschädigen (in Bezug auf die Funktionalität), also testen Sie sie bitte unter allen Bedingungen.