Add block programmatically in the right region I have followed the instruction to create a new block here which is basically the same as here on SE. My block is indeed created but the region is wrongly set to "none" instead of "Content Post".

In my module events.module file:

function events_block_info () {
    return [
        'events_list' =&gt; [
            'info'       =&gt; "Events list",
            'region'     =&gt; 'content_post',
            'visibility' =&gt; BLOCK_VISIBILITY_NOTLISTED
        ]
    ];
}

function events_block_view ($delta = '') {
    $result = false;
    if ($delta == 'events_list') {
        /* ... do my stuff .... */
    }

    return $result;
}


This creates a block but the region is set to "none". The drawback is I have to go on each environment and change the region manually back to "Content Post". It is inefficient.

I also find it extremely weird that the creation of a block is done this way. I would expect instead that the creation takes place in the module.install file in the hook_install() function. Maybe there is way?
I think you need to set 'status'.
eg.  

function events_block_info () {
    return [
        'events_list' =&gt; [
            'info'       =&gt; "Events list",
            'status'     =&gt; TRUE,
            'region'     =&gt; 'content_post',
            'visibility' =&gt; BLOCK_VISIBILITY_NOTLISTED
        ]
    ];
}