Programatically create a page

时间:2013-06-17 作者:William

是否可以通过编程方式创建页面?我想这样做,我可以在一个主题中创建一个模板文件,并能够指向该页面的链接,而不必依赖用户使用tempalte手动创建页面。

这可能吗?

更新:到目前为止的解决方案这是我到目前为止想到的:

add_action( \'init\', \'add_virtual_page_template\' );

function add_virtual_page_template()
{
    global $wp, $wp_rewrite;

    $wp->add_query_var( \'template\' );
    add_rewrite_endpoint( \'fish\', EP_ROOT );

    $wp_rewrite->add_rule(  \'fish/?\', \'index.php?template=fish\', \'top\' );
    $wp_rewrite->flush_rules();
}

add_action( \'template_redirect\', \'add_virtual_page_redirect\' );

function add_virtual_page_redirect()
{

    global $wp;
    $template = $wp->query_vars;

    if ( array_key_exists( \'template\', $template ) && $template[\'template\'] == \'fish\' )
    {

    global $wp_query;
    $wp_query->set( \'is_404\', false );
    include( get_stylesheet_directory() . \'/page-fish.php\' );
    exit;
}
这两个都在函数中。我的主题的php文件。

这段代码成功地服务于page fish的内容。php,就像我创建了一个页面并将其设置为模板一样。

到目前为止出现的一件事是:使用此方法的站点的URL是

www.url。com/登录/

但是,如果我创建一个页面并手动设置模板,URL如下所示:

www.url。com/登录

这相对较小,但是否有办法解决此问题?

使用我在这里使用的总体方法是否会遇到其他问题?

1 个回复
SO网友:birgire

你可以试试

// add a new page
$args = array (
    \'post_type\'   => \'page\', 
    \'post_title\'  => \'My New Page\',
    \'post_status\' => \'publish\',
); 
$pid = wp_insert_post( $args );

// add a custom template file to the newly created page
if( $pid > 0 )
    add_post_meta( $pid, \'_wp_page_template\', \'custom-template.php\' );
其中,我们通过_wp_page_template 元键。

结束

相关推荐

Custom Post Type Templates?

是否可以为自定义帖子类型设置模板?例如,您有一个具有4种不同布局变体的公文包页面,您希望用户能够选择此帖子/页面所需的布局?想知道你们这些好人有没有办法?谢谢:)