home *** CD-ROM | disk | FTP | other *** search
/ HTML Examples / WP.iso / wordpress2 / wp-admin / includes / screen.php < prev    next >
Encoding:
PHP Script  |  2016-07-07  |  6.0 KB  |  234 lines

  1. <?php
  2. /**
  3.  * WordPress Administration Screen API.
  4.  *
  5.  * @package WordPress
  6.  * @subpackage Administration
  7.  */
  8.  
  9. /**
  10.  * Get the column headers for a screen
  11.  *
  12.  * @since 2.7.0
  13.  *
  14.  * @staticvar array $column_headers
  15.  *
  16.  * @param string|WP_Screen $screen The screen you want the headers for
  17.  * @return array Containing the headers in the format id => UI String
  18.  */
  19. function get_column_headers( $screen ) {
  20.     if ( is_string( $screen ) )
  21.         $screen = convert_to_screen( $screen );
  22.  
  23.     static $column_headers = array();
  24.  
  25.     if ( ! isset( $column_headers[ $screen->id ] ) ) {
  26.  
  27.         /**
  28.          * Filters the column headers for a list table on a specific screen.
  29.          *
  30.          * The dynamic portion of the hook name, `$screen->id`, refers to the
  31.          * ID of a specific screen. For example, the screen ID for the Posts
  32.          * list table is edit-post, so the filter for that screen would be
  33.          * manage_edit-post_columns.
  34.          *
  35.          * @since 3.0.0
  36.          *
  37.          * @param array $columns An array of column headers. Default empty.
  38.          */
  39.         $column_headers[ $screen->id ] = apply_filters( "manage_{$screen->id}_columns", array() );
  40.     }
  41.  
  42.     return $column_headers[ $screen->id ];
  43. }
  44.  
  45. /**
  46.  * Get a list of hidden columns.
  47.  *
  48.  * @since 2.7.0
  49.  *
  50.  * @param string|WP_Screen $screen The screen you want the hidden columns for
  51.  * @return array
  52.  */
  53. function get_hidden_columns( $screen ) {
  54.     if ( is_string( $screen ) ) {
  55.         $screen = convert_to_screen( $screen );
  56.     }
  57.  
  58.     $hidden = get_user_option( 'manage' . $screen->id . 'columnshidden' );
  59.  
  60.     $use_defaults = ! is_array( $hidden );
  61.  
  62.     if ( $use_defaults ) {
  63.         $hidden = array();
  64.  
  65.         /**
  66.          * Filters the default list of hidden columns.
  67.          *
  68.          * @since 4.4.0
  69.          *
  70.          * @param array     $hidden An array of columns hidden by default.
  71.          * @param WP_Screen $screen WP_Screen object of the current screen.
  72.          */
  73.         $hidden = apply_filters( 'default_hidden_columns', $hidden, $screen );
  74.     }
  75.  
  76.     /**
  77.      * Filters the list of hidden columns.
  78.      *
  79.      * @since 4.4.0
  80.      * @since 4.4.1 Added the `use_defaults` parameter.
  81.      *
  82.      * @param array     $hidden An array of hidden columns.
  83.      * @param WP_Screen $screen WP_Screen object of the current screen.
  84.      * @param bool      $use_defaults Whether to show the default columns.
  85.      */
  86.     return apply_filters( 'hidden_columns', $hidden, $screen, $use_defaults );
  87. }
  88.  
  89. /**
  90.  * Prints the meta box preferences for screen meta.
  91.  *
  92.  * @since 2.7.0
  93.  *
  94.  * @global array $wp_meta_boxes
  95.  *
  96.  * @param WP_Screen $screen
  97.  */
  98. function meta_box_prefs( $screen ) {
  99.     global $wp_meta_boxes;
  100.  
  101.     if ( is_string( $screen ) )
  102.         $screen = convert_to_screen( $screen );
  103.  
  104.     if ( empty($wp_meta_boxes[$screen->id]) )
  105.         return;
  106.  
  107.     $hidden = get_hidden_meta_boxes($screen);
  108.  
  109.     foreach ( array_keys( $wp_meta_boxes[ $screen->id ] ) as $context ) {
  110.         foreach ( array( 'high', 'core', 'default', 'low' ) as $priority ) {
  111.             if ( ! isset( $wp_meta_boxes[ $screen->id ][ $context ][ $priority ] ) ) {
  112.                 continue;
  113.             }
  114.             foreach ( $wp_meta_boxes[ $screen->id ][ $context ][ $priority ] as $box ) {
  115.                 if ( false == $box || ! $box['title'] )
  116.                     continue;
  117.                 // Submit box cannot be hidden
  118.                 if ( 'submitdiv' == $box['id'] || 'linksubmitdiv' == $box['id'] )
  119.                     continue;
  120.  
  121.                 $widget_title = $box['title'];
  122.  
  123.                 if ( is_array( $box['args'] ) && isset( $box['args']['__widget_basename'] ) ) {
  124.                     $widget_title = $box['args']['__widget_basename'];
  125.                 }
  126.  
  127.                 printf(
  128.                     '<label for="%1$s-hide"><input class="hide-postbox-tog" name="%1$s-hide" type="checkbox" id="%1$s-hide" value="%1$s" %2$s />%3$s</label>',
  129.                     esc_attr( $box['id'] ),
  130.                     checked( in_array( $box['id'], $hidden ), false, false ),
  131.                     $widget_title
  132.                 );
  133.             }
  134.         }
  135.     }
  136. }
  137.  
  138. /**
  139.  * Get Hidden Meta Boxes
  140.  *
  141.  * @since 2.7.0
  142.  *
  143.  * @param string|WP_Screen $screen Screen identifier
  144.  * @return array Hidden Meta Boxes
  145.  */
  146. function get_hidden_meta_boxes( $screen ) {
  147.     if ( is_string( $screen ) )
  148.         $screen = convert_to_screen( $screen );
  149.  
  150.     $hidden = get_user_option( "metaboxhidden_{$screen->id}" );
  151.  
  152.     $use_defaults = ! is_array( $hidden );
  153.  
  154.     // Hide slug boxes by default
  155.     if ( $use_defaults ) {
  156.         $hidden = array();
  157.         if ( 'post' == $screen->base ) {
  158.             if ( 'post' == $screen->post_type || 'page' == $screen->post_type || 'attachment' == $screen->post_type )
  159.                 $hidden = array('slugdiv', 'trackbacksdiv', 'postcustom', 'postexcerpt', 'commentstatusdiv', 'commentsdiv', 'authordiv', 'revisionsdiv');
  160.             else
  161.                 $hidden = array( 'slugdiv' );
  162.         }
  163.  
  164.         /**
  165.          * Filters the default list of hidden meta boxes.
  166.          *
  167.          * @since 3.1.0
  168.          *
  169.          * @param array     $hidden An array of meta boxes hidden by default.
  170.          * @param WP_Screen $screen WP_Screen object of the current screen.
  171.          */
  172.         $hidden = apply_filters( 'default_hidden_meta_boxes', $hidden, $screen );
  173.     }
  174.  
  175.     /**
  176.      * Filters the list of hidden meta boxes.
  177.      *
  178.      * @since 3.3.0
  179.      *
  180.      * @param array     $hidden       An array of hidden meta boxes.
  181.      * @param WP_Screen $screen       WP_Screen object of the current screen.
  182.      * @param bool      $use_defaults Whether to show the default meta boxes.
  183.      *                                Default true.
  184.      */
  185.     return apply_filters( 'hidden_meta_boxes', $hidden, $screen, $use_defaults );
  186. }
  187.  
  188. /**
  189.  * Register and configure an admin screen option
  190.  *
  191.  * @since 3.1.0
  192.  *
  193.  * @param string $option An option name.
  194.  * @param mixed $args Option-dependent arguments.
  195.  */
  196. function add_screen_option( $option, $args = array() ) {
  197.     $current_screen = get_current_screen();
  198.  
  199.     if ( ! $current_screen )
  200.         return;
  201.  
  202.     $current_screen->add_option( $option, $args );
  203. }
  204.  
  205. /**
  206.  * Get the current screen object
  207.  *
  208.  * @since 3.1.0
  209.  *
  210.  * @global WP_Screen $current_screen
  211.  *
  212.  * @return WP_Screen|null Current screen object or null when screen not defined.
  213.  */
  214. function get_current_screen() {
  215.     global $current_screen;
  216.  
  217.     if ( ! isset( $current_screen ) )
  218.         return null;
  219.  
  220.     return $current_screen;
  221. }
  222.  
  223. /**
  224.  * Set the current screen object
  225.  *
  226.  * @since 3.0.0
  227.  *
  228.  * @param mixed $hook_name Optional. The hook name (also known as the hook suffix) used to determine the screen,
  229.  *                           or an existing screen object.
  230.  */
  231. function set_current_screen( $hook_name = '' ) {
  232.     WP_Screen::get( $hook_name )->set_current_screen();
  233. }
  234.