2015-05-18 2 views
0

Я создаю простой плагин wordpress и пытаюсь использовать функцию темы в файле плагина, но он говорит «Вызов неопределенной функции», в то время как эта функция существует в theme.php текущей активной темы. Эта функция используется в файлах темы, но недоступна в файле плагина, может ли кто-нибудь руководство, что делать? , в то время как я должен приложить плагин с темой в качестве обязательного плагина.Как использовать функцию темы в файле плагина в Wordpress

Спасибо

ответ

1

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

E.g.

function wpse_my_plugin_init() { 
    myPreviouslyUndefinedThemeFunction(); 
} 
add_action('init', 'wpse_my_plugin_init'); 

Смотрите здесь список опций крючками: https://codex.wordpress.org/Plugin_API/Action_Reference

Самая ранняя возможность, которую Вы должны назвать этот код будет after_setup_theme.

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

0

Ваш подход/дизайн серьезно испорчен. Функциональность плагина никогда не должна опираться на функциональность темы. Как уже указывалось на @NathanDawson, плагины загружаются, а затем ребенок тематические функции, то родительский раздел функции, так что ваш подход никогда не будет работать с отступом или без большого количества ненужных раздутого кода

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

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

Тематические функции - это функции, которые дают функциональность самой теме. Без этих функций тема теряет функциональность или внешний вид. Это просто означает, что тема меняется. Эти функции включают функции для размещения ваших таблиц стилей и сценариев, функций поддержки темы, боковых панелей, пользовательских заголовков и фона и регистрации размеров изображений.

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

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

Смежные вопросы