呈现多个页面及其后代的内容

时间:2017-10-17 作者:Eric

我想公开一条到我的网站的路线,animals.example.com/book, 显示查询参数中指定的页和子体的所有内容。

例如,如果我的页面结构是

intro
pets
    dogs
    cats
farm-animals
    cows
    chickens
    sheep
wild-animals
    predators
        wolves
        coyotes
    ruminants
        deer
        rabbits
appendix
    average-weights
    faq
    common-myths
我想要端点

animals.example.com/book?include=[farm-animals,predators]

要按顺序呈现这些页面的内容,请执行以下操作:

农场动物、奶牛、鸡、绵羊、掠食者、狼、土狼如果省略查询参数,则应呈现整个站点。

需要哪些函数或查询来实现这一点,以及这种逻辑应该在哪里连接到WordPress?

1 个回复
SO网友:Jesse Vlasveld

您可以添加自定义query variables 使用WordPressadd_query_var().

global $wp;
$wp->add_query_var( \'includes\' );
添加了查询变量后,您将检查是否通过get_query_var(\'includes\'), 那么你可以使用WP_Query() 获取页面(您可以查看可用的参数here).

如果省略了它,您只需运行一个查询来获取页面的所有子级。

另一个很好的补充是使用add_rewrite_rules.

function custom_query_var() {
    global $wp;
    add_rewrite_rule( \'^books/(.+)\', \'index.php?pagename=books&includes=$matches[1], \'top\' );
}
add_action( \'init\', \'custom_query_var\' );
如果切换到其他主题,则需要刷新这些规则。

function flush_custom_query_var() {
    flush_rewrite_rules();
}
add_action( \'after_theme_switch\', \'flush_custom_query_var\' );
在传递一个参数数组而不是一个参数数组时,我实际上没有测试重写规则,因此需要进行一些修改。

结束

相关推荐

Virtual Pages plugins

我很难让插件正常工作Virtual Pages (WordPress插件可简化虚拟页面的创建)我确实进行了编辑,根据查询创建了一个循环。add_action( \'gm_virtual_pages\', function( $controller ) { /* Creating virtuals pages for companies */ $args = array( \'post_type\' => array(\'companies\',), \'post_status\'