WordPress – gut zu wissen :)

  • Theme- und Plugin-Editor im Backend disablen

    Aus Sicherheitsgründen oder um den Zugang zu Theme- und Plugin-Code zu blockieren kann mit folgender Zeile in der wp-config.php im WordPress Backend der Editor gesperrt werden:

    define ('DISALLOW_FILE_EDIT', true);

    Eingefügt wird die Zeile in der wp-config.php nach folgendem Kommentar:

    /* That’s all, stop editing! Happy publishing. */

    Änderungen dieser Dateien sind dann direkt auf dem Server möglich. Manche Provider bieten einen direkten Zugriff auf Dateien oder mit FTP/SFTP-Programmen wie WinSCP oder Filezilla ist das Editieren und Bearbeiten der Dateien möglich.

  • Code-Schnipsel im eigenem Plugin statt functions.php

    Kleine Anpapssungen an der WordPress Installation werden oft in die functions.php vom Theme eingefügt. Das hat den großen Nachteil, dass nach einem Update des Themes die Änderungen erneut eingebaut werden müssen. Alternative ist ein ein Child-Theme, hier bleiben die Nachteile des Child-Themes, dass Updates vom Parent-Theme nicht automatisch übernommen werden.
    Deshalb verwende ich für Anpassungen ein eigenes Plugin mit custom Functions:

    <?php
    /*
    Plugin Name: My Custom Functions
    Plugin URI: http://wordpress.org/plugins/my-custom-functions/
    Description: Individuelle Anpassungen
    Author: Ihr Name
    Version: 1.0.0
    Author URI: https://www.ihre-webseite.de/
    */
    

    Dieser Code wird in einer Datei zum Beispiel mit dem Namen my-custom-functions.php gespeichert und in den Plugin-Ordner der WordPress-Installation in ein neu erstelltes Directory mit Namen /my-custom-functions/ hochgeladen. Danach ist das Plugin im Backend verfügbar und kann aktivert werden. Da bisher kein Code in dem Plugin eingefügt ist, bewirkt es natürlich auch nichts.

    Ich deaktiviere zum Beispiel in meinem Custom-Functions-Plugin die WordPress Emojis:

    /**
     * Remove Emojis
     */
    function remove-emojis(){
      remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
      remove_action( 'wp_print_styles', 'print_emoji_styles' );
      remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
      remove_action( 'admin_print_styles', 'print_emoji_styles' );
    }
    add_action( 'init', 'remove-emojis' );
    

    Der Code wird durch den WordPress-Hook init ausgeführt.

  • WordPress Probleme beim Mailsenden

    In einigen Plugins können Mails versendet werden. Falls es zu Problemen beim Senden kommt, testen Sie bitte zuerst, ob das Senden von Mails aus der WordPress-Seite grundsätzlich funktioniert (z.B. aus dem Kontaktformular).

    Oder mit dem Plugin WP Mail SMTP. Das Plugin WP Mail SMTP bietet eine Mail-Testfunktion.

    Wenn der EMail-Test mit WP Mail SMTP erfolgreich war, aus einem Plugin das Versenden aber Probleme macht, kann der Fehler durch Loggen gefunden werden. Folgender Code kann in die functions.php oder in ein eigenes Plugin mit Custom Functions eingefügt werden, um Fehlermeldungen zu erhalten:

    function mail_error_loggen( $wp_error ){
       $filename = ABSPATH . '/wp-content/mail.log';
       $handle = fopen($filename, 'a');
       fputs($handle, 'Mail Fehler: ' . $wp_error->get_error_message() .'\n');
       fclose($handle);
    }
    add_action('wp_mail_failed','mail_error_loggen', 10, 1);
    

     
    Mit $filename = ABSPATH . ‘/wp-content/mail.log’; wird der Name und Ort für die Log-Datei bestimmt.

    Weitere Informationen: https://developer.wordpress.org/reference/functions/wp_mail/

  • WordPress oder Plugins funktionieren nicht richtig

    Wenn WordPress oder ein Plugin nicht richtig funktioniert, kann ein PHP- oder Datenbank-Fehler der Grund sein. WordPress hat einen Debug-Mode mit dem Fehlermeldungen in eine Log-Datei geschrieben werden. Folgende Einstellungen sind nötig:

    1. Im Hauptverzeichnis der WordPress-Installation gibt es die Datei wp-config.php. Dort gibt es eine Debug-Einstellung:
      • define(‘WP_DEBUG’, false);
    2. Der Paratmeter WP_DEBUG muss auf „true“ gesetzt werden. Außerdem müssen die beiden Parameter WP_DEBUG_LOG und WP_DEBUG_DISPLAY entsprechend gesetzt sein:
      • define('WP_DEBUG', true);
      • define('WP_DEBUG_LOG', true );
      • define('WP_DEBUG_DISPLAY', false );
    3. Mit diesen Einstellungen werden die Fehlermeldungen in der Datei „debug.log“ im Verzeichnis /wp-content/ gespeichert.

    Weitere Informationen: https://wordpress.org/support/article/debugging-in-wordpress/

    Viel Erfolg beim Entlausen!

     

  • Selber Meldungen in debug.log schreiben

    Mit folgendem Code kann man selber Texte oder Variablen z.B. aus einem Plugin in die debug.log schreiben:

    if (!function_exists('bt_write_log')) {
        function bt_write_log($text) {
            if (true === WP_DEBUG) {
                if (is_array($text) || is_object($text)) {
                    error_log(print_r($text, true));
                } else {
                    error_log($text);
                }
            }
        }
    }
    // mögliche Funktionsaufrufe
    bt_write_log('Ich bin am entlausen :)');
    bt_write_log($bt_counter);
    bt_write_log($bt_array);
    

     

  • SVG Upload unter Medien erlauben

    Folgenden Code in die functions.php oder einem Plugin mit Custom Functions einfügen. Danach ist es möglich Dateien vom Typ SVG hochzuladen:

    function bt_svg ( $svg_type ){
    	$svg_type['svg'] = 'image/svg+xml';
    	return $svg_type;
    }
    add_filter( 'upload_mimes', 'bt_svg' );
    
    function bt_ignore_upload_ext($checked, $file, $filename, $mimes){
     if ( !$checked['type'] ){
          $wp_filetype = wp_check_filetype( $filename, $mimes );
          $ext = $wp_filetype['ext'];
          $type = $wp_filetype['type'];
          $proper_filename = $filename;
    
          if ( $type && 0 === strpos($type, 'image/') && $ext !== 'svg'){
               $ext = $type = false;
               }
          $checked = compact('ext','type','proper_filename');
          }
     return $checked;
    }
    add_filter('wp_check_filetype_and_ext', 'bt_ignore_upload_ext', 10, 4);
    

 

Kontakt
05254 / 67673
info@bt-webdesign.de
Kontaktformular