Verhindern, dass WordPress große Bilder klein rendert („scaled“)

Wordpress scaled grosse Bilder

Wordpress scaled grosse Bilder – Screenshot/Montage T.Bortels/cpu20.de

Seit Version 5.3 werden „große Bilder“ von WordPress automatisch neu gerendert – also klein gerendert – und mit dem Hinweis „scaled“ im Dateinamen versehen. Das kann nützlich sein, um zu vermeiden, daß allzu große Bilder an die Nutzer ausgeliefert werden. Die Absicht ist also erstmal gut. Doch was gut gemeint ist muß nicht immer gut sein. Was ist ein „großes Bild“ aus Sicht von WordPress? Ab 2560px gilt ein Bild für WordPress als ein „großes Bild“.

Wer sein WordPress-Theme selbst baut möchte volle Kontrolle haben – auch und vor allem über die Größe der angezeigten Bilder. Das Feature, das die Bilder automatisch verkleinert und mit dem Hinweis „scaled“ im Dateinamen versieht, erscheint einem dann eher als Bug.

Um das Problem zu umgehen kann man diese neue Funktion manuell abschalten. Allerdings sollte man die entsprechende Anpassung nach Möglichkeit gleich zu Beginn einbauen, noch bevor zu viele Inhalte bzw. Bilder auf den Server geladen wurden. Sonst verbringt man wohlmöglich viel Zeit damit, die Bilder erneut hochzuladen.

Um die Funktion nun zu deaktivieren muß man lediglich folgenden Code–Schnippsel einfach in die functions.php einfügen und der Spuk hat ein Ende:

// Prevent WordPress from Scaling Large Images
add_filter( 'big_image_size_threshold', '__return_false' );

Damit ist dieses Feature nun abgeschaltet.

Wie gesagt: am besten, man implementiert diesen Filter bevor man anfängt, viele große Bilder hochzuladen. Sonst muß man nämlich nachträglich nochmal alle großen Bilder hochladen.

Alternativ könnte man auch die Grenze anders definieren, von der an Bilder als große Bilder betrachtet bzw. behandelt werden. Möchte man beispielsweise, daß Bilder ab einer Seitenlänge von 4800px als „groß“ betrachtet werden, kann man folgenden Code-Schippsel in die functions.php einsetzen:

/**
 * Increases the threshold for scaling big images to 4800.
 * In this case all the images that are larger than 4800px (width or height) 
 * will be scaled to 4800px.
 *
 * @param $threshold
 * @return int
 */
function hff_big_image_size_threshold( $threshold ) {
	return 4800; // new threshold
}
add_filter('big_image_size_threshold', 'hff_big_image_size_threshold', 100, 1);

Hier die Seite zur Funktion bei make.wordpress.org/core/ …

Dieser Beitrag wurde unter Online Business abgelegt am von cpu20.

Lazyload manuell in WordPress integrieren

Was ist Lazyload? Und warum brauche ich Lazyload?

Lazyload ist ein Skript, das dafür sorgt, dass Bilder, die nicht sichtbar sind, nicht geladen werden. Oder umgekehrt ausgedrückt: es werden nur die Bilder geladen, die im Sichtfeld des Nutzers sind. Und das kann viele Vorteile haben. Vor allem natürlich Performance-Vorteile.

Lazyload ist ein eigenständiges Skript. Somit kann es theoretisch in jede Webseite integriert werden, egal ob diese auf WordPress basiert, oder nicht. Es gibt natürlich inzwischen auch verschiedene WordPress-Plugins, die Lazyload in WordPress integrieren – aber ich bin in solchen Fällen immer gerne für eine Lösung ohne weitere Plugins zu haben.zum Glück funktionert die Implementierung von Lazyload in WordPress auch ausgesprochen problemlos.

Lazyload manuell in WordPress integrieren

Zunächst muss man Lazyload als Skript interieren. Dazu habe ich die Javascript-Datei einfach in ein entsprechendes verzeichnis „js“ in meinem theme hinterlegt. Die js-Datei (sowie viele hilfreiche Tipps) ist hier beim Autor von Lazyload zu finden: https://www.andreaverlicchi.eu/vanilla-lazyload/

 <script src="/wp-content/themes/mytheme/js/lazyload.min.js"></script>

Ich habe das hier mal händisch gemacht – natürlich sollte man das Skript eigentlich über die function.php laden. Aber so geht’s auch.

Dann muß man Lazyload natürlich noch aufrufen. Das habe ich per Skript-Aufruf im Footer (footer.php) eingerichtet:

<script>


var lazyLoadInstance = new LazyLoad({
// Your custom settings go here
});

</script>

Es gibt verschiedene Optionen und Möglichkeiten, wie man Lazyload nutzen kann. Ich habe mich dafür entschieden, daß ich zunächst ein Bild mit geringer Auflösung – und anschließend per Lazyload ein Bild mit hoher Auflösung nachladen möchte. Dazu muß man lediglich jedem Bild bzw. IMG-tag die entsprechenden Quellen zuweisen:

 <img class="lazy" src="<?PHP echo($low_res_url); ?>" data-src="<?php echo esc_url( $high_res_url); ?>" />

Und fertig. Oder?

 

Dieser Beitrag wurde unter Online Business abgelegt am von cpu20.

Parent-Child-Seiten – Parent-ID und Child-Tiefe herausfinden

Parent Page Wordpress

Neben einfachen Beiträgen kann man mit einer Standard-Installation von WordPress in der Regel auch Seiten (bzw. Pages) anlegen. Inhalte vom Typ Page lassen sich einfach hierarchisch organisieren – eine Funktion, die selten voll ausgenutzt wird. Mithilfe eines Seitenbaums, bei dem eine beliebige Anzahl von Seiten per Parent-Child-Verbindung hierarchisch organisiert ist, lassen sich komplexe Verzeichnisse aufbauen. Aber wie behält man den Überblick?

Zunächst ist es häufig hilfreich, die ID der übergeordneten Parent-Seite für jede beliebe Seite nutzen zu können. WordPress bringt diese Funktionalitöt mit – jede Seite weiß im Prinzip, wessen Kind (Child) sie ist. Oder um es etwas korrekter auszudrücken: die ID der Parent-Seite ist immer auch Teil des Post-Objektes.

global $post;
$parent_ID = $post->post_parent;

Mithilfe dieses Snippets lassen sich schon eine ganze Menge Dinge umsetzen.

Was aber, wenn man es mit einer mehrstufigen Hierarchie zu tun hat?

Auch dafür gibt es Bordmittel: get_post_ancestors

Über diese Funktion lassen sich im Prinzip alle „vererbenden“ Eltern-Seiten finden – also alle übergeordneten „Parent-Pages“.

(leider habe ich diesen beitrag nie komplettoert. Ich bitte das zu entschuldigen.)

Dieser Beitrag wurde unter Online Business abgelegt am von cpu20.

WooCommerce: Kategorie-Filter (Dropdown)

WooCommerce: Kategorie-Filter (Dropdown)

Screenshot: WooCommerce: Kategorie-Filter (Dropdown) cpu20/T.Bortels

In der Basis-Installtion bringt WooCommerce einen Filter, der für Programmierer vielleicht intereesant ist, aber meiner Meinung nach für Kunden und Händler nur wenig Mehrwert bringt. Eine Sortierung nach Preis und Bewertung etc ist theoretisch interessant – aber in der Praxis doch selten hilfreich. Es sei denn, man hat tausende Produkte – was in der Praxis wohl eher selten vorkommt.

Stattdessen würde ich mir eigentlich eher wünschen, dass es einen entsprechenden Filter für Kategorien gäbe. Aus Kunden-Sicht: Egal wie teuer, egal wie beliebt – ich will jetzt alle Produkte aus der Kategorie XY sehen. Leider bringt das WordPress Shop-Plugin WooCommerce eine solche Funktion bzw. ein solches Dropdown-Menu nicht „einfach so“ mit. Aber es gibt ja Code…

WooCommerce „Standard-Filter“ entfernen

Zunächst möchte ich den „Standard-Filter“ deaktivieren. Ich könnte ihn auch einfach über CSS verstecken, aber dann würde WordPress im Hintergrund immernoch die Prozesse ausführen, die den Filter generieren. Das möchte ich nicht. Also raus damit. Hier die passende Funktion:

remove_action( ‚woocommerce_before_shop_loop‘, ‚woocommerce_catalog_ordering‘, 30 );

Und um das Dropdown auch von StoreFront-Shops zu beseitigen ist noch folgender Code-Schnippsel notwendig – nachzulesen bei Business Bloomer.com bzw. hier.

/**
* @snippet Remove "Default Sorting" Dropdown @ StoreFront Shop & Archive Pages
* @how-to Watch tutorial @ https://businessbloomer.com/?p=19055
* @source https://businessbloomer.com/?p=401
* @author Rodolfo Melogli
* @compatible Woo 3.5.2
* @donate $9 https://businessbloomer.com/bloomer-armada/
*/

add_action( 'init', 'bbloomer_delay_remove' );

function bbloomer_delay_remove() {
remove_action( 'woocommerce_after_shop_loop', 'woocommerce_catalog_ordering', 10 );
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 10 );
}

So. Damit hätten wir das Sortierungs-Dropdown chon mal beseitigt,

Nun zum Kategorie-Dropdown.

Bei remicorson.com (WooCommerce: Create a shortcode to display product categories) gibt es einen Code-Schnippsel von 2013, der in meinem Fall „fast“ gepasst hat. Leider nur fast. Irgendwie haben die Entwickler übersehen, dass das Skript die ID des Elements anspricht – und nicht die Klasse des Elements. Aber dieser Fehler ist ziemlich einfach behoben. Hier zunächst der Original-Code von remicorson.com –>

/**
* WooCommerce Extra Feature
* --------------------------
*
* Register a shortcode that creates a product categories dropdown list
*
* Use: [product_categories_dropdown orderby="title" count="0" hierarchical="0"]
*
*/
add_shortcode( 'product_categories_dropdown', 'woo_product_categories_dropdown' );
 
function woo_product_categories_dropdown( $atts ) {
 
extract(shortcode_atts(array(
'count' => '0',
'hierarchical' => '0',
'orderby' => ''
), $atts));
 
ob_start();
 
$c = $count;
$h = $hierarchical;
$o = ( isset( $orderby ) && $orderby != '' ) ? $orderby : 'order';
 
// Stuck with this until a fix for http://core.trac.wordpress.org/ticket/13258
woocommerce_product_dropdown_categories( $c, $h, 0, $o );
 
?>
<script type='text/javascript'>
/* <![CDATA[ */
var product_cat_dropdown = document.getElementById("dropdown_product_cat");
function onProductCatChange() {
if ( product_cat_dropdown.options[product_cat_dropdown.selectedIndex].value !=='' ) {
location.href = "<?php echo home_url(); ?>/?product_cat="+product_cat_dropdown.options[product_cat_dropdown.selectedIndex].value;
}
}
product_cat_dropdown.onchange = onProductCatChange;
/* ]]> */
</script>
<?php
 
return ob_get_clean();
 
}

so. Der Haken an der Sache ist wie gesagt, dass nach der ID „dropdown_product_cat“ gesucht wird – die gibt es aber nicht. Es gibt aber das Element mit der Klasse „dropdown_product_cat“. Ich habe also einfach die Funktion so abgewandelt, dass nicht nach der ID, sondern nach der Klasse „dropdown_product_cat“ gesucht wird. Das sieht dann so aus:

/////
/**
* WooCommerce Extra Feature
* --------------------------
*
* Register a shortcode that creates a product categories dropdown list
*
* Use: [product_categories_dropdown orderby="title" count="0" hierarchical="0"]
*/
add_shortcode( 'product_categories_dropdown', 'woo_product_categories_dropdown' );
function woo_product_categories_dropdown( $atts ) {
extract( shortcode_atts(array(
'count' => '0',
'hierarchical' => '0',
'orderby' => ''
), $atts ) );
ob_start();

// Stuck with this until a fix for http://core.trac.wordpress.org/ticket/13258
wc_product_dropdown_categories( array(
'orderby' => ! empty( $orderby ) ? $orderby : 'order',
'hierarchical' => $hierarchical,
'show_uncategorized' => 0,
'show_counts' => $count,
'show_count' => 0, 
) );
?>
<script type='text/javascript'>
/* <![CDATA[ */
jQuery(function(){
var product_cat_dropdown = jQuery(".dropdown_product_cat");
function onProductCatChange() {
if ( product_cat_dropdown.val() !=='' ) {
location.href = "<?php echo esc_url( home_url() ); ?>/?product_cat=" +product_cat_dropdown.val();
}
}
product_cat_dropdown.change( onProductCatChange );
});
/* ]]> */
</script>
<?php
return ob_get_clean();
}

Und natürlich muss auch dieser Code-Schnippsel in die functions.php des aktiven Themes – oder in ein entsprechendes Plug-In – sonst funktioniert das nicht.

Sobald beide Code-Schnippsel in der functions.php des aktiven Themes eingebaut sind ist es möglich, das Kategorie-Dropdown ins Theme einzubauen. Das macht man dann über einen Shortcode – bzw. über den Aufruf eines Shortcodes.

Ich habe den Shortcode in das WooCommerce-Template „archive-product.php“ eingebaut. Dieses habe ich in meinem Theme-Verzeichnis unter „theme/woocommerce/archive-product.php“ hinterlegt, damit es beim nächsten WooCommerce-Update nicht überschrieben wird. Der Shortcode bzw. die Aktivierung des Shortcodes sieht dann so aus:

echo do_shortcode('[product_categories_dropdown orderby="title" count="0" hierarchical="0"]');

Ich hoffe, dass das dem einem oder der anderen vielleicht hilft?

Logout-Link im Menu der Hauptnavigation (ohne Zusatz-Abfrage)

Logout-Link ohne Bestätigung (Wordpress)

Logout-Link ohne Bestätigung - Screenshot/Montage: T.Bortels/cpu20.de

Bei manchen WordPress-Seiten möchte man, daß sich die Nutzer anmelden, um auf bestimmte Inhalte zugreifen zu können. Für den Login gibt es auch schöne und elegante Lösungen – nur beim Logout wird es manchmal ein bisschen unschön. Der Nutzer wird in der Regel auf eine Seite mit einer zusätzlichen Abfrage weitergeleitet und dort erneut gefragt, ob er/sie sich denn nun wirklich abmelden möchte. Von der Benutzerfreundlichkeit her ist das nicht optimal – die UX könnte besser aussehen. Zum Beispiel so: ein Klick auf „Logout“ – und man ist abgemeldet – der Logout ist komplett.

Das Problem erschien mir zunächst relativ trivial. Bei näherem Hinsehen wird die Lösung dann aber doch ein bisschen komplexer, als zunächst erhofft. Letztendlich benötigt man aber doch nur ein entsprechendes Plugin und ein paar Zeilen zusätzlichen PHP-Code in der functions.php – und schon kann man sich mit nur einem Klick abmelden. Hier mein Lösungsweg:

Zunächst benötigen wir das Plugin „If Menu – Visibility control for Menu Items“ oder ein ähnliches Plugin, um zu steuern, welche Menu-Punkte für angemeldete Nutzer sichtbar sind, und welche für unangemeldete. Schließlich wollen wir den Logout-Link nur für angemeldete Nutzer anzeigen – unangemeldete Nutzer bekommen hingegen den Login-Link angezeigt.

Logout-Menu WordPress

Screenshot „if menu“ by T.Bortels/cpu20.de

Das Plugin ist schnell installiert und konfiguriert – in den Menu-Einstellungen gibt es nun die Möglichkeit, einzelne Menu-Links nach vorgegebenen Bedingungen anzeigen oder verstecken zu lassen. In diesem Falle nutzen wir die Option, den Logout-Link nur für angemeldete Nutzer anzeigen zu lassen. Dementsprechend lassen wir den Login-Link nur für unangemeldete Nutzer anzeigen.

Jetzt müssen wir nur noch den Link anpassen – das geht über die functions.php

Bei Stackexchange fand ich dazu folgenden Vorschlag:

add_action('check_admin_referer', 'logout_without_confirm', 10, 2);
function logout_without_confirm($action, $result)
{
    /**
     * Allow logout without confirmation
     */
    if ($action == "log-out" && !isset($_GET['_wpnonce'])) {
        $redirect_to = isset($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : 'url-you-want-to-redirect';
        $location = str_replace('&amp;', '&', wp_logout_url($redirect_to));
        header("Location: $location");
        die;
    }
}

Leider hat das nicht so funktioniert, wie es sollte. Wo genau das Problem liegt ist mir unklar – der Nutzer wurde jedenfalls nach dem Klick auf „Logout“ weiterhin auf die Bestätigungs-Seite weitergeleitet.Aber der Ansatz war schon ganz richtig: den vorhandenen Logout-Link so zu ergänzen, dass eine erneute Bestätigung übersprungen werden würde.

Dann fand ich auf Github folgende Lösung:

// LOGOUT LINK IN MENU
function diww_menu_logout_link( $nav, $args ) {
  $logoutlink = '<li><a href="'.wp_logout_url().'">Logout</a></li>';
  if( $args->theme_location == 'primary' ) {
    return $nav.$logoutlink ;
  } else {
    return $nav;
  }
}
add_filter('wp_nav_menu_items','diww_menu_logout_link', 10, 2);

Viel kompakter – allerdings ergänzt diese Funktion das Menu (in diesem Falle „primary“) durch einen zusätzlichen Logout-Link.

Beide Ansätze kombiniert ergaben dann das für mich passende Resultat:

function change_menu($items){
  foreach($items as $item){
    if( $item->title == "Logout"){
      $item->url = wp_logout_url();
    }
  }
  return $items;
}
add_filter('wp_nav_menu_objects', 'change_menu');

Die Funktion sucht nach einem Menu-Item mit dem Titel „Logout“ und setzt dann den Link für diesen Menu-Eintrag auf die direkte Lougout-Adresse. Und fertig ist die Hütte.

Dieser Beitrag wurde am von cpu20 in Wordpress veröffentlicht. Schlagworte: , .

WordPress: alle Original-Bilder finden und auflisten (obwohl nur ‚medium-Bilder‘ im Text zu finden sind)

Wordpress: Original-Bilder finden

Folgende Fragestellung lag zugrunde: wie kann der Kunde alle in einer Seite bzw. in einem Artikel eingebundenen Bilder in Originalgröße finden, um diese herunterzuladen, zu bearbeiten und anschliessend wieder neu einzubinden?

Natürlich kann man alle Originalbilder auch ohne zusätzlichen Code relativ einfach ‚manuell‘ finden. Zunächst klickt man dazu mit der rechten Maustaste auf das zu tauschende Bild und wählt ‚Bild in einem neuen Tab öffnen‘ aus. Dann entfernt in der Adresszeile des Browsers die Größenangaben (z.B. „-800×600.jpg“), die WordPress immer dann an Dateinamen von Bildern anhängt, wenn das Bild skaliert wurde. Durch das Abschneiden dieses Zusatzes bekommt man das Bild in Originalgröße – bzw. das Originalbild, wie es einmal hochgeladen wurde. Dieses speichert man dann lokal auf dem Computer, kann es anschliessend bearbeiten und neu hochladen. Man wählt in der Admin-Ansicht einfach das Bild aus, das getauscht werden soll und geht in der Bild-Bearbeiten-Ansicht auf „Bild ersetzen“. Nun kann man das neue Bild hochladen.

Noch einfacher geht es natürlich, wenn man seine Bilder gut organisiert hat und das Bild direkt auf der lokalen Festplatte findet – dann kann man sich das Herunterladen sparen.

Beide Optionen fielen in der mir gestellten Anfrage leider aus – die Originalbilder waren nicht aufzufinden und der Trick mit der rechten Maustaste war zu umständlich. Also sollte eine Liste aller Bilder generiert werden, über die man die Originalbilder direkt herunterladen sollte.

Das Artikelbild (post thumbnail) sowie alle anderen als Attachment gespeicherten Bilder lassen sich relativ finden.

/* Alle Attachment-Bilder finden - kommt ins Template */

$images = get_children( array( 'post_parent' => get_the_ID(), 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order', 'order' => 'ASC', 'numberposts' => 999 ) ); 
 if ( $images ) {

//looping through the images
 foreach ( $images as $attachment_id => $attachment ) {
 
 $img_path_array = (wp_get_attachment_image_src( $attachment_id, 'full' ));?>
 <a href="<?PHP echo($img_path_array[0]); ?>" target="_blank"><?PHP echo wp_get_attachment_image( $attachment_id, 'full' ); ?></a>

<?php
 }
 ?><?php
 
 }

Bei den im Text platzierten Bildern ist das schon ein bisschen schwieriger – diese sind ja nicht als Attachment abgelegt. Also müssen wir zunächst mal alle Bilder finden, die in den Text (content) eingebunden sind. Dazu durchsuchen wir den Seiteninhalt nach dem Codeschnippsel „src=“, der uns verrät, dass dort ein Bild zu finden ist.

Das klappt soweit auch ganz gut – allerdings bekommen wir einen Array der Bilder, wie sie im Text eingebunden sind – also mit angehängten Pixelmaßen (z.B. „bild-800×600.jpg). Mithilfe der Funktion get_original_image können wir aber die Originalbilder herausbekommen.

/* Alle Inline-Bilder finden - dieser Code-Schnippsel kommt ins Template */
 $regex = '/src="([^"]*)"/';
 $content = $post->post_content;
 // echo($content);
 preg_match_all( $regex, $content, $matches );

foreach($matches[1] as $image):
 
  $the_orig_image = get_original_image( $image);

  echo '<a href="'.$the_orig_image.'" target="_blank"><img src="'.$the_orig_image.'"></a>';
  $ii++;

endforeach;
/* Die Funktion get_original_image kommt in die functions.php des Themes */
function get_original_image( $url ) { 
global $_wp_additional_image_sizes; $new_url = $url; // Get All Image Sizes 
$builtin_sizes = // *** BREAK WAS MISSING *** 
 array( 'large' => array( // *** WRONG ARROW "=–>" ***
 'width' => get_option('large_size_w'),
 'height' => get_option('large_size_h')
 ),
 'medium' => array(
 'width' => get_option('medium_size_w'),
 'height' => get_option('medium_size_h')
 ),
 'thumbnail' => array(
 'width' => get_option('thumbnail_size_w'),
 'height' => get_option('thumbnail_size_h')
 )
 );

$image_sizes = array_merge( $builtin_sizes, $_wp_additional_image_sizes );

// Parse URL
$info = pathinfo( $url );

// Check to see if image is a thumbnail

// Get image size extensions, e.g. -200×200
// Get image size width only extensions, e.g., -200x
// Get image size height only extensions, e.g., x200.
$image_exts = array();
$image_exts_width = array();
$image_exts_height = array();
foreach ($image_sizes as $image_size) {
  $image_exts[] = '-'.$image_size['width'].'x'.$image_size['height'];
  $image_exts_width[] = '-'.$image_size['width'].'x';
  $image_exts_height[] = 'x'.$image_size['height'];
}

// Cycle through image size extensions, e.g. -200×200
foreach ( $image_exts as $image_ext ) {
  //if found, replace the extension with nothing
  $new_url = str_replace( $image_ext , '' , $url );

// we found an original – don't look any further
if ( $new_url != $url )
  break;
}

// if a new url hasn't been generated yet, keep looking…
if ( $new_url == $url ) {
  // Cycle through image width only extensions, e.g. -200x
  foreach ( $image_exts_width as $image_ext ) {

    // check for width, e.g., -200x
    $pos1 = strrpos( $info['basename'] , $image_ext , -1 );
    if ( $pos1 ) {
      // strip, & assign new url
      $new_url = $info['dirname'] . '/' . substr( $info['basename'] , 0 , $pos1 ) . '.' . $info['extension'];
    }

    // we found an original – don't look any further
    if ( $new_url != $url )
      break;
  }

  // if a new url hasn't been generated yet, keep looking…
  if ( $new_url == $url ) {
    // Cycle through image height only extensions, e.g. x200.
    foreach ( $image_exts_height as $image_ext ) {

      // check for height, e.g., x200
      $pos2 = strrpos( $info['basename'] , $image_ext , -1 );

      //example_2a-263×300.jpg -> example_2a.jpg
      if ( $pos2 ) {
        // get position of -, strip, & assign new url
        $pos3 = strrpos( $info['basename'] , '-' , -1 );
        $new_url = $info['dirname'] . '/' . substr( $info['basename'] , 0 , $pos3 ) . '.' . $info['extension'];
      }

      if ( $new_url != $url )
        break;
    }
  }
}

if ( $new_url != $url )
  return $new_url;
else
  return $url;
}

Die Funktion habe ich dem Artikel „How to Get Original Image from a Thumbnail Image in WordPress“ (wpsmith.net) entnommen – allerdings waren in der Original-Funktion einige Fehler vorhanden. DIese habe ich korrigiert und zum Teil oben im Code entsprechend markiert.

Was macht die Funktion ‚get_original_image‘? Zunächst werden alle möglichen Bildformate bzw. die jeweiligen Breiten und Höhen in Arrays gespeichert. Dann vergleichen wir jede Bild-URL, die im Text einer Seite gefunden wurde, mit den möglichen Höhen und Breiten. Wenn Höhe und/oder Breite im Dateinamen des Bildes vorkommen, wird die Endung mit den Angaben zu Höhe und Breite (z.B. „-800×600“) entfernt – und schon haben wir das Originalbild.

 

Dieser Beitrag wurde am von cpu20 in Wordpress veröffentlicht. Schlagworte: .