私はWordPressでのサイト運営において、常にWordPress標準機能+できるだけ自前で機能を追加するということを行っています。
これはプラグインを信用・信頼していないということではなく、そのプラグインが何をしているかを理解した上で使用するかどうかを決めたいということと、プラグインの開発が停止したり、開発が放棄されたりしたときに別のプラグインを探したり移行したり、はたまた代替が見つからずに困ってしまうということを避けるためです。
そこで今回は、ダウンロードコンテンツの管理で永らく便利に利用させていただいていた「Download Monitor」プラグインを使わずに、圧縮ファイルの配布とダウンロード数の管理ができないかという作業を行いました。
本ページはその時に発生した問題と、対処方法をまとめたものです。ダウンロードコンテンツの管理にプラグインを使うかどうか、離脱したいけどうまくいかないと迷っている方の一助となれば幸いです。
「Download Monitor」プラグインの大まかな仕組み
私は一使用者でプログラムの隅々まで見たわけでもないのでひょっとしたら間違った認識をしているかもしれないことを前置きしつつ、「Download Monitor」プラグインの仕組みをざっくりと紹介しておきます。
このプラグインは、アップロードしたファイルのホットリンク(直リンク)を保護するため、uploadsフォルダ内のdlm_downloadsというフォルダの中へファイルを退避させた上で特定条件(このプラグインを使ったリンクまたはショートコード)でのみアクセスを可能としています。
また、退避させたファイルがあるフォルダはWordPressのメディアの一部として認識するようにし、メディア一覧へは通常通り見えるように配慮しています。
そしてこのプラグイン用のカスタム投稿タイプが追加され、他の投稿と同じような形でダウンロードコンテンツを作成することができます。
プラグイン用のカスタム投稿タイプ上で作成したコンテンツは、ショートコード、またはプラグインが指定するファイルのURLをボタンなどのリンクURLとして投稿や固定ページなどへ挿入できるようになっていて、クリックしてダウンロードできるようにし、クリックされるとインストール時に作成されたデータベース上のログテーブルに記録され、レポート画面で確認できるようになっています。
無料版では機能やレポートに制限がありますが、ダウンロードコンテンツ自体は無制限に作成できるようです
また、別のショートコードを使って累計ダウンロード数の表示などを行うこともできます。
...とダウンロードコンテンツ機能を構成する仕組みとしては完璧ともいえるプラグインでしょう。
私が「Download Monitor」プラグインからの離脱した手順
メディアへの対処後、ショートコードやボタンのリンクを置き換える
プラグイン停止後はショートコードも機能しなくなります(当たり前の話ですが..)。
従って、プラグイン停止後はショートコードを挿入している場所をファイルへのリンクを設定したボタンブロックなどへ置き換える必要があります。
ただし、このプラグインではダウンロード用にしたファイルは「dlm_downloads」というフォルダへ移動され、それに対してアクセス制限をかけるという形でセキュリティを保っているため、以下の点に留意する必要があります。
- プラグインの停止前にメディア一覧にあるダウンロード用ファイルのURLは、プラグインによって別フォルダへ退避させたURLになるため、プラグイン停止前に事前対処をしないとアクセス不可(ダウンロード不可)となる
- プラグインを停止すると、それまでメディア一覧に表示されていたダウンロード用ファイルは一覧上で見えなくなる
これに対処する方法は大きく2つありますので、次に紹介する方法のうち、自身の環境に合った方法で対応してください。
1.既存のファイルをそのまま利用する
こちらは、ダウンロード用ファイルが格納されている「wp-content」→「uploads」内にある「dlm_downloads」フォルダ内のファイルをそのまま使い続けるための方法です。
ダウンロード機能が停止してしまいますので、ボタンの置き換えが完了するまでプラグインは有効化したままにします
まず、「wp-content」→「uploads」内にある「dlm_downloads」フォルダを開き、.htaccessファイルを削除またはリネームします。これでuploadsフォルダの他のファイルと同様に制限なくアクセスできるようになります。
次にメディア一覧と、ショートコードや「Download Monitor」で作成したコンテンツのリンクURLを埋め込んだ投稿や固定ページを1つ1つ確認し、ボタンブロックなどへ置き換え、メディア一覧上で表示されているファイルのURLへのリンクを張っていきます。
すべてのダウンロードリンクの置き換え(編集)を行います。
ここまで終了したら、プラグインを停止して作業完了です。
この方法の場合、ファイル自体を操作することがないのでボタンの置き換えだけで済むという利点がありますが、プラグインを停止するとメディア一覧へのファイルの参入が解除されるため、以後メディア一覧からはファイルの実体が見えなくなるという欠点があります。
プラグインを使用して作成したダウンロードコンテンツが大量にある場合を除き、管理画面から実体が見えなくなるのは後々のメンテナンスで困る事態が発生しかねませんので、面倒でももう1つの方法で対処されることをおすすめします。
2.通常のメディアへ再アップロードしたファイルを使う
ダウンロード機能が停止してしまいますので、ボタンの置き換えが完了するまでプラグインは有効化したままにします
まず、FTPなどを使って一旦パソコンへ「dlm_downloads」フォルダをダウンロードします。
そして必要なファイル(年月で仕分けしているととても面倒ですが..)を通常のメディアアップローダーを使ってサイト内へアップロードします。
プラグインを使ってショートコードやリンクURLを使ってダウンロードコンテンツを挿入していた箇所を、新しくアップロードした側のファイルのURLをリンク先としてボタンを挿入したりリンクURLを書き換えるなどしていきます。
すべての作業が終わったらプラグインを停止し、サイト上の「dlm_downloads」フォルダは必要がなくなるので削除して完了です。
1点、流れ作業でやってしまったため覚えがありませんが、プラグイン停止後に再アップロードを行わないと「dlm_downloads」側へ行ってしまうかも知れませんので、1つアップロードしてリンクURLが通常のメディアの階層になっているか(dlm_downloadsという階層が含まれていないか)を確認してから作業を進めてください
圧縮ファイルへのホットリンク(直リンク)の禁止措置
私が「Download Monitor」を使っていた最大の理由はファイルの保護機能でした。
この機能は、ボタンのリンクURLをコピーして他のサイト上にリンクを張ってもアクセス拒否されるといういわゆる直リンクを防止するもので、コンテンツの提供を行うサイトでは絶対に講じておくべき措置でしょう。
以下のページを参考にアクセス制限を掛けます。
上記ページには手動でメンテナンスを行う方法と専用プラグインを使う方法を紹介していますが、私はプラグインを使用して管理するようにしています。
データベース上の不要なデータを削除する
これまでの措置でダウンロードボタンの置き換えとホットリンクの防止ができるようになり、クリック数の解析をするという部分を除いて「Download Monitor」プラグインから離脱することができます。
が、まだ残っている作業があります。それは「Download Monitor」プラグインのインストール時に作成されたデータベーステーブルと、WordPressの設定情報が保存されているoptionsテーブル内のデータの削除です。
データベーステーブルの削除
「Download Monitor」プラグインのインストール時には、バージョン5.0.14時点で以下のテーブルが追加されます(リスト内の「テーブル接頭辞」の部分は環境によって異なりますが、WordPressを自動インストールした場合にはwpであることが多いです)。
- テーブル接頭辞_dlm_api_keys
- テーブル接頭辞_dlm_cookiemeta
- テーブル接頭辞_dlm_cookies
- テーブル接頭辞_dlm_downloads
- テーブル接頭辞_dlm_order
- テーブル接頭辞_dlm_order_customer
- テーブル接頭辞_dlm_order_item
- テーブル接頭辞_dlm_order_transaction
- テーブル接頭辞_dlm_reports_log
- テーブル接頭辞_dlm_session
- テーブル接頭辞_download_log
実にこのプラグインだけで、11個のテーブルが作成されるんですね...。
これらをサーバーのデータベース操作ツール(phpMyAdmin)などを使って削除することでデータベースがきれいになりますが、操作を誤って別のテーブルを削除してしまうと、WordPressが稼働しなくなるなど不具合が出ますから、作業に自身がなければそのままにしておいてもいいかと思います。
また、以下のプラグインを一旦インストールして管理画面上から削除することもできますから、削除する/しない、どうやって削除するかの判断をしてください。
「Download Monitor」プラグインを削除後にこのプラグインでテーブルの検索をすると、前述のテーブルが赤字で表示されるので、チェックを入れて削除すればOKです。
optionsテーブル内のデータ削除
私が離脱した際には以下の49件のデータがあり、すべて自動読み込みになっていました。自動読み込みになっているデータは管理画面・表示画面にアクセスするたびに読み込まれるようになっているため、サイトの処理速度に影響が出る可能性がありますし、自動で削除はされませんから自身でメンテナンスするしかありません。
optionsテーブル内にある「Download Monitor」のオプションキーを見る
- dlm_allow_x_forwarded_for
- dlm_base_country
- dlm_count_unique_ips
- dlm_currency
- dlm_currency_pos
- dlm_current_version
- dlm_custom_template
- dlm_db_upgraded
- dlm_decimal_separator
- dlm_default_gateway
- dlm_default_template
- dlm_disable_cart
- dlm_download_endpoint
- dlm_download_endpoint_value
- dlm_downloads_path
- dlm_enable_logging
- dlm_gateway_paypal_client_id
- dlm_gateway_paypal_client_secret
- dlm_gateway_paypal_sandbox_client_id
- dlm_gateway_paypal_sandbox_client_secret
- dlm_gateway_paypal_sandbox_enabled
- dlm_generate_hash_crc32b
- dlm_generate_hash_md5
- dlm_generate_hash_sha1
- dlm_generate_hash_sha256
- dlm_hash_desc
- dlm_hide_notice-onboarding
- dlm_hotlink_protection_enabled
- dlm_invoice_prefix
- dlm_ip_blacklist
- dlm_logging_ip_type
- dlm_logging_ua
- dlm_lu_needs_upgrading
- dlm_no_access_error
- dlm_no_access_modal
- dlm_no_access_page
- dlm_page_cart
- dlm_page_checkout
- dlm_product_errors
- dlm_shop_enabled
- dlm_tc_content_page
- dlm_tc_global
- dlm_tc_text
- dlm_thousand_separator
- dlm_turn_off_file_browser
- dlm_user_agent_blacklist
- dlm_wp_search_enabled
- dlm_xsendfile_enabled
- widget_dlm_widget_downloads
これもデータベースを開いて作業すると誤って必要なデータを削除してしまうことがあるので、以下のプラグインを一旦有効化して削除作業を行うといいでしょう。
インストールして有効化したら、管理画面のツールメニューから「Option Optimizer」を開き、以下のようにタブや検索語句を入れて一覧表示させ、各行の「Delete Option」をクリックしていくだけです。
なお、こちらのデータも誤りなく削除する自信がなければそのままでもいいかと思います。
ここまでの措置で、「Download Monitor」プラグインからの離脱は完了です。
結構手間がかかりましたね...お疲れ様でした..。
このプラグインに限らず、プラグインをインストールすることで、データが追加されたり、データベースにテーブルが追加されたり、サイトディレクトリ内にファイルやフォルダが追加されたりするものがあるので、プラグインの選択は慎重にした方がいいと思いますよ。
まだ、クリック計測の部分が失われたままなので、機能が必要という方は続きをご覧ください。
クリック数の解析、累計クリック数の表示など
クリック数の解析を行う
必要な機能ではあると思いますがこれを内装化するとなると大変なので、素直に「Download Monitor」プラグインを使い続けた方がいいでしょう(本末転倒?)。
でもやっぱり知りたい..そんな方は、外部のアクセス解析ツールに付随しているクリックイベント解析を使うことで、いつ、どのボタンがクリックされた(ダウンロードされた)かを知ることができます。
以下はMatomoというアクセス解析ツールを使った場合のクリックイベント計測の方法を解説したページですが、GA4などでも基本的には同じようなことをするので、チャレンジしてみてはいかがでしょう?
ちなみに私は上記ページの方法でクリックイベント解析を行っています。
累計クリック数を記録し、ボタン下などに表示させる
恐らく「Download Monitor」プラグインを使ってダウンロードコンテンツを表示させたボタンの上下に、プラグインのショートコードを使って累計クリック数(ダウンロード数)を表示させていた方も多いのではないでしょうか?
以下のページで、ボタンブロックを使って累計クリック数を記録させ、ショートコードで回数を表示させる機能の実装方法を紹介していますので参考にしてみてください。
コメントを残す