Premium Exchanger (v 2.7)
  • Руководство администратора Premium Exchanger
    • Changelog
  • Перед началом работы
    • Рекомендации
      • Выбор сервера
      • Рекомендации от BestСhange
    • Основы безопасности
      • Общие меры безопасности
      • Как не стать жертвой мошенника
      • Как обезопасить панель управления обменником
      • Как защитить сервер
      • Как защитить аккаунты в платежных системах
      • Смена паролей для пользователей сервера
    • Лицензия на скрипт
      • Приобретение лицензии
      • Продление лицензии
    • Инструкция по установке скрипта
    • Инструкция по обновлению скрипта
      • Обновление с версии 2.6 до 2.7
      • Обновление с версии 2.5 до 2.6
      • Обновление с версии 2.4 до 2.5
      • Обновление с версии 2.3 до 2.4
      • Список обновлений
  • Основные настройки
    • Валюты и направления обмена
      • Создание новой валюты
      • Создание нового направления
      • Курсы валют
        • Курсы валют из файла
        • Парсер курсов валют (Парсеры 2.0)
        • Bestchange парсер (old)
        • Bestchange API парсер (new, начиная с v2.6)
      • Резервы валют
        • Резерв из файла
        • Резерв от другой валюты
          • Конвертация резерва при использовании мерчанта
          • Примеры настройки сложного резерва с использованием формул
        • Установка ручного резерва для новой валюты
      • Дополнительные поля
    • Верификация
      • Верификация личности (KYC)
      • Верификация платежных реквизитов
      • Подтверждение e-mail
      • Подтверждение номера телефона
    • Внешний вид
      • Виды таблиц направлений обмена
      • Кастомизация главной страницы
      • Личный кабинет клиента
      • Перевод сайта и панели администратора
        • Добавление нового языка
        • Редактирование перевода и изменение текста
      • Новости на сайте
      • Раздел "Заявки"
      • Раздел "Страницы"
      • Статусы заявок
        • Шаблоны текстов в заявках
      • Страницы "Правила сайта", "Правила проведения проверок AML/KYC/KYT"
      • Страница "Розыгрыш"
      • Уведомления на сайте
    • Мерчанты и автовыплаты
      • Внутренние счета
        • Внутренний счет (модуль мерчанта на приём)
        • Внутренний счет (модуль автовыплаты)
        • Обмен с участием внутреннего счета пользователя
      • Мерчанты
        • Диагностика мерчанта
        • Добавление или создание копии мерчанта
        • Общие настройки мерчантов
        • Использование своих карт/кошельков/счетов
        • ABCEx
        • Alfabit Crypto
        • ArchEx
        • BimBo (выдача своих реквизитов)
        • Bitbanker
        • Bitconce Card/Link
        • DashPay
        • Diffpay
        • Electrum
        • Evo Pay
        • Exnode
        • FireKassa Card/Link
        • Garantex Crypto
        • Heleket
        • Ivanpay
        • Koshelek
        • Luckypay
        • Merchant001
        • MoneyGo
        • Nicepay
        • PandaPay
        • Payeer
        • PayKassa
        • Payscrow
        • Perfect Money
        • Premium Wallet (в разработке)
        • Quickex
        • Rapira
        • Super Money
        • Utopia
        • XPay
        • Volet (ex-Advcash)
        • WebMoney
          • X19
        • WestWallet
        • Yobit
      • Автовыплаты
        • Предупреждение о рисках!
        • Добавление или создание копии автовыплаты
        • Общие настройки автовыплат
        • ABCEx
        • Alfabit Crypto
        • Binance
        • Bitconce
        • Electrum
        • Exnode
        • Firekassa
        • Garantex Crypto
        • GoldEx
        • Heleket
        • Ivanpay
        • Koshelek
        • Luckypay
        • Merchant001
        • MoneyGo
        • Nicepay
        • OTC
        • Payscrow
        • Payeer
        • PayKassa
        • PerfectMoney
        • Premium Wallet (в разработке)
        • Quickex
        • Rapira Crypto
        • Utopia
        • Volet (ex-Advcash)
        • Webmoney
        • WestWallet
        • Yobit
    • Модуль "Торговые действия"
      • Установка модуля "Торговые действия"
        • Общие настройки модуля
      • Диагностика ошибок
      • Создание торгового действия
        • Параметры торговых действий
        • ABCEx (в разработке)
        • Binance
        • Yobit
    • Модуль Electrum
      • Установка и настройка Electrum (2 кошелька)
      • Использование на компьютере (синхронизация кошельков)
      • Обновление Electrum на сервере (для версии 4.3.3 и ниже)
      • Создание дополнительного кошелька (для автовыплаты)
      • Удаление Electrum с сервера
      • Замена кошелька на сервере после установки Electrum
      • Установка и настройка Electrum (old version)
    • Партнерская программа
      • Баннеры партнеров
      • Прибыль и партнерский процент
    • Проверка AML
      • Настройка в v.2.7
      • Настройка в v.2.6 и ниже
        • AMLBot
        • BitOK
        • CoinKyt
        • Getblock
    • Настройки
      • Архивация заявок
      • Валидатор банковской карты
      • Валидатор криптокошелька
      • Вывод кол-ва подтверждений в заявке
      • Двухфакторная авторизация (2FA) в панели управления сайтом
      • Интерфейс Х19 (Webmoney)
      • Конфигурация Nginx и PHP-FPM при использовании панели ISP Manager
      • Логирование
        • Лог авторизации
        • Лог мерчантов и автовыплат
        • Лог Парсеров 2.0
        • Лог ошибок сервера
        • Лог сообщений Telegram
        • Лог статусов заявок
        • Лог AML
        • Лог API
        • Лог E-mail
        • Лог Trade actions
        • Логирование действий администратора
        • Настройки логирования
      • Настройки обменника
      • Настройки экрана в панели управления
      • Общие настройки
      • Описание модулей
        • Таблица модулей
      • Определение типа карты
      • Пароли безопасности
      • Работа сайта по HTTPS-соединению
      • Таймер удаления неоплаченной заявки
      • Функционал сайта в нерабочее время
      • Хуки
      • Хэш и ссылка на транзакцию
      • Экспорт обменов и экспорт/импорт направлений обмена и валют
      • SEO
        • Google Tag Manager
    • Телеграм-бот для обменов
      • Создание бота
      • Настройки бота
      • Диагностика
    • Уведомления администраторам и клиентам
      • Уведомления в Telegram
      • Уведомления по e-mail
      • Уведомления по SMS
    • Финансовая статистика
    • FAQ
      • Диагностика и решение ошибок при работе со скриптом
      • Добавление IP-адресов в Whitelist в Cloudflare
      • Замена SSH-ключей авторизации на сервере
      • Замена имени домена для лицензии
      • Как восстановить доступ в панель управления обменником?
      • Как изменить адрес панели управления обменником?
      • Как изменить пароль администратора?
      • Как найти корневую папку сайта на сервере?
      • Как найти раздел "Новости разработчика"
      • Как перенести сайт
      • Как проверить версию IonCube, установленную на сервере?
        • Как обновить ionCube Loader
      • Как обновить файлы на сервере?
      • Как обновить WordPress?
      • Как обновить OpenSSH на сервере?
      • Как проверить версию PHP, установленную на сервере?
        • Как обновить PHP
      • Как рассчитывается скидка на обмен, партнерское вознаграждение?
      • Как сбросить кэш в Cloudflare
      • Как сделать бэкап сайта?
      • Как создать задание Cron на сервере?
      • Как установить онлайн-чат?
      • Как установить плагин?
        • Работа с плагином при активации
      • Как установить проверочный файл для внешних сервисов?
      • Какие требования предъявляются к обменникам от мониторингов?
      • Обновление файлов скрипта
      • Просьба для клиента написать отзыв об успешном обмене
      • Что такое нестандартная комиссия в настройках направлений обмена и как она работает?
  • API Premium Exchanger
    • API v1
    • API партнерской программы (старая версия API)
Powered by GitBook
On this page
  1. Основные настройки
  2. Настройки

Хуки

PreviousФункционал сайта в нерабочее времяNextХэш и ссылка на транзакцию

Last updated 2 months ago

Через файл хуков вы можете добавить некоторые опции, отсутствующие в скрипте "из коробки".

Для этого разместите необходимые хуки в файле wp-content/plugins/premiumhook/premiumhook.php

Затем в разделе "Плагины" активируйте плагин "Premium Exchanger hooks".

Доступные хуки:

Баннеры в партнерской программе

В партнерской программе существуют промо-материалы.

По умолчанию, это текстовые материалы и баннеры разных размеров.

Существует фильтр, благодаря которому можно изменять их названия и кол-во:

add_filter('pp_banners','my_pp_banners', 1000);
function my_pp_banners($banners){
	
	$banners = array(
		'text'=> __('Text materials','pn'),
		'banner1'=> __('Banners','pn').'(468 x 60)',
		'banner2'=> __('Banners','pn').'(200 x 200)',
		'banner3'=> __('Banners','pn').'(120 x 600)',
		'banner4'=> __('Banners','pn').'(100 x 100)',
		'banner5'=> __('Banners','pn').'(88 x 31)',
		'banner6'=> __('Banners','pn').'(336 x 280)',
		'banner7'=> __('Banners','pn').'(250 x 250)',
		'banner8'=> __('Banners','pn').'(240 x 400)',
		'banner9'=> __('Banners','pn').'(234 x 60)',
		'banner10'=> __('Banners','pn').'(120 x 90)',
		'banner11'=> __('Banners','pn').'(120 x 60)',
		'banner12'=> __('Banners','pn').'(120 x 240)',
		'banner13'=> __('Banners','pn').'(125 x 125)',
		'banner14'=> __('Banners','pn').'(300 x 600)',
		'banner15'=> __('Banners','pn').'(300 x 250)',
		'banner16'=> __('Banners','pn').'(80 x 150)',
		'banner17'=> __('Banners','pn').'(728 x 90)',
		'banner18'=> __('Banners','pn').'(160 x 600)',
		'banner19'=> __('Banners','pn').'(80 x 15)',
	);	
	
	return $banners;
}

Если вы хотите оставить только баннеры 468 на 60, просто удалите все остальные строки из предыдущего хука:

add_filter('pp_banners','my_pp_banners', 1000);
function my_pp_banners($banners){
	
	$banners = array(
		'text'=> __('Text materials','pn'),
		'banner1'=> __('Banners','pn').'(468 x 60)',
	);	
	
	return $banners;
}

Если вы хотите добавить свой размер, добавьте строку по аналогии. К примеру, мы хотим добавить баннер 215 на 19:

add_filter('pp_banners','my_pp_banners', 1000);
function my_pp_banners($banners){
	
	$banners = array(
		'text'=> __('Text materials','pn'),
		'banner1'=> __('Banners','pn').'(468 x 60)',
		'banner21519'=> __('Banners','pn').'(215 x 19)',
	);	
	
	return $banners;
}
Выбор статуса заявки в виде выпадающего списка в фильтре в разделе "Заявки"
add_filter('change_bids_filter_list', 'my_change_bids_filter_list');
function my_change_bids_filter_list($lists) {
	if (isset($lists['status']['bidstatus'])) {
		$stats = list_bid_status();
		$statused = array('0'=> '--' . __('All','pn') . '--');
		if (is_array($stats)) { 
			foreach ($stats as $k => $v) {
				$statused[$k] = $v;
			}
		}
		$lists['status']['bidstatus'] = array(
			'title' => __('Status of order','pn'),
			'name' => 'bidstatus',
			'options' => $statused,
			'view' => 'select',
			'work' => 'options',
		);
	}
	return $lists;
}
Запуск парсера курсов при импорте направлений обмена из файла
add_action('premium_action_export_direction','myparser_premium_action_export_direction', 9);
function myparser_premium_action_export_direction(){
	if(function_exists('new_parser_upload_data')){
		new_parser_upload_data();
	}
}
Использование прокси при с парсерами 2.0

В кавычках для полей "ip", "port", "login", "password" укажите данные от вашего прокси

add_filter('curl_options_parser', '_proxy_curl_options_parser');
function _proxy_curl_options_parser($options) {

	$ip = ''; //ip-адрес
	$port = ''; //port
	$login = ''; //login
	$password = '';	//password
	$tunnel = 1;
		
	if ($ip and $port) {
		if ($tunnel) {
			$options[CURLOPT_HTTPPROXYTUNNEL] = 0;
		}
		
		$options[CURLOPT_PROXY] = $ip;
		$options[CURLOPT_PROXYPORT] = $port;
		
		if ($password and $login) {
			$options[CURLOPT_PROXYUSERPWD] = $login.':'.$password;
		} elseif ($password) {
			$options[CURLOPT_PROXYAUTH] = $password;
		}
	}

	return $options;
}
Описание обмена в виджете на главной

На главной странице в виджете нет описания обмена. Если необходимо его добавить, достаточно воспользоваться хуком:

add_filter('exchange_html_ajax', 'my_exchange_html_ajax');
function my_exchange_html_ajax($html){

	return $html.'[description]';
}
Определение IP-адреса

За определение IP-адреса отвечает функция pn_real_ip. Задача данной функции - вывести один реальный IP-адрес. Если, по каким-то причинам вас не устраивает работа функции, вы можете воспользоваться фильтром

add_filter('pn_real_ip', 'myhook_pn_real_ip', 10, 2);
function myhook_pn_real_ip($ip, $ips_arr){

$new_ip = '127.0.0.1';

return $new_ip;
}
Основная валюта сайта

Для вычисления скидок, подсчета общих сумм и прочего, все суммы переводятся в определенный тип валюты. По умолчанию, скрипт считает основной валютой USD, но это значение можно изменить:

1. Создадим необходимый код валюты, к примеру WMZ.

2. Напишем фильтр:

add_filter('cur_type','myhook_cur_type');
function myhook_cur_type($type){

$type = 'WMZ';

return $type;
}

Теперь внутренней валютой нашего сайта стал WMZ.

Стоит обратить внимание, что обмен внутренней валюты будет осуществляться по двойному обмену (через USD).

Отключение иконки проверки безопасности
remove_action('wp_before_admin_bar_render', 'premium_admin_bar_security', 2);
Отображение курса обмена в разделе "Заявки" с учетом скидки

В некоторых ситуациях подсчет курса обмена может быть неверным

add_filter('onebid_col1', 'new_rate_onebid_col1', 10, 3);
function new_rate_onebid_col1($actions, $item, $v){
	$new_actions = array();
	foreach($actions as $action_key => $action_value){
		$new_actions[$action_key] = $action_value;
		if($action_key == 'rate'){
			$course_get = is_sum($item->course_get);
			$course = is_sum($course_get + ($course_get / 100 * $item->user_discount), 20);
			
			$new_actions['rate_with_discount'] = array(
				'type' => 'text',
				'title' => __('Rate with discount','pn'),
				'label' => '[course_give] [currency_code_give] = '. $course .' [currency_code_get]',
			);				
		}
	}
	
	return $new_actions;
}
Отображение полной суммы оплаты в заявке
add_filter('exchangestep_all_html_list', 'sum1fromc_exchangestep_all_html_list', 10, 2);
function sum1fromc_exchangestep_all_html_list($array, $bids_data) {
  $array['[sum_give]'] = is_sum($bids_data->sum1c);
  return $array;
}
Перевод текста по умолчанию

Если вы используете мультиязычность, в мультиязычных полях задается несколько вариантов текста (для каждого из языков). Когда нужной версии нет, скрипт подставляет первую возможную (соответствует языку админ-панели).

Если вы считаете, что это не корректно, вы можете задать шаблон ошибки с помощью фильтра:

add_filter('ctv_ml_default','myhook_ctv_ml_default');
function myhook_ctv_ml_default($text){
$text = 'ошибка, перевода нет'; //любой ваш вариант
return $text;
}
Показывать колонку "Курс" в таблице №5 по умолчанию

По умолчанию в таблице №5 на главной странице обменника для направлений обмена отображается резерв, а не курс. Если вы хотите, чтобы при открытии страницы отображался курс — установите этот хук

add_filter('table5_current_select', 'rate_table5_current_select');
function rate_table5_current_select ($select) {
    
    $select = 'rate';
    
    return $select;
}
При с заявками с мобильных устройств
add_filter('merchant_payed_button','del_iam_pay_merchant_pay_button', 10000);
add_filter('merchant_pay_button','del_iam_pay_merchant_pay_button', 10000);
function del_iam_pay_merchant_pay_button($link) {
	$link = str_replace('iam_pay_bids','',$link);
	return $link;
}
Разрешает использовать всего 2 символа для кода валюты
add_filter('is_site_value', 'new_is_site_value', 10, 2);

function new_is_site_value($new_item, $item) {
    if (preg_match("/^[a-zA-z0-9\.]{2,30}$/", $item, $matches)) {
        // Если $item соответствует регулярному выражению, мы возвращаем $item без изменений.
        return $item;
    }
    return $new_item;
}
Разрешает использовать всего 2 символа для XML-кода валюты для экспортного XML-файла с курсами
add_filter('is_xml_value', 'new_is_xml_value', 10, 2);
function new_is_xml_value($new_item, $item) {

  if (preg_match("/^[a-zA-z0-9_.]{2,50}$/", $item, $matches)){
    return $item;
  }
  
  return $new_item;
}
Скрытие галочки выбора всех заявок в разделе "Заявки" в панели администратора
add_filter('bids_datablock', 'my_bids_datablock');
function my_bids_datablock($data_blocks){
    if(isset($data_blocks['check'])){
    unset($data_blocks['check']); }
    return $data_blocks; }
Скрытие направлений обмена на сайте в зависимости от заданного расписания для XML-файла. Направление останется активным, но будет отображать 404 ошибку при переходе на него по прямой ссылке на сайте и будет скрыто в таблице выбора направлений обмена в админ-панели.
remove_filter('get_direction_output', 'txtxml_get_direction_output', 10, 3);

add_filter('get_direction_output', 'my_txtxml_get_direction_output', 10, 3);
function my_txtxml_get_direction_output($ind, $item, $place){
    if($ind == 1 and function_exists('get_dirxml_show')){
    return get_dirxml_show($ind, $item); }
    return $ind; }
Свой стандартный заголовок сайта

По умолчанию заголовком любой темы на базе Premium Exchanger, является текст вида [title] — [description], где:

[title] — название сайта [description] — описание

Если не используются SEO-плагины, данный заголовок можно изменить с помощью хука.

К примеру, если вы хотите убрать заголовок, воспользуйтесь следующим хуком:

add_filter('premium_wp_title', 'myhook_premium_wp_title');
function myhook_premium_wp_title($title){

return '[description]';
}
Своя ссылка-редирект после авторизации

После авторизации скрипт автоматически перенаправляет пользователя на страницу в личный кабинет. Если необходимо изменить ссылку-редирект, можно воспользоваться следующим хуком:

add_filter('login_auth_redirect', 'my_login_auth_redirect');
function my_login_auth_redirect($url){

	$new_url = 'адрес страницы';

	return $new_url;
}
"Хвост" партнерской программы

По умолчанию, "хвостом" партнерской программы является значение «rid». Ссылка выглядит следующим образом: https://ваш_домен/?rid=[id]

Чтобы изменить это значение на своё, можно воспользоваться фильтром:

add_filter('refid','myhook_refid');
function myhook_refid($refid){

$refid = 'skidka';

return $refid;
}

Таким образом, "хвостом" будет слово "skidka"

URL мультиязычных иконок

Premium Exchanger используют единый фреймворк Premium. Тот скрипт, который был активирован раньше и отвечает за основные функции. К основным функциям, относится и мультиязычность. Если мы хотим добавить дополнительных языков, нам необходимо загрузить иконки мультиязычности во все плагины, что бывает не всегда удобно. Для этих целей, мы можем использовать специальный фильтр, который будет указывать плагин, из которого брать флаги.

К примеру, мы хотим, что бы флаги всегда брались из premiumbox. Напишем свой фильтр:

add_filter('ml_flag_url', 'my_ml_flag_url');
function my_ml_flag_url($plugin_folder){
return 'premiumbox';
}

До: После: