При sms рассылках важен размер ссылки, которая будет в тексте сообщения.
В базе данных создается отдельная таблица для хранения короткого урла, и соответствующего ему длинного.
В данную таблицу происходит запись по определенному событию:
function generateRandomString($length = 3) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[random_int(0, $charactersLength - 1)];
}
return $randomString;
}
$short_url = generateRandomString();
global $wpdb;
$table_name = $wpdb->prefix.'urls';
$data = ['url' => $long_url, 'short_url' => $short_url];
$wpdb->insert($table_name, $data);
Для обработки укороченной ссылки создается специальный файл short.php со следующим кодом:
<?php
include( 'wp-load.php' );
global $wpdb;
$table_name = $wpdb->prefix.'urls';
$short_url = $_GET['c'];
$result = $wpdb->get_results ( "
SELECT url
FROM $table_name
WHERE short_url = '$short_url'
" );
$long_url = '';
if($result){
foreach($result as $item){
$long_url = $item->url;
}
}
header('location: '.$long_url);
?>
В смс будет урл содержащие short.php?c=code Тут с помощью GET параметра ‘c’ передается идентификатор короткой строки, по которому будет делаться запрос в БД и получаться соответствующая ему длинная строка.
После получения делается редирект с короткой ссылки на длинную
