WordPress как на ладони
wordpress jino

add_meta_boxes хук-событие . WP 3

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

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

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

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

add_action( 'add_meta_boxes', '____action_function_name', 10, 2 );
function ____action_function_name( $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:

Фрагменты кода хука add_meta_boxes

Фрагмент из: wp-admin/edit-form-advanced.php VER 4.9.1
...
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.
 *
...
Фрагмент из: wp-admin/edit-form-comment.php VER 4.9.1
...
<?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>
...
Фрагмент из: wp-admin/edit-link-form.php VER 4.9.1
...
	$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 */
...
add_meta_boxes Комментариев нет

Здравствуйте, !

Ваш комментарий