Wordpress: доступ к функции плагина от темы

Точно.

>>> x = [2]
>>> x.extend([]) # Nothing is printed because the return value is None
>>> x == [2]
True
>>> x
[2]

Они делают это нарочно так, чтобы Вы помнили, что функция расширения на самом деле изменяет оперативный список. То же с видом (). Это всегда не возвращает Ни один.

8
задан Lee Theobald 23 October 2009 в 18:19
поделиться

1 ответ

Во-первых, imagerotator_show не является функцией; это название типа действия. Когда вы используете функцию add_action (), Wordpress просто добавляет ваш метод в список функций / методов для вызова при запуске определенного действия. Таким образом, ваш второй тест всегда будет отвечать сообщением «Функция НЕ найдена».

Наиболее вероятной причиной первой проблемы является невозможность объявить метод, который вы хотите вызвать, как открытый метод. Вы также делаете код сложнее, чем он должен быть.

Лучшая практика, которую я видел для объявления методов и регистрации хуков из класса, выглядит примерно так:

if ( ! class_exists( 'Foo' ) ):
  class Foo {
    function __construct() {
      add_action( 'hook_name', array( &$this, 'my_hook_implementation' ) );
    }

    function my_hook_implementation() {
      // does something
    }

    public function my_special_method() {
      // does something else
    }
  }

if ( class_exists( 'Foo' ) ):
  $MyFoo = new Foo();

Это позволяет вашему классу сохранить все свои детали реализации частные. Когда вам нужно вызвать my_special_method (), вы делаете это следующим образом:

$MyFoo->my_special_method();
6
ответ дан 5 December 2019 в 21:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: