do_meta_boxes() │ WP 2.5.0 Виводить будь-які метабокси зареєстровані для сторінки адмін-панелі та певного контексту за допомогою функції add_meta_box() .
За допомогою цієї функції виводяться всі метабокси в адмін-панелі WordPress, наприклад, при редагуванні запису, або в консолі.
Хуків немає.
Повертає int
. Кількість метабоксів.
Використання do_meta_boxes( $screen, $context, $object );
$screen
(рядок/WP_Screen) (обов’язковий)
Ярлик сторінки адмін-панелі. Цей ярлик потрібно вказувати під час реєстрації метабоксу, у параметрі
$screen функції
add_meta_box()
$context
(рядок) (обов’язковий)
Місце метабоксу на сторінці вказується в параметрі
$context функції
add_meta_box() .
$object
(змішаний) (обов’язковий)
Будь-які дані, які будуть передані в перший аргумент функції код метабоксу, що виводить. Приклади #1 Приклад реєстрації та виведення метабоксу Цей приклад показує, як зареєструвати та вивести метабокс на сторінці.
Реєструємо метабокс:
// реєструємо метабокс
add_meta_box( 'my-metabox', 'Заголовок метабоксу', 'my_metabox_function', 'mymetabox_screen', 'normal' );
// функція, яка виводить HTMl код метабоксу
function my_metabox_function( $data ){
echo $data[0] .' '. $ data[1];
} Виводимо всі метабокси:
// Тепер, виводимо всі зареєстровані раніше метабокси, зараз тільки одні метабокс.
// Цей виклик потрібно вставляти на окрему сторінку адмін-панелі
do_meta_boxes( 'mymetabox_screen', 'normal', array('мій', 'метабокс') ); В результаті на сторінці де викликана функція do_meta_boxes() ми побачимо метабокс із текстом “мій метабокс”.
Додати свій приклад
нотатки Global. Масив. $wp_meta_boxes список змін Код do_meta_boxes() do meta boxes WP 6.0.2 <?php
function do_meta_boxes( $screen, $context, $data_object ) {
global $wp_meta_boxes;
static $already_sorted = false;
if (empty($screen)) {
$screen = get_current_screen();
} elseif ( is_string( $screen ) ) {
$ screen = convert_to_screen ($ screen);
}
$page = $screen->id;
$ hidden = get_hidden_meta_boxes ($ screen);
printf( '<div id="%s-sortables" class="meta-box-sortables">', esc_attr( $context ) );
// Grab the ones the user has manually sorted.
// Повний список з їхнього попереднього контексту/приоритету і в одному з user chose.
$sorted = get_user_option( "meta-box-order_$page");
if ( ! $already_sorted && $sorted ) {
foreach ( $sorted as $box_context => $ids ) {
foreach ( explode( ',', $ids ) as $id ) {
if ( $id && 'dashboard_browser_nag' !== $id ) {
add_meta_box( $id, null, null, $screen, $box_context, 'sorted' );
}
}
}
}
$already_sorted = true;
$i = 0;
if ( isset( $wp_meta_boxes[ $page ][ $context ] ) ) {
foreach ( array( 'high', 'sorted', 'core', 'default', 'low' ) as $priority ) {
if ( isset( $wp_meta_boxes[ $page ][ $context ][ $priority ] ) ) {
foreach ((array) $wp_meta_boxes[ $page ][ $context ][ $priority ] as $box ) {
if ( false === $box || ! $box['title'] ) {
continue;
}
$block_compatible = true;
if ( is_array( $box['args'] ) ) {
// Якщо мета box is just here for back compat, don't show it in the block editor.
if ( $screen->is_block_editor() && isset( $box['args']['__back_compat_meta_box'] ) && $box['args']['__back_compat_meta_box'] ) {
continue;
}
if ( isset( $box['args']['__block_editor_compatible_meta_box'] ) ) {
$block_compatible = (bool) $box['args']['__block_editor_compatible_meta_box'];
unset( $box['args']['__block_editor_compatible_meta_box'] );
}
// Якщо мета box is declared incompatible with the block editor, override the callback function.
if ( ! $block_compatible && $screen->is_block_editor() ) {
$box['old_callback'] = $box['callback'];
$box['callback'] = 'do_block_editor_incompatible_meta_box';
}
if ( isset( $box['args']['__back_compat_meta_box'] ) ) {
$block_compatible = $block_compatible || (bool) $box['args']['__back_compat_meta_box'];
unset( $box['args']['__back_compat_meta_box'] );
}
}
$i++;
// get_hidden_meta_boxes() doesn't apply in the block editor.
$hidden_class = ( ! $screen->is_block_editor() && in_array( $box['id'], $hidden, true ) ) ? 'hide-if-js' : '';
echo '<div id="' . $box['id'] . '" class="postbox ' . postbox_classes( $box['id'], $page ) . $hidden_class . '" ' . '>'. "n";
echo '<div class="postbox-header">';
echo '<h2 class="hndle">';
if ( 'dashboard_php_nag' === $box['id'] ) {
echo '<span aria-hidden="true" class="dashicons dashicons-warning"></span>';
echo '<span class="screen-reader-text">' . __( 'Warning:' ) . '</span>';
}
echo $box['title'];
echo "</h2>n";
if ( 'dashboard_browser_nag' !== $box['id'] ) {
$widget_title = $box['title'];
if ( is_array( $box['args'] ) && isset( $box['args']['__widget_basename'] ) ) {
$widget_title = $box['args']['__widget_basename'];
// Do not pass this parameter to user callback function.
unset( $box['args']['__widget_basename'] );
}
echo '<div class="handle-actions hide-if-no-js">';
echo '<button type="button" class="handle-order-higher" aria-disabled="false" aria-describedby="' . $box['id'] . '-handle-order-higher-description" >';
echo '<span class="screen-reader-text">' . __('Move up'). '</span>';
echo '<span class="order-higher-indicator" aria-hidden="true"></span>';
echo '</button>';
echo '<span class="hidden" id="' . $box['id'] . '-handle-order-higher-description">' . sprintf(
/* translators: %s: Meta box title. */
__( 'Move %s box up' ),
$widget_title
). '</span>';
echo '<button type="button" class="handle-order-lower" aria-disabled="false" aria-describedby="' . $box['id'] . '-handle-order-lower-description" >';
echo '<span class="screen-reader-text">' . __('Move down'). '</span>';
echo '<span class="order-lower-indicator" aria-hidden="true"></span>';
echo '</button>';
echo '<span class="hidden" id="' . $box['id'] . '-handle-order-lower-description">' . sprintf(
/* translators: %s: Meta box title. */
__( 'Move %s box down' ),
$widget_title
). '</span>';
echo '<button type="button" class="handlediv" aria-expanded="true">';
echo '<span class="screen-reader-text">' . sprintf(
/* translators: %s: Meta box title. */
__( 'Toggle panel: %s' ),
$widget_title
). '</span>';
echo '<span class="toggle-indicator" aria-hidden="true"></span>';
echo '</button>';
echo '</div>';
}
echo '</div>';
echo '<div class="inside">' . "n";
if ( WP_DEBUG && ! $block_compatible && 'edit' === $screen->parent_base && ! $screen->is_block_editor() && ! isset( $_GET['meta-box-loader'] ) ) {
$plugin = _get_plugin_from_callback( $box['callback'] );
if ( $plugin ) {
?>
<div class="error inline">
<p>
<?php
/* translators: %s: Name of plugin that generated this meta box. */
printf( __( 'This meta box, від %s plugin, is not compatible with the block editor.' ), "<strong>{$plugin['Name']}</strong>" );
?>
</p>
</div>
<?php
}
}
call_user_func($box['callback'], $data_object, $box);
echo "</div>n";
echo "</div>n";
}
}
}
}
echo '</div>';
return $i;
} Зв’язані функції