查询META(和NOT:按META查询帖子)

时间:2015-09-21 作者:gordie

如果我理解得好WP_Meta_Query 通过Wordpress,您可以通过metas查询帖子。

但我想做的是取回metas;不是帖子。我想获取那些与post ID没有任何关系的meta。

假设我的wp\\U Posteta表中有这些条目:

meta_id | post_id | meta_key | meta_value
  1269      21       vote_up      1
  1268      37       vote_up      17
  1267      12      vote_down     1
  1266      41       vote_up      3
  1265      98      vote_down     3
此处的meta\\u value列中填充了用户ID。

我想做的是有一个计算行数的函数

通过meta\\u值(用户id)

  • 通过meta\\u键(投票)
    • 并最终使用某些标准过滤结果:例如,忽略未发布帖子的行。

      例如:。

      function bbpvotes_get_votes_up_by_user_count( $user_id = 0 ){
      
          if (!$user_id) $user_id = get_current_user_id();
      
          //meta args
          $metas_args = array(
            \'key\'     => \'vote_up\',
            \'value\'   => $user_id
          );
      
          //regular posts args (I would to limit the results to those; so for example unpublished posts will not be returned)
          $post_args = array(
              \'post_type\' => \'post\',
              \'post_status\'   => \'publish\',
          );
      
          //... 
      
          return count($returned_metas);
      }
      
      是否有WP核心功能来执行此操作?谢谢

    1 个回复
    SO网友:Margaret

    查看上的部分$wpdb->get_results(), 它允许您向数据库发送不同的查询,这听起来像是您想要做的事情。

    所以

    // 1st Method - Declaring $wpdb as global and using it to execute an SQL query statement that returns a PHP object
    
    global $wpdb;
    $results = $wpdb->get_results( \'SELECT meta_key, count(meta_key) as votes FROM wp_postmeta WHERE meta_value= \' . $user_id . \' GROUP BY meta_key\' );
    
    这将为用户返回一个名为$results的数组,其中包含以下数据:

    meta_key | votes
    -----------------
    vote_up  |  15
    vote_down|  3
    
    如果要使用标准函数,另一个选项是获取所有相关的post\\u id,并使用get_post_meta( $post_id, $key ) 然后用PHP组织数据,但上面的方法更有效。

    相关推荐

    如何读取WordPress$Query关联数组(散列)键的值

    WordPress编程新手(来自更为传统的环境),并试图了解其一些“独特”特性。我们的网站上有一个目录页,此代码驻留在functions.php, 如果条件为true,则调整结果。if( $query->is_post_type_archive( \'directory\' ) ){ ...//do stuff } 我想知道如何获取is_post_type_archive 这就是“目录”当我对值使用测试时。。。var_dumb($query->is_post