! Михалика - запросто с WordPress:
доступная ручная работа по правилам оптимального интернет(а)
Здравствуйте !

издатель:   в теме: В теме: Без плагинов  реплики: 10 комментариев
 
Запросто с WordPress - студия занимательная МИХАЛИКА

Создаём плагин — добавочный файл функций — my-functions.php

Файл функций — занимательный помощник в расширении функционала сайта ! особливо, если используется по назначению, — однако, многие владельцы блогов/сайтов замечательным образом превращают functions.php в сборную солянку.

В любом деле существуют целесообразности и ограничения (ограничения, чаще логические), а посему некоторый исполняемый код, призванный регулировать параметры ядра WP (не темы), правильнее вынести за пределы шаблона…

Когда разговор ведётся об модернизации функциональных возможностей сайта, в линейке статей «без плагинов…» непременно советуют пихать все блоки кода в легендарный functions.php. Это неправильно!

Все чисто технические расширялки (не касаемые напрямую стиля шаблона) логичнее перенести в организованный для их прописки плагин.

Создадим его! а также потолкуем о плюсах и минусах (коих значительно меньше)…


 

в чём отличие файла functions.php от плагина

 

 

 

Почему следует некоторый код, относящийся непосредственно к функционалу сайта, перенести в отдельный плагин?

 

 

Сам файл функций, его цель и сообразность ничем не отличается от плагина (попросту — плагин в теме))! — его основная задача — обогатить полезным функционалом конкретный (активный) шаблон.

 

Например, «навигация», где по логике, меню кнопок оформлено CSS соответственно стилю активной темы — может быть, правильнее оставить в корне шаблона.

Я говорю о том, что, все функциональные примочки, не касающиеся напрямую внешнего вида шаблона сайта, целесообразнее перенести в плагин: к примеру, такие как чистота кода шапки wp_head, …исключение всевозможных паразитных ссылок… код добавочных кнопок визуального и html редакторов… и многое-многое другое логичнее отправить за пределы шаблона.

 

 

В чём выгода?

 

Например, самое банальное — вы решили поменять шаблон!? …как итог — пропадут все функциональные наработки, ибо весь полезный код расположен в файле функций (видел однажды такой размер файла 250кИЛО)

 

Конечно, можно перенести документацию функций в новую тему, но — чаше всего, без правок, что отнимают уйму полезного времени, не обойтись: обезьянка и труд)

 

И к тому же:

 

 

 

очерёдность загрузки файлов сайта

 

 

 

 

Кратко: порядок загрузки файлов ядра сайта в нашем примере такой — чуть раньше подгружаются активные плагины сайта (из папки plugins) и их содержание, и уж потом обрабатывается файл functions.php с содержимым. Это всё миллисекунды, и вряд ли тут стоит всерьёз говорить о выигрыше самой скорости страниц.

Хотя, думается, что одна из причин такой очерёдности загрузки, установленной разработчиками, где второе место отведено файлу функций (как предположительно более лёгкому элементу), как раз тот факт широкого использования плагинов, зачастую массивного содержания…

 

 

Кто-то воскликнет: ещё один плагин…? это тяжело!

 

 

А я говорю, ни на какую скорость это не повлияет… скорее — наоборот, если к созданию сайта подходить вдумчиво.

 

Притом — выгода переноса некоторого кода очевидна в другом, а именно, — скорость загрузки сайта зависит не от количества активных плагинов, но от их содержимого! Так почему же не уменьшить файл функций, который, как говорилось, подгружается чуточку позже..? и к тому же является полноценным массивным ПЛАГИНОМ уровня шаблона! Так где же место большей части его кода?

 

По моему мнению, (активный, рабочий) шаблон должен содержать в себе только касаемые конкретно его параметры.

 

 

экскурс к арифметике…

 

 

  1. подгружается позже, спрашивается, почему не перенести туда, где обработка кода выполняется первичнее, а, соответственно, заданные админом поправки параметров ядра WP прочитаются быстрее и обработаются на соответствующем же этапе запуска сайта?
  2. пресловутая целесообразность и логичная организация функционала сайта.
  3. удобства, что не немаловажно!

 

 

 

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

Проще и логичнее создать лёгенький плагин, настроить и забыть…

 

 

 

Словом, каждый решает сам: прислушиваться ли к своему опыту, либо к мнению автора некоей обучающей статьи.

Тогда как учится следует в библиотеках вордпресс, но не по статьям… из статей возможно почерпнуть лишь ту или иную идею…

Как-то так вот-с)

 

 

…для тех, которым интересно:

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

…в одной из следующих статей как раз такая тема-бедекер! …и ссылки на полезные странички.

…подписывайтесь…

 


подписка feedburner МИГ подписки - ВРЕМЯ знаний!!


!..подписываясь на обновления mihalica.ru
...расстаёмся с невежеством..!


 

 

файл функций php

 

как создать плагин дополнительного файла functions.php

 

 

 

Рассматриваемый плагин, конечно же, простенькое решение, но и изучение должно стартовать от азов!

Тем паче, для достижения взятых в статье целей, никаких мощных плагинов и не нужно!

 

 

 

Итак:

 

Заходим в панель управления хостигом (или средствами FTP) открываем файловый менеджер.

Открываем папку plugins и в ней создаём ещё одну директорию (папку для файлов нашего плагина). Имя абсолютно любое, на латинице. У меня в качестве примера имя «test».

Обратите внимание, что имя плагина в админке будет таким, которое прописано в информационном заголовке Plugin Name: test (см. комментарии).

 

 

Открываем созданную папку и в ней создаём основной файл плагина:

 

…с названием, скажем my-functions.php и занесём в его тело такие строки (и имя файла может быть абсолютно любым)

 

<?php
/*
Plugin Name: test
Plugin URI: http://домен
Description: помощь в РАБОТЕ в файлом функций темы - my-functions.php
Version: 0.1
Author: Y
Author URI: http://домен
License: Условия работы и описание плагина.
*/
// место кода
?>

 

 

Строки в комментарии — информация о плагине, которая появится в админпанели (меню плагины).

 

 

Сразу после того как создадите папку и файл, в админке появится ваш плагин. Посмотрите.

 

В качестве экса, можете его на время активировать — но ничего не произойдёт, плагин пока холостой.

 

 

Вот и всё!! простенький плагин создан и, что примечательно, своими руками и для своей же пользы (как говаривал кот Матроскин).

 

 

 

Теперь нас интересует

 

 

прописка кода в добавочный файл функций

 

 

 

 

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

 

 

Код прописывается по аналогии с файлом функций: сразу после информации о плагине или перед закрывающим ?> (а вообще, как-то стоит разграничить циклы функций, ясности для…)

 

 

/** Удаление элементов (ссылок) WP из тулбара - перенос плагин **/
add_action('add_admin_bar_menus', function(){
remove_action( 'admin_bar_menu', 'wp_admin_bar_wp_menu', 10 ); // WordPress ссылки (WordPress лого - слева)
remove_action('admin_bar_menu', 'wp_admin_bar_search_menu', 4 ); // удаляем поиск
remove_action('admin_bar_menu', 'wp_admin_bar_customize_menu', 40); // удаляем ссылку "настроить тему"
});
/** Фин удаление элементов (ссылок) WP из тулбара **/

 

 

Теперь эти коррекции параметров ядра, будут отрабатываться плагином!

 

 

 

Ну и… — вот, если кому интересно, небольшая подборка кода адаптации шапки сайта wp_htad

— ибо и его целесообразнее поместить в новый плагин — в комментариях всё расписано.

 

 

Однако приглядитесь внимательнее, нет ли каких-то строк (параметров) уже в вашем functions.php — дублировать не нужно, да и может быть конфликт с задачами плагина!

 

 

/** АДАПТАЦИЯ ШАПКИ САЙТА ПАГИНАЦИЯ ВЫБРАТЬ **/
function my_remove_prev_link( $data ) 
{
return false;
}
add_filter( 'aioseop_prev_link', 'my_remove_prev_link' ); // убр. навиг плагин All In One SEO Pack
add_filter( 'aioseop_next_link', 'my_remove_prev_link' ); // убр. навиг плагин All In One SEO Pack
/** АДАПТАЦИЯ ШАПКИ САЙТА ПАГИНАЦИЯ ВЫБРАТЬ **/

 

 

 

/** АДАПТАЦИЯ ШАПКИ САЙТА wp_htad **/
remove_action( 'wp_head', 'feed_links_extra', 3 ); // откл доп фид лент
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'rsd_link' ); // откл доп фид лент
remove_action( 'wp_head', 'wlwmanifest_link' ); // ссылки главную страницу, первый пост, следующий, предыдущий
remove_action( 'wp_head', 'index_rel_link' );
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 ); // ссылки главную страницу, первый пост, следующий, предыдущий
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 ); // Убираем связанные ссылки
remove_action( 'wp_head', 'wp_generator' ); // запрет показа версии вордпресс
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 ); // Короткая ссылка, ссылка без ЧПУ
//add_filter( 'show_admin_bar', '__return_false' ); // запрет админбара
/** ФИН АДАПТАЦИЯ ШАПКИ САЙТА**/

 

 

 

В следующих статьях будем расширять возможности собственного плагина…

А пока, кому не терпится:

 

 

 

как подключить в плагине собственные стили

 

 

 

 

Чтобы подключить отработку собственных стилей плагина (т.е my-style.css) — добавите такой код в созданный файл:

 

 

/** Подключение стилей **/
function my_scripts_styles() {
wp_register_style( 'custom-style', plugins_url( '/test-style.css', __FILE__ ), array(), '28052015', 'all');
wp_enqueue_style('custom-style'); //комментарий
}
add_action( 'wp_enqueue_scripts', 'my_scripts_styles' );
/** Подключение стилей **/

 

 

Останется лишь создать css файл стилей, добавить нужные селекторы… заменить имя css-файла на свои в показанном выше коде… и готово дело!

 

 

Но !! я бегу вперёд…

 

Не забывайте подписываться и — многое станет ясным !! ))

 

 

А пока вот, кому интересно и дабы не упустить из виду полезных расширений, можете посмотреть небольшой реестрик поимённо — полезные коды (расширения) для файла функций и, соответственно, для оптимизации качества своего сайта!

 

 


подписка feedburner МИГ подписки - ВРЕМЯ знаний!!

 

 


На этом занавес представления опускается…
…на рампы пыль печальная ложится…

 

 

А вот кстати и полезное кино из сериала «без плагинов» — посмотрите, подумайте, стоит ли предложенный в видео код оставлять в файле функций??

 

 


Благодарности)) и вопросы в комментариях - помогу… в чём дюжу
А также Вы можете просто:
Нажатия на кнопочки определяют Ваше высокое гражданское сознание
ещё статьи по теме:

меточная навигация:


Комментарии © 10 к статье: Создаём плагин — добавочный файл функций — my-functions.php

  1. Очень нужный плагин, огромное спасибо! Я немного не понял про собственные стили плагина, для чего они нужны? Если возможно дополните статью визуальными примерами результата с собственными стилями.

    Ответить - Дмитрий

    • Здравствуйте Дмитрий!
      Стили (именно в этом плагине) показаны как вариант расширения его функционала:
      К примеру, текстовый редактор — очень часто «на его панельку» админы добавляют свои полезные кнопочки — вывод шорткодов, что-то из html оформления статей и пр. к которым необходима же стилистика css.
      А главное !! текстовый редактор, правильнее отнести к работе ядра WP, но не шаблона. А посему всякий код для кнопок редактора возможно добавить в этот плагин и, соответственно, для него же организовать собственный файл стилей (это, если сей плагин делать цельным-автономным! — и в дальнейшем не бояться смены шаблона: кнопки будет отрабатываться на всех темах!!).

      Пример подобного варианта полного плагина можете посмотреть здесь.

      Ответить - Михаил

      • Спасибо за подробный ответ! Я очень люблю различные примочки для файла functions.php и тоже подобрал свою коллекцию. Если есть желание то можем обменяться кодами примочек… Удачи вам в создании полезных СДЛов на WordPress!

        Ответить - Дмитрий

        • можно и обменяться
          только их всё равно приходится и приходится писать новые…
          ибо — движемся…
          У себя в блоге я стараюсь делиться с новичками первично-необходимыми примочками для сайта.
          Пр. не так и много, однако —
          когда поправляешь некие блоги, просто власы дыбом…
          …и себя припоминаешь!!
          И Вам удачи!

          Ответить - Михаил

          • Куда вам можно скинуть мою коллекция плюшек для functions.php ? Или вы мне скиньте свою на мой имейл, а я вам в ответном письме.

            Ответить - Дмитрий

            • …скидывайте на почту…
              у меня оформленные (т.е с комментариями) только те, что по ссылке в комме выше: посмотрите, что нужно может.
              А всё остальное просто в темных файлах: мне и так в своём всё понятно (пояснений-коммов нет) — вот в чём закавыка.

              Ответить - Михаил

              • Скинул вам свою подборку 18-го числа, но не дождался от вас вашей. Буду благодарен если не забудете про меня!


              • Здравствуйте Дмитрий!!
                Я помню! архивы получил — просто занят немного с протоколом https…
                Вы зайдите по ссылке «в подборку» и выберите функции, которые Вам требуются — я перекопирую у себя и отправлю вам…


              • Уважаемый Михаил ATs. Я так и не получил от вас вашу подборку скриптов. На письма по электронной почте вы не отвечаете. Буду рад если вы найдете все-таки время и вышлете мне скрипты.


              • Здравствуйте!!
                Я же Вам объяснял, что в настоящий момент времени (выходные) студия проводила плановые технические апгрейды сайтов… Времени не было совершенно!
                Касаемо Вашего вопроса — я единолично ничего решить не могу: товар магазина, это продукция студии, а не только моего блога. На то он и товар!
                А же Вам я предлагал: выбрать из списка нужные коды, которые я бы Вам и отправил лично из своих запасов. Любые коды! Проблем в этом нет (а мне лично никакие коды пока не нужны).
                От Вас «выбора» не последовало…

Поделитесь соображениями: Ваши мысли очень важны! $ правила комментирования ©

Внимание! Обязательные поля помечены *

Яндекс.Метрика