{"id":5283,"date":"2020-02-25T20:36:14","date_gmt":"2020-02-26T01:36:14","guid":{"rendered":"https:\/\/2020.jacksonville.wordcamp.org\/?post_type=wcb_session&#038;p=5283"},"modified":"2020-02-25T20:36:14","modified_gmt":"2020-02-26T01:36:14","slug":"roles-caps-and-meta-caps-harnessing-the-wordpress-capabilities-api-alternative-datastores-in-wordpress","status":"publish","type":"wcb_session","link":"https:\/\/jacksonville.wordcamp.org\/2020\/session\/roles-caps-and-meta-caps-harnessing-the-wordpress-capabilities-api-alternative-datastores-in-wordpress\/","title":{"rendered":"Roles, Caps, and Meta Caps: Harnessing the WordPress Capabilities API \/\/ Alternative Datastores in WordPress"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Roles, Caps, and Meta Caps: Harnessing the WordPress Capabilities API<\/h3>\n\n\n\n<p>Out of the box, WordPress provides a handful of user roles, from Subscriber to Administrator, each with an increasing level of access to manage content and settings on the site. While these roles provide a great starting point for many WordPress sites, they don\u2019t offer the granularity one expects in a large organization with complex editorial workflows. Fortunately, these roles just begin to tap into the power of WordPress\u2019s underlying capabilities API, which provides fine-grained access control for every aspect of the site\u2019s administration, from controlling who can access a settings screen to which users can edit or publish a particular post.<\/p>\n\n\n\n<p>This presentation focuses on the technical aspects of role and capability management in WordPress. How do you create and edit user roles? How do you dynamically filter capabilities? What the heck is a \u201cmeta capability\u201d? How can you have more control than the various role editing plugins provide? We\u2019ll take a journey through the code to learn the most effective and efficient ways to manage your users\u2019 editorial and administrative experiences, using some examples from solutions Modern Tribe has implemented at Stanford Law School and Harvard Law School.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Alternative Datastores \u2013 When CPT, Taxonomies, Options and Object Meta aren\u2019t enough<\/h3>\n\n\n\n<p>WordPress has some great internal APIs to work with WordPress things. Sometimes we need to move beyond $wpdb. We will take a high-level walk through the benefits of things like custom tables, elasticsearch, redis, and other external services. Some specific implementation examples will be provided along with the learning curve, risks, and potential real-world use cases.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Roles, Caps, and Meta Caps: Harnessing the WordPress Capabilities API Out of the box, WordPress provides a handful of user roles, from Subscriber to Administrator, each with an increasing level of access to manage content and settings on the site. While these roles provide a great starting point for many WordPress sites, they don\u2019t offer &hellip; <a href=\"https:\/\/jacksonville.wordcamp.org\/2020\/session\/roles-caps-and-meta-caps-harnessing-the-wordpress-capabilities-api-alternative-datastores-in-wordpress\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Roles, Caps, and Meta Caps: Harnessing the WordPress Capabilities API \/\/ Alternative Datastores in WordPress&#8221;<\/span><\/a><\/p>\n","protected":false},"author":383275,"featured_media":0,"template":"","meta":{"jetpack_post_was_ever_published":false,"_wcpt_session_time":1585420200,"_wcpt_session_duration":3000,"_wcpt_session_type":"session","_wcpt_session_slides":"","_wcpt_session_video":"","_wcpt_speaker_id":[5281,5279],"footnotes":""},"session_track":[57],"session_category":[],"class_list":["post-5283","wcb_session","type-wcb_session","status-publish","hentry","wcb_track-advanced"],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pbaLNw-1nd","session_date_time":{"date":"March 28, 2020","time":"2:30 pm"},"session_speakers":[{"id":"5281","slug":"jonathan-brinley","name":"Jonathan Brinley","link":"https:\/\/jacksonville.wordcamp.org\/2020\/speaker\/jonathan-brinley\/"},{"id":"5279","slug":"gary-kovar","name":"Gary Kovar","link":"https:\/\/jacksonville.wordcamp.org\/2020\/speaker\/gary-kovar\/"}],"session_cats_rendered":null,"_links":{"self":[{"href":"https:\/\/jacksonville.wordcamp.org\/2020\/wp-json\/wp\/v2\/sessions\/5283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jacksonville.wordcamp.org\/2020\/wp-json\/wp\/v2\/sessions"}],"about":[{"href":"https:\/\/jacksonville.wordcamp.org\/2020\/wp-json\/wp\/v2\/types\/wcb_session"}],"version-history":[{"count":1,"href":"https:\/\/jacksonville.wordcamp.org\/2020\/wp-json\/wp\/v2\/sessions\/5283\/revisions"}],"predecessor-version":[{"id":5284,"href":"https:\/\/jacksonville.wordcamp.org\/2020\/wp-json\/wp\/v2\/sessions\/5283\/revisions\/5284"}],"speakers":[{"embeddable":true,"href":"https:\/\/jacksonville.wordcamp.org\/2020\/wp-json\/wp\/v2\/speakers\/5281"},{"embeddable":true,"href":"https:\/\/jacksonville.wordcamp.org\/2020\/wp-json\/wp\/v2\/speakers\/5279"}],"author":[{"embeddable":true,"href":"https:\/\/jacksonville.wordcamp.org\/2020\/wp-json\/wporg\/v1\/users\/jbrinley"}],"wp:attachment":[{"href":"https:\/\/jacksonville.wordcamp.org\/2020\/wp-json\/wp\/v2\/media?parent=5283"}],"wp:term":[{"taxonomy":"wcb_track","embeddable":true,"href":"https:\/\/jacksonville.wordcamp.org\/2020\/wp-json\/wp\/v2\/session_track?post=5283"},{"taxonomy":"wcb_session_category","embeddable":true,"href":"https:\/\/jacksonville.wordcamp.org\/2020\/wp-json\/wp\/v2\/session_category?post=5283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}