2012-12-12 16 views
5

Spero che qualcuno possa essere in grado di aiutarmi con un problema. Sto costruendo un sito web di notizie per un mio amico. Il sito sta iniziando a venire insieme, ma non riesco a scoprire come aggiungere didascalie alle immagini presentate. Ho cercato in tutto il Web oggi, ci sono molti modi per farlo aggiungendo il codice ai fogli di PHP, ma non sono sicuro di quello che sto facendo.Come aggiungere una didascalia immagine in primo piano in Wordpress

Ho aggiunto codice al codice functions.php, ma il tutto è a forma di coppia.

Sto incrociando le dita, qualcuno sarà in grado di aiutarmi digitandomi cosa fare.

Grazie in anticipo per il vostro aiuto.

Cordiali saluti

John

+0

Cosa intendi per "immagini presentate"? Vuoi dire che vuoi che certe immagini abbiano didascalie e altre no? Spiegare in quale contesto si desidera visualizzare le immagini, le didascalie, ecc. – barakadam

+1

Un'immagine in primo piano ha il proprio punto di caricamento per ogni post e pagina, e viene chiamata "Immagine in primo piano". Quindi presumo che sia di questo che sta parlando. Una rapida ricerca su Google ha fornito una soluzione semplice, la posterò qui sotto. – AndyWarren

risposta

9

In primo luogo, è necessario eliminare il seguente codice nel file functions.php:

function the_post_thumbnail_caption() { 
    global $post; 

    $thumbnail_id = get_post_thumbnail_id($post->ID); 
    $thumbnail_image = get_posts(array('p' => $thumbnail_id, 'post_type' => 'attachment')); 

    if ($thumbnail_image && isset($thumbnail_image[0])) { 
    echo '<span>'.$thumbnail_image[0]->post_excerpt.'</span>'; 
    } 
} 

incollarlo a destra prima del tag di chiusura PHP in quel file, se non c'è un tag PHP di chiusura, assicurati che non ci siano linee vuote sotto il codice che incollerai perché ciò potrebbe causare problemi.

Poi, in cui si desidera la didascalia da visualizzare, è necessario chiamare con questo:

<?php the_post_thumbnail_caption(); ?>

Se non siete sicuri dove mettere la chiamata nei file di template , dovrai trovare dove viene chiamato <?php the_post_thumbnail(); ?>. Cerca la riga nel file del modello e posiziona la chiamata della funzione accanto a essa, dove vuoi che venga visualizzata la didascalia. La funzione racchiude automaticamente la didascalia in un tag span in modo da poterla indirizzare con CSS, ma puoi anche racchiudere la chiamata di funzione in qualsiasi tag che desideri.

Così, per esempio, se il file di modello sta chiamando l'immagine descritto con questo o qualcosa di molto simile:

<?php 
    if (has_post_thumbnail()) { 
     the_post_thumbnail(); 
} ?> 

che ci si vuole aggiungere la chiamata didascalia in questo modo:

<?php 
    if (has_post_thumbnail()) { 
     the_post_thumbnail(); 
} ?> 
<?php the_post_thumbnail_caption(); ?> 

Fatemi sapere se avete bisogno di ulteriori chiarimenti.

+0

Ciao Andy, grazie per aver trovato il tempo di aiutarmi. Sto usando un ottimo generatore di temi chiamato Ultimatum, per favore vedi il seguente link. http://ultimatumtheme.com/ Ho esaminato tutte le cartelle questa mattina, ma non riesco a trovare i file php che hai citato. Così ho copiato il tuo post e ti ho accreditato e pubblicato il forum Ultimatum, si spera che qualcuno mi dica quale file devo aprire in notepad ++ e aggiungerlo. – TLCJohn

+0

Nessun problema, si spera che aiuti. Una volta capito, per favore accetta la mia risposta qui se fosse quello che stavi cercando. Sono andato al link che hai fornito e stavo per scaricare una copia in modo da trovare i file corretti per te, ma è uno strumento piuttosto costoso. Sembrerebbe che sia una specie di front end drag and drop builder? Quindi potrebbe avere molto più codice e file che un tipico tema WordPress. – AndyWarren

-1
the_post_thumbnail();     // without parameter -> Thumbnail 

the_post_thumbnail('thumbnail');  // Thumbnail (default 150px x 150px max) 
the_post_thumbnail('medium');   // Medium resolution (default 300px x 300px max) 
the_post_thumbnail('large');   // Large resolution (default 640px x 640px max) 
the_post_thumbnail('full');   // Original image resolution (unmodified) 

the_post_thumbnail(array(100,100)); // Other resolutions 
+2

È necessario rimuovere questa risposta. È completamente errato e probabilmente verrai svalutato. –

0

So che questa è una vecchia questione, ma ho voluto offrire un'altra soluzione che altri potrebbero preferire, se si preferisce trattare con i dati che sono già disponibili (chiamate al database meno) durante l'utilizzo di campi già disponibili in WordPress .

Poiché l'output di get_the_post_thumbnail() restituisce l'intero tag img come una stringa con il tag alt pre-compilato dal campo didascalia, è possibile semplicemente estrarre il tag alt del tag immagine utilizzando parser xml o regex.

ho fatto questo:

<?php 
    if ($featured = get_the_post_thumbnail(get_the_ID())): 

     echo $featured; 
     preg_match('/alt="(.*)"/i', $featured, $caption); 

     if ($caption) { 
      echo wpautop(array_pop($caption)); 
     } 
    endif; 
    ?> 

Se si vuole che in una funzione come la risposta inizialmente accettato, si passa il tag img direttamente alla funzione:

function get_the_post_thumbnail_caption($img_tag) { 
     preg_match('/alt="(.*)"/i', $img_tag, $caption); 
     return array_pop($caption); 
    } 

E nel modello:

$img = get_the_post_thumbnail(get_the_ID()); // or any id 
    echo wpautop(get_the_post_thumbnail_caption($img)); 

Si noti che se si popola il campo "alt text", sovrascriverà i dati del campo didascalia quando si stampa il tag img. Puoi sovrascrivere questo comportamento con i filtri, se necessario.

+0

Un'altra cosa: puoi espandere la regex per includere altri tag usando la funzione 'preg_match_all' e uno schema come '/(alt|title|src)="(.*)"/i' – Scorpius

Problemi correlati