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'); |
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'); |
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'); |
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'); |
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 324 times, 1 visits today)