X

Come allegare file PDF ai post con selezione file tramite metabox personalizzata

Snippet di IsItWP

Stai cercando un modo per creare una nuova metabox nella schermata di modifica del tuo post con un menu di selezione? Sebbene probabilmente esista un plugin per questo, abbiamo creato un rapido snippet di codice che puoi utilizzare per allegare file PDF ai post con selezione file tramite metabox personalizzata.

Istruzioni:

Tutto quello che devi fare è aggiungere questo codice al file functions.php del tuo tema o in un plugin specifico per il sito:

add_action("admin_init", "pdf_init");
add_action('save_post', 'save_pdf_link');
function pdf_init(){
	add_meta_box("my-pdf", "PDF Document", "pdf_link", "post", "normal", "low");
	}
function pdf_link(){
	global $post;
	$custom  = get_post_custom($post->ID);
	$link    = $custom["link"][0];
	$count   = 0;
	echo '<div class="link_header">';
	$query_pdf_args = array(
		'post_type' => 'attachment',
		'post_mime_type' =>'application/pdf',
		'post_status' => 'inherit',
		'posts_per_page' => -1,
		);
	$query_pdf = new WP_Query( $query_pdf_args );
	$pdf = array();
	echo '<select name="link">';
	echo '<option class="pdf_select">SELECT pdf FILE</option>';
	foreach ( $query_pdf->posts as $file) {
	   if($link == $pdf[]= $file->guid){
	      echo '<option value="'.$pdf[]= $file->guid.'" selected="true">'.$pdf[]= $file->guid.'</option>';
		 }else{
	      echo '<option value="'.$pdf[]= $file->guid.'">'.$pdf[]= $file->guid.'</option>';
		 }
		$count++;
	}
	echo '</select><br /></div>';
	echo '<p>Selecting a pdf file from the above list to attach to this post.</p>';
	echo '<div class="pdf_count"><span>Files:</span> <b>'.$count.'</b></div>';
}
function save_pdf_link(){
	global $post;
	if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){ return $post->ID; }
	update_post_meta($post->ID, "link", $_POST["link"]);
}
add_action( 'admin_head', 'pdf_css' );
function pdf_css() {
	echo '<style type="text/css">
	.pdf_select{
		font-weight:bold;
		background:#e5e5e5;
		}
	.pdf_count{
		font-size:9px;
		color:#0066ff;
		text-transform:uppercase;
		background:#f3f3f3;
		border-top:solid 1px #e5e5e5;
		padding:6px 6px 6px 12px;
		margin:0px -6px -8px -6px;
		-moz-border-radius:0px 0px 6px 6px;
		-webkit-border-radius:0px 0px 6px 6px;
		border-radius:0px 0px 6px 6px;
		}
	.pdf_count span{color:#666;}
		</style>';
}
function pdf_file_url(){
	global $wp_query;
	$custom = get_post_custom($wp_query->post->ID);
	echo $custom['link'][0];
}

Per visualizzare il file PDF, puoi usare questo codice:

<? pdf_file_url(); ?>
<a href="<? pdf_file_url(); ?>">My PDF File</a>

Nota: Se questa è la prima volta che aggiungi snippet di codice in WordPress, consulta la nostra guida su come copiare / incollare correttamente snippet di codice in WordPress, in modo da non rompere accidentalmente il tuo sito.

Se ti è piaciuto questo snippet di codice, prendi in considerazione la lettura dei nostri altri articoli sul sito come: 20 migliori temi WordPress per chiese per espandere il gregge e come tracciare i link di affiliazione in Google Analytics.

Commenti   Lascia una risposta

  1. Ciao, ho bisogno di aggiungere più tipi MIME, è possibile?.

    1. Puoi creare un array per il mime, ad esempio:

      ‘post_mime_type’ => array(‘application/doc’,’application/pdf’)

  2. Il non funziona nel loop.

    1. Il <? pdf_file_url(); ?> non funziona nel loop.

  3. grazie per il codice. :)

  4. Ciao, grazie per lo script. Lo sto usando con un tipo di post personalizzato.
    La visualizzazione è corretta ma non riesco a salvare il pdf. Anzi, lo salva la prima volta ma poi non riesco a cambiarlo. Quindi immagino che sia la funzione 'save':

    function save_pdf_link(){

    global $post;
    if (defined(‘DOING_AUTOSAVE’) && DOING_AUTOSAVE){ return $post->ID; }
    update_post_meta($post->ID, “link”, $_POST[“link”]);
    }

    Il mio tipo personalizzato si chiama 'events'. Hai qualche idea per farlo funzionare?

    Grazie

  5. ciao amico, ho un tipo di post personalizzato, listing, non riesco ad aggiungere il codice php sopra per visualizzare il PDF, quando aggiungo questo codice a functions.php allora viene aggiunto per i miei Post ma non per i miei listing.

    saluti

  6. Ciao, da quando ho aggiornato a WP3.5 è scomparso dalla modifica dei miei post/pagine, quindi non posso più aggiungere/modificare PDF. Qualcuno può aiutarmi?

    Grazie, Craig

  7. RISOLTO!!! mancava il "php" nello snippet

  8. scusa per il mio inglese:

    puoi integrare questo codice per una pagina? quali modifiche bisogna fare?

    Ho fatto un test in un post ma non funziona, il link è non si collega al mio file, aiutatemi per favore!!

  9. Ottimo lavoro! Ma se provo ad aggiungere più Metabox, ottengo lo stesso file per ogni campo personalizzato... Ho provato a creare funzioni diverse come: function pdf2_ Qualche idea?

  10. il tuo codice mi rompe il sito.

  11. l'ho trovato molto utile, c'è un modo per visualizzare il nome del file invece del solo File PDF?
    tnx

    1. sostituisci semplicemente

      $pdf[]= $file->guid

      con

      $pdf[]= $file->post_title

  12. Questo è un post fantastico, estremamente utile. Sto cercando di adattarlo per consentire la selezione e l'output di più PDF, ma sto avendo difficoltà. Quale sarebbe il modo migliore per procedere? Qualsiasi consiglio è apprezzato, e grazie ancora per l'articolo

    1. Non ho testato, ma prova a inserire l'attributo "multiple" nel .

  13. Ciao Kevin,

    Sono arrivato qui tramite una ricerca e la funzione pdf_link è stata utile per correggerla come parte di un tema personalizzato e tipi di post su cui sto lavorando.

    Grazie, mi hai risparmiato ore.

  14. Leanne Borrowman 24 ottobre 2011 alle 16:02

    Kevin, ho trovato la soluzione: 

    Sostituisci quanto segue: 

    echo ‘SELECT pdf FILE’;

    con questo: 

    echo ”;

    1. patrick1991groot 17 aprile 2017 alle 14:56

      So che questo è un post molto vecchio, ma la soluzione corretta sarebbe passare un valore vuoto, immagino!

      Sostituisci quanto segue:

      echo ‘SELECT pdf FILE’;

      con questo:

      echo ‘SELECT pdf FILE’;

  15. Leanne Borrowman 30 settembre 2011 alle 16:15

    Posso pensare a così tanti siti web che ne trarrebbero beneficio!

    Come potrei includerlo in un'istruzione if? Quindi, se è stato caricato un pdf, mostra il link, per esempio...

    1. Potresti semplicemente sostituire la funzione pdf_file_url con quanto segue che imposterebbe tutto per te. http://pastebin.com/KZmigAyF

      1. Leanne Borrowman 30 settembre 2011 alle 20:38

        Grazie mille Kevin, l'ho appena testato e funziona a meraviglia 🙂 fantastico – ritwitterò

        1. Fantastico, sono contento di sentire che ho potuto aiutare.

      2. il link non funziona

Aggiungi un commento

Siamo lieti che tu abbia scelto di lasciare un commento. Tieni presente che tutti i commenti sono moderati secondo la nostra normativa sulla privacy e tutti i link sono nofollow. NON utilizzare parole chiave nel campo del nome. Avviamo una conversazione personale e significativa.

Checklist per il lancio di WordPress

La Guida Definitiva per il Lancio di WordPress

Abbiamo raccolto tutti gli elementi essenziali della checklist per il lancio del tuo prossimo sito web WordPress in un comodo ebook.
Sì, Inviami l'eBook Gratuito!