Block Update Profile Errors

时间:2015-09-04 作者:qna101

我正在尝试验证用户在更新其配置文件数据时提交的表单。我已连接到user\\u profile\\u update\\u错误。它将错误正确地打印给用户,但是仍然允许将错误应用到用户的配置文件中。显示的错误实际上没有强制执行。

如何防止保存错误的配置文件条目,而不是阻止它们?

谢谢

 function tml_profile_errors( $errors ) {
   if ( empty( $_POST[\'state\'] ) )
       $errors->add( \'empty_missing_\', \'<strong>ERROR</strong>: Please enter your state.\' );

   return $errors;
 }
 add_filter( \'user_profile_update_errors\', \'tml_profile_errors\' );

1 个回复
SO网友:qna101

解决方案:

首先,theme my login的Jeff Farthing指出,我使用的是add\\u filter而不是add\\u action,并帮助编写了下面的第一个代码,但它仍然存在相同的问题,因此这是朝着正确方向迈出的一步,但不是我的解决方案:

function tml_profile_errors( &$errors ) {
    if ( empty( $_POST[\'state\'] ) )
        $errors->add( \'empty_missing_\', \'<strong>ERROR</strong>: Please enter your state.\' );
}
add_action( \'user_profile_update_errors\', \'tml_profile_errors\' );
其次,我使用下面的代码在“personal\\u options\\u update”和“edit\\u user\\u profile\\u update”操作中添加了相同的验证步骤。由于这是在保存步骤中运行的,因此它将防止用户保存无效值。表单的字段远不止“state”,这就是为什么下面的示例使用嵌套的if而不是&&;操作员:

function tml_edit_user_profile_update( $user_id ) {
     if ( current_user_can(\'edit_user\',$user_id) ) {
         if ( !empty( $_POST[\'state\'] ) )
           update_user_meta( $user_id, \'state\', $_POST[\'state\'] );
     }
 }
add_action(\'personal_options_update\', \'tml_edit_user_profile_update\');
add_action(\'edit_user_profile_update\', \'tml_edit_user_profile_update\');

相关推荐

wordpress hooks

我目前正在使用woocommerce主题,Hotel(https://woocommerce.com/products/hotel/).我最近刚刚创建了一个主页和一个博客页面,其解释方式如下:https://www.wpbeginner.com/wp-tutorials/how-to-create-a-separate-page-for-blog-posts-in-wordpress/现在我想做的是:创建一个带有固定元素的主页,这些元素永远不会改变(如照片),然后添加一些动态元素(如博客中的帖子)……假设