it-swarm.com.ru

Что я могу подключить в after_setup_theme?

Мне интересно, что я могу или не должен подключаться к after_setup_theme? Мне интересно, потому что мне сказали, что я не должен подключать wp_enqueue_style к нему, но я видел другие места, использующие его для подключения wp_enqueue_script здесь: http://justintadlock.com/archives/2010/12/30/ WordPress-тема-функциональные файлы

Из того, что я понимаю, это просто материал, зависящий от темы, поэтому я не понимаю, почему я не должен использовать в нем wp_enqueue_style?

Могу ли я забросить такие вещи?

add_action('get_header', 'enable_threaded_comments');
add_action('widgets_init', 'unregister_default_wp_widgets', 1);
remove_action('wp_head', 'rsd_link');

Спасибо!

2
Brett

Думайте о выполнении WordPress как о серии ступеней на лестнице: WordPress поднимается на одну ступеньку, затем на следующую, затем на следующую и так далее.

Думайте о хуках действия как о самих ступеньках. Вот (немного сокращенный, я думаю) список этих действий или "цепочек", выполняемых во время типичного запроса WordPress.

Таким образом, вызов add_action() - это просто инструкция для выполнения функции на определенной ступени лестницы. Пока вы make вызываете add_action() для цепочки ранее, чем для выполнения, для которого вы хотите, чтобы указанная функция execute, тогда это не имеет значения, per se какую цепочку вы используете для make вызова add_action(). Однако есть являются причины для использования определенных ступеней для выполнения функций.

Возьмем для примера: файл темы functions.php выполняется с (я полагаю) after_setup_theme. Таким образом, вы просто не можете использовать тему для добавления действия в любую цепочку доafter_setup_theme, потому что WordPress уже выполнил эти действия (т.е. WordPress уже поднялся по этим "ступенькам" на лестнице).

Если вы попытаетесь выполнить wp_enqueue_script() в обратном вызове, подключенном к действию до init, WordPress сгенерирует уведомление _doing_it_wrong(), поскольку wp_enqueue_script() не следует выполнять до init и наиболее правильно must выполнить в wp_enqueue_scripts (передний конец) или admin_enqueue_scripts-{hook} (админ).

Тем не мение:

Могу ли я забросить такие вещи?

add_action('get_header', 'enable_threaded_comments');
add_action('widgets_init', 'unregister_default_wp_widgets', 1);
remove_action('wp_head', 'rsd_link');

Все это прекрасно, вызывается в after_setup_theme, так как все указанные действия запускаются позжеafter_setup_theme. С add_action() вы просто говорите WordPress: "поставить в очередь этот обратный вызов при указанном действии." С remove_action() вы просто говорите WordPress: "удалить этот обратный вызов из указанного действия."

Правка

В ре:

Отличный ответ - спасибо. Я понимаю большинство из них, но немного смущен, почему все мои вызовы ловушек с add_action и remove_action в порядке, а вызов wp_enqueue_scripts - нет? Все они стреляют после after_setup_theme. Я знаю, что вы сказали, что это потому, что я не могу выполнить wp_enqueue_scripts до init; хотя без того, чтобы ты сказал мне, как я узнаю? Например, как мне узнать, есть ли что-то еще, что не может быть выполнено раньше, чем что-то еще.

Потому что add_action() просто помещает в очередь обратный вызов, внутри которого функции фактически выполняются. Но такие функции, как wp_enqueue_script() или wp_enqueue_style(), на самом деле являются functions, то есть execute везде, где вы их вызываете.

5
Chip Bennett

Я бы порекомендовал проверить, как другие темы используют after_setup_theme ловушку, чтобы получить общее представление, проверьте functions.php таких тем, как Twenty Eleven и Underscores (_s).

after_setup_theme в основном используется для загрузки файлов функциональности темы, регистрации поддержки различных функций, таких как, пиктограммы и форматы сообщений, загрузка файлов перевода и т. д. Вы также можете зарегистрировать действие и выполнить фильтрацию при настройке темы, но мне нравится держать их рядом с функциями обратного вызова.

Функции wp_enqueue_script() и wp_enqueue_style() должны быть подключены к соответствующему действию - wp_enqueue_scripts

2
Mamaduka

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

В частности, если вам нужно выполнить постановку в очередь на внешнем интерфейсе сайта, вы должны подключиться к хуку "wp_enqueue_scripts". Если вам нужно поставить что-то в очередь на стороне администратора сайта, вам нужно подключить хук "admin_enqueue_scripts".

2
Otto