Add_meta_boxes — Позволяет зарегистрировать метаблок для любого типа записи. Срабатывает после того, как все встроенные метаблоки были добавлены. Хук-событие WordPress

Опубликовано: 01.09.2018

Позволяет зарегистрировать метаблок для любого типа записи. Срабатывает после того, как все встроенные метаблоки были добавлены.

Получает 2 параметра: $post_type, $post.

Так же есть аналогичный хук: add_meta_boxes_{post_type} — срабатывает только на странице редактирования записи типа {post_type}, т.е. можно сразу указать тип записи на котором будет срабатывать хук. Так как тип записи указывается заранее, хук получает всего один параметр: $post.

Использование

add_action( 'add_meta_boxes', 'action_function_name_65487', 10, 2 ); function action_function_name_65487( $post_type, $post ) { // Действие... } $post_type(строка) Название типа записи, на странице редактирования которого вызывается хук. $post(WP_Post) Объект записи: объект WP_Post.

Примеры

#1 Добавим мета блок на страницу редактирования записи типа post

add_action( 'add_meta_boxes', 'adding_custom_meta_boxes', 10, 2 ); function adding_custom_meta_boxes( $post_type, $post ) { add_meta_box( 'my-meta-box', 'Мой метаблок', 'render_my_meta_box', 'post', 'normal', 'default' ); } function render_my_meta_box(){ echo 'HTML метаблока'; }

#2 Использование аналогичного хука: add_meta_boxes_{post_type}

Этот код делает тоже самое что и первый пример. Только здесь тип записи указывается сразу в названии хука.

add_action( 'add_meta_boxes_post', 'adding_custom_meta_boxes' ); function adding_custom_meta_boxes( $post ) { add_meta_box( 'my-meta-box', 'Мой метаблок', 'render_my_meta_box', 'post', 'normal', 'default' ); } function render_my_meta_box(){ echo 'HTML метаблока'; }

Где используется хук

В файле: /wp-admin/edit-form-advanced.php

... if ( ! ( 'pending' == get_post_status( $post ) && ! current_user_can( $post_type_object->cap->publish_posts ) ) ) add_meta_box('slugdiv', __('Slug'), 'post_slug_meta_box', null, 'normal', 'core'); if ( post_type_supports( $post_type, 'author' ) && current_user_can( $post_type_object->cap->edit_others_posts ) ) { add_meta_box( 'authordiv', __( 'Author' ), 'post_author_meta_box', null, 'normal', 'core' ); } /** * Fires after all built-in meta boxes have been added. * * @since 3.0.0 * * @param string $post_type Post type. * @param WP_Post $post Post object. */ do_action( 'add_meta_boxes', $post_type, $post ); /** * Fires after all built-in meta boxes have been added, contextually for the given post type. * * The dynamic portion of the hook, `$post_type`, refers to the post type of the post. * * @since 3.0.0 * * @param WP_Post $post Post object. */ do_action( "add_meta_boxes_{$post_type}", $post ); /** * Fires after meta boxes have been added. * ... ... <?php echo "<a class='submitdelete deletion' href='" . wp_nonce_url("comment.php?action=" . ( !EMPTY_TRASH_DAYS ? 'deletecomment' : 'trashcomment' ) . "&amp;c=$comment->comment_ID&amp;_wp_original_http_referer=" . urlencode(wp_get_referer()), 'delete-comment_' . $comment->comment_ID) . "'>" . ( !EMPTY_TRASH_DAYS ? __('Delete Permanently') : __('Move to Trash') ) . "</a>\n"; ?> </div> <div id="publishing-action"> <?php submit_button( __( 'Update' ), 'primary large', 'save', false ); ?> </div> <div class="clear"></div> </div> </div> </div> </div><!-- /submitdiv --> </div> <div id="postbox-container-2" class="postbox-container"> <?php /** This action is documented in wp-admin/edit-form-advanced.php */ do_action( 'add_meta_boxes', 'comment', $comment ); /** * Fires when comment-specific meta boxes are added. * * @since 3.0.0 * * @param WP_Comment $comment Comment object. */ do_action( 'add_meta_boxes_comment', $comment ); do_meta_boxes(null, 'normal', $comment); $referer = wp_get_referer(); ?> </div> ... ... $heading = sprintf( __( '<a href="%s">Links</a> / Add New Link' ), 'link-manager.php' ); $submit_text = __('Add Link'); $form_name = 'addlink'; $nonce_action = 'add-bookmark'; } require_once( ABSPATH . 'wp-admin/includes/meta-boxes.php' ); add_meta_box('linksubmitdiv', __('Save'), 'link_submit_meta_box', null, 'side', 'core'); add_meta_box('linkcategorydiv', __('Categories'), 'link_categories_meta_box', null, 'normal', 'core'); add_meta_box('linktargetdiv', __('Target'), 'link_target_meta_box', null, 'normal', 'core'); add_meta_box('linkxfndiv', __('Link Relationship (XFN)'), 'link_xfn_meta_box', null, 'normal', 'core'); add_meta_box('linkadvanceddiv', __('Advanced'), 'link_advanced_meta_box', null, 'normal', 'core'); /** This action is documented in wp-admin/edit-form-advanced.php */ do_action( 'add_meta_boxes', 'link', $link ); /** * Fires when link-specific meta boxes are added. * * @since 3.0.0 * * @param object $link Link object. */ do_action( 'add_meta_boxes_link', $link ); /** This action is documented in wp-admin/edit-form-advanced.php */ do_action( 'do_meta_boxes', 'link', 'normal', $link ); /** This action is documented in wp-admin/edit-form-advanced.php */ do_action( 'do_meta_boxes', 'link', 'advanced', $link ); /** This action is documented in wp-admin/edit-form-advanced.php */ ...
rss