Deshabilitar la adición de una nueva publicación (tipo de publicación personalizada)

2

¿Cómo deshabilito la adición de nuevas publicaciones de un tipo de publicación personalizada en particular?

Encontré este código en el complemento de Avisos obsoletos:

    $screen = get_current_screen();
    if ( self::pt == $screen->id && ( $screen->action == 'add' || $_GET['action'] == 'edit' ) )
        wp_die( __( 'Invalid post type.', 'log-deprecated' ) );
    if ( self::pt != $screen->post_type )
        return;
    
pregunta urok93 12.07.2012 - 16:52

2 respuestas

5

Según esta respuesta , la "forma correcta" es:

register_post_type( 'custom_post_type_name', array(
  'capability_type' => 'post',
  'capabilities' => array(
    'create_posts' => false, // Removes support for the "Add New" function ( use 'do_not_allow' instead of false for multisite set ups )
  ),
  'map_meta_cap' => true, // Set to 'false', if users are not allowed to edit/delete existing posts
));

-

add_action( 'load-post-new.php', 'wpse_58290_disable_new_post' );
function wpse_58290_disable_new_post()
{
    if ( get_current_screen()->post_type == 'my_post_type' )
        wp_die( "You ain't allowed to do that!" );
}

Tenga en cuenta que también deberá ocultar los elementos de la IU, como en el menú, y el botón "Agregar nuevo" en la etiqueta h2 en la pantalla de edición.

    
respondido por el TheDeadMedic 12.07.2012 - 17:15
0

Como una adición a la respuesta anterior / aceptada, puede usar esta función para ocultar los enlaces reales a las páginas que desea desactivar.

remove_submenu_page( 
    'edit.php?post_type=product',
    'post-new.php?post_type=product' 
);
    
respondido por el Frankey 16.03.2013 - 23:31

Lea otras preguntas en las etiquetas