Установите параметры экрана администратора по умолчанию и Порядок метабоксов
Я отчаянно ищу способ (любой способ) установить "параметры экрана" по умолчанию и порядок метабоксов через functions.php файл. у кого-нибудь есть какая-нибудь помощь, которую они могут здесь оказать?
2 answers
Настройка порядка мета-полей на страницах редактирования сообщений
Вам нужно будет удалить мета-поля и добавить их снова в нужном порядке.
Чтобы отключить мета-поля: (настройте в соответствии с вашими потребностями, посмотрите на идентификатор метабокса в html-коде, чтобы узнать, какое имя вы должны использовать в качестве первого параметра функций)
function my_remove_meta_boxes() {
remove_meta_box('postcustom', 'post', 'core');
remove_meta_box('commentsdiv', 'post', 'core');
...
}
add_action( 'admin_menu', 'my_remove_meta_boxes' );
После их удаления вы можете использовать функцию add_meta_box, чтобы добавить их в новые позиции: http://codex.wordpress.org/Function_Reference/add_meta_box . Порядок мета-полей зависит от порядка, в котором вы вызываете функцию add_meta_box. Например, в следующем фрагменте кода мета-поле комментариев будет находиться перед мета-полем настраиваемых полей.
function my_add_meta_boxes( $post_type, $post ) {
if ( ('publish' == $post->post_status || 'private' == $post->post_status) && post_type_supports($post_type, 'comments') )
add_meta_box('commentsdiv', __('Comments'), 'post_comment_meta_box', $post_type, 'normal', 'core');
if ( post_type_supports($post_type, 'custom-fields') )
add_meta_box('postcustom', __('Custom Fields'), 'post_custom_meta_box', $post_type, 'normal', 'core');
...
}
add_action( 'add_meta_boxes', 'my_add_meta_boxes' );
Возможно, вы захотите взглянуть на файл wp-admin/edit-form-advanced.php
Настройка заголовка столбцов, отображаемых на странице списка записей
Вам необходимо использовать фильтр manage_{$post_type}_posts_columns. Например: следующий фрагмент кода удалит столбец комментариев.
function my_remove_columns( $posts_columns ) {
unset( $posts_columns['comments'] );
return $posts_columns;
}
add_filter( 'manage_post_posts_columns', 'my_remove_columns' );
Настройка результатов по умолчанию, которые будут отображаться на странице списка публикаций
Используйте фильтры "edit_{$post_type}_per_page" и "edit_posts_per_page".
function my_edit_post_per_page( $per_page, $post_type ) {
$edit_per_page = 'edit_' . $post_type . '_per_page';
$per_page = (int) get_user_option( $edit_per_page );
if ( empty( $per_page ) || $per_page < 1 )
$per_page = 1;
return $per_page;
}
add_filter( 'edit_posts_per_page', 'my_edit_post_per_page' );
Чтобы настроить таргетинг на определенный тип сообщения:
Используйте
add_filter( 'edit_{post type}_per_page', 'my_edit_post_per_page' );
, напримерadd_filter( 'edit_post_per_page', 'my_edit_post_per_page' );
для сообщений,add_filter( 'edit_page_per_page', 'my_edit_post_per_page' );
для страниц.-
Или используйте условие в своей функции. например:
Функция my_edit_post_per_page($на страницу, $тип_поста) {
if( $post_type == 'post' ) { $edit_per_page = 'edit_' . $post_type . '_per_page'; $per_page = (int) get_user_option( $edit_per_page ); if ( empty( $per_page ) || $per_page < 1 ) $per_page = 1; } return $per_page;
В следующем примере замените {CPT}
именем типа записи, например post
, page
, book
, event
, imaginary
, foobar
... Поэтому, если у вас есть тип записи с именем event
, вам нужно будет добавить фильтр для get_user_option_meta-box-order_event
.
add_filter( 'get_user_option_meta-box-order_{CPT}', 'metabox_order' );
function metabox_order( $order ) {
return array(
'normal' => join(
",",
array( // vvv Arrange here as you desire
'customdiv-{CPT}',
'authordiv',
'slugdiv',
)
),
);
}
Примечания:
- Наряду с
normal
у вас также могут бытьside
иadvanced
- Значения разделены запятыми идентификаторами div, вы можете просмотреть исходный код страницы или угадать
- Любой существующий метабокс не включен в ваш индивидуальный заказ будет автоматически добавлен в конец вашего списка.