Crear custom post type en WordPress

Los Post Type de WordPress sirve para organizar los módulos de un Sitio Web, por ejemplo: Servicios, Proyectos, Testimonios, Productos, etc., ademas también podemos crear categorías para cada Post Type, filtro en el panel de administración y modificar los permisos (Capabilitys) para asignar a los perfiles de usuarios.

Crear post type en WordPress

function mytheme_register_post_types()
{
	register_post_type ('mytheme_proyecto',
		array(
			'labels' => array ('name' => 'Proyectos'),
			'description'        => __( 'Description.', 'Proyectos' ),
			'public'             => true,
			'publicly_queryable' => true,
			'show_ui'            => true,
			'show_in_menu'       => true,
			'query_var'          => true,
			'rewrite'            => array( 'slug' => 'proyectos' ),
			'capability_type'    => 'proyectos',
			'map_meta_cap'	     => true,
			'has_archive'        => true,
			'hierarchical'       => false,
			'menu_position'      => null,
			'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt' )
		)
	);
}
add_action ('init', 'mytheme_register_post_types');

Crear categoría para un post type en WordPress

function mytheme_post_types_taxonomy()
{
	register_taxonomy (
		'mytheme_category_proyecto',
		'mytheme_proyecto',
		array (
			'hierarchical'  => true,
			'public'        => true,
			'label'	        => 'Categoria Proyectos',
			'show_ui'       => true,
			'rewrite'	=> array( 'slug' => 'mytheme_category_proyecto' ),
			'query_var'  	=> true,
			'has_archive'   => true,
			)
		);		
};
add_action ('init', 'mytheme_post_types_taxonomy');

Crear filtro de categoría del post type en WordPress

function mytheme_filter_posttype_by_taxonomy()
{
	global $typenow;
	if ($typenow == 'mytheme_proyecto' ) {
		$taxonomy  = 'mytheme_category_proyecto';
		$selected      = isset($_GET[$taxonomy]) ? sanitize_text_field($_GET[$taxonomy]) : '';
		$info_taxonomy = get_taxonomy($taxonomy);
		wp_dropdown_categories(array(
			'show_option_all' => __("Mostrar todo {$info_taxonomy->label}"),
			'taxonomy'        => $taxonomy,
			'name'            => $taxonomy,
			'orderby'         => 'name',
			'selected'        => $selected,
			'show_count'      => true,
			'hide_empty'      => true,
		));
	}
}
add_action('restrict_manage_posts', 'mytheme_filter_posttype_by_taxonomy');

Crear los permisos (Capabilitys) del post type en WordPress

function add_theme_caps()
{
    $admins = get_role( 'administrator' );
 
    $admins->add_cap('edit_mytheme_proyecto');
    $admins->add_cap('read_mytheme_proyecto');
    $admins->add_cap('delete_mytheme_proyecto');
    $admins->add_cap('edit_mytheme_proyectos');
    $admins->add_cap('edit_others_mytheme_proyectos');
    $admins->add_cap('publish_mytheme_proyectos');
    $admins->add_cap('read_private_mytheme_proyectos');
    $admins->add_cap('edit_mytheme_proyectos');
}
add_action( 'admin_init', 'add_theme_caps');
(Visited 107 times, 1 visits today)
Puedes saltar al final y dejar una respuesta. Hacer ping no está permitido actualmente.
  • Creo que le falta profundizar un poquito más. Pero para empezar está bien. Saludos. Gracias por la guía.