Крючок для загрузки поста и страницы
-
-
публичная или админская сторона/облицовка?public or admin side/facing?
- 0
- 2012-10-16
- kaiser
-
Для передней части.В основном я хочу,чтобы он запускался только тогда,когда отображается конкретный единственный пользовательский тип сообщения.For front end. Basically I want it to trigger only when a particular single custom post type is displayed.
- 0
- 2012-10-16
- Poulomi Nag
-
3 ответ
- голосов
-
- 2012-10-16
Вы можете использовать обработчик
wp
и проверить объектglobal $wp_query
или любое условное.add_action( 'wp', 'wpse69369_special_thingy' ); function wpse69369_special_thingy() { if ( 'special_cpt' === get_post_type() AND is_singular() ) return print "Yo World!"; return printf( '<p>Nothing to see here! Check the object!<br /></p><pre>%s</pre>', var_export( $GLOBALS['wp_query'], true ) ); }
You can use the
wp
hook and check theglobal $wp_query
object or any conditional.add_action( 'wp', 'wpse69369_special_thingy' ); function wpse69369_special_thingy() { if ( 'special_cpt' === get_post_type() AND is_singular() ) return print "Yo World!"; return printf( '<p>Nothing to see here! Check the object!<br /></p><pre>%s</pre>', var_export( $GLOBALS['wp_query'], true ) ); }
See:
wp
in codex.wordpress.org andwp
in developer.wordpress.org-
Подскажите,пожалуйста,когда запускается ловушка wp?can you please tell me when does 'wp' hook run?
- 0
- 2012-10-16
- Poulomi Nag
-
A) Он запускается перед after_setup_theme и setup_theme,поэтому он доступен только для плагинов B) внутри WP ::main (),который вызывается из wp-settings.php.A) It runs before `after_setup_theme` and `setup_theme`, so it's only accessible for plugins B) inside `WP :: main()`, which is called from within wp-settings.php.
- 0
- 2012-10-16
- kaiser
-
@kaiser Разве хук `wp` не срабатывает после хука` after_setup_theme` и прямо перед `template_redirect`,что делает` wp` доступным как для тем,так и для плагинов?(просто для уточнения?)@kaiser Doesn't the `wp` hook fire after the `after_setup_theme` hook and right before `template_redirect` therefore making `wp` accessible by themes as well as plugins? (just to clarify?)
- 1
- 2012-10-17
- Adam
-
- 2012-10-16
Используйте
template_redirect
,который запускаетперед рендерингом шаблона;add_action('template_redirect', 'hooker'); function hooker(){ //I load just before selecting and rendering the template to screen }
Use
template_redirect
which is the action hook that fires before rendering the template;add_action('template_redirect', 'hooker'); function hooker(){ //I load just before selecting and rendering the template to screen }
-
@PoulomiNag Нет проблем,рад,что вы нашли ответ выше.Хотя я думаю,что одна небольшая заметка заключается в том,что `wp` запускается после хука` after_theme_setup`,поэтому он доступен не только для плагинов,что делает его безопасным для использования в темах.@PoulomiNag No problem, glad you found your answer above. Though I think one small note is that `wp` runs after the `after_theme_setup` hook, so its not just accessible by plugins, making it safe to use in themes.
- 0
- 2012-10-17
- Adam
-
Я только что проверил и да;`wp` запускается после` after_theme_setup`.Но мне это нужно для моего плагина.Так что и `wp`,и`template_redirect` мне подходят.Хотел бы я принять здесь два ответа!:)I just checked and yes ; `wp` runs after `after_theme_setup`. But I need it for my plugin. So `wp` as well as `template_redirect` both work fine for me. Wish I could accept two answers here! :)
- 0
- 2012-10-17
- Poulomi Nag
-
Ничего страшного,не обязательно принимать оба,просто хотел уточнить порядок,в котором они стреляют.Знаете,я не сойду с ума.Удачи с плагином ...That's ok, not necessary to accept both, just wanted to clarify the order in which they fire. Making sure I'm not going crazy you know. Good luck with your plugin...
- 0
- 2012-10-17
- Adam
-
+1 за каламбур имени функции+1 for function name pun
- 3
- 2020-02-28
- MJHd
-
- 2012-10-16
Я довольно часто использовал следующее для загрузки пользовательских мета-блоков на страницах (а не пользовательских сообщений).
add_action('admin_init','how_we_do_it_meta'); function how_we_do_it_meta() { if ( $_SERVER['SCRIPT_NAME'] == '/wp-admin/post.php' ) { $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID']; $template_file = get_post_meta($post_id,'_wp_page_template',TRUE); if ($template_file == 'page-how-we-do-it.php') { add_meta_box('how_we_do_it_who-meta', 'Who we work with...', 'how_we_do_it_who', 'page', 'normal', 'high'); add_action('save_post', 'save_how_we_do_it_meta'); } } }
I've quite often used the following to load in custom meta boxes on pages (rather than custom posts).
add_action('admin_init','how_we_do_it_meta'); function how_we_do_it_meta() { if ( $_SERVER['SCRIPT_NAME'] == '/wp-admin/post.php' ) { $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID']; $template_file = get_post_meta($post_id,'_wp_page_template',TRUE); if ($template_file == 'page-how-we-do-it.php') { add_meta_box('how_we_do_it_who-meta', 'Who we work with...', 'how_we_do_it_who', 'page', 'normal', 'high'); add_action('save_post', 'save_how_we_do_it_meta'); } } }
-
Спасибо,Дарронз.Но мне нужен какой-то крючок для работы в интерфейсе во время загрузки страницы.Есть идеи?Thanks Darronz. But I need some hook to work at the front end during a page load. Any ideas?
- 1
- 2012-10-16
- Poulomi Nag
-
Если вы изменили указанное выше на add_action ('init',//etc),то оно будет работать при загрузке страницы,а не только в разделе администратора.If you changed the above `to add_action('init', // etc)` then it'll work on the page load rather than only in the admin section.
- 0
- 2012-10-16
- darronz
-
@darronz А потом нужно проверить `!is_admin () `внутри,потому что ловушка`init` работает с обеих сторон.@darronz And then you need to check `! is_admin()` inside, because the `init` hook runs on both sides.
- 2
- 2012-10-16
- kaiser
Мне нужно запускать функцию при загрузке определенного сообщения или страницы.Есть ли какой-нибудь крючок,который позволяет мне проверить,отображается ли сообщение во время загрузки страницы?