netconstructorcom
  • 0
Мастер

Установить параметры экрана администратора по умолчанию и порядок метабоксов

  • 0

Я отчаянно ищу способ (любой способ) установить «параметры экрана» по умолчанию и порядок метабоксов через файл functions.php. Кто-нибудь может помочь здесь?

Share
  1. Обновление 2014 года. Для тех, кому просто нужно изменить порядок метабоксов, см . ответ Набиля ниже.

    • 0
  2. Установка порядка мета-боксов на страницах редактирования сообщений

    Вам нужно будет удалить метабоксы и добавить их снова в нужном вам порядке.

    Чтобы отключить метабоксы: (настройте в соответствии с вашими потребностями, посмотрите идентификатор метабокса в 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($per_page, $post_type) {

      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;
      
    • 0
  3. В следующем примере замените {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, вы можете получить их, просмотрев исходный код страницы, или вы можете догадаться
    • Любой существующий метабокс, не включенный в ваш индивидуальный заказ, будет автоматически добавлен в конец вашего списка.
    • 0

Оставить ответ

You must login to add an answer.