Artikel & Guides

kostenlose WordPress Snippets

letzte Änderung: 1. August 2021

Snippets

Sammlung von verschiedenen kostenlosen Snippets für WordPress

Snippets können dir das Leben generell etwas leichter machen. Manchmal allerdings auch neue Fehlermöglichkeiten einbauen. Also am besten immer zuerst Backups von den Dateien / Datenbanken / usw erstellen bei denen etwas geändert werden soll.

Für WordPress empfehle ich das PlugIn “ Code Snippets“ – somit hast du deine Snippets schön übersichtlich auf einer Seite und musst auch nicht selbst in der functions.php rumfummeln. Weiterhin bleiben die Änderungen auch nach einem Update des Themas vorhanden (sofern keine grundsätzlichen Filter usw einen anderen Namen bekommen sollten…). Oder du erstellst dir ein Child-Theme und baust dann diese Snippets in die functions.php ein.

Hinweis

Wie immer gilt: Benutzung auf eigene Gefahr. Allerdings versuche ich dir auch bei Problemen zur Seite zu stehen so gut ich kann. Falls also mal etwas schief geht oder du Fragen hast, dann scheue dich nicht davor die Kommentarfunktion zu benutzen.
Zur Sicherheit immer zuerst Backups von den Dateien / Datenbanken / usw machen wo etwas geändert werden soll.


WebFonts aus Customizer entfernen

Entfernt im Customizer-Bereich die Auswahl für die Google WebFonts. Löscht NICHT die eigentliche Webanbindung!
// hiermit wird die Auswahl für die Google Fonts im Customizer-Bereich entfernt. 
// Entfernt NICHT grundsätzlich die Google Web Fonts!!! 
add_action('admin_init', function () {
    add_filter('generate_google_fonts_array', function(){
        return array();
    });
});

IP-Adressen nicht speichern

Kleines Snippet zum Löschen der IP-Adressen bei den Kommentaren (löscht keine bereits eingetragenen)
Erklärung: es wird keine IP mehr mitgesendet , der Wert wird einfach auf leer ('') gesetzt.
function dw_IP_nicht_bei_kommentaren_speichern( $ip ) {
	return '';
}

add_filter( 'pre_comment_user_ip', 'dw_IP_nicht_bei_kommentaren_speichern' );

Kommentar-Feld anpassen (Website entfernen)

Hiermit wird das Feld "Website" (url) aus dem Kommentarfeld entfernt und der Text angepasst.
add_action( 'after_setup_theme', 'dw_add_comment_url_filter' );

function dw_add_comment_url_filter() {
    add_filter( 'comment_form_default_fields', 'dw_disable_comment_url', 20 );
}

function dw_disable_comment_url($fields) {
    unset($fields['url']);
    return $fields;
}

add_filter( 'comment_form_default_fields', 'dw_comment_form_change_cookies_consent' );
function dw_comment_form_change_cookies_consent( $fields ) {
	$commenter = wp_get_current_commenter();

	$consent   = empty( $commenter['comment_author_email'] ) ? '' : ' checked="checked"';

	$fields['cookies'] = '<p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes"' . $consent . ' />' .
					 '<label for="wp-comment-cookies-consent">Meinen Namen und E-Mail in diesem Browser speichern, bis ich wieder kommentiere.</label></p>';
	return $fields;
}

JavaScript von Contact Form 7 NUR auf der Kontaktseite laden lassen

Mit Contact Form 7 kann man schöne Formulare erstellen. Allerdings fügt dies im Header die entsprechenden JS-Aufrufe hinzu.
Und lädt somit bei jeder Seite den Code. Meistens benötigt man diesen aber auch wirklich nur auf der Kontakt-Seite. 

Mit diesem Snippet entfernst du das generelle Laden des JS-Blocks. Wie immer entweder in die functions.php (Child-Theme) 
oder  mit dem PlugIn " Code Snippets" - was ich empfehlen würde - einbauen.

Die Page-ID musst du entsprechend ändern. Wenn du im Admin-Bereich bei "Seiten" bist, und dort mit der Maus über deine 
Kontakt-Seite gehst, siehst du einen Link mit einer Zahl - dies ist die PageID (hier 6060)
function contactform7_only_on_ContactPage(){
     if(! is_page(6060) )    // <-- Page ID ändern!
   {
//entfernen von JS und CSS von allen anderen Seiten außer der PageID
wp_dequeue_script('contact-form-7');
wp_dequeue_style('contact-form-7');
   }
}

add_action( 'wp_enqueue_scripts', 'contactform7_only_on_ContactPage' );

Aktualisierung (last modified) Datum im Kopfbereich anzeigen

Mit diesem kleinen Snippet kannst du im Kopfbereich (PageHero) das angezeigte Erstellungsdatum in das zuletzt geänderte Datum (last modified) ändern.
Du kannst diesen Shortcode dann mit modified_date (in [] gesetzt) von überall aufrufen. In meinem Fall dann im "Element" - "PageHero".
function post_modified_date() {
    return get_the_modified_date();
}
add_shortcode( 'modified_date', 'post_modified_date' );

Entweder letzte Aktualisierung oder letzte Änderung

Mit dem oben genannten Code kann man auch noch etwas spielen und z.B. einbauen dass das Erstellungsdatum angezeigt werden soll solange es keine
Änderung gibt und ansonsten das Änderungsdatum. Hier ist der Text dann im Script fest hinterlegt. Ansonsten wäre der Aufruf genauso wie im oberen
Beispiel mit  modified_date (in [] gesetzt). Bitte nicht beide gleichzeitig aktiv setzen...
function post_modified_date () {
    $mod_date = get_the_modified_date();
    if ( get_the_date() !== $mod_date ) {
        return 'letzte Änderung: ' . $mod_date;
    }
	else
	 {
	return 'Erstellt am: ' . get_the_date();
	}
}
add_shortcode( 'modified_date', 'post_modified_date' );

Erstellungsdatum UND Änderungsdatum anzeigen

Jetzt kann man das Snippet noch etwas umbiegen und erhält das Erstellungsdatum sowie das Änderungsdatum - sofern etwas geändert wurde. 
Falls nicht sieht man nur das Erstellungsdatum.
Der Aufruf hier wäre mit  both_date (in [] gesetzt).  Aufgerufen wird dieser Shortcode immer da wo man es sehen möchte.
function post_both_date () {
    $mod_date = get_the_modified_date();
	$create_date = get_the_date();
    if ( $create_date !== $mod_date ) {
    	return 'Erstellt am: '. $create_date. '<br />'.' Letzte Änderung: ' . $mod_date;
    }
	else
	{
		return 'Erstellt am: ' . $create_date;
	}
}
add_shortcode( 'both_date', 'post_both_date' );

Nach falschem Login – Weiterleitung auf andere Seite

Mit diesem kleinen Teufelswerk kannst du dich selbst, aber auch Menschen mit bösen Absichten zum Wahnsinn treiben... 
Bei jedem falschen Login-Versuch wird derjenige direkt auf eine andere Seite weitergeleitet. 
In diesem Beispiel zu google.de. Einbau wie immer in functions.php (Child-Theme!), eigene php als Plugin oder über das PlugIn " Code Snippets" .
if ( ! function_exists( 'dwc_wrong_login_redirect' ) ) :
/**
 * Nach falsche Login Weiterleitung auf andere Seite, hier google.de
 */
function dwc_wrong_login_redirect() {
  wp_redirect( 'https://www.google.de' );
  exit;
}
add_filter( 'login_errors', 'dwc_wrong_login_redirect' );
endif;

Standard Mail-Versand ohne PlugIn auf SMTP Mail-Versand ändern

WordPress (und dafür programmierte Tools/PlugIns) versenden E-Mails in der Regel über die normale mail()-Funktion in PHP. 
Dies kann auch schon mal zu Problemen führen, manche Webhoster haben die mail()-Funktion sogar ganz deaktiviert.
Nun könnte man auf eins dieser unzähligen PlugIns zurückgreifen, oder man nutzt seine eigenen Snippets und aktiviert SMTP für phpmailer.

Einbau wie immer in die functions.php (Child-Theme!), eigene php als Plugin oder über das PlugIn " Code Snippets" .
Du musst in der  wp-config.php einige Änderungen, bzw deine Zugangsdaten zu deinem Mailserver/Anbieter eintragen, über die WordPress dann Mails versenden soll.
// wp-config.php
// die SMTP Daten müssen VOR diesen Einträgen hinzugefügt werden (auf jeden Fall vor der IF "ABSPATH" Abfrage)
// /* That's all, stop editing! Happy blogging. */
// /** Absolute path to the WordPress directory. */
// if ( !defined('ABSPATH') )
// Bitte entsprechend deines Anbieters/Servers die Daten ändern
// SMTP Authentication
    define( 'SMTP_USER',   'user@example.com' );    // Username to use for SMTP authentication
    define( 'SMTP_PASS',   'smtp password' );       // Password to use for SMTP authentication
    define( 'SMTP_HOST',   'smtp.example.com' );    // The hostname of the mail server
    define( 'SMTP_FROM',   'website@example.com' ); // SMTP From email address
    define( 'SMTP_NAME',   'e.g Website Name' );    // SMTP From name
    define( 'SMTP_PORT',   '25' );                  // SMTP port number - likely to be 25, 465 or 587
    define( 'SMTP_SECURE', 'tls' );                 // Encryption system to use - ssl or tls
    define( 'SMTP_AUTH',    true );                 // Use SMTP authentication (true|false)
    define( 'SMTP_DEBUG',   0 );                    // for debugging purposes only set to 1 or 2
// folgendes in die functions.php (CHILD) oder über das Tool Code Snippets neu hinzufügen
// die SMTP Variablen werden in der wp-config.php gesetzt

function send_smtp_email( $phpmailer ) {
	$phpmailer->isSMTP();
	$phpmailer->Host       = SMTP_HOST;
	$phpmailer->SMTPAuth   = SMTP_AUTH;
	$phpmailer->Port       = SMTP_PORT;
	$phpmailer->Username   = SMTP_USER;
	$phpmailer->Password   = SMTP_PASS;
	$phpmailer->SMTPSecure = SMTP_SECURE;
	$phpmailer->From       = SMTP_FROM;
	$phpmailer->FromName   = SMTP_NAME;
}
add_action( 'phpmailer_init', 'send_smtp_email' );

Schreibe einen Kommentar