Существует немало плагинов, позволяющих скачивать файлы с сайта, так и я долгое время использовал плагин WP-Filebase, он был очень удобным, там и различные шаблоны кнопок скачивания и счетчик скачиваний. Плагин меня полностью устраивал — у меня была удобная кнопка скачивания файлов со счетчиком скачиваний, но со временем он перестал поддерживаться и возникла проблема — я не мог обновить PHP, при попытке обновления сайт «ломался». Решил в этот раз обойтись от плагина вообще. С помощью плагина Code Snippets, чтобы не трогать functions.php, написал несколько сниппетов: Обработчик скачивания треков, Вывод числа скачиваний, Счетчик скачиваний, создал кнопку и в кастомном поле темы Avada прописал ссылку на файл.
Обработчик скачивания треков
add_action('init', function() {
if (!isset($_GET['mydl'])) return;
$id = intval($_GET['mydl']);
if (!$id) return;
// 🔒 защита от повторного клика/редиректа
$lock = 'dl_lock_' . $id . '_' . $_SERVER['REMOTE_ADDR'];
if (get_transient($lock)) {
return;
}
set_transient($lock, 1, 5); // 5 секунд блок
$count = get_post_meta($id, 'my_download_count', true);
$count = $count ? $count + 1 : 1;
update_post_meta($id, 'my_download_count', $count);
$url = get_post_meta($id, 'my_file_url', true);
if ($url) {
wp_redirect($url);
exit;
}
wp_die('File not found');
});
Вывод числа скачиваний
function my_download_meta($atts) {
$atts = shortcode_atts(array(
'id' => 0,
), $atts);
$id = intval($atts['id']);
if (!$id) return '';
$count = get_post_meta($id, 'my_download_count', true);
$count = $count ? $count : 0;
return '';
}
add_shortcode('my_meta', 'my_download_meta');
Счетчик скачиваний
add_action('init', function() {
if (!isset($_GET['mydl'])) return;
$id = intval($_GET['mydl']);
if (!$id) return;
$count = get_post_meta($id, 'my_download_count', true);
$count = $count ? $count + 1 : 1;
update_post_meta($id, 'my_download_count', $count);
$url = get_post_meta($id, 'my_file_url', true);
if ($url) {
wp_redirect($url);
exit;
}
wp_die('File not found');
});
Создал кастомное поле в произвольных полях темы Авада
Дал название полю — my_file_url и прописал туда адрес файла из библиотеки медиафайлов. Кастомные поля можно создавать также с помощью плагина Advanced Custom Fields (ACF)
В кнопку прописал полученный URL формата — https://site.com/?mydl=id
Под кнопкой поставил шорткод [my_meta id=»21129″], где 21129 — пример id поста.
В результате, получилась кнопка и под ней счетчик скачиваний, пример ЗДЕСЬ. 
Стили для счетчика скачиваний
.sdc-meta {
display: block !important;
text-align: center !important;
font-size: 13px !important;
color: #9a9a9a !important;
margin-top: 6px !important;
opacity: 0.95 !important;
}
Оставить комментарий