{"id":5640,"date":"2024-07-10T13:43:14","date_gmt":"2024-07-10T04:43:14","guid":{"rendered":"http:\/\/www.code-plus.jp\/240909\/?p=5640"},"modified":"2026-06-03T23:41:22","modified_gmt":"2026-06-03T14:41:22","slug":"post-5640","status":"publish","type":"post","link":"https:\/\/code-plus.jp\/gp\/post-5640\/","title":{"rendered":"WordPress\u30b5\u30a4\u30c8\u3067\u306ePDF\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u8ffd\u8de1\uff1aGA4\u3068\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u306e\u5b9f\u88c5"},"content":{"rendered":"<div>\n<div><span>\u3053\u3093\u306b\u3061\u306f\u3002\u4eca\u56de\u306f\u3001WordPress\u30b5\u30a4\u30c8\u3067PDF\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3092\u8ffd\u8de1\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u3001\u5b9f\u969b\u306e\u5b9f\u88c5\u7d4c\u9a13\u3092\u3082\u3068\u306b\u3054\u7d39\u4ecb\u3057\u307e\u3059\u3002Google Analytics 4\uff08GA4\uff09\u3068\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u7cbe\u5ea6\u306e\u9ad8\u3044\u8ffd\u8de1\u3092\u5b9f\u73fe\u3057\u307e\u3057\u305f\u3002<\/span><\/div>\n<p>&nbsp;<\/p>\n<h2><span>## \u80cc\u666f<\/span><\/h2>\n<p>&nbsp;<\/p>\n<div><span>WordPress\u30b5\u30a4\u30c8\u5185\u306b\u3042\u308bPDF\u30d5\u30a1\u30a4\u30eb\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u6570\u3092\u6b63\u78ba\u306b\u628a\u63e1\u3057\u305f\u3044\u3068\u3044\u3046\u30cb\u30fc\u30ba\u304c\u3042\u308a\u307e\u3057\u305f\u3002\u901a\u5e38\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30b5\u30a4\u30c9\u306e\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3067\u306f\u9650\u754c\u304c\u3042\u308b\u305f\u3081\u3001\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u3067\u306e\u5b9f\u88c5\u3092\u9078\u629e\u3057\u307e\u3057\u305f\u3002<\/span><\/div>\n<p>&nbsp;<\/p>\n<h2><span>## \u5b9f\u88c5\u624b\u9806<\/span><\/h2>\n<h3><span>### 1. GA4\u306e\u8a2d\u5b9a<\/span><\/h3>\n<p>&nbsp;<\/p>\n<div><span>- \u6e2c\u5b9aID\uff08GA4\uff09: G-1****23***<\/span><\/div>\n<div><span>- API \u30b7\u30fc\u30af\u30ec\u30c3\u30c8: track_pdf \u3092\u4f5c\u6210\u3057\u3001\u5b89\u5168\u306b\u4fdd\u7ba1<\/span><\/div>\n<p>&nbsp;<\/p>\n<h3><span>### 2. \u30b5\u30fc\u30d0\u30fc\u74b0\u5883\u306e\u78ba\u8a8d<\/span><\/h3>\n<p>&nbsp;<\/p>\n<div><span>- \u30b9\u30af\u30ea\u30d7\u30c8\u306e\u7d76\u5bfe\u30d1\u30b9\uff1a\/home\/users\/2\/mysite\/web\/mysite.jp\/child\/<\/span><\/div>\n<div><span>- PDF\u30d5\u30a1\u30a4\u30eb\u306e\u914d\u7f6e\uff1a\u540c\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e assets\/pdf\u30d5\u30a9\u30eb\u30c0<\/span><\/div>\n<p>&nbsp;<\/p>\n<h3><span>### 3. \u30ed\u30b0\u8a18\u9332\u306e\u6e96\u5099<\/span><\/h3>\n<p>&nbsp;<\/p>\n<div><span>- logs\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\uff1a\/home\/users\/2\/mysite\/web\/mysite.jp\/child\/logs\/<\/span><\/div>\n<div><span>- \u7a7a\u306epdf_access.log\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210<\/span><\/div>\n<div><span>- logs\u30d5\u30a9\u30eb\u30c0\u306e\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\uff1a755<\/span><\/div>\n<div><span>- pdf_access.log\u30d5\u30a1\u30a4\u30eb\u306e\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\uff1a644<\/span><\/div>\n<div><span>- logs\u30d5\u30a9\u30eb\u30c0\u5185\u306b.htaccess\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3001Web\u30a2\u30af\u30bb\u30b9\u3092\u5236\u9650<\/span><\/div>\n\n<pre class=\"language-htaccess\"><code>\nOrder deny,allow\nDeny from all\n<\/code><\/pre>\n\n<p>&nbsp;<\/p>\n<h3><span>### 4. \u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u4f5c\u6210<\/span><\/h3>\n<p>&nbsp;<\/p>\n<div><span>`track_pdf_pamphlet.php`\u3068`track_pdf_plans.php`\u3092\u4f5c\u6210\u3057\u3001\u4ee5\u4e0b\u306e\u6a5f\u80fd\u3092\u5b9f\u88c5\uff1a<\/span><\/div>\n<p>&nbsp;<\/p>\n<div><span>- PDF\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u30ed\u30b0\u306b\u8a18\u9332<\/span><\/div>\n<div><span>- GA4\u306b\u30a4\u30d9\u30f3\u30c8\u3092\u9001\u4fe1\uff08pdf_download\u3068pdf_download_pamphlet\/plans\uff09<\/span><\/div>\n<div><span>- PDF\u30d5\u30a1\u30a4\u30eb\u306e\u51fa\u529b<\/span><\/div>\n<div><span>- \u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/span><\/div>\n\n<pre class=\"language-php\"><code>\n&lt;?php \/\/\uff08track_pdf_pamphlet.php\uff09\n\/\/PDF\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30d1\u30b9\n$pdf_path = &#039;\/home\/users\/2\/mysite\/web\/mysite.jp\/child\/pdf\/pamphlet.pdf&#039;;\n$pdf_url = &#039;https:\/\/mysite.jp\/child\/pdf\/pamphlet.pdf&#039;;\n\n\/\/\u30a2\u30af\u30bb\u30b9\u30ed\u30b0\u306e\u8a18\u9332\n$log_message = date(&#039;Y-m-d H:i:s&#039;) . &#039; - &#039; . $_SERVER[&#039;REMOTE_ADDR&#039;] . &#039; - &#039; . $pdf_url . &quot;\\n&quot;;\nfile_put_contents(&#039;\/home\/users\/2\/mysite\/web\/mysite.jp\/child\/logs\/pdf_access.log&#039;, $log_message, FILE_APPEND);\n\n\/\/Google \u30a2\u30ca\u30ea\u30c6\u30a3\u30af\u30b9\u3078\u306e\u30a4\u30d9\u30f3\u30c8\u9001\u4fe1\uff08\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u6e2c\u5b9a\u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u4f7f\u7528\uff09\n$measurement_id = &#039;G-1****23***&#039;; \/\/\u3042\u306a\u305f\u306eGA4\u6e2c\u5b9aID\n$api_secret = &#039;AB****Ac************Vz&#039;;\n$client_id = $_SERVER[&#039;REMOTE_ADDR&#039;]; \/\/IP\u30a2\u30c9\u30ec\u30b9\u3092\u30af\u30e9\u30a4\u30a2\u30f3\u30c8ID\u3068\u3057\u3066\u4f7f\u7528\n\n$data = [\n    &#039;client_id&#039; =&gt; $client_id,\n    &#039;events&#039; =&gt; [\n        [\n            &#039;name&#039; =&gt; &#039;pdf_download&#039;,\n            &#039;params&#039; =&gt; [\n                &#039;file_name&#039; =&gt; basename($pdf_url),\n                &#039;pdf_type&#039; =&gt; &#039;pamphlet&#039;\n            ]\n        ],\n        [\n            &#039;name&#039; =&gt; &#039;pdf_download_pamphlet&#039;,\n            &#039;params&#039; =&gt; [\n                &#039;file_name&#039; =&gt; basename($pdf_url)\n            ]\n        ]\n    ]\n];\n\n$postdata = json_encode($data);\n\n$ch = curl_init(&#039;https:\/\/www.google-analytics.com\/mp\/collect?measurement_id=&#039; . $measurement_id . &#039;&amp;api_secret=&#039; . $api_secret);\ncurl_setopt($ch, CURLOPT_POST, 1);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$response = curl_exec($ch);\ncurl_close($ch);\n\n\/\/PDF\u30d5\u30a1\u30a4\u30eb\u306e\u51fa\u529b\nheader(&#039;Content-Type: application\/pdf&#039;);\nheader(&#039;Content-Disposition: inline; filename=&quot;&#039; . basename($pdf_path) . &#039;&quot;&#039;);\nreadfile($pdf_path);\n\n\n\/\/\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\nif (!file_exists($pdf_path)) {\n    die(&#039;PDF file not found.&#039;);\n}\nif (!is_writable(&#039;\/home\/users\/2\/mysite\/web\/mysite.jp\/child\/logs\/pdf_access.log&#039;)) {\n    error_log(&#039;Cannot write to log file&#039;);\n}\n<\/code><\/pre>\n\n<p>&nbsp;<\/p>\n<h3><span>### 5. .htaccess\u306e\u8a2d\u5b9a<\/span><\/h3>\n<p>&nbsp;<\/p>\n<div><span>WordPress\u306e\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\uff08\/child\/\uff09\u306e.htaccess\u306b\u4ee5\u4e0b\u3092\u8ffd\u52a0\uff1a<\/span><\/div>\n<p>&nbsp;<\/p>\n\n<pre class=\"language-apache\"><code>\n  RewriteRule ^pdf\/pamphlet\\.pdf$ track_pdf_pamphlet.php [L]\n  RewriteRule ^pdf\/plans\\.pdf$ track_pdf_plans.php [L]\n<\/code><\/pre>\n\n<p>&nbsp;<\/p>\n<h2><span>## \u7d50\u679c<\/span><\/h2>\n<p>&nbsp;<\/p>\n<div><span>\u5b9f\u88c5\u5f8c\u3001Google \u30a2\u30ca\u30ea\u30c6\u30a3\u30af\u30b9\u3067\u30a4\u30d9\u30f3\u30c8\u3092\u78ba\u8a8d\u3057\u305f\u3068\u3053\u308d\u3001\u4ee5\u4e0b\u306e\u30a4\u30d9\u30f3\u30c8\u304c\u6b63\u5e38\u306b\u8a18\u9332\u3055\u308c\u3066\u3044\u307e\u3057\u305f\uff1a<\/span><\/div>\n<p>&nbsp;<\/p>\n<div><span>- pdf_download<\/span><\/div>\n<div><span>- pdf_download_pamphlet<\/span><\/div>\n<div><span>- pdf_download_plans<\/span><\/div>\n<p>&nbsp;<\/p>\n<div><span>\u3053\u308c\u306b\u3088\u308a\u3001PDF\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u6570\u3092\u6b63\u78ba\u306b\u628a\u63e1\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/span><\/div>\n<p>&nbsp;<\/p>\n<h2><span>## \u6ce8\u610f\u70b9\u3068\u5b66\u3093\u3060\u3053\u3068<\/span><\/h2>\n<p>&nbsp;<\/p>\n<div><span>1. **\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u7ba1\u7406**\uff1a\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u306e\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u8a2d\u5b9a\u306f\u5fd8\u308c\u304c\u3061\u306a\u306e\u3067\u3001\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8\u306b\u5165\u308c\u308b\u306a\u3069\u306e\u5de5\u592b\u304c\u5fc5\u8981\u3067\u3059\u3002<\/span><\/div>\n<p>&nbsp;<\/p>\n<div><span>2. **\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3**\uff1a\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30a2\u30af\u30bb\u30b9\u5236\u9650\u306f\u91cd\u8981\u3067\u3059\u3002.htaccess\u3067\u306e\u5236\u9650\u3092\u5fd8\u308c\u305a\u306b\u3002<\/span><\/div>\n<p>&nbsp;<\/p>\n<div><span>3. **\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0**\uff1aPDF\u30d5\u30a1\u30a4\u30eb\u306e\u5b58\u5728\u78ba\u8a8d\u3084\u30ed\u30b0\u66f8\u304d\u8fbc\u307f\u6a29\u9650\u306e\u30c1\u30a7\u30c3\u30af\u306f\u3001\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/span><\/div>\n<p>&nbsp;<\/p>\n<div><span>4. **\u30d7\u30e9\u30a4\u30d0\u30b7\u30fc\u8003\u616e**\uff1a\u73fe\u5728\u306fIP\u30a2\u30c9\u30ec\u30b9\u3092\u30af\u30e9\u30a4\u30a2\u30f3\u30c8ID\u3068\u3057\u3066\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u5c06\u6765\u7684\u306b\u306f\u3088\u308a\u533f\u540d\u6027\u306e\u9ad8\u3044\u65b9\u6cd5\u3092\u691c\u8a0e\u3059\u308b\u4f59\u5730\u304c\u3042\u308a\u307e\u3059\u3002<\/span><\/div>\n<p>&nbsp;<\/p>\n<h2><span>## \u4eca\u5f8c\u306e\u5c55\u671b<\/span><\/h2>\n<p>&nbsp;<\/p>\n<div><span>1. \u5b9a\u671f\u7684\u306a\u30ed\u30b0\u5206\u6790\u3068\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u5b9f\u65bd<\/span><\/div>\n<div><span>2. \u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u5897\u52a0\u306b\u5099\u3048\u305f\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/span><\/div>\n<div><span>3. \u30a8\u30e9\u30fc\u901a\u77e5\u30b7\u30b9\u30c6\u30e0\u306e\u5c0e\u5165\u691c\u8a0e<\/span><\/div>\n<p>&nbsp;<\/p>\n<div><span>\u3053\u306e\u5b9f\u88c5\u306b\u3088\u308a\u3001PDF\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u306e\u6b63\u78ba\u306a\u8ffd\u8de1\u304c\u53ef\u80fd\u306b\u306a\u308a\u3001\u30de\u30fc\u30b1\u30c6\u30a3\u30f3\u30b0\u65bd\u7b56\u306e\u52b9\u679c\u6e2c\u5b9a\u3084\u3001\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u4eba\u6c17\u5ea6\u5206\u6790\u306b\u6d3b\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/span><\/div>\n<p>&nbsp;<\/p>\n<div><span>\u7686\u3055\u3093\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3082\u3001\u540c\u69d8\u306e\u8ab2\u984c\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u305c\u3072\u3053\u306e\u65b9\u6cd5\u3092\u8a66\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<\/span><\/div>\n<div><\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"\u3053\u3093\u306b\u3061\u306f\u3002\u4eca\u56de\u306f\u3001WordPress\u30b5\u30a4\u30c8\u3067PDF\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3092\u8ffd\u8de1\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u3001\u5b9f\u969b\u306e\u5b9f\u88c5\u7d4c\u9a13\u3092\u3082\u3068\u306b\u3054\u7d39\u4ecb\u3057\u307e\u3059\u3002Google Analytics 4\uff08GA4\uff09\u3068\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067[...]","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"sns_share_botton_hide":"","vkExUnit_sns_title":"","_vk_print_noindex":"","footnotes":"","vk-ltc-link":"","vk-ltc-target":"0"},"categories":[957],"tags":[329,328,327,149,102],"group":[],"pg":[],"class_list":["post-5640","post","type-post","status-publish","format-standard","category-backend","tag-329","tag-328","tag-pdf","tag-ga4","tag-wordpress"],"acf":[],"veu_head_title_object":{"title":"","add_site_title":""},"_links":{"self":[{"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/posts\/5640","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/comments?post=5640"}],"version-history":[{"count":0,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/posts\/5640\/revisions"}],"wp:attachment":[{"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/media?parent=5640"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/categories?post=5640"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/tags?post=5640"},{"taxonomy":"group","embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/group?post=5640"},{"taxonomy":"pg","embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/pg?post=5640"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}