在WordPress中查询自定义表,首先返回最近的行


Querying custom table in WordPress to return most recent rows first

我创建了一个自定义表,在WordPress中存储'帖子喜欢'。

$sql[] = "CREATE TABLE IF NOT EXISTS {$table_prefix}like (
    id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    post_id bigint(20) NOT NULL,
    user_id bigint(20) NOT NULL,
        KEY recommenders (post_id, user_id)
) {$charset_collate};";

当用户点击WordPress帖子上的"喜欢"按钮时,会向表中添加一行,该行捕获用户ID和帖子ID。

获取所有"喜欢"某个帖子的用户id数组,我可以这样做:

$result = $wpdb->get_col( $wpdb->prepare( "SELECT user_id FROM {$table_prefix}like WHERE post_id = %d", $post_id ) );

我现在想做两件事:

  1. 如何修改我的查询,以便最近添加到表中的行在$result数组中首先返回?

  2. 我怎么能做完全相同的问题1,但只返回5行?

For 1:您可以通过在查询中添加ORDER BY `id` DESC来按id降序排列它们

对于2:添加LIMIT 0, 5:

$result = $wpdb->get_col( $wpdb->prepare( "SELECT `user_id` FROM `{$table_prefix}like` WHERE `post_id` = %d ORDER BY `id` DESC LIMIT 0, 5", $post_id ) );
  1. 为了确保ORDER BY作为cckeep暗示,我会添加一个LikeDate列到你的表作为日期时间(时间戳),然后在LikeDate列上使用ORDER BY。这可以确保你统计回访者,他们可能真的喜欢你的帖子。
  2. 查看FOUND_ROWS函数,如果您想知道在没有限制的情况下返回的总数