Simpelweg omdat soms het standaard post type niet nodig is.
Vele developers laten het standaard post type gewoonweg actief maar bij gebruikers zorgt dit best voor verwarring.
Duivel in een doos
Laat ons maar even de duivel uit de doos halen. Het post
post type is een core WordPress integratie, dus echt volledig uitschakelen is echter niet mogelijk. Wat je wel kan doen is het post type verbergen voor gebruikers via onderstaande PHP class.
In de PHP class Disable_Default_Post_Type vind je volgende action hooks terug:
admin_menu
– deze verwijdert hetpost
post type uit het WordPress admin menu.admin_bar_menu
– deze verwijdert het post type uit de admin barinit
– deze zorgt ervoor dat de capabilities opdo_not_allow
worden geplaatst.admin_init
– deze zorgt ervoor dat alle admin edit urls worden doorverwezen naar het WordPress admin dashboard.
class Disable_Default_Post_Type {
public function __construct() {
add_action('admin_menu', array($this, 'remove_default_post_type_menu'));
add_action('admin_bar_menu', array($this, 'remove_default_post_type_from_admin_bar'), 999);
add_action('init', array($this, 'disable_default_post_type_capabilities'), 10);
add_action('admin_init', array($this, 'redirect_default_post_type_page'));
}
public function remove_default_post_type_menu() {
remove_menu_page('post-new.php');
}
public function remove_default_post_type_from_admin_bar() {
global $wp_admin_bar;
$wp_admin_bar->remove_node('new-post');
}
public function disable_default_post_type_capabilities() {
$post_type = get_post_type_object('post');
$post_type->cap->publish_posts = 'do_not_allow';
$post_type->cap->edit_posts = 'do_not_allow';
$post_type->cap->delete_posts = 'do_not_allow';
}
public function redirect_default_post_type_page() {
global $pagenow;
if ($pagenow == 'edit.php' && isset($_GET['post_type']) && $_GET['post_type'] == 'post') {
wp_redirect(admin_url('index.php'), 301);
exit;
}
}
}
// Instantiate the class
new Disable_Default_Post_Type();
PHP