当サイトで長らく使用させていただいていた「Simple Download Monitor」。2024年初頭から、同じ目的のプラグイン「Download Monitor」へ変更しました。変更した経緯と理由については以下のページで公開していますので、プラグイン選びの一助にしていただけたら幸いです。
さて、プラグインを変えたら、そのプラグインに加えていたカスタムコードも削除して終わり..では、後々必要となった時にまた一からとなってしまうため、備忘録として、「Simple Download Monitor」使用時にテーマへ追加していたカスタマイズコードと、追加した目的などを残しておきます。
コードを使用する前に、ここをクリックして注意事項をご確認ください
本ページで掲載しているコードは、以下に了承した上で使用ください
- コードは商用・非商用問わず自由に使っていただいて構いませんが、コード追加による不具合やトラブルが発生しても当方では一切責任を負いません
- コードは有効化しているテーマのfunctions.php、style.cssなどへ追加することで機能します。それらのファイルへの変更を行うことに不安のある方は使用しないでください
- コードは本ページの公開日時点で私の環境において動作したものです。WordPressバージョン他環境の違いによって動作しないことがあります
- コードは、セキュリティ、コードの正確さなどにおいて完全なものではありません。中には紹介するコードを簡略化するために省略している部分があるものもありますので、ご自身でコードを十分に検証し、必要な部分の編集を行った上で使用するようにしてください
- 掲載しているのは参考コードです。自身の環境に合わせるための編集はご自身で対応いただく必要があります(コメント欄等から質問いただいても基本回答は致しません)
- 掲載しているコードの転載を禁じます(SNSで紹介いただいたり、本ページへのリンクを張っていただくことは大歓迎です)
ダウンロードページを意図した配布ページへ転送
ダウンロード数などの情報計測用のコンテンツを作り、自身で作成した投稿や固定ページで、独自のボタンやプラグインで表現できるボタンを設置して使用するというのがこの手のプラグインのメジャーな使い方かと思うのですが、このプラグインでは、ダウンロードページが公開されてしまうので、そこへ直アクセスされると素っ気ないダウンロードページが表示されてしまいます。
これを防ぐために、ダウンロードページを本来配布するための説明などを書いている投稿や固定ページへ転送していました。
/***** ダウンロードページをリダイレクト *****/
function sample_downloadpage_redirect() {
if( is_single('ダウンロードページのID') ){
$url = '遷移先のURL';
wp_safe_redirect( $url, 301 );
exit();
}
}
add_action( 'template_redirect', 'sample_downloadpage_redirect' );
「ダウンロードページのID」には「Simple Download Monitor」が自動生成するダウンロードページのIDを、「遷移先のURL」には、自身で作成した投稿や固定ページのURLを指定すれば転送できます。
また、「if…}」の部分をコピーして、複数のダウンロードコンテンツに対しても転送することが可能です。
ダウンロードページをアーカイブから外す
前項と関連して、ダウンロードページが公開される=アーカイブページにも表示されるということになってしまうので、このプラグインが生成するダウンロードページの公開状態を解除して、アーカイブに含まれないようにしていました。
function sample_change_sdm_custom_post_type_args( $args, $post_type ) {
if ( $post_type == "sdm_downloads" ) {
$args['public'] = false;
}
return $args;
}
add_filter( 'register_post_type_args', 'sample_change_sdm_custom_post_type_args', 20, 2 );
必要なページのみCSSやスクリプトを読み込む
このプラグインがページに出力するスタイルやスクリプトは大きくはないものの、不要なものはできるだけ出力したくないということで、特定ページのみで出力するようにするためのコードを追加しました。
function sample_sdm_dequeue(){
wp_dequeue_style('sdm-styles');
wp_dequeue_script('sdm-scripts');
if(is_page(array(ID1,ID2...))){//特定の固定ページのみ
wp_enqueue_script('sdm-scripts');
wp_enqueue_style('sdm-styles');
}
}
add_action('wp_enqueue_scripts','sample_sdm_dequeue');
上記の場合ではID1ID2…で指定した複数の固定ページだけスクリプトとスタイルを出力するという動作になりますので、自身の環境に合わせて変えてください。










コメントを残す