_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();