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');
Puedes saltar al final y dejar una respuesta. Hacer ping no está permitido actualmente.

One Respuesta to “Crear custom post type en WordPress”

  1. Creo que le falta profundizar un poquito más. Pero para empezar está bien. Saludos. Gracias por la guía.

Deja un comentario