前提・実現したいこと
はじめまして。ワードプレスで制作したホームページ上で実現したい処理があるのですが、特にjqueryについては知識がなく、調べてもわからなかったため書き込ませていただきました。
知識不足で申し訳ありませんが、どうか皆様のお力添えをお願いしたく思います。
実現したい処理について。
投稿サイトにおいて、画像ファイルのURLリンクをクリックしたさいにその回数をカウントし、そのまま利用者のPCに画像ファイルがダウンロードされるようにする。
という処理が実行されるようにしたいと考えています。
具体的には、下に記載したLink Clicks Counterを適用した状態で、aタグに設定したdownload属性が適切に適応されるようになると私としてはベストです。
発生している問題・エラーメッセージ
複数のサイトでコードを検索した結果、リンクがクリックされた際にその回数をカスタムフィールドへカウントする、という処理はプラグインとして実現することができました。
しかしその場合、aタグに設定しているdownload属性が適応されず、画像を通常通り開くだけということになってしまいます。
該当のソースコード
PHP javascript jquey
1下記をプラグインとして導入 2<?php 3/* 4Plugin Name: Link Clicks Counter 5*/ 6 7if ( is_admin() ) add_action( 'wp_ajax_nopriv_link_click_counter', 'link_click_counter' ); 8add_action( 'wp_ajax_link_click_counter', 'link_click_counter' ); 9function link_click_counter() { 10 11 if ( isset( $_POST['nonce'] ) && isset( $_POST['post_id'] ) && wp_verify_nonce( $_POST['nonce'], 'link_click_counter_' . $_POST['post_id'] ) ) { 12 $count = get_post_meta( $_POST['post_id'], 'link_click_counter', true ); 13 update_post_meta( $_POST['post_id'], 'link_click_counter', ( $count === '' ? 1 : $count + 1 ) ); 14 } 15 exit(); 16} 17 18 19add_action( 'wp_head', 'link_click_head' ); 20function link_click_head() { 21 global $post; 22 23 if( isset( $post->ID ) ) { 24?> 25 <script type="text/javascript" > 26 jQuery(function ($) { 27 var ajax_options = { 28 action: 'link_click_counter', 29 nonce: '<?php echo wp_create_nonce( 'link_click_counter_' . $post->ID ); ?>', 30 ajaxurl: '<?php echo admin_url( 'admin-ajax.php' ); ?>', 31 post_id: '<?php echo $post->ID; ?>' 32 }; 33 34 $( '.countable_link' ).on( 'click', function() { 35 var self = $( this ); 36 //var url_add = $(this).attr('href'); 37 $.post( ajax_options.ajaxurl, ajax_options, function() { 38 window.location.href = self.attr( "href"); 39 //window.location.href = self.attr( {"href","download"}); 40 //window.open(url_add, '_self'); 41 }); 42 return false; 43 }); 44 }); 45 </script> 46<?php 47 } 48} 49?> 50 51本体部分 52<a download class="countable_link" href="<?php echo $hoge;?>"><img src="<?php echo $hoge;?>"></a> 53と、 54<a download class="countable_link" href="<?php echo $hoge;?>"><?php echo $hoge2;?></a>
試したこと
window.location.href = self.attr( "href");の部分を、 window.location.href = self.attr( {"href","download"}); window.open(url, '_self'); などに変更してみたのですが、無理でした(上記コードのコメントアウト部分が私の試した箇所です)
補足情報(FW/ツールのバージョンなど)
現在は上記プラグインからリンクに関する処理らしき箇所を削り、こちらのサイトのカスタムフィールド関係の部分を削って(こちらは回数カウントの部分がうまく行かなかったため)、2つを組み合わせて無理やりダウンロードされるようにしています。
回答2件
あなたの回答
tips
プレビュー