При настройке мета-блоков в пользовательском типе поста я делал это с помощью add_meta_boxes
ловушки, например
add_action('add_meta_boxes', 'meta_box_setup');
function meta_box_setup()
{
add_meta_box(
'mb_movie_review',
'Movie Review Details',
'display_movie_review_mb',
'movie-reviews',
'side',
'high'
);
}
Но я только что прочитал этот урок, который делает следующее с помощью admin_init
хука, вот так ...
add_action('admin_init', 'meta_box_setup');
function meta_box_setup()
{
add_meta_box(
'mb_movie_review',
'Movie Review Details',
'display_movie_review_mb',
'movie-reviews',
'side',
'high'
);
}
Это первый раз, когда я видел, как это делается с помощью admin_init
крючка.
Вопрос
Последний метод ( с использованием admin_init
) делает работу , но ...
- это предпочтительный метод? (т.е. более оптимизирован?)
- просто другой способ достижения тех же результатов, или
- плохой способ добавить мета коробки? (если так, почему?)
add_meta_boxes
предпочтительнее.add_meta_boxes
. У нас есть даже"add_meta_boxes_$post_type"
для более точного контроля.Ответы:
Посмотрите на этот список: http://codex.wordpress.org/Plugin_API/Action_Reference
add_meta_boxes
предпочтительнее. Когда-нибудь в будущем WordPress может что-то изменить, и, используя наиболее подходящие хуки, вы увеличите свои шансы на то, что ваш код все еще будет работать в будущем.add_theme_support()
который обычно используется сafter_setup_theme
ловушкой действий только для зарегистрированных пользователей, которые являются администраторами, но эта ловушка не позволяет вам получить доступ к этой информации. Поэтому вам, вероятно, придется вместо этого использовать хукиset_current_user
илиinit
действия (после некоторого исследования, если это безопасно).источник
Есть несколько других хуков:
и сразу же после запуска:
Если вы хотите выполнить различные проверки прерывания изнутри перехватчика / обратного вызова, который фактически регистрирует мета-блоки, используйте один из вышеперечисленных, так как
\WP_Screen
объект не заполняется приadmin_init
запуске.Если вы использовали более общий
add_meta_boxes
хук, вы можете проверить его первый аргумент:Если вы не хотите добавлять мета-поле, если пост не был сохранен хотя бы один раз, вы можете проверить
и так далее. Вывод: если вы хотите сузить круг, используйте крючки, показанные выше.
источник