在Wordpress中,我在用户信息中心中添加了一些字段。我需要它们,但如果它们是空的,我想显示一条消息。
以下是我所做的一个例子(只是一个字段):
function my_admin_notice() { ?>
<div class="error">
<p><?php _e( 'Error!', 'user_street' ); ?></p>
</div>
<?php
}
function save_extra_user_profile_fields( $user_id ) {
if ( !current_user_can( 'edit_user', $user_id ) ) {
return false;
}
if (!empty($_POST['user_street'])) {
update_user_meta( $user_id, 'user_street', $_POST['user_street'] );
}
else {
add_action('admin_notices', 'my_admin_notice');
return false;
}
}
add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );
不幸的是,没有任何事情发生。
我也尝试使用add_settings_error,但我遇到了同样的问题。
有人可以帮我一把,或者只是向我解释我做错了什么?非常感谢!非常感谢你!
答案 0 :(得分:0)
添加admin_notice
似乎为时已晚。另一种方法是使用动作钩子load-$page
(在页面加载的最开始时运行)并检查用户元素是否为空。如果是,请触发通知。
add_action( 'load-profile.php', 'notice_so_23373245' );
add_action( 'load-user-edit.php', 'notice_so_23373245' );
function notice_so_23373245()
{
// Check to see if page is user-edit or profile
$user = isset( $_GET['user_id'] ) ? $_GET['user_id'] : get_current_user_id();
if( empty( get_user_meta( $user, 'user_street' ) ) )
add_action('admin_notices', 'my_admin_notice');
}