如何仅在编辑首页时激活某个块模板?

时间:2019-04-02 作者:Richard B

我选择了一个自定义页面(-post)作为我的首页。现在,我想在古腾堡编辑器中编辑块模板时,只在该页面上使用块模板。据我所知,在我知道post\\u ID之前,我必须将其添加到“init”或其附近,这样我就不能if ( get_option( \'page_on_front\' ) === $post_ID ).

我的选择是什么?

Edit:我尝试过此操作,但由于is\\u front\\u page()返回“false”,因此无法正常工作:

function home_block_template() {
    $post_type_object = get_post_type_object( \'post\' );

    if ( is_front_page() ) {
        $post_type_object->template = array(
            array( \'core/image\', array() ),
        );
    }
}
add_action( \'init\', \'home_block_template\' );

2 个回复
最合适的回答,由SO网友:Richard B 整理而成

背景$post_type_object->template 似乎是在“init”(或接近它)上完成的,而is_front_page() 设置得比较晚,所以我必须使用$_GET[\'post\'] 相反我也改变了get_post_type_object( \'post\' ) 至“第页”。像这样:

add_action( \'init\', \'home_block_template\' );
function home_block_template() {
    if ( ! is_admin() || ! isset( $_GET[\'post\'] ) || get_option( \'page_on_front\' ) !== $_GET[\'post\'] ) {
        return false;
    }

    $post_type_object = get_post_type_object( \'page\' );
    $post_type_object->template = array(
        array( \'core/list\' ),
    );
}

SO网友:Mehmood Ahmad

如果您遇到任何问题,请告诉我以下代码对您有用。

function myplugin_register_template() {
    $post_type_object = get_post_type_object( \'post\' );

    if( is_front_page() ) {
        $post_type_object->template = array(
            array( \'core/image\' ), // add your core/custom blocks here
        );
    }
}
add_action( \'init\', \'myplugin_register_template\' );

相关推荐

如何使用index.php在FrontPage上显示插件功能(内容)

稍微高级的Noob警报:{抱歉}。我正在设计一个WordPress网站{尚未激活}。我有一个插件[feelbox],但目前它只显示在单个贴子页面上。插件设置中没有在frontpage[index.php]上显示它的选项。这里是主要的插件文件-feelbox。php太长,无法在此处发布。以下是第一部分:> if (!$options) { feelbox_add_default_options(); } else { if ($optio