Custom images met het juiste WordPress formaat tonen

Vaak wil je meer afbeeldingen in je website dan alleen de standaard featured image in WordPress. Dit is op zich niet moeilijk. Met Custom Meta Boxes 2 heb je een zeer flexibele plugin die je diverse mogelijkheden geeft om je eigen afbeeldingsvelden toe te voegen.

Als je echt een extra “featured image” wilt toevoegen kan je de plugin “multiple post thumbnails” gebruiken.

Wat in beide gevallen lastig is, is dat je afbeelding in het originele geuploade formaat wordt getoond als je deze opvraagt met de standaard get_post_meta() functie.

Om dit op te lossen heb ik een functie geschreven die de afbeedling opzoekt aan de hand van zijn url.

Als je onderstaande functies invoegt hoef je alleen nog maar de url op te vragen met

dtc_get_image_url(“dtc_naam_van_afbeelding”, “thumbnail”);

Je krijgt dan een url terug naar een afbeelding in het juiste formaat.

function dtc_get_image_url($name, $size) {
  if ($name=='default-image') {
    $id = get_post_thumbnail_id(get_the_ID());
  } else {
  //when you use the plugin "multiple post thumbnails"
    $url = MultiPostThumbnails::get_post_thumbnail_url(get_post_type(), $name);
 //when you use CMB2
    global $post;
    $url = get_post_meta($post->ID, $name, TRUE);


    $id = dtc_get_attachment_id_from_src($url);
  }

  return wp_get_attachment_image_src( $id, $size)[0];
}

/*

    Find the attachment ID by url. 

*/

function dtc_get_attachment_id_from_src ($image_src) {
        global $wpdb;
        $query = "SELECT ID FROM {$wpdb->posts} WHERE guid='$image_src'";
        $id = $wpdb->get_var($query);
        return $id;
    }