试试这些:
/**
* Removes the "Trash" link on the individual post\'s "actions" row on the posts
* edit page.
*/
add_filter( \'post_row_actions\', \'remove_row_actions_post\', 10, 2 );
function remove_row_actions_post( $actions, $post ) {
if( $post->post_type === \'prj\' ) {
unset( $actions[\'clone\'] );
unset( $actions[\'trash\'] );
}
return $actions;
}
add_action(\'wp_trash_post\', \'restrict_post_deletion\');
function restrict_post_deletion($post_id) {
if( get_post_type($post_id) === \'prj\' ) {
wp_die(\'The post you were trying to delete is protected.\');
}
}
/**
* Removes the "Delete" link on the individual term\'s "actions" row on the terms
* edit page.
*/
add_filter( \'tag_row_actions\', \'remove_row_actions_term\', 10, 2 );
function remove_row_actions_term( $actions, $term ) {
if ( \'org\' === $term->taxonomy ) {
unset( $actions[\'delete\'] );
}
return $actions;
}
add_action( \'pre_delete_term\', \'restrict_taxonomy_deletion\', 10, 2 );
function restrict_taxonomy_deletion( $term, $taxonomy ) {
if ( \'org\' === $taxonomy ) {
wp_die( \'The taxonomy you were trying to delete is protected.\' );
}
}
add_action( \'admin_head\', function () {
$current_screen = get_current_screen();
// Hides the "Move to Trash" link on the post edit page.
if ( \'post\' === $current_screen->base &&
\'prj\' === $current_screen->post_type ) :
?>
<style>#delete-action { display: none; }</style>
<?php
endif;
// Hides the "Delete" link on the term edit page.
if ( \'term\' === $current_screen->base &&
\'org\' === $current_screen->taxonomy ) :
?>
<style>#delete-link { display: none; }</style>
<?php
endif;
} );
您可能还需要这些:
/**
* If you want/need to programmatically trash a \'prj\' post, use this function
* instead of directly calling the wp_trash_post() function.
*/
function my_trash_prj_post( $post_id = 0 ) {
// Removes the filter THE SAME WAY it was added.
remove_action(\'wp_trash_post\', \'restrict_post_deletion\');
// Now trash the post.
$post = wp_trash_post( $post_id );
// Re-add the filter.
add_action(\'wp_trash_post\', \'restrict_post_deletion\');
return $post;
}
/**
* If you want/need to programmatically trash a \'org\' term, use this function
* instead of directly calling the wp_delete_term() function.
*/
function my_delete_org_term( $term, $taxonomy = \'org\', $args = array() ) {
// Removes the filter THE SAME WAY it was added.
remove_action( \'pre_delete_term\', \'restrict_taxonomy_deletion\', 10, 2 );
// Now delete the term.
$status = wp_delete_term( $term, $taxonomy, $args );
// Re-add the filter.
add_action( \'pre_delete_term\', \'restrict_taxonomy_deletion\', 10, 2 );
return $status;
}