PluginProbe ʕ •ᴥ•ʔ
Nested Pages / 3.2.15
Nested Pages v3.2.15
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 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 / Entities / Post / PrivatePostParent.php
wp-nested-pages / app / Entities / Post Last commit date
PostCloner.php 3 years ago PostDataFactory.php 3 years ago PostFactory.php 3 days ago PostRepository.php 5 years ago PostSaveActions.php 3 years ago PostTrashActions.php 8 years ago PostUpdateRepository.php 3 days ago PrivatePostParent.php 3 years ago
PrivatePostParent.php
69 lines
1 <?php
2 namespace NestedPages\Entities\Post;
3
4 /**
5 * Enables Private Posts/Pages in the Post Edit Dropdown
6 * Fixes bug in WP Core where child posts of a private/draft post become un-nested when editing
7 * @link https://core.trac.wordpress.org/ticket/8592#comment:129
8 */
9 class PrivatePostParent
10 {
11 public function __construct()
12 {
13 add_filter('wp_dropdown_pages', [$this, 'metabox'], 10, 3);
14 }
15
16 public function metabox($output, $arguments = [], $pages = [])
17 {
18 global $post;
19 if ( !$post ) return $output;
20 if ( !isset($arguments['post_type']) ) return $output;
21 if ( !isset($arguments['name']) ) return $output;
22 if ( $arguments['post_type'] !== $post->post_type ) return $output;
23 if ( $arguments['name'] !== 'parent_id' ) return $output;
24
25 $args = [
26 'post_type' => $post->post_type,
27 'exclude_tree' => $post->ID,
28 'selected' => $post->post_parent,
29 'name' => 'parent_id',
30 'show_option_none' => __('(no parent)'),
31 'sort_column' => 'menu_order, post_title',
32 'echo' => 0,
33 'post_status' => ['publish', 'private', 'draft'],
34 ];
35 $args = apply_filters( 'page_attributes_dropdown_pages_args', $args, $post );
36
37 $defaults = [
38 'depth' => 0,
39 'child_of' => 0,
40 'selected' => 0,
41 'echo' => 1,
42 'name' => 'page_id',
43 'id' => '',
44 'show_option_none' => '',
45 'show_option_no_change' => '',
46 'option_none_value' => '',
47 ];
48
49 $r = wp_parse_args($args, $defaults);
50 extract($r, EXTR_SKIP);
51
52 $pages = get_pages($r);
53 $name = esc_attr($name);
54
55 // Back-compat with old system where both id and name were based on $name argument
56 if (empty($id)) $id = $name;
57
58 if (empty($pages)) return;
59
60 $output = "<select name=\"$name\" id=\"$id\">\n";
61
62 if ($show_option_no_change) $output .= "\t<option value=\"-1\">$show_option_no_change</option>";
63 if ($show_option_none) $output .= "\t<option value=\"" . esc_attr($option_none_value) . "\">$show_option_none</option>\n";
64 $output .= walk_page_dropdown_tree($pages, $depth, $r);
65 $output .= "</select>\n";
66
67 return $output;
68 }
69 }