Skip to content

Instantly share code, notes, and snippets.

@mdjwel
Last active June 28, 2018 05:15
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 mdjwel/7bd2c4b744fe20cad373b2f7e57a330b to your computer and use it in GitHub Desktop.
Save mdjwel/7bd2c4b744fe20cad373b2f7e57a330b to your computer and use it in GitHub Desktop.
WordPress custom post register class
<?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