在wp_Insert_POST中定义页面模板

时间:2013-09-19 作者:Poisontonomes

如何设置使用创建此页面的页面模板wp_insert_post, 使用?我想用它template-blog.php

这是我目前的职能;

add_action( \'admin_init\', \'mytheme_admin_init\' );
function mytheme_admin_init() {
if ( get_option( \'mytheme_installed\' ) != true ) {
    $new_page = array(
        \'slug\' => \'blog\',
        \'title\' => \'Blog\',
        \'content\' => ""
    );
    $new_page_id = wp_insert_post( array(
        \'post_title\' => $new_page[\'title\'],
        \'post_type\'     => \'page\',
        \'post_name\'  => $new_page[\'slug\'],
        \'comment_status\' => \'closed\',
        \'ping_status\' => \'closed\',
        \'post_content\' => $new_page[\'content\'],
        \'post_status\' => \'publish\',
        \'post_author\' => 1,
        \'menu_order\' => 0
    ));

    update_option( \'mytheme_installed\', true );
}
}

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

wp_insert_post() documentation, 这个page_template 参数如下所示:

page\\u template:如果post\\u type为“page”,将尝试设置页面模板。失败时,函数将返回WP\\u错误或0,并在调用最终操作之前停止。如果post\\u类型不是“page”,则忽略该参数。您可以通过使用键“\\u wp\\u page\\u template”调用update\\u post\\u meta()为非页面设置页面模板。

因此,您需要使用插入页面wp_insert_post() 并使用page_template 参数:

add_action( \'admin_init\', \'mytheme_admin_init\' );
function mytheme_admin_init() {
    if ( ! get_option( \'mytheme_installed\' ) ) {
        $new_page_id = wp_insert_post( array(
            \'post_title\'     => \'Blog\',
            \'post_type\'      => \'page\',
            \'post_name\'      => \'blog\',
            \'comment_status\' => \'closed\',
            \'ping_status\'    => \'closed\',
            \'post_content\'   => \'\',
            \'post_status\'    => \'publish\',
            \'post_author\'    => get_user_by( \'id\', 1 )->user_id,
            \'menu_order\'     => 0,
            // Assign page template
            \'page_template\'  => \'template-blog.php\'
        ) );

        update_option( \'mytheme_installed\', true );
    }
}
或者,如果要为其他帖子类型设置“页面模板”:

add_action( \'admin_init\', \'mytheme_admin_init\' );
function mytheme_admin_init() {
    if ( ! get_option( \'mytheme_installed\' ) ) {
        $new_page_id = wp_insert_post( array(
            \'post_title\'     => \'Blog\',
            \'post_type\'      => \'my_custom_post_type\',
            \'post_name\'      => \'blog\',
            \'comment_status\' => \'closed\',
            \'ping_status\'    => \'closed\',
            \'post_content\'   => \'\',
            \'post_status\'    => \'publish\',
            \'post_author\'    => get_user_by( \'id\', 1 )->user_id,
            \'menu_order\'     => 0
        ) );

        if ( $new_page_id && ! is_wp_error( $new_page_id ) ){
            update_post_meta( $new_page_id, \'_wp_page_template\', \'template-blog.php\' );
        }

        update_option( \'mytheme_installed\', true );
    }
}

结束

相关推荐

在Functions.php中创建“无文件”页面模板

(所谓“页面模板”,我指的是具有\"Template Name\" header 可在管理页面的“模板”下拉字段中选择。)在多个实例中,我构建了页面模板,可以通过挂接到\\u内容或pre\\u get\\u帖子或类似的内容来完成。这让我想知道是否有一种方法可以在functions.php 或者不创建主题文件本身的插件。我想这样做的原因:在我想到的场景中,我通常只是复制页面。php几乎一字不差。这意味着将来对页面的任何更改。php需要制作两次。随着儿童主题的更新,这更加令人痛苦</我喜欢“模板”字段U