web-dev-qa-db-fra.com

Comment utilisez-vous WP des limaces pour PDF fichiers/médias?

J'ai des centaines de PDF qui sont liés sur tout mon site et qui ont tous un numéro de document unique et des révisions. par exemple. 902367 version I

Ce que je voudrais faire est d'avoir un slug défini pour chaque document, tel que mysite.com/902367/, qui serait lié directement au document. Les redirections sont un moyen d'y parvenir, mais même avec REGEX, cela serait négligé et moins qu'idéal.

J'ai trouvé une autre question expliquant que si votre thème avait un fichier de pièces jointes, toutes les pièces jointes téléchargées sur cette page appartiendraient à la même catégorie. Cependant, cela ne s'applique pas vraiment à ma situation, car je n'essaie pas d'assigner des PDF à une catégorie ou une page, mais plutôt d'en faire une page à part entière. La création d'une pseudo-page pour le document est-elle le moyen le plus propre d'accomplir cela?

Quel serait le moyen le plus éloquent d’appliquer la fonctionnalité de slug de WordPress à mes PDF?

1
fwho

À mon avis, il est préférable d’ajouter un noeud final de la forme mysite.com/pdf/<id> ou quelque chose de similaire à votre pareil. De cette manière, vous éviterez de joindre les pièces jointes aux articles/pages ou de créer une page pour chaque fichier pdf avec une redondance imo pour vos besoins.

Ceci est un très petit guide de base. Vous pouvez modifier à vos besoins.

Tout d’abord, nous ajoutons un noeud final correspondant à toutes les demandes du formulaire mysite.com/pdf/<id>. Notez que vous devez vider les règles de réécriture pour que le nouveau point de terminaison fonctionne. Vous pouvez le faire manuellement en allant dans Paramètres-> Permaliens-> Enregistrer les modifications ou en utilisant flush_rewrite_rules . Il devrait être exécuté soit sur le hook shutdown, soit sur l’activation du plugin/theme. L'exécuter sur le hook init est une mauvaise pratique.

function my_endpoints() {

    add_rewrite_endpoint( 'pdf', EP_ROOT);

}

add_action( 'init', 'my_endpoints' );

Ensuite, nous utilisons template_redirect pour traiter la demande.

function my_template_redirect() {

    global $wp_query;

    /* If it is a /pdf/<id> request then serve the file */        

    if(isset( $wp_query->query_vars['pdf'])){

        // You can use sanitize_file_name also
        $pdf_id = intval($wp_query->query_vars['pdf']); 

        /* Find the file and serve it */

    }

    return;
}

add_action( 'template_redirect', 'my_template_redirect' );
1
Laxmana