您可以通过重定向并通过过滤器传递查询参数来实现这一点redirect_post_location
. 还有redirect_term_location
这将适用于分类法/术语。
首先添加admin_notices
操作将始终处于活动状态,但仅在特定条件下显示通知。
add_action( \'admin_notices\', \'general_admin_notice\' );
function general_admin_notice(){
global $pagenow;
if ( \'post.php\' === $pagenow && isset($_GET[\'post\']) && \'custom_post_type\' === get_post_type( $_GET[\'post\'] ) ){
if ( isset($_GET[\'empty\'])) {
// Turn string into array, so we can loop trough it.
$terms_id = explode( \',\', $_GET[\'empty\'] );
echo \'<div class="notice notice-error is-dismissible">
<p>\';
foreach ( $terms_id as $term_id ) {
$term = get_term( $term_id, \'custom_taxonomy\' );
echo \'<a href="\'.get_term_link( $term ).\'">\'.$term->name.\'</a>, \';
}
echo \'nutrients are empty.</p>
</div>\';
}
}
}
然后,需要在保存后重定向页面,并用传递查询参数
add_query_arg
. 按照我在这里所做的方式,您可以在管理通知中显示动态输入。
if ( !empty($empty_error) ) {
add_filter(\'redirect_post_location\', function($loc) use ($empty_error) {
trigger_error( $empty_error);
return add_query_arg( \'empty\', implode(\',\', $empty_error), $loc );
});
}
就我而言,我会
array_push
在变量上
$empty_error
使用术语id。管理员通知将显示所有有错误的术语,并链接到相应的术语。
您还可以使用removable_query_args
删除添加的查询参数,使url看起来更干净。如果你重新加载页面,管理通知就会消失。
add_filter(\'removable_query_args\', \'add_removable_arg\');
function add_removable_arg($args) {
array_push($args, \'empty\');
return $args;
}