Сокращение URL-адреса — это метод, при котором URL-адрес значительно сокращается по длине и по-прежнему ссылается на требуемую страницу. Это достигается с помощью перенаправления на короткое доменное имя, которое ссылается на веб-страницу с более длинным URL.
В этом уроке я покажу вам, как создать плагин для сокращения URL для WordPress, используя Google Shortener API Google.
Причины сокращения URL
Прежде чем мы начнем создавать плагин для сокращения URL, давайте рассмотрим несколько примеров того, почему нам может понадобиться этот плагин:
- В Twitter и некоторых других службах обмена сообщениями существует ограничение на количество символов, которое может содержать сообщение. Так что, если вы отправляете длинные URL-адреса, то это займет большую часть сообщения.
- Печатные книги или рекламные вывески часто используют сокращенные URL-адреса, поскольку их легко читать и печатать.
- QR-коды имеют ограничение по количеству символов. Очень длинные URL-адреса не подходят, поэтому требуется сокращение URL-адреса.
Получение ключа API Google URL Shortener
Чтобы использовать Google URL Shortener API, вам необходимо получить ключ API. Этот ключ API используется Google для отслеживания вашего приложения.
Вот шаги для получения вашего ключа API:
- Посетите консоль разработчиков Google .
- Выберите существующий проект или создайте новый.
- На левой боковой панели щелкните и разверните API и авторизацию.
- Далее нажмите API. В списке API убедитесь, что для Google URL Shortener API включен статус.
- На боковой панели слева выберите Учетные данные. Затем сгенерируйте открытый ключ доступа, если вы еще этого не сделали. Этот открытый ключ доступа является ключом API.
Каталог и файлы плагинов
Наш плагин будет содержать один каталог и один файл. Вот структура:
--url-shortener -url-shortener.php
Чтобы сделать плагин доступным для установки, мы помещаем этот код в файл url-shortener.php :
<?php
Создать страницу настроек плагина
Нам нужно создать страницу настроек для нашего плагина, где администраторы могут ввести ключ API Shortener URL. Вот код для создания страницы настроек с помощью API настроек WordPress :
<?php function url_shortener_settings_page() { add_settings_section("section", "Enter Key Details", null, "url-shortener"); add_settings_field("url-shortener-input-field", "API Key", "url_shortener_input_field_display", "url-shortener", "section"); register_setting("section", "url-shortener-input-field"); } function url_shortener_input_field_display() { ?> <input type="text" name="url-shortener-input-field" value="<?php echo get_option('url-shortener-input-field'); ?>" /> <?php } add_action("admin_init", "url_shortener_settings_page"); function url_shortener_page() { ?> <div class="wrap"> <h1>URL Shortener Setting</h1> <form method="post" action="options.php"> <?php settings_fields("section"); do_settings_sections("url-shortener"); submit_button(); ?> </form> </div> <?php } function menu_item() { add_submenu_page("options-general.php", "URL Shortener", "URL Shortener", "manage_options", "url-shortener", "url_shortener_page"); } add_action("admin_menu", "menu_item");
Мы храним ключ API в качестве опции WordPress с именем url-shortener-input-field
.
Вот как должна выглядеть страница настроек:
Обзор API Google URL Shortener
Чтобы сократить длинный URL-адрес, необходимо отправить запрос POST на https://www.googleapis.com/urlshortener/v1/url
URL-адрес с вашим ключом API и длинным URL-адресом.
Вот как выглядит пример запроса:
POST https://www.googleapis.com/urlshortener/v1/url Content-Type: application/json {"longUrl": "http://www.sitepoint.com/"}
Вот пример ответа выглядит так:
{ "kind": "urlshortener#url", "id": "http://goo.gl/fqsT", "longUrl": "http://www.sitepoint.com/" }
Примечание. Вы не можете отправлять более 1 миллиона запросов с использованием одного и того же ключа API в день.
Отображение сокращенного URL в мета-боксе
Мы хотим отобразить сокращенный URL в мета-поле на экране редактирования поста. Для создания мета-блока мы будем использовать Meta Box API, а для сокращения URL-адреса мы будем использовать HTTP-API WordPress .
Вот код для отображения нашего сокращенного URL в мета-поле:
function url_shortener_meta_box_markup($object) { $key = get_permalink($object->ID); if(get_option('url-shortener-input-field', '') != "") { if(get_option($key, "") != "") { echo get_option($key, ""); return; } $url = 'https://www.googleapis.com/urlshortener/v1/url'; $result = wp_remote_post( add_query_arg( 'key', get_option('url-shortener-input-field'), 'https://www.googleapis.com/urlshortener/v1/url' ), array( 'body' => json_encode(array('longUrl' => esc_url_raw($key))), 'headers' => array( 'Content-Type' => 'application/json') ) ); if(is_wp_error($result)){echo "Error"; return;} $result = json_decode($result['body']); $shortlink = $result->id; update_option($key, $shortlink); echo $shortlink; } } function url_shortener_meta_box() { add_meta_box("url-shortener-meta-box", "Shorten URL", "url_shortener_meta_box_markup", "post", "side", "default", null); } add_action("add_meta_boxes", "url_shortener_meta_box");
Вот как работает этот код:
- Мы создали мета-бокс, используя функцию
add_meta_box
. - Мы
get_permalink()
длинный URL-адрес сообщения с помощью функцииget_permalink()
. - Затем мы проверяем, есть ли у нас короткий URL этого длинного URL в базе данных в качестве опции WordPress. Если нет, то мы извлекаем его с помощью HTTP API и сохраняем как параметр WordPress. В противном случае мы используем существующий короткий URL.
- Этот плагин прекрасно работает с веб-службой Google URL сокращателя, поскольку он не запрашивает новый URL каждый раз, а сохраняет его после извлечения.
Вот как выглядит мета-бокс на экране редактирования поста:
Отображение короткого URL в интерфейсе
Мы также хотим отображать сокращенный URL под каждым сообщением. Вот код для этого:
function url_shortener_content_filter($content) { if($GLOBALS['post']->post_type != "post") return; $key = get_permalink($GLOBALS['post']->ID); if(get_option('url-shortener-input-field', '') != "") { if(get_option($key, "") != "") { $content = $content . "<p><b>Shortern URL: </b>" . get_option($key, "") . "</p>"; return $content; } $url = 'https://www.googleapis.com/urlshortener/v1/url'; $result = wp_remote_post( add_query_arg( 'key', get_option('url-shortener-input-field'), 'https://www.googleapis.com/urlshortener/v1/url' ), array( 'body' => json_encode(array('longUrl' => esc_url_raw($key))), 'headers' => array( 'Content-Type' => 'application/json') ) ); if(is_wp_error($result)){echo "Error"; return;} $result = json_decode($result['body']); $shortlink = $result->id; update_option($key, $shortlink); $content = $content . "<p><b>Shortern URL: </b>" . $shortlink . "</p>"; } return $content; } add_filter("the_content", "url_shortener_content_filter");
Вот как работает этот код:
- Сначала мы проверяем, что WordPress обрабатывает сообщение. Если это страница или пользовательский тип записи, мы не отображаем короткий URL. Однако, если вы хотите отобразить его на каждой странице, удалите первые две строки из кода функции.
- Затем мы делаем все то же самое, что и при отображении короткого URL-адреса в мета-поле. Разница лишь в том, что вместо того, чтобы повторять его, мы объединяем его с содержимым публикации.
Вот как это выглядит на переднем конце:
Теперь мы закончили создавать удивительный плагин для сокращения URL для WordPress!
Популярные плагины URL Shortener в каталоге плагинов WordPress.org
Если вы хотите проверить существующие плагины, двумя из самых популярных плагинов URL Shortener в каталоге плагинов WordPress.org являются URL Shortener и WP URL Shorten .
WP URL Shorten использует ref.li для сокращения URL. Ref.li предоставляет статистику в реальном времени и другую информацию о трафике людей, посещающих ваш сайт через их сокращенный URL.
Плагин URL Shortener позволяет выбирать между Bit.ly , Su.pr , YOURLS , Goo.gl и многими другими сервисами. Этот плагин также может генерировать QR-коды.
Вывод
В этом уроке я показал вам, как легко создать собственный плагин для сокращения URL. Теперь вы можете пойти дальше и расширить это, чтобы добавить больше функций, таких как поддержка QR-кода, и использовать другие службы сокращения URL-адресов. Пожалуйста, поделитесь своим опытом с вашими собственными плагинами ниже.