web-dev-qa-db-ja.com

オンラインでWordですべての.docsを開く

こんにちは私はすべての.doc/docx .xls/xlsxファイルをオンラインのオフィスで開かせようとしています。

これは.docへのすべてのリンクを意味します。

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

代わりにオフィスのオンラインプレビューリンクを指す必要があります

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

どうやってこれをやるのかわからない?任意の助けは大歓迎です!

ありがとうございます。

1
ameeromar

この質問がWordPressに関連しているかどうかわかりません。 .htaccessリダイレクト、またはブラウザ拡張を介して処理される可能性があるようです。

そうは言っても:wp_get_attachment_urlフィルタを使おうとするでしょう。これは wp_get_attachment_url() によって返されるURLに適用されます。

例えば:

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' );

(これは完全にテストされていない例としてのみ提示されている。)

編集する

a).docx、.xls、.xlsxを追加する方法

条件を拡張するだけです。わかりやすくするために抽象化した例です。

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)URLを置き換える代わりに、通常のダウンロードリンクの隣に "open online"というリンクを追加することができますか。

上記のフィルタで行ったように、テンプレートに独自のリンクを作成し、添付URLをベースURLに追加するだけです。

5
Chip Bennett