PluginProbe
Nested Pages / 3.2.12
Nested Pages v3.2.12
3.3.1 3.2.15 3.2.14 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 trunk 1.0 1.1 1.1.1 1.1.2 1.1.3 All 106 releases
wp-nested-pages / app / Redirects.php
Redirects.php
92 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace NestedPages;
3
4 /**
5 * Page Redirects in admin
6 */
7 class Redirects
8 {
9 public function __construct()
10 {
11 add_action('load-edit.php', [$this, 'pageTrashed']);
12 add_action('load-edit.php', [$this, 'pageRestored']);
13 add_action('deleted_post', [$this, 'linkDeleted'], 10, 1);
14 }
15
16 /**
17 * Redirect back to nested pages after pages moved to trashed
18 */
19 public function pageTrashed()
20 {
21 $screen = get_current_screen();
22 if (
23 ($screen->id == 'edit-page') &&
24 (isset($_GET['trashed'])) &&
25 (intval($_GET['trashed']) > 0) &&
26 (!isset($_GET['bulk'])) &&
27 $this->arePagesNested()
28 ){
29 $query_args = array(
30 'page' => 'nestedpages',
31 'trashed' => true
32 );
33 if ( isset($_GET['ids']) ) $query_args['ids'] = urlencode(sanitize_text_field($_GET['ids']));
34 $redirect = add_query_arg(['page'=>'nestedpages', 'trashed' => true ]);
35 wp_redirect($redirect);
36 exit();
37 }
38 }
39
40 /**
41 * Redirect to nested pages after page moved out of trash
42 */
43 public function pageRestored()
44 {
45 $screen = get_current_screen();
46 if (
47 ($screen->id == 'edit-page') &&
48 (isset($_GET['untrashed'])) &&
49 (intval($_GET['untrashed']) > 0) &&
50 (!isset($_GET['bulk'])) &&
51 $this->arePagesNested()
52 ){
53 $redirect = add_query_arg(['page'=>'nestedpages', 'untrashed' => true, 'untrashed' => urlencode(sanitize_text_field($_GET['untrashed'])) ]);
54 wp_redirect($redirect);
55 exit();
56 }
57 }
58
59 /**
60 * Add link trashed param to URL after delete (for notification)
61 */
62 public function linkDeleted($post_id)
63 {
64 $screen = get_current_screen();
65 if ( !$screen ) return;
66 if (
67 (get_post_type($post_id) == 'np-redirect') &&
68 ($screen->id == 'np-redirect') &&
69 $this->arePagesNested()
70 ){
71 $post_type = ( isset($_GET['parent_post_type']) && $_GET['parent_post_type'] !== '' )
72 ? sanitize_text_field($_GET['parent_post_type']) : null;
73 if ( $post_type ) $page = 'nestedpages-' . $post_type;
74
75 $redirect = ( $post_type )
76 ? add_query_arg(['page' => $page, 'linkdeleted' => true, '_wpnonce' => false, 'post' => false, 'action' => false])
77 : add_query_arg(['page' => 'nestedpages', 'linkdeleted' => true, '_wpnonce' => false, 'post' => false, 'action' => false]);
78
79 wp_redirect($redirect);
80 exit();
81 }
82 }
83
84 /**
85 * Return true/false if nested pages are enabled for Page post types
86 */
87 private function arePagesNested() {
88 $postTypeRepository = new \NestedPages\Entities\PostType\PostTypeRepository();
89 $enabledPostTypes = $postTypeRepository->enabledPostTypes();
90 return array_key_exists( 'page', $enabledPostTypes );
91 }
92 }