Đếm số lần nhấp vào một liên kết PHP

Mặc dù hỗ trợ 1-1 về lập trình tùy chỉnh nằm ngoài phạm vi hỗ trợ mà chúng tôi cung cấp, nhưng chúng tôi sẽ cố gắng hết sức để hướng dẫn đúng hướng bất cứ khi nào có thể

Mã bạn cần cho việc này có thể được chia thành hai phần

1. Bạn sẽ cần thêm mã để tải một số tập lệnh tùy chỉnh và hành động AJAX, trong "hàm" của chủ đề đang hoạt động của bạn. tập tin php"

Ví dụ

// load and localize custom scripts
add_action[ 'wp_enqueue_scripts', 'ajax_counter_link_enqueue_scripts' ];
function ajax_counter_link_enqueue_scripts[] {

	wp_enqueue_script[ 'counter-link', get_theme_file_uri[ '/js/link-counter.js' ], array['jquery'], '1.0', true ];
	
	wp_localize_script[ 'counter-link', 'counterlink', array[
		'ajax_url' => admin_url[ 'admin-ajax.php' ],
		'ajax_nonce' => wp_create_nonce[ 'link_click_counter_' . admin_url[ 'admin-ajax.php' ] ],
	]];

}

// action to execute AJAX call
add_action[ 'wp_ajax_nopriv_click_counter_process', 'click_counter_process' ];
add_action[ 'wp_ajax_click_counter_process', 'click_counter_process' ];

function click_counter_process[] {

	// get current value of counter custom field
	$current_count = get_post_meta[ $_POST['post_id'], 'wpcf-link-counter', true ];

	// increment the counter value by 1
	$current_count++;

	if [ defined[ 'DOING_AJAX' ] && DOING_AJAX && wp_verify_nonce[ $_POST['nonce'], 'link_click_counter_' . admin_url[ 'admin-ajax.php' ] ] ] {

		update_post_meta[ $_POST['post_id'], 'wpcf-link-counter', $current_count ];

		echo "pass";

		die[];

	} else {

		die[ 'Security check failed' ];

	}
}


ghi chú. Khối mã trên giả định rằng sên trường tùy chỉnh cho trường tùy chỉnh bộ đếm mà bạn đang sử dụng là "bộ đếm liên kết". Nhưng bạn nên cập nhật tất cả các phiên bản của "wpcf-link-counter" để khớp với sên của trường tùy chỉnh của bạn

2. Tiếp theo, bạn có thể tạo một tệp mới "link-counter. js" trong thư mục có tên "js" trong thư mục chủ đề đang hoạt động của bạn và thêm đoạn mã sau vào đó để thực hiện các yêu cầu AJAX trong sự kiện nhấp chuột

jQuery[ document ].on[ 'click', '.click-counter-link', function[event] {
	event.preventDefault[];
	var post_id = jQuery[this].data['id'];
	var post_URL = jQuery[this].attr['href'];

	jQuery.ajax[{
		url : counterlink.ajax_url,
		type : 'post',
		data : {
			action : 'click_counter_process',
			nonce : counterlink.ajax_nonce,
			post_id : post_id
		},
		success : function[ response ] {

			if [response == "pass"] {
				window.location.href = post_URL;
			}
			else
			{
				alert[response];
			}
			
		}
	}];
}]


Sau khi hoàn thành cả hai bước này, bạn có thể thêm các liên kết thực tế cho từng bài đăng tùy chỉnh của mình trong chế độ xem như thế này

Click

Do đó, khi khách truy cập nhấp vào liên kết này cho một bài đăng thông qua chế độ xem này, họ sẽ được chuyển hướng đến bài đăng đó và bộ đếm cho giá trị trường tùy chỉnh sẽ tăng thêm 1

Với tập lệnh đơn giản này, có thể đếm và theo dõi các lần nhấp [mã quốc gia và địa chỉ IP] từ khách truy cập theo liên kết đến một trong các đối tác liên kết hoặc nhà quảng cáo của bạn. Tập lệnh này có thể được sử dụng cùng với cơ sở dữ liệu liên kết hiện tại của bạn hoặc, nếu bạn đã thực hiện một số sửa đổi, với một loạt các liên kết. Tôi đã sử dụng cơ sở dữ liệu IP2nation để lấy mã quốc gia của khách truy cập để lưu trữ mã này cùng với các thông tin khác. Chúng tôi sử dụng biến máy chủ HTTP_REFERER để lưu trữ URL, nơi liên kết được nhấp vào, cùng với dữ liệu khác. Bạn cũng có thể sử dụng tập lệnh này để ẩn các liên kết liên kết

Sử dụng các câu lệnh SQL này trong máy khách MySQL của bạn

CREATE TABLE `links` [
  `id` int[11] NOT NULL auto_increment,
  `titel` varchar[75] NOT NULL default '',
  `naam` varchar[35] NOT NULL default '',
  `url` varchar[150] NOT NULL default '',
  `description` text NOT NULL,
  PRIMARY KEY  [`id`]
] TYPE=MyISAM;

CREATE TABLE `clicks` [
  `id` int[10] NOT NULL auto_increment,
  `link_id` int[10] NOT NULL default '0',
  `visitor_ip` varchar[15] NOT NULL default '',
  `click_at` datetime NOT NULL default '0000-00-00 00:00:00',
  `country` char[2] NOT NULL default '',
  `on_page` varchar[50] NOT NULL default '',
  PRIMARY KEY  [`id`]
] TYPE=MyISAM;

Cài đặt theo cách tương tự với dữ liệu từ bảng ip2nation

Đoạn mã PHP

Tạo tập lệnh qua mã này giữa các thẻ PHP

// place here your database connection code

if [isset[$_GET['id']] && intval[$_GET['id']] > 0] {
    $delay = 12*3600; // change here the number of hours how often a unique click must be counted
    $sql_check = sprintf["SELECT COUNT[*] AS test FROM clicks WHERE link_id = %d AND visitor_ip = '%s' AND UNIX_TIMESTAMP[click_at] + %d > UNIX_TIMESTAMP[NOW[]]", $_GET['id'], $_SERVER['REMOTE_ADDR'], $delay];
    if [mysql_result[mysql_query[$sql_check], 0, "test"] == 0] {
        $country_sql = "SELECT country FROM ip2nation WHERE ip < INET_ATON['".$_SERVER['REMOTE_ADDR']."'] ORDER BY ip DESC LIMIT 0,1";
        $country = mysql_result[mysql_query[$country_sql], 0, "country"];
        $sql_insert = sprintf["INSERT INTO clicks [link_id, visitor_ip, click_at, country, on_page] VALUES [%d, '%s', NOW[], '%s', '%s']", $_GET['id'], $_SERVER['REMOTE_ADDR'], $country, $_SERVER['HTTP_REFERER']];
        mysql_query[$sql_insert];
    }
    $sql_url = sprintf["SELECT url FROM link_table WHERE id = %d", $_GET['id']];
    $url = mysql_result[mysql_query[$sql_url], 0, "url"];
    header["Location: ".$url];
    exit;
} else {
    header["Location: //www.yourwebsite.com/"];
    exit;
}

Làm cách nào để sử dụng tập lệnh trong trang web của bạn?

Đoạn script trên là mục tiêu liên kết của bạn, bạn cần tạo các liên kết như

Click this link please

bài viết liên quan

  • Biểu ngữ ngẫu nhiên với PHP & MySQL

    Công cụ quay biểu ngữ này hơi khác một chút so với các biểu ngữ khác, biểu ngữ sẽ chỉ thay đổi…

  • 3 phương pháp để tinh chỉnh các trang kết quả cơ sở dữ liệu MySQL của bạn

    Hầu hết mọi người sử dụng PHP và MySQL cùng nhau và có một số lý do để làm như vậy. …

  • Tối ưu hóa Máy chủ MySQL của bạn với MySQLTuner

    Đăng nhập vào bảng điều khiển máy chủ của bạn và tải xuống MySQLTuner [Tôi sử dụng thư mục chính của người dùng của mình] wget…

Chủ Đề