Weitere Informationen und den Download findest du auf der offiziellen Anlaufstelle de.wordpress.org
Ergebnis 1 bis 4 von 4
  1. #1
    PostRank: 0
    Registriert seit
    28.07.2010
    Beiträge
    5

    Dateinamen beim Upload auf Zeichenkette überprüfen

    Hallo,


    ich möchte bei einem Bild-Upload den Dateinamen auf eine bestimmte Zeichenkette überprüfen lassen.


    Hier dazu ein Beispiel:


    Es gibt zwei Bilddateien:
    - großes-haus.jpg = normale Auflösung
    - großes-haus-hres.jpg = Retina-Auflösung


    Nun soll die Bildgröße "half-sized" nur von WordPress erstellt werden, wenn die Bilddatei die Zeichenkette "hres" enthält.


    Folgenden Code habe ich schon:


    Code:
    add_image_size( 'half-sized', 9999, 0);
    
    
    
    
    add_filter( 'image_resize_dimensions', 'size_check_before_creation', 10, 6 );
    function size_check_before_creation( $payload, $orig_w, $orig_h, $dest_w, $dest_h, $crop ){
      if($dest_w === 9999){ //if half image size
        $width = $orig_w/2;
        $height = $orig_h/2;
        return array( 0, 0, 0, 0, $width, $height, $orig_w, $orig_h );
      } else { //do not use the filter
        return $payload;
      }
    }

    Dieser funktioniert auch einwandfrei.
    Allerdings wird dieser natürlich jetzt immer ausgeführt.
    Der Code soll aber nur bei einem Bild-Upload mit "hres" im Dateinamen ausgeführt werden.


    Hier komme ich aktuell mit meinem Wissen leider nicht weiter.
    Würde mich sehr freuen, wenn mir hier jemand weiter helfen könnte.


    Vielen Dank!


  2. #2
    PostRank: 3
    Registriert seit
    04.01.2017
    Beiträge
    141
    Evtl. könntest du irgeneine Variable welche den Bildnamen enthält global aufrufen in der Filter Funktion. WP benutzt ja leider vieles mit globalen Namen.

  3. #3
    PostRank: 3
    Registriert seit
    04.01.2017
    Beiträge
    141
    Habe mal nachgeschaut. Der Code ist nicht getested. Die Frage ist jetzt nur wann die Action ausgeführt wird. Vor dem Filter?? Musst Du testen.

    PHP-Code:
    add_action(
        
    'wp_handle_upload',
        function(
    $fileData) {

            if (isset(
    $fileData['file'])) {
            
                
    // überprüfe ob der Dateiname hres enthält. Wenn so, benutze den Filter
                
                 
    add_filter'image_resize_dimensions''size_check_before_creation'10);
            }
         
           
            
            return 
    $fileData;                
        }                
    ); 
    Geändert von strub (21.04.2017 um 14:56 Uhr)

  4. #4
    PostRank: 0
    Registriert seit
    28.07.2010
    Beiträge
    5
    Hallo strub,

    vielen Dank für deine Hilfe.
    Dein Code hat super funktioniert.
    Habe das noch ein wenig erweitert.

    Hier das Endresultat:

    Code:
    // Erstellt eine neue Bildgröße in WordPress.
    add_image_size( 'half-sized', 9999, 0);
    
    
    add_action( 'wp_handle_upload', function($fileData) {
      
      // Legt ein Array mit einer Liste akzeptierter Datei-Formate fest.
      $allowed_file_types = array('image/jpg','image/jpeg','image/gif','image/png');
      
      // Überprüft ob eine Datei existiert und die hochgeladene Datei das richtige Format hat.
      if (isset($fileData['file']) and in_array($fileData['type'], $allowed_file_types)) {
    	
    	// Überprüft ob der Dateiname "retimg" enthält.
    	if (strpos($fileData['file'], 'retimg') !== false) {
    	  
    	  // Wenn alles richtig, wird der Filter genutzt.
    	  add_filter( 'image_resize_dimensions', 'half_image_resize_dimensions', 10, 6 );
    	}
      }
      return $fileData;                
    });
    
    
    // Erzeugt ein 50% kleineres Bild vom Original.
    function half_image_resize_dimensions( $payload, $orig_w, $orig_h, $dest_w, $dest_h, $crop ) {
      // Überprüft ob die Bildgröße "half-sized" vorhanden ist.
      if($dest_w === 9999) {
    	// Wenn ja, wird folgender Code ausgeführt.
    	$width = $orig_w/2;
    	$height = $orig_h/2;
    	return array( 0, 0, 0, 0, $width, $height, $orig_w, $orig_h );
      } else { // Wenn nein, wird der Filter nicht genutzt.
    	return $payload;
      }
    }
    Der Code ist getestet und funktioniert.

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •