覆盖来自LatestPosts的RenderCallback

时间:2019-12-01 作者:Alaksandar Jesus Gene

我正在创建一个基于materialize css的wordpress网站,并尝试在我的主页中填充最新的帖子。

我确实在guttenberg编辑器中设置了最新的帖子。要应用卡片效果,我需要编辑核心文件(不推荐)。因此,我只更改了render\\u回调函数,一切正常。

问题:如何重写render\\u回调函数,以便不接触核心文件

wp-includes\\blocks\\latest-posts.php

function render_block_core_latest_posts( $attributes ) {
.
.
.

}

function register_block_core_latest_posts() {
    register_block_type(
core/latest-posts\',
        array(
    \'attributes\'      => array(
.
.
.
),
\'render_callback\' => \'render_block_core_latest_posts\', // original core file, commented this line
            \'render_callback\' => \'render_block_theme_latest_posts\', // my edited code
);
}
add_action( \'init\', \'register_block_core_latest_posts\' );

functions.php

function render_block_theme_latest_posts(){
// My materialize css code for card
return \'hello world\';
}
我的wordpress版本是5.3

注意,我不想更改任何功能。只有前端css。

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

你当然可以(不推荐)。我只是深入挖掘源代码中没有使用过滤器/动作挂钩register_block_type() 这是相关的课程。唯一的方法(WordPress 5.3)是在主题或插件中重新定义最新的帖子块。最好的方法是创建自定义块。

// Remove the existing action
remove_action( \'init\', \'register_block_core_latest_posts\', 10 );
your_render_callback( $attributes ) {...}
function register_block_core_latest_posts_wpse353682() {
    register_block_type(
        \'core/latest-posts\',
        \'attributes\' = [...], // copy attributes from the original function...
        \'render_callback\' => \'your_render_callback\',
    );
}
// Re-attach the block
add_action( \'init\', \'register_block_core_latest_posts_wpse353682\' );

相关推荐