NestedViewLink.php
53 lines
| 1 | <?php namespace NestedPages\Entities\DefaultList; |
| 2 | |
| 3 | use NestedPages\Entities\PostType\PostTypeRepository; |
| 4 | |
| 5 | /** |
| 6 | * Adds "nested view/sort view" to default lists on enabled post types |
| 7 | */ |
| 8 | class NestedViewLink { |
| 9 | |
| 10 | /** |
| 11 | * Post Type |
| 12 | */ |
| 13 | private $post_type; |
| 14 | |
| 15 | /** |
| 16 | * Post Type Repository |
| 17 | */ |
| 18 | private $post_type_repo; |
| 19 | |
| 20 | |
| 21 | public function __construct($post_type) |
| 22 | { |
| 23 | $this->post_type_repo = new PostTypeRepository; |
| 24 | $this->post_type = $post_type; |
| 25 | $this->addFilter(); |
| 26 | } |
| 27 | |
| 28 | |
| 29 | /** |
| 30 | * Add the WP Filter |
| 31 | */ |
| 32 | private function addFilter() |
| 33 | { |
| 34 | add_filter( 'views_edit-' . $this->post_type->name, array($this, 'addLink' ) ); |
| 35 | } |
| 36 | |
| 37 | |
| 38 | /** |
| 39 | * Add a nested pages link to the subsub list (WP_List_Table class) |
| 40 | */ |
| 41 | public function addLink($views) |
| 42 | { |
| 43 | $screen = get_current_screen(); |
| 44 | if ( $screen->parent_file == $this->post_type_repo->editSlug($this->post_type) ){ |
| 45 | $link_text = $this->post_type_repo->getSubmenuText($this->post_type); |
| 46 | $link_href = esc_url(admin_url('admin.php?page=' . $this->post_type_repo->getMenuSlug($this->post_type))); |
| 47 | $link = array($link_text => '<a href="' . $link_href . '">' . $link_text . '</a>'); |
| 48 | $views = array_merge($views, $link); |
| 49 | } |
| 50 | return $views; |
| 51 | } |
| 52 | |
| 53 | } |