将WP查询转换为更简单的SQL查询,以仅获取帖子计数

时间:2015-07-20 作者:luqo33

对于特定的帖子类型,我在管理屏幕中的每一行都运行此WP查询:

        $entry_args = array(
            \'meta_key\'   => \'wp_comp_entry_competition-id\',
            \'meta_value\' => $post_ID,
            \'post_type\'  => \'wp_comp_entries\'
        );
        $entry_query = new WP_Query( $entry_args );
此WP查询获取由$post_ID. 有a lot of 自一场比赛以来的数据将有数千个条目。

因此,此查询重复多次(针对管理屏幕中的每一行)相当慢。此外,我不需要所有这些数据。我only want to know the number of entries 对于每个比赛$post_ID.

我想只有COUNT 将此WP查询更改为WordPress数据库上更简单、直接的SQL查询。

如何仅获取每个比赛的参赛人数,而不获取与每个参赛相关的所有帖子数据?

Further explanation:

我现在尝试使用以下两种方法仅获取帖子数量:

1) 通过\'fields\' => \'ids\' 查询参数的步骤

        $entry_args = array(
            \'meta_key\'   => \'wp_comp_entry_competition-id\',
            \'meta_value\' => $post_ID,
            \'post_type\'  => \'wp_comp_entries\',
            \'fields\'     => \'ids\'
        );
        $entry_query = new WP_Query( $entry_args );
然后使用$entry_qyery->found->posts 获取号码

2) 使用query_posts 像这样:

        $entry_args = array(
            \'meta_key\'   => \'wp_comp_entry_competition-id\',
            \'meta_value\' => $post_ID,
            \'post_type\'  => \'wp_comp_entries\',
            \'fields\'     => \'ids\',
            \'posts_per_page\' => -1
        );
        $entry_query = query_posts( $entry_args );
然后使用count($entry_query) 统计所有提取的ID(如query_posts 返回了一个数组)。

我的第一次经验是query_posts 速度比WP Query 在这种情况下。

1 个回复
SO网友:Blue Rose

您还可以尝试以下代码来检索行数。

$myquery = $wpdb->get_results( "SELECT * FROM  tablename WHERE ID=\'some-value\'" );
echo  $wpdb->num_rows;
如果你有任何问题,请告诉我。

干杯

结束

相关推荐

$wpdb returns duplicate posts

我创建了一个短代码,显示用户上次登录后创建的帖子。这个短代码工作得很好,但我不知道为什么,但我得到了7个重复的帖子。就像测试一样,我创建了一个名为“示例文章”的帖子,当我呼出帖子的标题时,我得到了这个结果。Sample Article Sample Article Sample Article Sample Article Sample Article Sample Article Sample Article Sample ArticleShortcodefunction latest_posts_af