PluginProbe ʕ •ᴥ•ʔ
Nested Pages / trunk
Nested Pages vtrunk
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 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.2.1 1.3.0 1.3.1 1.3.10 1.3.11 1.3.12 1.3.13 1.3.14 1.3.15 1.3.2 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.3.1 1.6.3.2 1.6.4 1.6.5 1.6.5.1 1.6.5.2 1.6.6 1.6.7 1.6.8 1.7.0 1.7.1 2.0.1 2.0.2 2.0.3 2.0.4 3.0.1 3.0.10 3.0.11 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.20 3.1.21 3.1.22 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7
wp-nested-pages / app / Redirects.php
wp-nested-pages / app Last commit date
Activation 3 years ago Config 2 years ago Entities 1 year ago Form 3 years ago Views 1 year ago Bootstrap.php 3 years ago FrontEndBootstrap.php 4 years ago Helpers.php 7 years ago NestedPages.php 1 year ago Redirects.php 5 years ago RedirectsFrontEnd.php 8 years ago
Redirects.php
92 lines
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 }