Code voorbeeld

Standaard thumbnail opslaan in WordPress

Leestijd: 2 minuten (477) words
profile image

Rick de Jong

Strategie

August 01, 2012 07:05

Standaard thumbnail opslaan in WordPress

Een handige snippet voor een fallback thumbnail

Bij het ontwikkelen van WordPress thema's loop je vaak tegen het gegeven aan dat er berichten zullen worden geplaatst, vooral tijdens de ontwikkeling, zonder thumbnail. Je kunt dit oplossen door een if/else statement in de code zoals in onderstaande code wordt voorgedaan:

if (has_post_thumbnail()) {
   the_post_thumbnail();
}
else {
   echo '<img src="/images/geen-thumb.png" alt="thumbnail" />';
}

Vooropgesteld: er is niks mis met bovenstaande code. Zelf gebruik ik deze ook vaak, maar dit vereist wel dat third-party plugins die geen gebruik maken van de standaard thumbnail functie worden aangepast, anders werkt deze code niet.
 

De oplossing

Wat we gaan doen om dit op te lossen, is gebruik maken van de standaard upload functie van WordPress. Aan de hand van het ID dat je krijgt bij het uploaden van een standaard thumbnail, slaan we op welke afbeelding moet fungeren als een standaard - fallback - thumbnail, ongeacht of dit wordt ondersteund door plugin of niet.

Uploaden

Upload een standaard thumbnail en onthoud (of schrijf op) het ID dat je meekrijgt. Je vindt het ID van de thumbnail als je op de afbeelding klikt, in de URL achter "attachment_id=".

De functie

Om de zojuist ge-uploade afbeelding op te slaan als standaard thumbnail hoef je enkel de volgende code te plakken in je functions.php.

add_action( 'save_post', 'tsd_save_thumbnail' );

function tsd_save_thumbnail( $post_id ) {

$post_thumbnail = get_post_meta( $post_id, $key = '_thumbnail_id', $single = true );
  // Controleer of de post geen revision is
  if ( !wp_is_post_revision( $post_id ) ) {
    // Controleer of de post al een thumbnail heeft
    if ( empty( $post_thumbnail ) ) {
      // Nog geen thumb - sla deze dan op
      update_post_meta( $post_id, $meta_key = '_thumbnail_id', $meta_value = '5119' ); // 5119 is het ID van de afbeelding
    }
  }
}

All set

Je bent nu klaar. Is er geen afbeelding geplaatst als thumb bij een post & sla je deze op, dan wordt de standaard thumbnail getoond. Je kunt deze altijd verwijderen en opnieuw opslaan als je een specifieke thumbnail op wilt slaan.

Binnen de code vind je achter "meta_value" het ID van de afbeelding. Deze kun je met enige creativiteit beheerbaar maken in bijvoorbeeld thema opties óf de waarde van een afbeelding binnen je thema map invoeren (bijvoorbeeld 'images/geen-thumb.png'. 

Je hoeft dan niet eerst een thumbnail te uploaden en hebt een standaard functie om de post-tumbnail te laten zien.