最模板 - 外贸网站建设,外贸网站模板

最模板

当前位置: 首页 > WordPress > WordPress教程 >

根据WordPress用户ID数组返回评论

时间:2014-05-26 23:41来源:未知 作者:VCPHP网站模板 点击:
自定义查询的方法 默认的查询 global $wpdb ; $comments = $wpdb -get_results( SELECT*FROM$wpdb-commentsWHEREcomment_approved=1Limit0,10 ); 所以: global $wpdb ; $user_id =57; $comments = $wpdb -get_results( $wpdb -prepare( SELECT*FROM$wp

自定义查询的方法

默认的查询

  1. global $wpdb;
  2. $comments = $wpdb->get_results( "SELECT * FROM $wpdb->comments WHERE comment_approved = '1' Limit 0, 10" );

所以:

  1. global $wpdb;
  2. $user_id  = 57;
  3. $comments = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->comments WHERE comment_approved = '1' AND user_id = '%d' Limit 0, 10"$user_id ) );

还可以:

  1. global $wpdb;
  2. $user_ids = array( 57, 105, 567, 2820 );
  3. $comments = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->comments WHERE comment_approved = '1' AND user_id IN(%s) Limit 0, 10"$user_ids ) );

还可以对其进行缓存以提升加载速度:

  1. global $wpdb;
  2. $user_ids = array( 57, 105, 567, 2820 );
  3. $key      = md5( serialize( $user_ids ) );
  4. $comments = get_transient( $key );
  5. if( false === $comments ) {
  6.     $comments = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->comments WHERE comment_approved = '1' AND user_id IN(%s) Limit 0, 10"$user_ids ) );
  7.     set_transient( $key$comments, 10800 ); // Cache for 3 hours

使用HOOK过滤的方法

  1. add_filter( 'comments_clauses', 'pw_comments_by_users', 10, 2 );
  2. $comments = get_comments();
  3. remove_filter( 'comments_clauses', 'pw_comments_by_users' );
  4.  
  5. function pw_comments_by_users( $clauses$wp_comment_query ) {
  6.     $clauses['where'] .= ' AND user_id IN (57,105,567,2820)';
  7.     return $clauses;
  8. }

结论

使用自定义查询并对查询进行缓存的方法性能较好,使用HOOK过滤的方法比较简单,但是注意一定要在查询后移除HOOK,否则会影响到其它地方对于评论的查询。

(责任编辑:最模板)
------分隔线----------------------------
栏目列表
推荐内容