PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / trunk
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress vtrunk
4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 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.3 3.1.4 3.1.5 3.1.6 3.1.7 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.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / NavigationMenuLinks / Frontend.php
wp-user-avatar / src / NavigationMenuLinks Last commit date
Backend.php 3 years ago Frontend.php 2 years ago Init.php 5 years ago PP_Nav_Items.php 5 years ago
Frontend.php
144 lines
1 <?php
2
3 namespace ProfilePress\Core\NavigationMenuLinks;
4
5
6 if ( ! defined('ABSPATH')) {
7 exit; // Exit if accessed directly
8 }
9
10 class Frontend
11 {
12 private static $instance = null;
13
14 public function __construct()
15 {
16 /* The main code, this replace the #keyword# by the correct links with nonce ect */
17 add_filter('wp_setup_nav_menu_item', [$this, 'setup_nav_menu_item']);
18
19 add_filter('wp_nav_menu_objects', [$this, 'wp_nav_menu_objects']);
20 }
21
22 /**
23 * Used to return the correct title for the double login/logout menu item
24 */
25 public function loginout_title($title)
26 {
27 $titles = explode('|', $title);
28 if ( ! is_user_logged_in()) {
29 return esc_html(isset($titles[0]) ? $titles[0] : $title);
30 } else {
31 return esc_html(isset($titles[1]) ? $titles[1] : $title);
32 }
33 }
34
35 public function setup_nav_menu_item($item)
36 {
37 global $pagenow;
38
39 if (is_customize_preview() && ! (is_home() || is_front_page() || is_singular() || is_archive() || is_tax())) {
40 return $item;
41 }
42
43 if ($pagenow != 'nav-menus.php' && ! defined('DOING_AJAX') && isset($item->url) && strstr($item->url, '#pp-') != ''
44 ) {
45 $item_url = substr($item->url, 0, strpos($item->url, '#', 1)) . '#';
46
47 switch ($item_url) {
48 case '#pp-loginout#' :
49 $item->url = is_user_logged_in() ? wp_logout_url() : wp_login_url();
50 $item->title = $this->loginout_title($item->title);
51 $item = apply_filters('pp_nav_loginout_item', $item);
52 break;
53 case '#pp-login#' :
54 if (is_user_logged_in()) {
55 $item->title = '#pp-login#';
56 } else {
57 $item->url = wp_login_url();
58 }
59 $item = apply_filters('pp_nav_login_item', $item);
60 break;
61 case '#pp-logout#' :
62 if (is_user_logged_in()) {
63 $item->url = wp_logout_url();
64 } else {
65 $item->title = '#pp-logout#';
66 }
67 $item = apply_filters('pp_nav_logout_item', $item);
68 break;
69 case '#pp-signup#' :
70 if (is_user_logged_in()) {
71 $item->title = '#pp-signup#';
72 } else {
73 $item->url = wp_registration_url();
74 }
75 $item = apply_filters('pp_nav_signup_item', $item);
76 break;
77 case '#pp-myprofile#' :
78 if (is_user_logged_in()) {
79
80 if (function_exists('ppress_profile_url')) {
81 $item->url = ppress_profile_url();
82 }
83
84 if (function_exists('pp_profile_url')) {
85 $item->url = pp_profile_url();
86 }
87
88 } else {
89 $item->title = '#pp-myprofile#';
90 }
91 $item = apply_filters('pp_nav_myprofile_item', $item);
92 break;
93 case '#pp-editprofile#' :
94 if (is_user_logged_in() && function_exists('ppress_edit_profile_url')) {
95 $item->url = ppress_edit_profile_url();
96 } elseif (is_user_logged_in() && function_exists('pp_edit_profile_url')) {
97 $item->url = pp_edit_profile_url();
98 } else {
99 $item->title = '#pp-editprofile#';
100 }
101 $item = apply_filters('pp_nav_editprofile_item', $item);
102 break;
103 }
104 $item->url = esc_url_raw($item->url);
105 }
106
107 return apply_filters('pp_nav_item', $item);
108 }
109
110
111 /**
112 * Remove navigation item with URL and title that are the same.
113 *
114 * @param array $sorted_menu_items
115 *
116 * @return mixed
117 */
118 public function wp_nav_menu_objects($sorted_menu_items)
119 {
120 // in self::setup_nav_menu_item we made the title and url of some nav items the same.
121 // an item that fall in this category get removed here.
122 foreach ($sorted_menu_items as $k => $item) {
123 if (isset($item->title, $item->url) && strlen($item->title) && ($item->title == $item->url)) {
124 unset($sorted_menu_items[$k]);
125 }
126 }
127
128 return $sorted_menu_items;
129 }
130
131 /**
132 * @return null|Frontend
133 */
134 public static function get_instance()
135 {
136 // If the single instance hasn't been set, set it now.
137 if (null == self::$instance) {
138 self::$instance = new self;
139 }
140
141 return self::$instance;
142 }
143
144 }