Replace line in 4columns.xml:
<referenceContainer name="4columns">
to:
<referenceContainer name="columns">
We adding new column in container named "columns", not "4columns". It work good for me.
Full page layout with sample text in fourth column:
<?xml version="1.0"?>
<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_layout.xsd">
<update handle="empty"/>
<referenceContainer name="page.wrapper">
<container name="header.container" as="header_container" label="Page Header Container" htmlTag="header" htmlClass="page-header" before="main.content"/>
<container name="page.top" as="page_top" label="After Page Header" after="header.container"/>
<container name="footer-container" as="footer" before="before.body.end" label="Page Footer Container" htmlTag="footer" htmlClass="page-footer"/>
</referenceContainer>
<referenceContainer name="columns">
<container name="div.sidebar.main" htmlTag="div" htmlClass="sidebar sidebar-main" after="main">
<container name="sidebar.main" as="sidebar_main" label="Sidebar Main"/>
</container>
<container name="div.sidebar.additional" htmlTag="div" htmlClass="sidebar sidebar-additional" after="div.sidebar.main">
<container name="sidebar.additional" as="sidebar_additional" label="Sidebar Additional"/>
</container>
<container name="fourth.column" htmlTag="div" htmlClass="fourth-column" after="-">
<block class="Magento\Framework\View\Element\Text">
<arguments>
<argument name="text" xsi:type="string">Sample text in fourth column</argument>
</arguments>
</block>
</container>
</referenceContainer>
</layout>