如何找到帖子在哪个索引页面上?

时间:2013-03-28 作者:Michael Novotny

这是一个简单的例子,我想弄清楚。

假设我将WordPress设置为每页显示5篇文章。假设我有一个帖子,按时间顺序返回了17个帖子。

公式为17/5=3.4。将3.4四舍五入为一整页(共4页),17篇文章放在第4个索引页上。

现在如何以编程方式执行此操作。。。

每个索引页上的帖子数量由get_option( \'posts_per_page\' ); 选项

如果我所拥有的只是帖子的id,那么我如何计算出它按时间顺序返回了多少帖子?

我的头先是WP_Query, 但这不是一个合适的选择。这个博客有数千篇帖子,我还没来得及确定帖子的位置,它的内存就用完了。

有谁有聪明的建议吗?

2 个回复
最合适的回答,由SO网友:Michael Novotny 整理而成

感谢suggestion 属于Mridul Aggarwal, 我提出了以下查询,它返回给定post id的post的按时间顺序的位置。

可以删除帖子id、帖子标题和帖子日期,它们仅用于调试/验证结果。

SELECT
    *
FROM (
        SELECT
            ID as id
        , post_date
        , post_title
        , @rownum := @rownum + 1 AS position
        FROM
            wp_posts
        , (SELECT @rownum := 0) AS rownum
        WHERE
            post_type = \'post\'
        AND post_status = \'publish\'
        ORDER BY
            post_date DESC
    ) as post_position
WHERE
    id = 12345 /* REPLACE THIS WITH THE POST ID YOU WANT */
确保更换12345 对于具有要查找其位置的职位id的职位id。

可以使用运行此查询$wpdb->get_results. 有关的更多详细信息$wpdb 可以在中找到Codex.

有了查询结果,我就可以使用下面的PHP逻辑计算出帖子所在的分页索引页面。

// Get posts per page option.
$posts_per_page = get_option( \'posts_per_page\' );

// Calculate what index page a post is on.
$page_index = ceil( $position / $posts_per_page );
就这样!这个$page_index 变量将保存神奇的分页索引页码!

SO网友:Mridul Aggarwal

没有直接执行的方法,但有一种方法可以确定mysql查询中特定行的位置。你可以在这里找到方法-https://stackoverflow.com/questions/3614666/mysql-get-row-position-in-order-by

一旦得到位置,就可以将其与get_option(\'posts_per_page\') 确定正确的页码。

结束

相关推荐

wp_posts - guid update

您好,如果之前已经回答过,请原谅,但我们确实需要确保。我们在自己的域名下开发了一个网站,然后将其移动到客户的实时网站。为了更新到新的url,我们在db中运行了一些sql查询,但当我们在数据库中搜索域名时,我们在表wp\\U POST中得到了600多个匹配项(大部分是修订,但也有附件和POST)。我们在《WP法典》中读到,我们不应该更新该专栏,但我们不太确定如果我们这样做,会对网站产生怎样的影响。这些文件仍在我们的域中,我们需要删除它们,但我们认为,由于数据库中仍有调用我们域的实例,如果我们这样做,可能会出