让我的插件创建一个页面?

时间:2012-06-17 作者:Kirill Fuchs

我创建了一个插件,可以在数据库中创建一个表,并允许用户向表中添加项目。我希望每个项目也为自己创建一个页面,以便在列出项目时,我可以将每个项目链接到这些单独的页面。有人知道这样做的正确方法吗?

1 个回复
最合适的回答,由SO网友:Milo 整理而成

您可以使用wp_insert_post 要插入一个物理页面,我建议为插件创建一个页面,然后使用重写规则为所有项目提供一个以该页面为基础的URL。

EDIT

使用添加的查询变量快速重写示例:

function wpa55546_rewrites(){
    $page_slug = \'your-page\';

    // urls will be in the form
    // /your-page/42/

    add_rewrite_rule(
        $page_slug . \'/([0-9]+)/?$\',
        \'index.php?pagename=\' . $page_slug . \'&my_id=$matches[1]\',
        \'top\'
    );
}
add_action( \'init\', \'wpa55546_rewrites\' );


function wpa55546_query_vars( $query_vars ){
    $query_vars[] = \'my_id\';
    return $query_vars;
}
add_filter( \'query_vars\', \'wpa55546_query_vars\' );
然后在模板中,您可以访问查询变量的值:

echo get_query_var( \'my_id\' );
你还必须flush rewrite rules 在适当的时候。

结束

相关推荐

选中Pre_Get_Posts中的Post_Date

我想使用pre\\u get\\u posts过滤器更改提要的顺序。但我想排除比今天早的日期。我知道如果日期是在元键中,但日期是在post\\u date中,怎么能做到这一点。如何检查post\\u date以仅显示晚于今天的帖子?该网站显示未来的发布日期。<?php function feedFilter($query) { if ($query->is_feed) { $query->set(\'order\',\'ASC\');&#