【问题标题】:WordPress get_user_meta() - is there a better way to pull bulk user data?WordPress get_user_meta() - 有没有更好的方法来提取大量用户数据?
【发布时间】:2014-12-18 19:58:49
【问题描述】:

我正在为 WordPress 网站制作一份会员数据的自定义报告。我需要在报告中包含的一些字段存储在 wp_usermeta 表中,但是当我遍历每个成员以检索该数据时,它最终会超时。

我目前正在使用 get_user_meta() 因为它似乎比手动执行查询更快,但它仍然超时。大约有 5,600 个用户需要处理。它可以很好地通过其中的 4000 个,但是如果我尝试在完整集上运行它,它不可避免地会超时。有一个更好的方法吗?有没有办法从 wp_usermeta 表中提取批量数据,而不是为每个用户单独执行?我想也许尝试在一个查询中拉下整个 usermeta 表并使用 PHP 来操作它,但是该表中有超过 540,000 行...

这是我目前所处的位置......

 require_once( "db_connection.php" );
 require_once( "../wp-config.php" );
 $q = "SELECT ID,user_login,user_email,last_login,display_name FROM wp_users WHERE user_email='' ORDER BY user_login ASC;";
 $r = mysql_query( $q );
 $members = array();
 while ( $member = mysql_fetch_array( $r ) ) {
      $usermeta = get_user_meta($member['ID']);
      $members[$member['ID']] = $member;
      $members[$member['ID']]['meta'] = $usermeta;
      }

 echo "<pre>\n";
 var_dump( $members );
 echo "</pre>\n";

非常感谢您的任何帮助/建议!

【问题讨论】:

    标签: php mysql wordpress


    【解决方案1】:

    好吧,我尝试了“下拉所有内容”的方法,它似乎可以在没有超时的情况下工作。这是我修改后的方法:

     require_once( "db_connection.php" );
     require_once( "../wp-config.php" );
     $q = "SELECT ID,user_login,last_login,display_name FROM wp_users WHERE user_email='' ORDER BY user_login ASC;";
     $r = mysql_query( $q );
     $members = array();
     while ( $member = mysql_fetch_array( $r ) ) {
          $members[$member['ID']] = $member;
          }
    
     $q = "SELECT * FROM wp_usermeta WHERE (meta_key='first_name' OR meta_key='_slt_middle_initial' OR meta_key='last_name' OR meta_key='_slt_email2' OR meta_key='_slt_email3');";
     $r = mysql_query($q);
     while ( $usermeta = mysql_fetch_array( $r ) ) {
          if ( $members[$usermeta['user_id']]['ID'] != "" ) {
               $members[$usermeta['user_id']][$usermeta['meta_key']] = $usermeta['meta_value'];
               }
          }
    
     echo "<pre>\n";
     var_dump( $members );
     echo "</pre>\n";
    

    太糟糕了 get_user_meta() 不适用于批量数据 - 例如,如果我们可以将我们想要的 ID 和字段数组传递给它,然后得到一个多维数组,那就太好了......但我猜目前这种方式可行,只是有点麻烦。

    【讨论】:

      猜你喜欢
      • 2010-11-11
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多