#wordpress-gutenberg #gutenberg-blocks
#wordpress-gutenberg #gutenberg-blocks
Вопрос:
Хоть убейте, я ничего не могу найти о том, как это сделать: просто выведите повторно используемый блок gutenberg через php в шаблоне темы. Похоже, это должно быть выполнимо. Кто-нибудь?
Ответ №1:
Возможно, отвечая на мой собственный вопрос. Пожалуйста, скажите мне, есть ли лучший / более простой способ сделать это.
<?php
// get reusable gutenberg block:
$gblock = get_post( 7418 );
echo apply_filters( 'the_content', $gblock->post_content );
?>
Первый недостаток, который я вижу в этом, заключается в том, что неудобно искать идентификатор записи блока.
Комментарии:
1. Как вы находите идентификатор вашего повторно используемого блока?
2. Единственный известный мне способ — перейти сюда: /wp-admin/edit.php?post_type=wp_block Затем наведите указатель мыши на ссылку редактирования вашего блока и посмотрите на идентификатор в URL.
3. @protohominid Должно быть проще получить блок gutenberg (не идентификатор, а само содержимое), я также трачу много времени на поиск прямого решения и никак…
4. site.com/wp-admin/edit.php?post_type=wp_block
5. Я согласен. Я хотел бы решение, которое использует что-то вроде get_page_by_title(), потому что идентификатор изменится при перемещении темы на новый сайт.
Ответ №2:
Я только что нашел этот удобный маленький фрагмент. Он добавляет повторно используемые блоки в качестве ссылки администратора. Оказавшись там, вы можете легко определить идентификатор нужного вам повторно используемого блока. https://github.com/WordPress/gutenberg/issues/15549
add_menu_page( 'linked_url', 'Reusable Blocks', 'read', 'edit.php?post_type=wp_block', '', 'dashicons-editor-table', 22 );
}
Комментарии:
1. Большое вам спасибо! Я не знаю, почему в WordPress это не включено по умолчанию.
Ответ №3:
Как указано gtamborero здесь, вы можете использовать get_page_by_title(), но вам нужно указать, что это ‘wp_block’. Его пример работает для меня (с использованием WP 5.8.1):
get_page_by_title( 'Your Title', OBJECT, 'wp_block' );
Я использую его следующим образом:
$myPost = get_page_by_title( 'Your Title', OBJECT, 'wp_block' );
$myContent = apply_filters('the_content', $myPost->post_content);
echo $myContent;
Ответ №4:
Существует способ выполнения запроса по заголовку без использования get_page_by_title (устаревший в 6.2). Мы можем использовать wp_query() с типом post wp_blocks, в котором хранятся повторно используемые блоки.
В приведенном здесь примере запрашивается wp_block, который озаглавлен «Глобальный призыв к действию» и опубликован.
$query = new WP_Query(
array(
'post_type' => 'wp_block',
'title' => 'Global Call To Action',
'post_status' => 'publish',
'posts_per_page' => 1
)
);
if ( $query->have_posts() ) {
$object = $query->post;
echo apply_filters('the_content', $object->post_content);
}
wp_reset_postdata();