Как запустить add_action () или add_filter () после нажатия кнопки? - PullRequest
0 голосов
/ 30 апреля 2019

Я написал простой плагин для добавления текста к содержимому каждого сообщения с помощью add_filter (), который работает нормально. но теперь я хочу запустить add_filter только после нажатия кнопки. поэтому я нажал кнопку на моей странице настроек и добавил функцию, которую нужно выполнить после нажатия. но проблема в том, что когда я помещаю add_filter () в функцию действия кнопки, она не будет выполняться. Может кто-нибудь помочь мне с кодом? спасибо!

Это работает как в корне файла php.

add_filter("the_content", "appendAction");

function appendAction($the_Post) {

   $the_Post.=" Bye ! ";

   return $the_Post;
}

но не работает, когда включена функция действия кнопки

function test_button_action(){

   echo "button clicked "; //this runs after clicking button but not below code

   add_filter("the_content", "appendAction");

   function appendAction($the_Post) {

      $the_Post.=" Bye ! ";

      return $the_Post;
   }
}

1 Ответ

0 голосов
/ 30 апреля 2019

WordPress делает некоторые непослушные манипуляции с буферизацией вывода. Часто бывает слишком поздно, чтобы попасть на страницу вовремя, прежде чем ваши изменения достигнут шаблона, который выводится. Я бы предложил использовать инструмент отладки, такой как xdebug, или записать в файл журнала, чтобы увидеть, встречаются ли ваши точки останова. Вы также можете сделать эхо и сразу же выполнить его с выходом, чтобы обойти обработку буферизации вывода, чтобы увидеть, выполняется ли ваш код. Например, echo 'reached this point in the code';exit; Если в вашем шаблоне слишком поздно, часто вам понадобится новый слот в вашем шаблоне, который может читать позднюю информацию, которую вы хотите вставить на страницу, а затем использовать JavaScript, чтобы поместить его в правильное место на странице.

Получите нам больше информации о причине, и я могу дать более подробный ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...