В моих старых темах WordPress (до Gutenberg) я использовал get_theme_mod
, чтобы получить пользовательские значения для определенных вещей в теме.
get_theme_mod( 'news_custom_headline' );
Теперь я хотел бы использовать редактор Гутенберга, но все еще хочу получить доступ к данным из настройщика. Как я могу сделать что-то вроде этого:
save({ attributes }) {
return <p>Value from backend: get_theme_mod( 'news_custom_headline' ) </p>;
}
Ты так не делай. У меня это работает с блоком рендеринга на стороне сервера:
В моем index.js
:
registerBlockType('test/custom-php-render-block', {
title: "Custom Block Server Side Rendering",
category: 'widgets',
edit: () => { return <p>This is just a placeholder!</p>},
save: () => { return null }
});
В functions.php
:
function register_my_custom_block() {
wp_register_script( 'custom-block-php-script', get_template_directory_uri() . '/build/index.js', array('wp-blocks', 'wp-editor'));
wp_enqueue_script('custom-block-php-script');
register_block_type('test/custom-php-render-block', [
'editor_script' => 'custom-block-php-script',
'render_callback' => 'custom_block_php-render'
]);
}
add_action( 'init', 'register_my_custom_block');
function custom_block_php-render($attr, $content) {
return '<p>From customizer: ' . get_theme_mod('your-setting') . '</p>';
}
Подробнее об этом можно прочитать здесь: https://awhitepixel.com/blog/wordpress-gutenberg-create-custom-block-part-9-dynamic-blocks-php-render/