Products
GG网络技术分享 2025-03-18 16:12 5
I need to display an error when a user tries to create a new tag via a new WordPress Post.
Ex: A user with the classification of \'editor\' goes to create a new post in WordPress and adds a tag that does not exist in the taxonomy I would like to disaplay an admin error at the top of the page upon hitting Publish or Update.
This is my code that shows the error
function my_error_notice() {if ( !current_user_can( \'editor\' ) ) {
?>
<div class=\"error notice\">
<p><?php _e( \'Sorry only the Administrators are allowed to create new tags, please select from the prepopulated suggestions or contact an Administrator for more assistence.\', \'my_plugin_textdomain\' ); ?></p>
</div>
<?php
}
add_action( \'admin_notices\', \'my_error_notice\' );
this is the code that detects the new tag
add_action(\'create_term\',\'undo_create_term\',10, 3);function undo_create_term ($term_id, $tt_id, $taxonomy) {
if ( !current_user_can( \'editor\' ) ) {
if($taxonomy == \'post_tag\') {
wp_delete_term($term_id,$taxonomy);
}
}
}
You\'ll have to set a transient variable or similar strategy, because WP does a redirect after saving the post.
Here is the basic idea. It\'s up to you to fine-tune it to work in your application:
function my_error_notice() {$show_notice = get_transient(\'show_post_tag_notice\');
if ( ! $show_notice ) {
return;
}
delete_transient(\'show_post_tag_notice\');
if ( !current_user_can( \'editor\' ) ) { ?>
<div class=\\\"error notice\\\">
<p><?php _e( \'Sorry only the Administrators are allowed to create new tags, please select from the prepopulated suggestions or contact an Administrator for more assistence.\', \'my_plugin_textdomain\' ); ?></p>
</div>
<?php
}
}
add_action( \'admin_notices\', \'my_error_notice\' );
add_action(\'create_term\',\'undo_create_term\',10, 3);
function undo_create_term ($term_id, $tt_id, $taxonomy) {
if ( !current_user_can( \'editor\' ) ) {
if($taxonomy == \'post_tag\') {
wp_delete_term($term_id,$taxonomy);
set_transient(\'show_post_tag_notice\', true);
}
}
}
Demand feedback