{"id":554,"date":"2016-07-16T16:02:16","date_gmt":"2016-07-16T23:02:16","guid":{"rendered":"https:\/\/2016.vancouver.wordcamp.org\/?post_type=wcb_session&#038;p=554"},"modified":"2016-07-16T16:13:38","modified_gmt":"2016-07-16T23:13:38","slug":"do-it-in-code-a-guide-to-creating-a-custom-site-structure-plugin-in-wordpress","status":"publish","type":"wcb_session","link":"https:\/\/vancouver.wordcamp.org\/2016\/session\/do-it-in-code-a-guide-to-creating-a-custom-site-structure-plugin-in-wordpress\/","title":{"rendered":"Do it in code! A guide to creating a custom site structure plugin in WordPress."},"content":{"rendered":"<p>Many plugins exist for customizing site structure via the admin, which are great, but good developers know that functionality should live in code, and not in the database. We&#8217;ll look at the virtues of creating a custom plugin for your site structure, and explore some great tools to build your custom post types, taxonomy, metaboxes and more: &#8211; CMB2 \u2013 a developer&#8217;s toolkit for building metaboxes, custom fields, and forms &#8211; Advanced Custom Fields &#8211; export your ACF fields to code in PHP or JSON &#8211; GenerateWP &#8211; fill in a form, and spit out code &#8211; post types, taxonomy, metaboxes, shortcodes, and more! Once we\u2019ve got it all in code, we\u2019ll commit it to version control, and look at code hosting and collaboration with GitHub and BitBucket.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Many plugins exist for customizing site structure via the admin, which are great, but good developers know that functionality should live in code, and not in the database. We&#8217;ll look at the virtues of creating a custom plugin for your &hellip; <a href=\"https:\/\/vancouver.wordcamp.org\/2016\/session\/do-it-in-code-a-guide-to-creating-a-custom-site-structure-plugin-in-wordpress\/\">Continue reading <span class=\"assistive-text\">Do it in code! A guide to creating a custom site structure plugin in WordPress.<\/span>  <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":13600367,"featured_media":0,"template":"","meta":{"jetpack_post_was_ever_published":false,"_wcpt_session_time":1472335200,"_wcpt_session_duration":3000,"_wcpt_session_type":"session","_wcpt_session_slides":"","_wcpt_session_video":"","_wcpt_speaker_id":[513],"footnotes":""},"session_track":[5041],"session_category":[],"class_list":["post-554","wcb_session","type-wcb_session","status-publish","hentry","wcb_track-developer"],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7mW3T-8W","session_date_time":{"date":"August 27, 2016","time":"3:00 pm"},"session_speakers":[{"id":"513","slug":"peter-hebert","name":"Peter Hebert","link":"https:\/\/vancouver.wordcamp.org\/2016\/speaker\/peter-hebert\/"}],"session_cats_rendered":null,"_links":{"self":[{"href":"https:\/\/vancouver.wordcamp.org\/2016\/wp-json\/wp\/v2\/sessions\/554","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vancouver.wordcamp.org\/2016\/wp-json\/wp\/v2\/sessions"}],"about":[{"href":"https:\/\/vancouver.wordcamp.org\/2016\/wp-json\/wp\/v2\/types\/wcb_session"}],"version-history":[{"count":1,"href":"https:\/\/vancouver.wordcamp.org\/2016\/wp-json\/wp\/v2\/sessions\/554\/revisions"}],"predecessor-version":[{"id":555,"href":"https:\/\/vancouver.wordcamp.org\/2016\/wp-json\/wp\/v2\/sessions\/554\/revisions\/555"}],"speakers":[{"embeddable":true,"href":"https:\/\/vancouver.wordcamp.org\/2016\/wp-json\/wp\/v2\/speakers\/513"}],"author":[{"embeddable":true,"href":"https:\/\/vancouver.wordcamp.org\/2016\/wp-json\/wporg\/v1\/users\/peterhebert"}],"wp:attachment":[{"href":"https:\/\/vancouver.wordcamp.org\/2016\/wp-json\/wp\/v2\/media?parent=554"}],"wp:term":[{"taxonomy":"wcb_track","embeddable":true,"href":"https:\/\/vancouver.wordcamp.org\/2016\/wp-json\/wp\/v2\/session_track?post=554"},{"taxonomy":"wcb_session_category","embeddable":true,"href":"https:\/\/vancouver.wordcamp.org\/2016\/wp-json\/wp\/v2\/session_category?post=554"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}