分页和重写规则会在WordPress中产生问题

时间:2018-02-24 19:36:46

标签: php wordpress url-rewriting args

Wi在自定义页面模板上有自定义页面应该列出用户帖子,这可行,但我有查询arg应该在已发布和未发布(草稿)帖子之间进行过滤。除此之外,它应该有分页,所以它每页只显示10个帖子。

如果我想列出所有帖子并转到第二页,则存在问题。

为了能够通过过滤器进行浏览并进行分页,我已经进行了自定义重写并且它可以正常工作,但是没有过滤器分页只会给出第一页。

为了更好地理解这是如何运作的。

mywebsite.com/my-posts/< ----这是有效的

mywebsite.com/my-posts/published/< ----这是有效的

mywebsite.com/my-posts/published/page/2< ----这是有效的

mywebsite.com/my-posts/page/2< ----这不起作用

没有漂亮的永久链接结构就像这样

mywebsite.com/?page_id=23

mywebsite.com/?page_id=23&filter=published

mywebsite.com/?page_id=23&filter=published&paged=2

mywebsite.com/?page_id=23&paged=2

现在,如果我不使用漂亮的固定链接,它可以工作,但我想要重写的东西,我无法弄清楚。

function custom_rewrite_rule() {
    add_rewrite_tag('%filter%', '([^&]+)');

    // add_rewrite_rule(get_post_field( 'post_name', get_theme_option('user_link') ) . '/([^/]+)/page/([0-9]{1,})/?','index.php?page_id='. get_theme_option('user_link') .'&user=$matches[1]&paged=$matches[2]','top');
    // add_rewrite_rule(get_post_field( 'post_name', get_theme_option('user_link') ) . '/([^/]+)/?','index.php?page_id='. get_theme_option('user_link') .'&user=$matches[1]','top');
    // add_rewrite_tag('%user%', '([^&]+)');

    add_rewrite_rule(get_post_field( 'post_name', get_theme_option('myprofile_page') ) . '/([^/]+)/?','index.php?page_id='. get_theme_option('myprofile_page') .'&filter=$matches[1]','top');
    add_rewrite_rule(get_post_field( 'post_name', get_theme_option('myprofile_page') ) . '/([^/]+)/page/([0-9]{1,})/?','index.php?page_id='. get_theme_option('myprofile_page') .'&filter=$matches[1]&paged=$matches[2]','bottom');
    add_rewrite_rule(get_post_field( 'post_name', get_theme_option('myprofile_page') ) . '/page/([0-9]{1,})/?','index.php?page_id='. get_theme_option('myprofile_page') .'&paged=$matches[1]','bottom');
}
add_action('init', 'custom_rewrite_rule', 10, 0);

function custom_query_vars( $vars ) {
    array_push($vars, 'filter');
    return $vars;
}
add_filter( 'query_vars', 'custom_query_vars' );

我知道paged filterscene.getStylesheets().add("Package Name/Viper.css"));互相干扰,但这是我尝试的最后一个解决方案,但它无效。

0 个答案:

没有答案