在更改过滤器时清除或重置 wordpress 帖子分页

Posted

技术标签:

【中文标题】在更改过滤器时清除或重置 wordpress 帖子分页【英文标题】:Clear or reset the wordpress posts pagination while changing filters 【发布时间】:2015-10-06 11:24:10 【问题描述】:

我认为这很简单,但我不明白。 这是我的过滤器:

<form class='post-filters'>
    <select name="filter">
        <?php
        $filter_options = array(
            'houses' => 'Houses',
            'hotels' => 'Hotels',
        );
        foreach( $filter_options as $value => $label ) 
            echo "<option ".selected( $_GET['filter'], $value )." value='$value'>$label</option>";
        
        ?>
    </select>
    <input type='submit' value='Filter!'>
</form>

将过滤器应用于wordpress查询的相关PHP:

<?php 
    global $destinations;
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $destinations = new WP_Query([
        'paged' => $paged,
        'location' => $location,
        'category_name' => urldecode(get_query_var('filter')),
        'posts_per_page' => 6
    ]);
 ?>

如果我确实选择了我的“过滤器”并且结果有六个以上的条目,我使用next_posts_link() 来查看接下来的六个结果。现在的问题是,如果我在第 2 页或第 3 页,而另一个过滤器的数量少于例如6 个条目,我在更改过滤器时将看不到任何结果。

如何在更改过滤器时清除 get 变量 (/page/2/)?

例子:

category/subcategory/subsubcategory/page/3/?filter=houses 

现在我选择“过滤”酒店

category/subcategory/subsubcategory/page/3/?filter=hotels

并且“/page/3”不会被清除。所以有些帖子我看不到。

【问题讨论】:

将表单的 action 设置为帖子的根 URL(过滤结果的第一页) 好点,我错过了。如何使用 Wordpress 方法获取当前 URL?我目前正在尝试remove_query_arg()home_url( $wp-&gt;request ) 你能分享一个完整的示例网址吗? @rnevius,我添加了一个例子! 【参考方案1】:

这里已经解决了: https://wordpress.stackexchange.com/a/264266

function get_nopaging_url() 
    $current_url =  $_SERVER[REQUEST_URI];

    $pattern = '/page\\/[0-9]+\\//i';
    $nopaging_url = preg_replace($pattern, '', $current_url);

    return  $nopaging_url;

您可以使用此功能通过过滤器删除网址中的分页。

查看示例:

<a href="<?php echo get_nopaging_url(); ?>?filter=houses">

【讨论】:

以上是关于在更改过滤器时清除或重置 wordpress 帖子分页的主要内容,如果未能解决你的问题,请参考以下文章

用于解析现有帖子的Wordpress方法

mysql:从 10k wordpress 帖子中清除垃圾,但保留相关内容

在 Wordpress 中使用自定义帖子类型时无法在循环中过滤类别

按类别过滤 Wordpress 帖子时对 GatsbyJS 页面进行分页

Wordpress 搜索和过滤器自动提交

使用下拉菜单动态过滤 Wordpress 帖子(使用 php 和 ajax)