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