以编程方式获取分页类别链接

时间:2011-08-16 作者:hakre

我想获取指向某个类别(由id指定)的链接,但该类别具有分页值(例如,类别id 4的第3页)。

我在调查get_category_link()Codex, 但它只返回指向该类别第一页的链接。

是否有一个内置函数可以用来获取指向反映博客URL布局设置的类别页面的链接(?paged=3/ /page/3)?

Edit: 我补充道my solution as an answer.

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

这是我迄今为止的代码,看起来它可以完成任务,我仍然想知道是否有一个API函数用于此任务:

/**
 * @param (int) $category_id
 * @param (int) $pagenum
 * @return string
 */
function get_category_paged_link($category_id, $pagenum)
{
    global $wp_rewrite;

    $link = get_category_link($category_id);

    if ($wp_rewrite->using_permalinks() || $wp_rewrite->using_index_permalinks())
    {
        $link = sprintf
        (
            \'%s/%s/%d/\',
            rtrim($link, \'/\'),
            $wp_rewrite->pagination_base,
            $pagenum
        );
    }
    else
    {
        if (false === strpos($link, \'?\'))
            $link .= \'?\';
        else
            $link .= \'&\';
        $link .= sprintf(\'paged=%d\', $pagenum);
    }

    return $link;
}

SO网友:t31os

我发现了get_term_link()(或类似情况get_category_link) 将根据调用的位置输出一个漂亮的URL,如果调用得太早(我最初在主题函数文件中进行了测试),它将只输出一个常规的查询var样式的URL,例如。http://example.com/?cat=5, 当稍后调用时(我在主题的页脚中进行了测试),您将得到一个永久链接样式的URL,例如。http://example.com/category/nicename.

显然,这些函数依赖于加载序列中稍后包含的内容(至少在主题的函数文件之后),我无法确定它们为什么会这样,但这是我最初的观察结果,这也意味着我之前关于没有内部函数的评论是不正确的。

结束