PluginProbe ʕ •ᴥ•ʔ
Nested Pages / 1.3.4
Nested Pages v1.3.4
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 / NavMenu / NavMenuRepository.php
wp-nested-pages / app / Entities / NavMenu Last commit date
NavMenuActions.php 11 years ago NavMenuRemoveItem.php 11 years ago NavMenuRepository.php 11 years ago NavMenuSync.php 11 years ago NavMenuSyncInterface.php 11 years ago NavMenuSyncListing.php 11 years ago NavMenuSyncMenu.php 11 years ago NavMenuTrashActions.php 11 years ago
NavMenuRepository.php
150 lines
1 <?php namespace NestedPages\Entities\NavMenu;
2
3 class NavMenuRepository {
4
5 /**
6 * Get the Menu ID
7 * @since 1.3.4
8 * @return int
9 */
10 public function getMenuID()
11 {
12 $term = $this->getMenuTermObject();
13 return $term->term_id;
14 }
15
16
17 /**
18 * Get Menu Item ID
19 * @since 1.3.4
20 * @param int $id - Post ID
21 * @return int
22 */
23 public function getMenuItemID($id)
24 {
25 $meta_query = new \WP_Query(array(
26 'post_type' => 'nav_menu_item',
27 'posts_per_page' => 1,
28 'meta_key' => '_menu_item_object_id',
29 'meta_value' => $id,
30 ));
31 return ( $meta_query->have_posts() ) ? $meta_query->posts[0]->ID : $this->getLinkMenuItemXFN($id);
32 }
33
34
35 /**
36 * Get Link from XFN field
37 * Using XFN field to store original post ID
38 * Hack way of doing it, but no other way to tie custom menu items to post type and retain custom functionality
39 * @param int $id - Post ID
40 */
41 public function getLinkMenuItemXFN($id)
42 {
43 $meta_query = new \WP_Query(array(
44 'post_type' => 'nav_menu_item',
45 'posts_per_page' => 1,
46 'meta_key' => '_menu_item_xfn',
47 'meta_value' => $id,
48 ));
49 return ( $meta_query->have_posts() ) ? $meta_query->posts[0]->ID : $this->getLinkMenuItemID($id);
50 }
51
52
53 /**
54 * Get Link Nav Menu from post ID using title
55 * Supporting legacy NP versions before XFN was saved
56 * @since 1.3.4
57 * @param int $id
58 * @return int
59 */
60 public function getLinkMenuItemID($id)
61 {
62 $post = get_page_by_title( get_the_title($id), OBJECT, 'nav_menu_item');
63 if ( !$post ) return 0;
64 return $post->ID;
65 }
66
67
68
69 /**
70 * Get the Menu Term Object
71 * @since 1.3.4
72 * @return object - WP Term Object
73 */
74 public function getMenuTermObject()
75 {
76 if ( get_option('nestedpages_menu') ){
77 $menu_id = get_option('nestedpages_menu');
78 return get_term_by('id', $menu_id, 'nav_menu');
79 } else {
80 $this->createNewMenu();
81 $this->getMenuTermObject();
82 }
83 }
84
85
86 /**
87 * Create Empty Menu if one doesn't exist
88 * @since 1.3.4
89 */
90 private function createNewMenu()
91 {
92 $menu_id = wp_create_nav_menu('Nested Pages');
93 update_option('nestedpages_menu', $menu_id);
94 }
95
96
97 /**
98 * Clear out the menu
99 */
100 public function clearMenu($menu_id)
101 {
102 $menu_items = wp_get_nav_menu_items($menu_id);
103 foreach ( $menu_items as $i ){
104 wp_delete_post($i->ID, true);
105 }
106 }
107
108
109 /**
110 * Is the provided post a nav menu item
111 * @return boolean
112 * @param int $id - post id
113 */
114 public function isNavMenuItem($id)
115 {
116 if ( get_post_type($id) == 'nav_menu_item' ) return true;
117 return false;
118 }
119
120
121 /**
122 * Get the Link post id from a title
123 */
124 public function getLinkfromTitle($title)
125 {
126 $post = get_page_by_title($title, OBJECT, 'np-redirect');
127 return $post->ID;
128 }
129
130
131 /**
132 * Get an array of pages not hidden in nav menu
133 * WP_Query won't return pages with empty meta values, so sql is used
134 * @return array
135 */
136 public function getPagesInMenu()
137 {
138 global $wpdb;
139 $post_table = $wpdb->prefix . 'posts';
140 $meta_table = $wpdb->prefix . 'postmeta';
141 $sql = "SELECT p.ID AS nav_status FROM wp_posts AS p LEFT JOIN wp_postmeta AS m ON p.ID = m.post_id AND m.meta_key = 'np_nav_status' WHERE p.post_type = 'page' AND (m.meta_value = 'show' OR m.meta_value IS NULL)";
142 $results = $wpdb->get_results($sql, ARRAY_N);
143 if ( !$results ) return;
144 foreach($results as $key => $result){
145 $visible[$key] = $result[0];
146 }
147 return $visible;
148 }
149
150 }