Расширяем WordPress пользовательскими функциями

Просто потому что вы можете, не означает, что вам следует это делать. Как ранее уже обсуждалось, есть много способов расширить функциональность вордпресс, особенно, если вы комфортно себя чувствуете ковыряясь в коде.

Есть множество ситуаций, когда ваши усилия дизайнера и разработчика лучше воплощаются в удобном файле компоненте шаблона functions.php Назначение этого файла — дать возможность расширить функционал на основе шаблона. Каждый шаблон имеет этот файл для вставки любого количества php функций и скриптов. Этот код обрабатывается, когда тема активная, тем самым расширяя функционал именно активной в данный момент темы.

Плагины против functions.php

И плагины, и функции темы (скрипты, содержащиеся в functions.php) могут расширять функционал вордпресса, но есть некоторые различия между ними, о которых мы уже говорили ранее:

  • Зона действия — плагины, обычно, работают на всем сайте, функции работают только когда тема активна.
  • Обновления — плагины, обычно, обновляются периодически. Функции темы, обычно, не обновляются, особенно те, которые мы сами добавили вручную.
  • Админка — плагины всегда показываются в админ-панели. Функции темы могут и не проявлять себя в админке, в зависимости от их функции и скриптов.

Когда же используем возможности functions.php? Если функции привязаны к шаблону, если это пользовательские функции шаблона, если это маленькие и простые скрипты и функции.

Примеры полезных функций тем

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

Например:

Как отключить уведомления об обновлениях

В админке вордпресс напоминает о доступных обновлениях ядра и плагинов. Напоминание обновления плагинов показывается только на странице плагинов, а вот уведомление обновления ядра показывается на каждой странице. Давайте отключим, добавив в functions.php этот код

add_action('admin_menu', create_function('$a', "remove_action('load-plugins.php', 'wp_update_plugins');"));
add_filter('pre_option_update_plugins', create_function('$a', "return null;"));
add_action('init', create_function('$a', "remove_action('init', 'wp_version_check');"));
add_filter('pre_option_update_core', create_function('$a', "return null;"));

Дополнительные кнопки комментирования

Вдобавок к кнопкам администрирования комментариев (редактировать, удалить, отправить в спам) в админке, удобно иметь такие же кнопки на страницах сайта, чтобы заниматься модераторскими делами не заходя в админку. Вот простой способ добавить кнопки «Удалить» и «Пометить как спам», которые будут выводиться после каждого комментария, если вы авторизированы как администратор. Простым посетителям они не будут видны и доступны.

function spam_delete_links($id) {
global $id;if (current_user_can('edit_post')) {
echo ' | <a href="'.get_bloginfo('wpurl').'/wp-admin/comment.php?action=cdc&c='.$id.'">Удалить</a>';
echo ' | <a href="'.get_bloginfo('wpurl').'/wp-admin/comment.php?action=cdc&dt=spam&c='.
$id.'">Спам</a>';
}}

После размещения вышеуказанного кода в functions.php, останется только вставить в нужное место шаблона вызов этой функции

<?php spam_delete_links(get_comment_ID()); ?>

И это все!

Шорткоды для сайта

Шорткоды вордпресс – это ссылки на часто используемый контент, такой как ссылки, картинки, заголовки. Например, вместо того, чтобы писать полную ссылку на главную страницу сайта, этот шорткод будет выглядеть как [home]. И везде, где он размещен в тексте, он будет заменен на ссылку. Шорткоды могут быть весьма значительны и выполнять разнообразные задачи.

Как и ожидается, функционал шорткодов будет добавляться в functions.php. В этом примере функция для преобразования [home] в ссылку на главную страницу сайта будет выглядеть так

<?php
function myHomePage() {return '<a href="https://supersite.ru/" >Ссылко!</a>';}
add_shortcode('home', 'myHomePage');
?>

И если вдруг нужно будет изменить ссылку везде, где она использовалась, достаточно просто исправить ее адрес в функции. Более подробно про шорткоды можно почитать тут https://codex.wordpress.org/Shortcode_API

Перемещение плагинов в functions.php

Этот файл настолько крутой, что может заменить собой все плагины. Это хороший способ изолировать функциональность плагинов внутри специального шаблона. По умолчанию плагины влияют на все темы, но если включить их в functions.php, то при смене шаблона плагины работать не будут. Легче всего переместить те плагины, которые состоят из одного файла — нужно просто скопировать содержимое этого файла в functions.php и удалить. Остальные плагины могут потребовать дополнительных маневров для корректной работы и переноса, но в теории – это возможно.

Создание плагинов из функций

Переместить плагин в functions.php так же легко, как и создать плагин из пользовательской функции. Как и в прошлом примере, нужно просто скопировать и вставить пользовательскую функцию в новый .php файл и сохранить.

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

<?php
/*
Plugin Name: My Awesome New Plugin
Plugin URI: https://example.com/plugins/awesome-new-plugin/
Description: Provides awesome new functionality for WordPress.
Version: 1.0
Author: The Awesome Plugin Maker
Author URI: https://example.com/
*/
//  разместите тут крутой код функции
?>

Как и говорили, лучше размещать простые функции внутри functions.php, а не как отдельный плагин, но представление в виде плагина также имеет свои преимущества. Например, работа для всех шаблонов сайта и возможность активировать и деактивировать функционал через админку. В случае с functions.php пришлось бы удалять этот код из файла или превращать его в комментарии.

Эти простые примеры показывают только вершину айсберга и лишь познакомили с широкими возможностями, которые можно воплотить в functions.php Но кроме плагинов и функций есть еще способы расширить возможности Вордпресс. Давайте продолжать дальше изучение.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector