正在尝试确定是否存在用户的元值,如果不存在,则自动提交重力表单以重定向

时间:2017-02-23 作者:poto

我尝试创建了一个函数,如果在某个页面上,它将检查用户元的值,如果没有值或值不正确,则自动提交表单以重定向用户。它当前不工作,并重定向所有用户。meta键为=pro\\u status\\u confirmed\\u true,值为professional

<?php } if ( is_page (\'1150\')){?>

global $current_user;

get_currentuserinfo();

if ( $current_user ) {

$permission = get_user_meta( $current_user->ID, \'pro_status_confirmed_true\' , true );

if ( empty( $permission ) {

<script type="text/javascript">jQuery(document).ready(function(){ jQuery(\'form#gform_190\').trigger(\'submit\');});</script>

}

}

<?php }

1 个回复
最合适的回答,由SO网友:bosco 整理而成

你的<?php/?> 标记对齐后,实际的PHP代码都不会被解释为PHP代码(除了is_page (\'1150\') 它实际上只是将所有内容打印到标记中,包括<script> 要素因此,由于它没有运行检查用户或用户元数据的逻辑,因此脚本元素始终存在。

我可以这样简化:

<?php
if( is_page( \'1150\' ) ) {
  $current_user_id = get_current_user_id();

  if( $current_user_id > 0 ) {
    $permission = get_user_meta( $current_user_id, \'pro_status_confirmed_true\' , true );

    if( empty( $permission ) ) {
      ?>
      <script type="text/javascript">jQuery(document).ready(function(){ jQuery(\'form#gform_190\').trigger(\'submit\');});</script>
      <?php
    }
  }
}
?>
但是,如果提交此表单所做的只是立即重定向“非pro”状态的用户,您可能希望使用wp_redirect(). 这比打印脚本元素更高效,也更安全—在打印脚本元素以重定向“未经授权”的用户时,他们仍会加载页面正文—如果脚本旨在阻止他们访问该页面,用户仍然可以在浏览器缓存中找到该页面,防止重定向,或者干脆禁用JavaScript以绕过检查。使用重定向wp_redirect() 在将内容发送到客户端之前,速度也会有所加快。

相关推荐