Плагины WordPress - разделить (ООП) классы - PullRequest
0 голосов
/ 02 августа 2011

Итак, я разрабатываю плагин, и я использую основной класс, чтобы им было легче управлять:

class MyPlugin{
   function __construct(){
      //my add_actions here
      add_action('template_redirect', array($this, 'template_redirect'));
   }

   //my_class_methods here
   function template_redirect(){}
}

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

  • создать новый комментарий класса
  • в __construct экземпляр MyPlugin$ comment = new Comment ()
  • делегировать в моем template_redirect () действие для метода в $ comment, например:

    add_action ('wp_insert_comment', array ($ this-> comment, 'wp_insert_comment'));

или:

  • создать новый комментарий класса
  • в __construct экземпляр $ комментария MyPlugin= new Comment ()
  • в __construct моего комментария к классу добавить действие к его методу comment_method:
add_action('wp_insert_comment', array($this, 'comment_method'));

Возможно ли это?в любом случае, мое поведение не называется.Спасибо за вашу помощь

1 Ответ

1 голос
/ 02 августа 2011

Да, это возможно, но вы, вероятно, должны добавить большинство действий и фильтров с помощью хука plugins_loaded, а не хука template_redirect, который, вероятно, вообще не вызывается при публикации комментария (форма переходит к wp -comments-post.php, wordpress обрабатывает запрос, затем перенаправляет пользователя обратно на страницу, где была форма комментария до того, как понадобился шаблон.)

class MyPlugin{
    function __construct(){
        add_action("plugins_loaded", array($this,"_action_plugins_loaded"));
    }
    function _action_plugins_loaded(){
         //add actions & filters here...
    }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...