Wordpress 替代 URL 存档页面

Wordpress alternative URL to archive page

我有一个名为 myalbums 的自定义 post 类型,因此要存档的 url 页面是 http://mysite/gallery(我在创建时添加了 'rewrite' => ['slug' => 'gallery']) .

所以,我想有一个替代 URL 像 http://mysite/gallery/special 来查看相同的页面,但有一点过滤器。在一个页面上您可以看到一些相册,在另一个页面上您可以看到其他相册。

我该怎么做,我怎么知道用户何时使用其中之一?

PS。我使用 Timber Wordpress

创建页面模板并使用 WP_Query 来 return 该页面上的自定义帖子。然后,您可以将 AJAX 过滤器添加到 hide/show 个帖子。我不会为您编写完整的代码,但这里是 WP_QUERY 文档的开始,以显示您的帖子。

// The Query returns all custom posts
$the_query = new WP_Query( 'post_type' => 'myalbums', 'posts_per_page'   => -1 );

// The Loop
if ( $the_query->have_posts() ) {
    echo '<ul>';
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        echo '<li>' . get_the_title() . '</li>';
    }
    echo '</ul>';
    /* Restore original Post Data */
    wp_reset_postdata();
} else {
    // no posts found
}

我只是像这样重写 api:

add_filter('query_vars', 'add_query_vars');
function add_query_vars($aVars) {
    $aVars[] = "my-var";
    return $aVars;
}

add_filter('rewrite_rules_array', 'add_rewrite_rules');
function add_rewrite_rules($aRules) {
    $aNewRules = array('gallery/special/([^/]+)/?$' => 'index.php?post_type=myalbums&my-var=$matches[1]');
    $aRules    = $aNewRules + $aRules;
    return $aRules;
}

无法访问 http://mysite/gallery/special/anything 此请求转到 archive.php 文件,我只需调用 $wp_query->query_vars['my-var'].

即可获得 var