在主题激活时以编程方式创建块

时间:2020-01-30 作者:bckelley

我已经将我的主题设置为激活页面上创建和设置模板的位置,如何添加古腾堡块?

UPDATE:

不创建页面,如果我注释掉page\\u block\\u模板函数并将“post\\u content”设为空字符串\' \' 然后它将创建页面。那么如何做到这一点,向页面模板添加块呢?

函数向页面添加块。

function page_block_template() {
    $pages_type_object = get_post_type_object( \'page\' );
    $pages_type_object->template = array( 
        array( \'core/heading\', array( 
            \'level\'         =>  \'3\',
            \'className\'     =>  \'header\',
            \'content\'       =>  \'\'
         ) ),
        array( \'core/separator\', array( 
            \'className\' =>  \'is-style-wide\'
        ) ),
        array( \'core/paragraph\', array( 
            \'className\' =>  \'margin\',
        ) ),

        array( \'core/list\', array( 
            \'className\' =>  \'list-unstyled h5\',
            // STYLE <li class="list-inline-item"> ??

        ) ),

        array( \'core/heading\', array( 
            \'level\'         =>  \'3\',
            \'className\'     =>  \'header\',
            \'content\'       =>  \'\'
         ) ),
        array( \'core/separator\', array( 
            \'className\' =>  \'is-style-wide\'
        ) ),
     );
     $pages_type_object->template_lock = \'all\';
}
add_action( \'init\', \'page_block_template\' );
创建页面

if (isset($_GET[\'activated\']) && is_admin()) {
    $page_title = \'Page\';
    $page_content = page_block_template();
    $page_check = get_page_by_title($page_title);
    $page = array( 
        \'post_type\'     =>  \'page\',
        \'post_title\'    =>  $page_title,
        \'post_content\'  =>  $page_content,
        \'post_status\'   =>  \'publish\',
        \'post_author\'   =>  $user_id,
        \'post_slug\'     =>  \'page\'
    );
    if(!isset($page_check->ID) && !the_slug_exists(\'page\')) {
        $page_id = wp_insert_post($page);
    }
}

1 个回复
最合适的回答,由SO网友:Vitauts Stočka 整理而成

不能以这种方式使用块样板。只有Gutenberg在客户端(JavaScript)创建新帖子内容时才使用它们。在本例中,您正在服务器端(PHP)上创建页面。但是,您可以使用初始块结构创建页面。手动创建新页面并保存它,而不添加任何内容(只有块模板定义的空块结构)。那就去吧post_content 使用某个DB客户端从数据库中获取值,或者在某个临时PHP函数中读取并打印该值。但您必须准确地获取存储在数据库中的值。将此文本用作的字符串值post_content 在页面创建代码中。

这样,您将创建新页面,初始内容与块模板匹配。如果更改模板结构,请不要忘记更改值。

相关推荐