El ejemplo anterior está lo suficientemente cerca pero aún no es correcto. La idea es que tiene que encontrar su propia identificación de la instancia de bloque (en mi caso devel_execute_php_1112 (tal vez porque intenté hacerlo funcionar 1112 veces, seguirá siendo un misterio)) y luego la identificación de bloque real (la que se declara para los bloques personalizados en la anotación) y el tema. Luego simplemente configura la región y listo. Creó una instancia de un bloque debajo de la región deseada.
$blockEntityManager = \Drupal::service('entity.manager')->getStorage('block');
$block = $blockEntityManager->create(
array(
'id'=> 'devel_execute_php_1112',
'plugin' => 'devel_execute_php',
'theme' => 'seven'
)
);
$block->setRegion('content');
$block->save();
edit1: Realmente revisé más tarde el comentario anterior, y es correcto. Simplemente no está claro que la identificación es algo con lo que tienes que pensar. Como canje por mi comentario poco convincente, publicaré una solución sobre cómo crear una instancia de bloque de una entidad de bloque personalizada:
$blockEntityManager = \Drupal::service('entity.manager')->getStorage('block');
$block = $blockEntityManager->create(
array(
'id'=> 'ggggggggsssssss',
'plugin' => 'block_content:79d53b4e-9e60-4f97-befc-101da919bb7a',
'theme' => 'visitb_he_theme'
)
);
$block->setRegion('content');
básicamente lo mismo, pero para un complemento escribes block_content: uuid_of_custom_block_entity_instance