前提・実現したいこと
Wordpressのカスタムフィールドを利用して外部リンクのクリック数を取得・表示を考えていてgoogleで検索をしていたら
理想に近い内容を見つけたので試しているのですが上手く動作せず困っています。
ACFを使いdownload_urlとdownload_countのカスタムフィールドを前もって作成
ソースコード (jQuery)
jQuery(function($){ $('.download a').on("click", function(event) { event.preventDefault(); var url_add = $(this).attr('href'); var post_id = $('.download').attr('data-id'); var ajaxurl = ''; if(url_add && post_id){ $.ajax({ dataType: "url", url:ajaxurl, type: 'POST', data:{ 'action': 'countDL', 'urladd':url_add, 'postid':post_id } }) // Ajaxリクエストが成功した時発動 .done( (data) => { async:false; window.open(url_add + '?download', '_self'); }) // Ajaxリクエストが失敗した時発動 .fail( (data) => { alert('ダウンロードに失敗しました。再度お試しください。') }) } }); });
ソースコード (single.php)
<div class="download" data-id="<?php the_ID(); ?>"> <a href="<?php the_field('download_url'); ?>">Download</a> <?php the_field('download_count'); ?> </div>
ソースコード (functions.php)
function countDL() { $postid=$_POST['postid']; $file=$_POST['urladd']; $num=get_post_meta($postid, 'download_count', true); if(!$num){ $num=0; } $num++; update_field('download_count', $num, $postid); } add_action('wp_ajax_nopriv_countDL','countDL'); add_action('wp_ajax_countDL','countDL');
ソースコード (.htaccess)
RewriteEngine on RewriteCond %{QUERY_STRING} ^download RewriteRule ^(.+)$ - [T=application/octet-stream]
上記の内容を追加
クリックするもカスタムフィールド (download_count) のカウントアップは無し
どこを修正すればカウントアップするのでしょうか?
追記
ブラウザーを chrome から opera に変更してみると「ダウンロードに失敗しました。再度お試しください。」と表示される。
あなたの回答
tips
プレビュー