Intereting Posts
Как удалить первые три слова из содержимого и отобразить выдержку Как создать страницу архива для таксономических условий в пользовательском типе сообщений поиск в jquery mobile возвращает пустую страницу Показать название вкладки в качестве 'blog tagline | Название блога' Почтовые шаблоны и почтовые идентификаторы Все доступные способы обойти авторизацию? Условные для пользовательских типов сообщений Как удалить перенаправление RSS-канала? Способ получения изображения или первого изображения и обрезания на лету перед отображением Функция DOING_AUTOSAVE в wordpress ошибка в форме расширенного поиска для пользовательских типов сообщений в WordPress array_key_exists () ожидает, что параметр 2 будет массивом, указанная строка сбой обновления темы Woo Framework: woo_cat_featured не заполняется Как автоматически и произвольно изменить порядок пользовательских типов сообщений? Как запустить файл .php, расположенный в корневой папке моего сайта?

Как вызвать функции плагина в настраиваемом шаблоне

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

Что мне делать?

  1. Проверьте документацию плагина (теперь больше о функции)
  2. Затем проверьте функцию, если она статична. Вы можете использовать

    ClassName::FunctionName

  3. Если не проверить, есть ли глобальный объект, добавленный плагином

    global $plugin_name_object; $plugin_name_object->my_function();

  4. если не просто создать new object плагина и вызвать эту функцию.

    obj = new Plugin(); $obj->my_function();

Для неопределенной ошибки функции могут быть разные причины:

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

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

Другой вопрос: зачем вы называете эту функцию напрямую? Шаблоны должны иметь как можно больше зависимостей. Представьте, что кто-то обнаружил проблему безопасности в плагине, и вам нужно отключить ее. Вы действительно хотите изменить все ваши файлы шаблонов? Возможно нет. 🙂

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

 do_action( 'frontend.message' ); 

В functions.php вашей темы вы регистрируете обратный вызов для этого действия:

add_action ('frontend.message', 'my_frontend_message');

 function my_frontend_message() { if ( ! function_exists( 'plugin_frontend_message' ) ) { // Show debug info for those who can do something about it. if ( current_user_can( 'manage_option' ) ) { print '<p class="error">Function plugin_frontend_message() not found.</p>'; } return; } print plugin_frontend_message(); } 

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