web-dev-qa-db-fra.com

ouvrir tous les fichiers .docs dans Word en ligne

Hé, j'essaie de rendre tous les fichiers .doc/docx .xls/xlsx ouverts dans Office Online.

Cela signifierait que chaque lien vers un fichier .doc

http://mywebsite.com/wp-content/uploads.link.doc

devrait plutôt indiquer le lien de prévisualisation en ligne du bureau

https://view.officeapps.live.com/op/view.aspx?src=http://mywebsite.com/wp-content/uploads/link.doc

Je ne sais même pas comment s'y prendre. Toute aide serait grandement appréciée!

Merci!

1
ameeromar

Je ne suis pas sûr que cette question soit liée à WordPress . Il semble que cela puisse être géré via .htaccess redirect ou une extension de navigateur.

Cela dit: vous pourriez essayer d'utiliser le filtre wp_get_attachment_url, qui s'applique à l'URL renvoyée par wp_get_attachment_url() .

Par exemple:

function wpse95271_filter_wp_get_attachment_url( $url ) {
    if ( 0 === stripos( strrev( $url ), 'cod.' ) ) {
        // This is a Word doc; modify the URL
        $url = 'https://view.officeapps.live.com/op/view.aspx?src=' . $url;
    }
    return $url;
}
add_filter( 'wp_get_attachment_url', 'wpse95271_filter_wp_get_attachment_url' );

(Ceci est complètement non testé et présenté comme un exemple uniquement .)

Modifier

a) comment puis-je ajouter .docx, .xls, .xlsx?

Il suffit d'étendre le conditionnel. Voici un exemple, résumé pour plus de clarté:

function wpse95271_filter_wp_get_attachment_url( $url ) {
    // Using a simple ternary expression;
    // there may be better ways, such as
    // an array of doc extensions, and a
    // foreach loop, etc
    $is_msoffice_doc = (
        0 === stripos( strrev( $url ), 'cod.' ) ||
        0 === stripos( strrev( $url ), 'xcod.' ) ||
        0 === stripos( strrev( $url ), 'slx.' ) ||
        0 === stripos( strrev( $url ), 'xslx.' ) ? true : false
    );
    if ( $is_msoffice_doc ) {
        // This is an Office doc; modify the URL
        $url = 'https://view.officeapps.live.com/op/view.aspx?src=' . $url;
    }
    return $url;
}
add_filter( 'wp_get_attachment_url', 'wpse95271_filter_wp_get_attachment_url' );

b) au lieu de remplacer l'URL, puis-je ajouter un lien à côté du lien de téléchargement normal qui dit "ouvrir en ligne" avec un lien vers ceci?

Créez simplement votre propre lien dans votre modèle, en ajoutant l'URL de la pièce jointe à l'URL de base, comme indiqué dans le filtre ci-dessus.

5
Chip Bennett