{"id":4788,"date":"2018-01-31T19:40:18","date_gmt":"2018-01-31T18:40:18","guid":{"rendered":"https:\/\/plainviewplugins.com\/?page_id=4788"},"modified":"2018-01-31T19:58:22","modified_gmt":"2018-01-31T18:58:22","slug":"menus","status":"publish","type":"page","link":"https:\/\/plainviewplugins.com\/sdk\/menus\/","title":{"rendered":"Menus"},"content":{"rendered":"<p>The menu SDK is available by calling the menu_page() method. The returned object offers a more readable, logical way of adding items to WordPress menus. Begin by generating the menu_page() object.<\/p>\n<pre><code>$menu_page = $this-menu_page();<\/code><\/pre>\n<p>You can use the $menu_page object or keep calling menu_page().<\/p>\n<p>From there you can add a base menu. This is taken from the <a href=\"https:\/\/wordpress.org\/plugins\/threewp-broadcast\/\">Broadcast WordPress plugin<\/a>.<\/p>\n<pre><code>$this->menu_page()\r\n ->callback_this( 'callback_method' )\r\n ->capability( 'edit_posts' )\r\n ->menu_slug( 'threewp_broadcast' )\r\n ->menu_title( __( 'Broadcast', 'threewp_broadcast' ) )\r\n ->page_title( __( 'Broadcast', 'threewp_broadcast' ) )\r\n ->icon_url( 'dashicons-rss' );<\/code><\/pre>\n<p>You can also add a submenu. These method calls are very similar to adding a whole menu. This is taken from the <a href=\"https:\/\/broadcast.plainviewplugins.com\/addon\/queue\/\">Broadcast Queue add-on<\/a>.<\/p>\n<pre><code>$this->menu_page()\r\n ->submenu( 'threewp_broadcast_queue' )\r\n ->callback_this( 'admin_menu_tabs' )\r\n ->menu_title( __( 'Queue', 'threewp_broadcast' ) )\r\n ->page_title( __( 'Broadcast Queue', 'threewp_broadcast' ) );<\/code><\/pre>\n<p>To commit your changes, you can either add everything to the menu.<\/p>\n<pre><code>$this->menu_page()->add_all();<\/code><\/pre>\n<p>Or just your submenus.<\/p>\n<pre><code>$this->menu_page()->add_submenus();<\/code><\/pre>\n<p>Why use only add_submenus? Sometimes you don&#8217;t want to create a whole menu item, but just add to an existing.<\/p>\n<pre><code>$this->menu_page()\r\n ->menu_slug( 'options-general.php' );\r\n\r\n$this->menu_page()\r\n ->submenu( 'plainview_job_importer' )\r\n ->callback_this( 'admin_menu_tabs' )\r\n ->capability( 'manage_options' )\r\n ->menu_title( 'Job Importer' )\r\n ->page_title( 'Plainview Job Importer' );\r\n\r\n$this->menu_page()\r\n ->add_submenus();<\/code><\/pre>\n<p>If you want to start over, then treat the menu_page() object like the collection it is!<\/p>\n<pre><code>$this->menu_page()->flush();<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>The Plainview SDK allows for easier handling of Wordpress menus.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1676,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-4788","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/plainviewplugins.com\/wp-json\/wp\/v2\/pages\/4788","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/plainviewplugins.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/plainviewplugins.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/plainviewplugins.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/plainviewplugins.com\/wp-json\/wp\/v2\/comments?post=4788"}],"version-history":[{"count":7,"href":"https:\/\/plainviewplugins.com\/wp-json\/wp\/v2\/pages\/4788\/revisions"}],"predecessor-version":[{"id":4795,"href":"https:\/\/plainviewplugins.com\/wp-json\/wp\/v2\/pages\/4788\/revisions\/4795"}],"up":[{"embeddable":true,"href":"https:\/\/plainviewplugins.com\/wp-json\/wp\/v2\/pages\/1676"}],"wp:attachment":[{"href":"https:\/\/plainviewplugins.com\/wp-json\/wp\/v2\/media?parent=4788"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}