- Вопрос или проблема
- Ответ или решение
- Настройка пользовательского типа записи для загрузки пользовательского блока по умолчанию в WordPress
- Шаг 1: Регистрация пользовательского шаблона блока
- Шаг 2: Установка шаблона блока по умолчанию для пользовательского типа записи
- Учет особенностей сети WordPress
- Заключение
Вопрос или проблема
Я зарегистрировал пользовательский блок-шаблон для использования в моей теме WordPress с редактором сайтов, не являющимся полноэкранным. Шаблон доступен для вставки в стандартные и пользовательские записи. Теперь мне интересно, как его можно установить в качестве шаблона, который загружается по умолчанию, когда пользователь создает новую запись для пользовательского типа записи.
Я включил функцию регистрации шаблона и мой “работающий” код для установки по умолчанию для пользовательского типа записи.
if ( ! function_exists( 'register_document_block_pattern' ) ) :
function register_document_block_pattern() {
register_block_pattern(
'theme-name/document-block-pattern',
array(
'title' => __( 'Шаблон блока документа', 'theme-name' ),
'description' => _x( 'Шаблон блока для отображения встраиваемого PDF с ссылкой для скачивания документа ниже.', 'Описание шаблона блока', 'theme-name' ),
'content' => "<!-- wp:pdfemb/pdf-embedder-viewer {\"pdfID\":786,\"url\":\"https://domain.com/rm-template/wp-content/uploads/sites/3/sample-document.pdf\"} /-->\n<!-- wp:file {\"id\":786,\"href\":\"https://domain.com/rm-template/wp-content/uploads/sites/3/sample-financial.pdf\",\"showDownloadButton\":false,\"displayPreview\":false} -->\n<div class=\"wp-block-file\">\n<a href=\"https://domain.com/rm-template/wp-content/uploads/sites/3/sample-financial.pdf\">Пример файла</a>\n</div><!-- /wp:file -->\n",
),
);
}
endif;
add_action( 'init', 'register_document_block_pattern' );
if ( ! function_exists( 'set_document_block_pattern' ) ) :
function set_document_block_pattern( $editor_settings, $post ) {
if ( $post->post_type === 'document' ) {
$editor_settings['defaultBlockTemplate'] = [
[
// Не уверен, как правильно загрузить небазовый блок для встраивания PDF
[['core/file', ['href' => 'https://domain.com/rm-template/wp-content/uploads/sites/3/sample-financial.pdf']]],
],
];
return $editor_settings;
}
}
endif;
add_filter( 'block_editor_settings_all', 'set_document_block_pattern', 10, 2 );
Примечание
Вебсайт является сайтом сети WordPress. Я не уверен, вызывает ли это какие-либо проблемы с пользовательскими блок-шаблонами.
Ответ или решение
Настройка пользовательского типа записи для загрузки пользовательского блока по умолчанию в WordPress
Если вы являетесь разработчиком WordPress и хотите автоматически загружать созданный вами шаблон блока при создании новой записи определённого пользовательского типа (например, document
), вам потребуется внести некоторые изменения в код вашей темы. В данном руководстве я расскажу, как это сделать, рассматривая ваш код и предлагая необходимые поправки.
Шаг 1: Регистрация пользовательского шаблона блока
Первым делом ваш код для регистрации пользовательского шаблона блока, похоже, корректен. Убедитесь, что функция register_document_block_pattern
добавлена через хук init
. Тем не менее, вы можете расширить массив content
, добавив дополнительные блоки, если это необходимо:
if ( ! function_exists( 'register_document_block_pattern' ) ) :
function register_document_block_pattern() {
register_block_pattern(
'theme-name/document-block-pattern',
array(
'title' => __( 'Document Block Pattern', 'theme-name' ),
'description' => _x( 'A block pattern to display an embedded PDF with a document download link below.', 'Block pattern description', 'theme-name' ),
'content' => '<!-- wp:pdfemb/pdf-embedder-viewer {"pdfID":786,"url":"https://domain.com/rm-template/wp-content/uploads/sites/3/sample-document.pdf"} /-->' . "\n" .
'<!-- wp:file {"id":786,"href":"https://domain.com/rm-template/wp-content/uploads/sites/3/sample-financial.pdf","showDownloadButton":false,"displayPreview":false} -->' . "\n" .
'<div class="wp-block-file">' . "\n" .
'<a href="https://domain.com/rm-template/wp-content/uploads/sites/3/sample-financial.pdf">Sample File</a>' . "\n" .
'</div><!-- /wp:file -->' . "\n",
)
);
}
endif;
add_action( 'init', 'register_document_block_pattern' );
Шаг 2: Установка шаблона блока по умолчанию для пользовательского типа записи
Чтобы установить данный шаблон блока по умолчанию для пользовательского типа записи, вам нужно корректно объявить defaultBlockTemplate
в функции set_document_block_pattern
. А также убедитесь, что вы используете правильные идентификаторы блоков, которые зарегистрированы в вашей системе:
if ( ! function_exists( 'set_document_block_pattern' ) ) :
function set_document_block_pattern( $editor_settings, $post ) {
if ( isset( $post->post_type ) && $post->post_type === 'document' ) {
$editor_settings['defaultBlockTemplate'] = [
[
// Используйте правильный блок PDF экстрактора, здесь это может потребовать правильные параметры
['pdfemb/pdf-embedder-viewer', ['pdfID' => 786, 'url' => 'https://domain.com/rm-template/wp-content/uploads/sites/3/sample-document.pdf']],
['core/file', ['href' => 'https://domain.com/rm-template/wp-content/uploads/sites/3/sample-financial.pdf']],
],
];
}
return $editor_settings;
}
endif;
add_filter( 'block_editor_settings_all', 'set_document_block_pattern', 10, 2 );
Учет особенностей сети WordPress
Учтите, что использование сети WordPress (multi-site) может внести некоторые нюансы в вашу реализацию. Особенно если блочные шаблоны были добавлены в одном сайте, а вам нужно использовать их в других. Убедитесь, что ваш шаблон блока доступен на всех подпроектах, где вы планируете его использовать.
Заключение
Вышеуказанные шаги помогут вам установить пользовательский блок по умолчанию для пользовательского типа записей в WordPress. Убедитесь, что ваш код протестирован, особенно в контексте многосайтового окружения. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью к сообществу WordPress или форумам разработчиков.