_x( 'Elements', 'Post Type General Name', 'gp-premium' ), 'singular_name' => _x( 'Element', 'Post Type Singular Name', 'gp-premium' ), 'menu_name' => __( 'Elements', 'gp-premium' ), 'all_items' => __( 'All Elements', 'gp-premium' ), 'add_new_item' => __( 'Add New Element', 'gp-premium' ), 'new_item' => __( 'New Element', 'gp-premium' ), 'edit_item' => __( 'Edit Element', 'gp-premium' ), 'update_item' => __( 'Update Element', 'gp-premium' ), 'search_items' => __( 'Search Element', 'gp-premium' ), 'featured_image' => __( 'Background Image', 'gp-premium' ), 'set_featured_image' => __( 'Set background image', 'gp-premium' ), 'remove_featured_image' => __( 'Remove background image', 'gp-premium' ), ); $args = array( 'labels' => $labels, 'supports' => array( 'title', 'thumbnail' ), 'hierarchical' => false, 'public' => false, 'show_ui' => true, 'show_in_menu' => false, 'can_export' => true, 'has_archive' => false, 'exclude_from_search' => true, ); register_post_type( 'gp_elements', $args ); } /** * Register custom post type columns. * * @since 1.7 * * @param array $columns Existing CPT columns. * @return array All our CPT columns. */ public function register_columns( $columns ) { $columns['element_type'] = esc_html__( 'Type', 'gp-premium' ); $columns['location'] = esc_html__( 'Location', 'gp-premium' ); $columns['exclusions'] = esc_html__( 'Exclusions', 'gp-premium' ); $columns['users'] = esc_html__( 'Users', 'gp-premium' ); $new_columns = array(); // Need to do some funky stuff to display these columns before the date. foreach ( $columns as $key => $value ) { if ( 'date' === $key ) { $new_columns['element_type'] = esc_html__( 'Type', 'gp-premium' ); $new_columns['location'] = esc_html__( 'Location', 'gp-premium' ); $new_columns['exclusions'] = esc_html__( 'Exclusions', 'gp-premium' ); $new_columns['users'] = esc_html__( 'Users', 'gp-premium' ); } $new_columns[ $key ] = $value; } return $new_columns; } /** * Add a filter select input to the admin list. * * @since 1.7 */ public function build_element_type_filter() { if ( 'gp_elements' !== get_post_type() ) { return; } $values = array( 'header' => esc_html__( 'Headers', 'gp-premium' ), 'hook' => esc_html__( 'Hooks', 'gp-premium' ), 'layout' => esc_html__( 'Layouts', 'gp-premium' ), ); ?> is_main_query() && '' !== $type ) { $query->set( 'meta_key', '_generate_element_type' ); $query->set( 'meta_value', esc_attr( $type ) ); } } /** * Add content to our custom post type columns. * * @since 1.7 * * @param string $column The name of the column. * @param int $post_id The ID of the post row. */ public function add_columns( $column, $post_id ) { switch ( $column ) { case 'element_type' : $type = get_post_meta( $post_id, '_generate_element_type', true ); if ( 'header' === $type ) { echo esc_html__( 'Header', 'gp-premium' ); } if ( 'hook' === $type ) { echo esc_html__( 'Hook', 'gp-premium' ); } if ( 'layout' === $type ) { echo esc_html__( 'Layout', 'gp-premium' ); } break; case 'location' : $location = get_post_meta( $post_id, '_generate_element_display_conditions', true ); if ( $location ) { foreach ( ( array ) $location as $data ) { echo GeneratePress_Conditions::get_saved_label( $data ); echo '
'; } } break; case 'exclusions' : $location = get_post_meta( $post_id, '_generate_element_exclude_conditions', true ); if ( $location ) { foreach ( ( array ) $location as $data ) { echo GeneratePress_Conditions::get_saved_label( $data ); echo '
'; } } break; case 'users' : $users = get_post_meta( $post_id, '_generate_element_user_conditions', true ); if ( $users ) { foreach ( ( array ) $users as $data ) { if ( strpos( $data, ':' ) !== FALSE ) { $data = substr( $data, strpos( $data, ':' ) + 1 ); } $return = ucwords( str_replace( '_', ' ', $data ) ); echo $return . '
'; } } break; } } /** * Create our admin menu item. * * @since 1.7 */ public function menu_item() { add_submenu_page( 'themes.php', esc_html__( 'Elements', 'gp-premium' ), esc_html__( 'Elements', 'gp-premium' ), apply_filters( 'generate_elements_admin_menu_capability', 'manage_options' ), 'edit.php?post_type=gp_elements' ); } /** * Make sure our admin menu item is highlighted. * * @since 1.7 */ public function fix_current_item() { global $parent_file, $submenu_file, $post_type; if ( 'gp_elements' === $post_type ) { $parent_file = 'themes.php'; $submenu_file = 'edit.php?post_type=gp_elements'; } } } GeneratePress_Elements_Post_Type::get_instance();