WordPress

WordPressのDownload Monitorでショートコードを使わずにダウンロード数をページに表示する

投稿日:

ダウンロードモニター

WordPress のプラグインに「Download Monitor(ダウンロードモニター)」というファイルのダウンロード数をカウントできるものがあります。登録したファイルがどれだけダウンロードされたのか、いつダウンロードされたのかという事がわかります。

Download Monitor がどのようなプラグインなのか詳細は他サイトにお任せするとして、ここではより踏み込んだことをお話します。

ページにダウンロード数を表示する方法

Download Monitor はダウンロード数をカウントするだけではなく、ページに表示する事も可能です。

Download Monitor の設定からデフォルトテンプレートを変更する事で、ダウンロードリンクをただのリンクにするのか、ボタンにするのか、ボックスにするのか、ダウンロード数を表示するかなど変更する事ができます。しかし、これは WordPress の投稿画面でショートコードを使った場合のみ有効な事です。

[download id="3998"]

ショートコードとは上記のようなものです。通常ショートコードは投稿画面でしか使えません。投稿画面以外の場所(テーマの個別投稿テンプレートなど)ではショートコードが使えないのでダウンロードリンクを作るには以下のような URL をリンク先に設定します。

http://www.url.com/download/3998/ (デフォルト設定の場合)

これで投稿画面以外にもダウンロードリンクを作る事ができますが、今回本題とする事は投稿画面以外でダウンロード数を取得しページに表示するという問題です。Google 検索で調べても有用な情報はなかったので自分で研究するしかないと思いました。

ダウンロード数はどこで管理されているのか?

ダウンロード数を取得するにあたっては、ダウンロード数はどこで管理されているのかを知る必要があります。恐らくデータベース内かと思って、phpMyAdmin でデータベース内を覗いて Download Monitor のテーブルを調べてみました。

なかった!!

ダウンロード ID やファイル名などの情報はデータベースに登録されていましたが、ダウンロード数はどこにもありませんでした。一体にどこにダウンロード数があるのか…。

次に投稿画面でショートコードではダウンロード数が表示できるので、ショートコードの中身を覗いてみました。WordPress の管理画面からプラグインを開き、プラグイン編集を選択します。画面右上の「編集するプラグインを選択」から Download Monitor を選び「content-download-button.php」にショートコードの中身があります。

どうやら get_the_download_count() という関数でダウンロード数を取得しているようです。しかしそのような関数は WordPress のものではなくプラグイン独自のものです。もうプラグインファイルを1から調べて get_the_download_count() という関数を見つけるしかありません。

WordPress のプラグイン編集で Download Monitor のプラグインファイルを上から順番に調べて get_the_download_count() 関数を探しました。すると「class-dlm-download.php」というファイルで見つける事ができました。

return absint( $this->get_file_version()->download_count );

download_count という変数にダウンロード数が入っていそうですが、これがどこでダウンロード数が入れられるのかわかりませんでした。半分諦めかけましたが今度は「download_count」という変数を虱潰しにまた1から探しました。すると「class-dlm-download-version.php」というファイルに increase_download_count() という関数を見つけました。訳すとダウンロード数を増加するという関数です。まさしく探していたのはこれです!

この関数の中には次のような記述がありました。

get_post_meta( $this->id, ‘_download_count‘, true )

get_post_meta?これでピンときました。get_post_meta 関数はカスタムフィールドの値を取得する関数です。まさか、カスタムフィールドにダウンロード数が管理されていたとは…。

しかし、投稿画面に「_download_count」というカスタムフィールドはありませんでした。

よく調べてみると、WordPress の管理画面でダウンロードの「すべてのダウンロード」を開き、登録ダウンロードファイルの編集をすると、ダウンロード可能なファイルの所にダウンロードカウント数が記録されている箇所がありました。恐らくここが「_download_count」というカスタムフィールドなのでしょう。

ショートコードを使わずダウンロード数を取得する方法

ここまでをまとめますと、Download Monitor でショートコードを使わずにダウンロード数を取得しページに表示するには以下のようにします。

get_post_meta( ダウンロードID, ‘_download_count‘, true )

ダウンロードID とは、DownloadMonitor で登録したダウンロードファイルに割り当てられている ID の事です。WordPress の管理画面でダウンロードの「すべてのダウンロード」で確認する事ができます。これで各ファイルのダウンロード数を取得する事ができるのです。ページに表示するには echo などで出力しましょう。

-WordPress
-

Copyright© ウェブミスト(Webmist) , 2019 AllRights Reserved Powered by STINGER.