Установите пользовательский тип записи для загрузки пользовательского шаблона блока по умолчанию.

Вопрос или проблема

Я зарегистрировал пользовательский блок-шаблон для использования в моей теме 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 или форумам разработчиков.

Оцените материал
Добавить комментарий

Капча загружается...