Счётчик скачиваний файлов с кнопкой и админкой.

Счётчик скачиваний файлов с кнопкой и админкой.

Счётчик скачиваний файлов с кнопкой и админкой.

Счётчик скачиваний файлов предлагаю Вашему вниманию простой плагин для WordPress. По функционалу все просто пользователь нажимает на кнопку скачивания. В базу данных добавляется плюс один к скачиванию.

Счётчик скачиваний файлов с кнопкой и админкой.
В админке это дело выглядит вот так

Счётчик скачиваний файлов для WordPress

Характеристики:

Счётчик скачиваний файлов протестирован на версии php 8.2

Нужен установленный WordPress (Как установить на хостинг почитать можно Тут)

Для пользования используем шорткод

[download_counter file="Сюда ссылка на файл" label="⬇ Скачать"]

Сам код поместился в один файл.


<?php

/**

* Plugin Name: Счётчик скачиваний с кнопкой

* Plugin URI: https://plagins.com/счётчик-скачиваний/

* Description: Счётчик скачиваний файлов с кнопкой и админкой.

* Version: 1.1 * Author: plagins * Author URI: https://plagins.com

* License: GPL2

* License URI: https://www.gnu.org/licenses/gpl-2.0.html

*/

if (!defined('ABSPATH')) exit;

// Хук на скачивание function dc_handle_download() {

   if (isset($_GET['dc_download'])) {
 $file_url = esc_url_raw($_GET['dc_download']);

$hash = md5($file_url);

// Счётчик $count = get_option('dc_count_' . $hash, 0);

update_option('dc_count_' . $hash, $count + 1);

// Сохраняем URL update_option('dc_url_' . $hash, $file_url);
 wp_redirect($file_url); exit;

} } add_action('init', 'dc_handle_download');

// Шорткод

function dc_download_shortcode($atts) {
 $atts = shortcode_atts(array( 'file' => '', 'label' => '⬇ Скачать файл', ), $atts);

if (empty($atts['file'])) {
 return 'Не указан файл для скачивания.';

} $file_url = esc_url($atts['file']);

$hash = md5($file_url);
 $count = get_option('dc_count_' . $hash, 0);
 $download_link = esc_url(add_query_arg('dc_download', urlencode($file_url), home_url()));

return sprintf( '

<center><a class="dc-download-button" href="%s" download="">%s</a> <span class="dc-count">
(Скачиваний: %d)
</span></center>
', $download_link, esc_html($atts['label']), $count );

} add_shortcode('download_counter', 'dc_download_shortcode');

// Стили function

dc_enqueue_styles() { wp_register_style('dc_styles', false);

wp_enqueue_style('dc_styles');
$custom_css = " .dc-download-button {
display: inline-block;

background-color: #0073aa; color: #fff;
padding: 10px 20px;
 border-radius: 6px;
 text-decoration: none;
 font-weight: 600;
 transition: background 0.3s ease;

} .dc-download-button:hover {
 background-color: #005177; } .dc-count { 
 font-size: 14px;
 color: #555;
} "; 
wp_add_inline_style('dc_styles', $custom_css);

} add_action('wp_enqueue_scripts', 'dc_enqueue_styles');

// Админ-меню

function dc_admin_menu() {
 add_menu_page( 'Скачивания', 'Скачивания', 'manage_options',
 'dc-downloads', 'dc_admin_page', 'dashicons-download', 20 );

}

add_action('admin_menu', 'dc_admin_menu');

// Страница в админке function dc_admin_page() { 
if (!current_user_can('manage_options')) return;

// Удаление записи

if (isset($_GET['delete']) && isset($_GET['_wpnonce']) && wp_verify_nonce($_GET['_wpnonce'], 'dc_delete_'
 . $_GET['delete']))
{ delete_option('dc_count_' . $_GET['delete']);
 delete_option('dc_url_' . $_GET['delete']);

echo '
<div class="notice notice-success">

Запись удалена.

</div>
'; } echo '
<div class="wrap">
<h1>Скачивания файлов</h1>
';
  echo '';
 global $wpdb;
 $options = $wpdb->get_results(" SELECT option_name, option_value FROM
 {$wpdb->options} WHERE option_name LIKE 'dc_count_%' ");

if ($options) { foreach ($options as $option) {
 $hash = str_replace('dc_count_', '', $option->option_name);
 $count = intval($option->option_value);
$url = get_option('dc_url_' . $hash);
 $delete_url = wp_nonce_url(admin_url("admin.php?page=dc-downloads&delete=$hash"),
 'dc_delete_' . $hash);
echo '';
 echo '';
 echo '';
 echo '';
 echo '';
 } } else { echo ''; } echo '
<table class="widefat fixed striped">
<thead>
<tr>
<th>Файл</th>
<th>Скачиваний</th>
<th>Действия</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="' . esc_url($url) . '" target="_blank" rel="noopener">'
 . esc_html($url) . '</a></td>
<td>' . $count . '</td>
<td><a class="button" href="' . esc_url($delete_url) . '">Удалить</a></td>
</tr>
<tr>
<td colspan="3">Нет данных.</td>
</tr>
</tbody>
</table>
</div>
'; }

⬇ Скачать
(Скачиваний: 16)

Добавить комментарий