«

»

Мар 19 2013

Распечатать Запись

Переносим все изменения WordPress в functions.php

изменения WordPress через functions.phpWordPress – достаточно мощный и гибкий движок. Для расширения или изменения его функционала в большинстве случаев хватает дополнительных возможностей установленной темы и плагинов, которых в свободном доступе великое множество. Но иногда все же возникает необходимость вносить изменения в исходные файлы движка или темы. Но прямое решение проблемы (взять и изменить файл) не очень практично по одной простой причине: при каждом обновлении WordPress или темы эти изменения. А ведь со временем можно и забыть о сделанных изменениях, как в моем случае с социальными кнопками. Поэтому я советую:

[important]Все изменения вносить через functions.php.[/important]

Но встает вопрос “Как это сделать?” Вот об этом дальше и пойдет речь.

Немного теории

В исходном коде WordPress используются так называемые “action hooks” или в вольном переводе “точки действий”. В WordPress есть системные точки действий к которым многие темы добавляют свои точки действий. Для темы Graphene все их можно посмотреть тут: “Внешний вид” – “Параметры Graphene” – Вкладка “Для продвинутого” – Раздел “Панели виджетов для точек действий”. Кстати, тут же можно поставить галочку на любой точке действия и в разделе виджеты появится новая панель для виджетов. Можно вставить простой текстовый виджет и посмотреть где он появится.

Аналогично тому, как тема Graphene позволяет прикрепить к точке действий панель для виджетов, можно в файле functions.php к любой точке действий привязать вызов любой функции php.

Пример переноса изменения WordPress в functions.php

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

В случае с социальными кнопками мне необходимо в определенном месте шаблона выводить некоторый HTML-код и JS-скрипт, которые содержат вставки php-кода:

 

Изначально предполагается, что этот код будет вставлен, например, в header.php. Но мы сделаем так, что все необходимые действия будут делаться в function.php. Единственное ограничения: в том месте, куда вносятся изменения изначально, должна быть точка действия или же код изменения можно перенести к ближайшей точке действия.

Инструкция по переносу изменения WordPress в functions.php

  1. Удалить код изменения из предыдущего места вставки.
  2. Найти ближайшую точку действия WordPress или используемой темы. В случае с Graphene удобно использовать описанную выше возможность добавлять панели виджетов к любой точке действия темы: добавляем панель, к ней добавляем простой текстовый виджет с незамысловатым содержанием и смотрим где он появился. 
  3. Придумать название новой фукнции, которую мы будем использовать в functions.php для вставки нашего изменения.
  4. Вставить в functions.php код следующего вида:

     Несложно провести соответствие с упомянутыми уже не раз добавлением социальных кнопок: $название точки действия$ = graphene_before_content, $придуманное название функции$ = share42_block, $код изменения$ = 

На этом всё!

P.S. Спасибо большое Алексею за заданный по email вопрос, который сподвиг на написание этого поста.

1 комментарий

  1. Алексей

    Благодарю Вас за подробное описание!
    Все получилось, спасибо!!!

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

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