{"id":3962,"date":"2025-03-12T17:57:23","date_gmt":"2025-03-12T16:57:23","guid":{"rendered":"https:\/\/vienna.wordcamp.org\/2025\/?post_type=wcb_session&#038;p=3962"},"modified":"2025-03-12T17:57:45","modified_gmt":"2025-03-12T16:57:45","slug":"building-custom-user-interfaces-with-wordpress-components","status":"publish","type":"wcb_session","link":"https:\/\/vienna.wordcamp.org\/2025\/session\/building-custom-user-interfaces-with-wordpress-components\/","title":{"rendered":"Building custom user interfaces with WordPress components"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">There are many plugins building custom UIs in the admin area. Sometimes it makes sense, since it&#8217;s easier to perform certain actions with dedicated interface. Unfortunately, many times it&#8217;s done wrong, and the UI stands out from the rest of the admin. This will only become a bigger problem when new WordPress admin UI will land in core. In this talk, I&#8217;m going to show how to utilize @\u200cwordpress\/components package to build beautiful, custom plugin interface that feels like it belongs to WordPress admin. We&#8217;ll also touch on how to make this fully interactive and do it &#8220;the WordPress way&#8221;. The future of WordPress and WordPress plugin development is bright, so let&#8217;s get everyone on board with the latest goodness from the Gutenberg team and discover what this enables us to do!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are many plugins building custom UIs in the admin area. Sometimes it makes sense, since it&#8217;s easier to perform certain actions with dedicated interface. Unfortunately, many times it&#8217;s done wrong, and the UI stands out from the rest of the admin. This will only become a bigger problem when new WordPress admin UI will &hellip; <a href=\"https:\/\/vienna.wordcamp.org\/2025\/session\/building-custom-user-interfaces-with-wordpress-components\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Building custom user interfaces with WordPress components&#8221;<\/span><\/a><\/p>\n","protected":false},"author":14430719,"featured_media":0,"template":"","meta":{"_crdt_document":"","jetpack_post_was_ever_published":false,"_wcpt_session_time":1745658900,"_wcpt_session_duration":3000,"_wcpt_session_type":"session","_wcpt_session_slides":"","_wcpt_session_video":"","_wcpt_speaker_id":[3717],"footnotes":""},"session_track":[31],"session_category":[],"class_list":["post-3962","wcb_session","type-wcb_session","status-publish","hentry","wcb_track-track-dev"],"jetpack_sharing_enabled":true,"session_date_time":{"date":"April 26, 2025","time":"11:15"},"session_speakers":[{"id":"3717","slug":"dawid-urbanski","name":"Dawid Urba\u0144ski","link":"https:\/\/vienna.wordcamp.org\/2025\/speaker\/dawid-urbanski\/"}],"session_cats_rendered":null,"_links":{"self":[{"href":"https:\/\/vienna.wordcamp.org\/2025\/wp-json\/wp\/v2\/sessions\/3962","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vienna.wordcamp.org\/2025\/wp-json\/wp\/v2\/sessions"}],"about":[{"href":"https:\/\/vienna.wordcamp.org\/2025\/wp-json\/wp\/v2\/types\/wcb_session"}],"version-history":[{"count":1,"href":"https:\/\/vienna.wordcamp.org\/2025\/wp-json\/wp\/v2\/sessions\/3962\/revisions"}],"predecessor-version":[{"id":3963,"href":"https:\/\/vienna.wordcamp.org\/2025\/wp-json\/wp\/v2\/sessions\/3962\/revisions\/3963"}],"speakers":[{"embeddable":true,"href":"https:\/\/vienna.wordcamp.org\/2025\/wp-json\/wp\/v2\/speakers\/3717"}],"author":[{"embeddable":true,"href":"https:\/\/vienna.wordcamp.org\/2025\/wp-json\/wporg\/v1\/users\/dawidurbanski"}],"wp:attachment":[{"href":"https:\/\/vienna.wordcamp.org\/2025\/wp-json\/wp\/v2\/media?parent=3962"}],"wp:term":[{"taxonomy":"wcb_track","embeddable":true,"href":"https:\/\/vienna.wordcamp.org\/2025\/wp-json\/wp\/v2\/session_track?post=3962"},{"taxonomy":"wcb_session_category","embeddable":true,"href":"https:\/\/vienna.wordcamp.org\/2025\/wp-json\/wp\/v2\/session_category?post=3962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}