2015-10-05 1 views
2

Выполняют ли пользовательские крючки, подключающиеся к ядру wordpress, автоматически, используя wordpress, или нам нужно называть функцию do_action самим пользовательским крючком?wordpress: как выполняются действия?

Пример:

add_action("action_one","some_process",10); 
add_action("action_one","some_different_process",11); 

function some_process(){ //... } 
function some_different_process(){ //... } 

do_action("action_one"); 

ли some_process получить выполнен первый, а затем some_different_process запускается на выполнение после того, когда do_action("action_one") называется?

ответ

1

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

WordPress автоматически не находит крючки действий и запускает их. Он имеет несколько встроенных крючков, которые вы можете защелкнуть, чтобы запускать собственный код, но если вы создаете собственные крючки, вам также необходимо настроить соответствующий вызов , чтобы запустить их.

Чтобы ответить на другой вопрос, касающийся порядка выполнения some_process и some_different_process, some_process будут запущены до some_different_process, поскольку она имеет более низкое число приоритетов.

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

+0

ЛУЧШИЙ ОТВЕТ! я могу рассказать о вашем опыте с wordpress и умным. ти. – dave

1

Все функции, которые подключены к действию, автоматически выполняются, ЕСЛИ это действие вызывается, но они не вызываются, если действие не запускается.

Например, если у вас есть:

add_action("action_one","some_function",10); 

Тогда some_function будет вызываться, если action_one срабатывает. Если action_one никогда не запускается, some_function не вызывается.

do_action - это механизм для ручного запуска действия, но имейте в виду, что он запустит ЛЮБЫЕ крючки в это действие, а не только ваши (если вы не настроите некоторые фильтры).


Другой пример: скажем вам настроить пользовательскую функцию для запуска на действии save_post:

add_action('save_post', 'top_secret_function'); 

Тогда каждый раз, когда вы сохраните пост ваш top_secret_function будет работать.

Если вы хотите, чтобы вызвать save_post вручную (без фактического сохранения поста), вы можете сделать это с:

do_action('save_post'); 

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

You can setup custom actions использование комбинации add_action и do_action.

+0

так что в общем случае действия предназначены для wordpress для запуска, а не для программиста? – dave

+0

ни? Все зависит от того, к какому действию вы подключаетесь, о своей функции, ее использовании и т. Д. И т. Д. Вы можете настраивать пользовательские действия с помощью комбинации: http://relearningtheweb.blogspot.com/2012/12/wordpress-create-custom -action-hook-in.html – themerlinproject

+0

, но я думаю, что вы получаете концепцию - если вы подключаетесь к действию Wordpress, то Wordpress в конечном итоге вызовет вашу функцию при вызове действия. Вы можете просто вручную вызвать это действие с do_action, если вам нужно. – themerlinproject

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

  • Нет связанных вопросов^_^