Skip to content

Instantly share code, notes, and snippets.

@jeremygrlj
Last active August 25, 2018 12:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jeremygrlj/a9319591e3d1940e9ef465f024220e84 to your computer and use it in GitHub Desktop.
Save jeremygrlj/a9319591e3d1940e9ef465f024220e84 to your computer and use it in GitHub Desktop.
custom post type and the 2 custom taxonomies with custom capabilities
<?php
/**
* Plugin Name: Kurse
* Plugin URI: -
* Description: -
* Version: 1.0
* Author: -
* Author URI: -
*/
// Register Custom Post Type Kurs
// Post Type Key: kurs
function create_kurs_cpt() {
$labels = array(
'name' => __( 'Kurse', 'Post Type General Name', 'kurse' ),
'singular_name' => __( 'Kurs', 'Post Type Singular Name', 'kurse' ),
'menu_name' => __( 'Kurse', 'kurse' ),
'name_admin_bar' => __( 'Kurs', 'kurse' ),
'archives' => __( 'Kurs Archive', 'kurse' ),
'attributes' => __( 'Kurs Attribute', 'kurse' ),
'parent_item_colon' => __( 'Eltern Kurs:', 'kurse' ),
'all_items' => __( 'Alle Kurse', 'kurse' ),
'add_new_item' => __( 'Kurs erstellen', 'kurse' ),
'add_new' => __( 'Erstellen', 'kurse' ),
'new_item' => __( 'Kurs erstellen', 'kurse' ),
'edit_item' => __( 'Bearbeite Kurs', 'kurse' ),
'update_item' => __( 'Aktualisiere Kurs', 'kurse' ),
'view_item' => __( 'Kurs anschauen', 'kurse' ),
'view_items' => __( 'Kurse anschauen', 'kurse' ),
'search_items' => __( 'Suche Kurs', 'kurse' ),
'not_found' => __( 'Keine Kurse gefunden.', 'kurse' ),
'not_found_in_trash' => __( 'Keine Kurse im Papierkorb gefunden.', 'kurse' ),
'featured_image' => __( 'Beitragsbild', 'kurse' ),
'set_featured_image' => __( 'Beitragsbild festlegen', 'kurse' ),
'remove_featured_image' => __( 'Beitragsbild entfernen', 'kurse' ),
'use_featured_image' => __( 'Als Beitragsbild verwenden', 'kurse' ),
'insert_into_item' => __( 'In Kurs einfügen', 'kurse' ),
'uploaded_to_this_item' => __( 'Zu diesem Kurs hochgeladen', 'kurse' ),
'items_list' => __( 'Kurse Liste', 'kurse' ),
'items_list_navigation' => __( 'Kurse Liste Navigation', 'kurse' ),
'filter_items_list' => __( 'Filter Kurse Liste', 'kurse' ),
);
$args = array(
'label' => __( 'Kurs', 'kurse' ),
'description' => __( 'Malkurse im In- und Ausland', 'kurse' ),
'labels' => $labels,
'menu_icon' => 'dashicons-admin-customizer',
'supports' => array('title', 'editor', 'excerpt', 'thumbnail', 'revisions', ),
'taxonomies' => array('schweiz', 'ausland', ),
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 5,
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'can_export' => true,
'has_archive' => false,
'hierarchical' => false,
'exclude_from_search' => false,
'show_in_rest' => true,
'publicly_queryable' => true,
'capability_type' => 'post',
);
register_post_type( 'kurs', $args );
}
add_action( 'init', 'create_kurs_cpt', 0 );
// Register Taxonomy Standort
// Taxonomy Key: standort
function create_standort_tax() {
$labels = array(
'name' => _x( 'Standorte', 'taxonomy general name', 'standort' ),
'singular_name' => _x( 'Standort', 'taxonomy singular name', 'standort' ),
'search_items' => __( 'Suche Standorte', 'standort' ),
'all_items' => __( 'Alle Standorte', 'standort' ),
'parent_item' => __( 'Eltern Standort', 'standort' ),
'parent_item_colon' => __( 'Eltern Standort:', 'standort' ),
'edit_item' => __( 'Bearbeite Standort', 'standort' ),
'update_item' => __( 'Aktualisiere Standort', 'standort' ),
'add_new_item' => __( 'Standort hinzufügen', 'standort' ),
'new_item_name' => __( 'Neuer Standort Name', 'standort' ),
'menu_name' => __( 'Standort', 'standort' ),
);
$args = array(
'labels' => $labels,
'description' => __( 'Standorte der Malkurse', 'standort' ),
'hierarchical' => true,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_rest' => false,
'show_tagcloud' => false,
'show_in_quick_edit' => true,
'show_admin_column' => true,
'capabilities' => array(
'manage_terms' => 'manage_location',
'edit_terms' => 'edit_location',
'delete_terms' => 'delete_location',
'assign_terms' => 'assign_location',
)
);
register_taxonomy( 'standort', array('kurs', ), $args );
}
add_action( 'init', 'create_standort_tax' );
// Register Taxonomy Typ
// Taxonomy Key: typ
function create_typ_tax() {
$labels = array(
'name' => _x( 'Typen', 'taxonomy general name', 'typ' ),
'singular_name' => _x( 'Typ', 'taxonomy singular name', 'typ' ),
'search_items' => __( 'Suche Typen', 'typ' ),
'all_items' => __( 'Alle Typen', 'typ' ),
'parent_item' => __( 'Eltern Typ', 'typ' ),
'parent_item_colon' => __( 'Eltern Typ:', 'typ' ),
'edit_item' => __( 'Bearbeite Typ', 'typ' ),
'update_item' => __( 'Aktualisiere Typ', 'typ' ),
'add_new_item' => __( 'Typ hinzufügen', 'typ' ),
'new_item_name' => __( 'Neuer Typ Name', 'typ' ),
'menu_name' => __( 'Typ', 'typ' ),
);
$args = array(
'labels' => $labels,
'description' => __( 'Typen der Malkurse', 'typ' ),
'hierarchical' => true,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_rest' => false,
'show_tagcloud' => false,
'show_in_quick_edit' => true,
'show_admin_column' => true,
'capabilities' => array(
'manage_terms' => 'manage_typ',
'edit_terms' => 'edit_typ',
'delete_terms' => 'delete_typ',
'assign_terms' => 'assign_typ',
)
);
register_taxonomy( 'typ', array('kurs', ), $args );
}
add_action( 'init', 'create_typ_tax' );
function kurse_role_caps() {
// gets the simple_role role object
$role = get_role('administrator');
// add a new capability
$role->add_cap( 'manage_location', 'edit_location', 'delete_location', 'assign_location', 'manage_typ', 'edit_typ', 'delete_typ', 'assign_typ', true);
}
// add simple_role capabilities, priority must be after the initial role definition
add_action('init', 'kurse_role_caps', 11);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment