Personal WP Customization Notes (PWCN)

WordPressで実際に行ったカスタマイズの記録、発生した問題への対処時のメモ、ブロックテーマのカスタマイズなど

「Simple Download Monitor」プラグイン使用時に追加していたカスタマイズコード(メモ)

当サイトで長らく使用させていただいていた「Simple Download Monitor」。2024年初頭から、同じ目的のプラグイン「Download Monitor」へ変更しました。変更した経緯と理由については以下のページで公開していますので、プラグイン選びの一助にしていただけたら幸いです。

さて、プラグインを変えたら、そのプラグインに加えていたカスタムコードも削除して終わり..では、後々必要となった時にまた一からとなってしまうため、備忘録として、「Simple Download Monitor」使用時にテーマへ追加していたカスタマイズコードと、追加した目的などを残しておきます。

ダウンロードページを意図した配布ページへ転送

ダウンロード数などの情報計測用のコンテンツを作り、自身で作成した投稿や固定ページで、独自のボタンやプラグインで表現できるボタンを設置して使用するというのがこの手のプラグインのメジャーな使い方かと思うのですが、このプラグインでは、ダウンロードページが公開されてしまうので、そこへ直アクセスされると素っ気ないダウンロードページが表示されてしまいます。

これを防ぐために、ダウンロードページを本来配布するための説明などを書いている投稿や固定ページへ転送していました。

/***** ダウンロードページをリダイレクト *****/
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…で指定した複数の固定ページだけスクリプトとスタイルを出力するという動作になりますので、自身の環境に合わせて変えてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

※リンクやURLの挿入されているコメントは無視します