CP页面上的分页自定义帖子类型

时间:2013-09-02 作者:eskimo

我知道关于这个问题有很多话题,我读了很多,尝试了不同的方法。但分页仍然不起作用。我认为这与永久链接设置有关。

The situation

我有一个名为“艺术家”的自定义帖子类型,可以链接到活动。在艺术家页面上,我显示了艺术家链接到的所有事件(它们使用posts 2 posts插件链接)。我想为这些活动分页。让我们使用ACDC作为示例艺术家。

显示分页,链接指向root/artist/acdc/page/# 其中#是页码。

例如,如果我点击第2页,我不会root/artists/acdc/page/2. 页面似乎确实加载了,但我最终还是在同一个URL上显示了前3篇文章(roots/artists/acdc). 所以我没有404。

当我去root/artists/acdc?page=2, URL变为root/artists/acdc/2/, 但它仍然显示第1页的3篇帖子。这种情况发生在\'format\' 设置为\'/page/%#%\' 在里面paginate_links. 如果我悬停第3页的分页链接,该链接将变为root/artists/acdc/2/page/3...

My settings

/%category%/%postname%/
  • 我使用的是根主题,它确实应用了一些重写,但据我所知,永久链接/页面结构没有重写

    Stuf I\'ve already tried

    <更改了WP设置中的“显示最大值”设置,从10更改为1\'paged\'\'page\' 在里面$paged
  • 转到URLroot/artists/acdc/page/2, 如上所述,没有运气转到URLroot/artists/acdc?page=2, 如上所述,运气不佳,行为怪异\'format\' 在里面paginate_links\'?page=%#%\'My code (which is on the artist custom post type template but will eventually be stored in functions.php

    $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
    
    $args = array(
        \'connected_type\' => \'artists_to_events\',
        \'connected_items\' => get_queried_object(),
        \'post_type\' => \'events\',
        \'post_status\' => \'publish\',
        \'posts_per_page\' => 3,
        \'paged\' => $paged,
        \'meta_key\' => \'custom_date\',
        \'orderby\'=> \'meta_value\',
        \'order\' => \'ASC\'
    );
    
    $query = new WP_Query($args);
    
    $big = 99999999;
    
    echo paginate_links(array(
        \'base\' => str_replace($big, \'%#%\', get_pagenum_link($big)),
        \'format\' => \'/page/%#%\',
        \'total\' => $query->max_num_pages,
        \'current\' => max(1, get_query_var(\'paged\')),
        \'show_all\' => false,
        \'end_size\' => 2,
        \'mid_size\' => 3,
        \'prev_next\' => true,
        \'prev_text\' => \'Vorige\',
        \'next_text\' => \'Volgende\',
        \'type\' => \'list\'
    ));
    
    由于奇怪的URL行为,我真的不知道问题出在哪里。有什么想法吗?

    1 个回复
    SO网友:eskimo

    我发现了问题。由于我在一个(自定义)贴子页面上,WP会重定向回URL的根。我找到了解决办法here.

    解决方案(从SO上的帖子复制)将此添加到函数中。php:

    add_filter(\'redirect_canonical\',\'pif_disable_redirect_canonical\');
    
    function pif_disable_redirect_canonical($redirect_url) {
    if( is_singular()) {
        $redirect_url = false;
    }
    return $redirect_url;
    }
    
    我已删除&& in_category(\'PLACE CAT ID HERE\') 从帖子中的原始代码中裁剪出适合我的情况。

    结束

    相关推荐

    Pagination for a category

    嗨,我有一个页面显示20个特定类别的特色图像和信息,我希望能够有分页,这样我就可以有多个类别的页面。我该怎么做?我似乎无法让它工作。任何帮助都将不胜感激谢谢<?php get_header(); ?> <div class=\"modus-grid\"> <?php query_posts(array(\'category__in\' => array(5), \'posts_per_page\' => 20)); ?>

    CP页面上的分页自定义帖子类型 - 小码农CODE - 行之有效找到问题解决它

    CP页面上的分页自定义帖子类型

    时间:2013-09-02 作者:eskimo

    我知道关于这个问题有很多话题,我读了很多,尝试了不同的方法。但分页仍然不起作用。我认为这与永久链接设置有关。

    The situation

    我有一个名为“艺术家”的自定义帖子类型,可以链接到活动。在艺术家页面上,我显示了艺术家链接到的所有事件(它们使用posts 2 posts插件链接)。我想为这些活动分页。让我们使用ACDC作为示例艺术家。

    显示分页,链接指向root/artist/acdc/page/# 其中#是页码。

    例如,如果我点击第2页,我不会root/artists/acdc/page/2. 页面似乎确实加载了,但我最终还是在同一个URL上显示了前3篇文章(roots/artists/acdc). 所以我没有404。

    当我去root/artists/acdc?page=2, URL变为root/artists/acdc/2/, 但它仍然显示第1页的3篇帖子。这种情况发生在\'format\' 设置为\'/page/%#%\' 在里面paginate_links. 如果我悬停第3页的分页链接,该链接将变为root/artists/acdc/2/page/3...

    My settings

    /%category%/%postname%/
  • 我使用的是根主题,它确实应用了一些重写,但据我所知,永久链接/页面结构没有重写

    Stuf I\'ve already tried

    <更改了WP设置中的“显示最大值”设置,从10更改为1\'paged\'\'page\' 在里面$paged
  • 转到URLroot/artists/acdc/page/2, 如上所述,没有运气转到URLroot/artists/acdc?page=2, 如上所述,运气不佳,行为怪异\'format\' 在里面paginate_links\'?page=%#%\'My code (which is on the artist custom post type template but will eventually be stored in functions.php

    $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
    
    $args = array(
        \'connected_type\' => \'artists_to_events\',
        \'connected_items\' => get_queried_object(),
        \'post_type\' => \'events\',
        \'post_status\' => \'publish\',
        \'posts_per_page\' => 3,
        \'paged\' => $paged,
        \'meta_key\' => \'custom_date\',
        \'orderby\'=> \'meta_value\',
        \'order\' => \'ASC\'
    );
    
    $query = new WP_Query($args);
    
    $big = 99999999;
    
    echo paginate_links(array(
        \'base\' => str_replace($big, \'%#%\', get_pagenum_link($big)),
        \'format\' => \'/page/%#%\',
        \'total\' => $query->max_num_pages,
        \'current\' => max(1, get_query_var(\'paged\')),
        \'show_all\' => false,
        \'end_size\' => 2,
        \'mid_size\' => 3,
        \'prev_next\' => true,
        \'prev_text\' => \'Vorige\',
        \'next_text\' => \'Volgende\',
        \'type\' => \'list\'
    ));
    
    由于奇怪的URL行为,我真的不知道问题出在哪里。有什么想法吗?

    1 个回复
    SO网友:eskimo

    我发现了问题。由于我在一个(自定义)贴子页面上,WP会重定向回URL的根。我找到了解决办法here.

    解决方案(从SO上的帖子复制)将此添加到函数中。php:

    add_filter(\'redirect_canonical\',\'pif_disable_redirect_canonical\');
    
    function pif_disable_redirect_canonical($redirect_url) {
    if( is_singular()) {
        $redirect_url = false;
    }
    return $redirect_url;
    }
    
    我已删除&& in_category(\'PLACE CAT ID HERE\') 从帖子中的原始代码中裁剪出适合我的情况。

    相关推荐

    Count posts for pagination

    我正在为一个网站分页<;上一页(页码)下一页>很简单,已经完成。但是现在我需要添加一个选择器来直接转到页面(例如:转到第7页),要这样做,我需要知道有多少页面,为此我需要计算在查询中找到了多少帖子。问题是这个网站有太多的帖子(>13.000),查询所有帖子都会减慢页面加载速度,这就像。。。10秒后页面才能加载。显然,这是不可接受的。分页解决了这个问题,因为一次只加载50或100篇文章,但我无法将它们全部计算在内。我可以在不加载的情况下统计某个查询中的帖子吗?或者我可以通过其他方式获得页数吗