X

Comment joindre des fichiers PDF à un article avec une sélection de fichiers de métabox personnalisée

Extraits par IsItWP

Cherchez-vous un moyen de créer une nouvelle metabox dans votre écran d'édition de publication avec un menu déroulant ? Bien qu'il existe probablement un plugin pour cela, nous avons créé un extrait de code rapide que vous pouvez utiliser pour joindre des fichiers PDF à des publications avec une sélection de fichiers metabox personnalisée.

Instructions :

Il vous suffit d'ajouter ce code au fichier functions.php de votre thème ou dans un plugin spécifique au site :

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];
}

Pour afficher le fichier PDF, vous pouvez utiliser ce code :

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

Remarque : Si c'est la première fois que vous ajoutez des extraits de code dans WordPress, veuillez consulter notre guide sur la manière de copier / coller correctement des extraits de code dans WordPress, afin de ne pas casser accidentellement votre site.

Si vous avez aimé cet extrait de code, n'hésitez pas à consulter nos autres articles sur le site tels que : 20 meilleurs thèmes WordPress pour églises pour élargir le troupeau et comment suivre les liens d'affiliation dans Google Analytics.

Commentaires   Laisser une réponse

  1. Salut, j'ai besoin d'ajouter plus de types MIME, est-ce possible ?.

    1. Vous pouvez faire un tableau pour le mime, par exemple :

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

  2. Le n'est pas fonctionnel dans la boucle.

    1. Le <? pdf_file_url(); ?> n'est pas fonctionnel dans la boucle.

  3. merci pour le code. 🙂

  4. Salut, merci pour le script. Je l'utilise avec un type de publication personnalisé.
    L'affichage est correct mais je ne peux pas enregistrer le pdf. Plutôt, il l'enregistre la première fois mais ensuite je ne peux pas le modifier. Je suppose donc que c'est la fonction 'enregistrer':

    function save_pdf_link(){

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

    Mon type personnalisé s'appelle 'events'. Une idée pour le faire fonctionner ?

    Remerciement

  5. salut l'ami, j'ai un type de publication personnalisé, une liste, je ne peux pas y ajouter le code php ci-dessus pour afficher le PDF, quand j'ajoute ce code à functions.php alors il est ajouté pour mes publications mais pas pour mes listes.

    salutations

  6. Salut, depuis la mise à niveau vers WP3.5, cela a disparu de mes publications/pages d'édition, je ne peux donc plus ajouter/modifier de PDF. Quelqu'un peut-il m'aider ?

    Merci, Craig

  7. RÉSOLU !!! il manquait le « php » dans l'extrait

  8. désolé pour mon anglais :

    pouvez-vous intégrer ce code pour une page ? quels sont les changements à faire ?

    J'ai fait un test dans un post mais ça ne marche pas, le lien ne se connecte pas à mon fichier, aidez-moi s'il vous plaît !!

  9. Excellent travail ! Mais si j'essaie d'ajouter plusieurs Metabox, j'obtiens le même fichier pour chaque champ personnalisé... J'ai essayé de créer différentes fonctions comme : function pdf2_ Des idées ?

  10. votre code casse mon site.

  11. Je l'ai trouvé très utile, y a-t-il un moyen d'afficher le nom du fichier au lieu de juste "Fichier PDF" ?
    Merci

    1. remplacez simplement

      $pdf[]= $file->guid

      par

      $pdf[]= $file->post_title

  12. C'est un article fantastique, extrêmement utile. J'essaie de l'adapter pour permettre la sélection et la sortie de plusieurs PDF, mais j'ai du mal. Quelle serait la meilleure façon d'aborder cela ? Tout conseil est apprécié, et merci encore pour l'article.

    1. Je n'ai pas testé, mais essayez d'insérer l'attribut « multiple » dans le.

  13. Salut Kevin,

    Je suis tombé sur cet article lors d'une recherche et la fonction pdf_link m'a été utile pour corriger une partie d'un thème personnalisé et de types de publication sur lesquels je travaille.

    Merci, vous m'avez fait gagner des heures.

  14. Leanne Borrowman October 24, 2011 at 4:02 pm

    Kevin, j'ai trouvé la solution : 

    Remplacez ce qui suit : 

    echo ‘SÉLECTIONNER FICHIER PDF’;

    par ceci : 

    echo ”;

    1. patrick1991groot April 17, 2017 at 2:56 pm

      Je sais que c'est un post très ancien, mais la bonne solution serait de passer une valeur vide, je suppose !

      Remplacez ce qui suit :

      echo ‘SÉLECTIONNER FICHIER PDF’;

      par ceci :

      echo ‘SÉLECTIONNER FICHIER PDF’;

  15. Je peux penser à tellement de sites web qui en bénéficieraient !

    Comment pourrais-je inclure cela dans une instruction if ? Par exemple, si un PDF a été téléchargé, afficher le lien...

    1. Vous pourriez simplement remplacer la fonction pdf_file_url par la suivante qui vous mettrait tout en place. http://pastebin.com/KZmigAyF

      1. Merci beaucoup Kevin, je viens de tester et ça marche à merveille 🙂 incroyable – je vais retweeter

        1. Cool, content d'apprendre que j'ai pu aider.

      2. lien ne fonctionne pas

Ajouter un commentaire

Nous sommes heureux que vous ayez choisi de laisser un commentaire. N'oubliez pas que tous les commentaires sont modérés conformément à notre politique de confidentialité, et tous les liens sont nofollow. N'utilisez PAS de mots-clés dans le champ nom. Ayons une conversation personnelle et significative.

Liste de contrôle de lancement WordPress

La checklist ultime pour lancer un WordPress

Nous avons compilé tous les éléments essentiels de la liste de contrôle pour le lancement de votre prochain site Web WordPress dans un ebook pratique.
Oui, envoyez-moi l'eBook gratuit !