Last active
June 28, 2018 05:15
-
-
Save mdjwel/7bd2c4b744fe20cad373b2f7e57a330b to your computer and use it in GitHub Desktop.
WordPress custom post register class
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// event.pt.php | |
/** | |
* Use namespace to avoid conflict | |
*/ | |
namespace PostType; | |
/** | |
* Class Portfolio | |
* @package PostType | |
* | |
* Use actual name of post type for | |
* easy readability. | |
* | |
* Potential conflicts removed by namespace | |
*/ | |
class Portfolio { | |
/** | |
* @var string | |
* | |
* Set post type params | |
*/ | |
private $type = 'portfolio'; | |
private $slug = 'portfolios'; | |
private $name = 'Portfolios'; | |
private $singular_name = 'Portfolio'; | |
private $icon = 'dashicons-images-alt2'; | |
/** | |
* Register post type | |
*/ | |
public function register() { | |
$labels = array( | |
'name' => $this->name, | |
'singular_name' => $this->singular_name, | |
'add_new' => 'Add New', | |
'add_new_item' => 'Add New ' . $this->singular_name, | |
'edit_item' => 'Edit ' . $this->singular_name, | |
'new_item' => 'New ' . $this->singular_name, | |
'all_items' => 'All ' . $this->name, | |
'view_item' => 'View ' . $this->name, | |
'search_items' => 'Search ' . $this->name, | |
'not_found' => 'No ' . strtolower($this->name) . ' found', | |
'not_found_in_trash' => 'No ' . strtolower($this->name) . ' found in Trash', | |
'parent_item_colon' => '', | |
'menu_name' => $this->name, | |
); | |
$args = array( | |
'labels' => $labels, | |
'public' => true, | |
'publicly_queryable' => true, | |
'show_ui' => true, | |
'show_in_menu' => true, | |
'query_var' => true, | |
'rewrite' => array( 'slug' => $this->slug ), | |
'capability_type' => 'post', | |
'has_archive' => true, | |
'hierarchical' => true, | |
'menu_position' => 8, | |
'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail'), | |
'yarpp_support' => true, | |
'menu_icon' => $this->icon | |
); | |
register_post_type( $this->type, $args ); | |
register_taxonomy($this->type.'_cat', $this->type, array( | |
'public' => true, | |
'hierarchical' => true, | |
'show_admin_column' => true, | |
'show_in_nav_menus' => false, | |
'labels' => array( | |
'name' => $this->singular_name.esc_html__(' Categories', 'chaoz-core'), | |
) | |
)); | |
} | |
/** | |
* @param $columns | |
* @return mixed | |
* | |
* Choose the columns you want in | |
* the admin table for this post | |
*/ | |
public function set_columns($columns) { | |
// Set/unset post type table columns here | |
return $columns; | |
} | |
/** | |
* @param $column | |
* @param $post_id | |
* | |
* Edit the contents of each column in | |
* the admin table for this post | |
*/ | |
public function edit_columns($column, $post_id) { | |
// Post type table column content code here | |
} | |
/** | |
* Portfolio constructor. | |
* | |
* When class is instantiated | |
*/ | |
public function __construct() { | |
// Register the post type | |
add_action('init', array($this, 'register')); | |
// Admin set post columns | |
add_filter( 'manage_edit-'.$this->type.'_columns', array($this, 'set_columns'), 10, 1) ; | |
// Admin edit post columns | |
add_action( 'manage_'.$this->type.'_posts_custom_column', array($this, 'edit_columns'), 10, 2 ); | |
} | |
} | |
/** | |
* Instantiate class, creating post type | |
*/ | |
new Portfolio(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment