PluginProbe ʕ •ᴥ•ʔ
Admin and Site Enhancements (ASE) / 8.2.3
Admin and Site Enhancements (ASE) v8.2.3
9.1.0 9.0.2 9.0.1 9.0.0 8.9.2 8.9.1 8.9.0 8.8.8 8.8.7 8.8.6 8.8.5 8.8.4 8.8.3 8.8.2 8.8.1 8.8.0 8.7.3 8.7.2 8.7.1 8.2.1 8.2.2 8.2.3 8.3.0 8.3.1 8.3.2 8.4.0 8.4.1 8.4.2 8.5.0 8.5.1 8.5.2 8.6.0 8.6.1 8.6.2 8.7.0 5.0.1 5.0.2 5.0.2.1 5.0.2.2 5.0.2.3 5.0.2.4 5.1.0 5.2.0 5.2.1 5.2.10 5.2.11 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 5.3.0 5.3.1 5.3.2 5.4.0 5.4.1 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.8.0 5.8.1 6.0.0 6.0.3 6.0.4 6.0.5 6.0.5.1 6.0.6 6.0.7 6.0.8.1 6.1.0 6.1.3 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.2.6 6.2.7 6.3.0 6.3.1 6.3.2 6.4.0 6.5.0 6.5.1 6.6.0 6.7.0 6.8.0 6.8.2 6.8.3 6.9.0 6.9.1 6.9.10 6.9.11 6.9.12 6.9.13.1 6.9.13.2 6.9.2 6.9.3 6.9.4 6.9.5 6.9.6 6.9.7 6.9.8 6.9.9 7.0.0 7.0.2 7.0.2.1 7.0.2.2 7.0.2.3 7.0.3 7.1.0 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2.0 7.2.1 7.3.0 7.3.1 7.3.2 7.3.3 7.4.0 7.4.2 7.4.4 7.4.5 7.4.6 7.4.7 7.4.8 7.5.0 7.5.1 7.5.2 7.5.3 7.5.4 7.6.0 7.6.1 7.6.1.1 7.6.10 7.6.11 7.6.2 7.6.3 7.6.4 7.6.5 7.6.6 7.6.7 7.6.7.1 7.6.8 7.6.9 7.7.0 7.8.0 7.8.1 7.8.10 7.8.11 7.8.12 7.8.13 7.8.14 7.8.15 7.8.16 7.8.17 7.8.18 7.8.2 7.8.3 7.8.4 7.8.5 7.8.5.1 7.8.6 7.8.7 7.8.8 7.8.9 7.9.0 7.9.1 7.9.10 7.9.11 7.9.2 7.9.3 7.9.4 7.9.5 7.9.6 7.9.7 7.9.8 7.9.9 8.0.0 8.0.1 8.0.2 8.0.3 8.0.4 8.0.5 8.0.6 8.0.7 8.0.8 8.1.0 8.1.1 8.1.2 8.1.3 8.1.4 8.2.0 trunk 1.0.0 1.1.0 1.2.0 1.3.0 1.4.0 1.5.0 1.6.0 1.7.0 1.8.0 1.9.0 2.0.0 2.1.0 2.2.0 2.3.0 2.4.0 2.5.0 2.6.0 2.7.0 2.8.0 2.8.1 2.8.2 2.8.3 2.9.0 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.2.0 3.3.0 3.4.0 3.5.0 3.6.1 3.7.0 3.8.0 3.9.0 3.9.1 3.9.2 4.0.0 4.0.1 4.1.0 4.2.0 4.2.1 4.2.2 4.3.0 4.3.1 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.8.0 4.8.1 4.8.2 4.8.3 4.9.0 4.9.1 4.9.2 4.9.3 5.0.0
admin-site-enhancements / classes / class-external-permalinks.php
admin-site-enhancements / classes Last commit date
class-activation.php 7 months ago class-admin-menu-organizer.php 7 months ago class-admin-menu-svg-icon-mask.php 7 months ago class-auto-publish-posts-with-missed-schedule.php 7 months ago class-avif-upload.php 7 months ago class-captcha-protection.php 7 months ago class-change-login-url.php 7 months ago class-cleanup-admin-bar.php 7 months ago class-common-methods.php 7 months ago class-content-duplication.php 7 months ago class-content-order.php 7 months ago class-custom-admin-footer-text.php 7 months ago class-custom-body-class.php 7 months ago class-custom-css.php 7 months ago class-custom-nav-menu-items-in-new-tab.php 7 months ago class-deactivation.php 7 months ago class-disable-author-archives.php 7 months ago class-disable-comments.php 7 months ago class-disable-dashboard-widgets.php 7 months ago class-disable-embeds.php 7 months ago class-disable-feeds.php 7 months ago class-disable-gutenberg.php 7 months ago class-disable-rest-api.php 7 months ago class-disable-smaller-components.php 7 months ago class-disable-updates.php 7 months ago class-disable-xml-rpc.php 7 months ago class-display-system-summary.php 7 months ago class-email-address-obfuscator.php 7 months ago class-email-delivery.php 7 months ago class-enhance-list-tables.php 7 months ago class-external-permalinks.php 7 months ago class-heartbeat-control.php 7 months ago class-hide-admin-bar.php 7 months ago class-hide-admin-notices.php 7 months ago class-image-sizes-panel.php 7 months ago class-image-upload-control.php 7 months ago class-insert-head-body-footer-code.php 7 months ago class-last-login-column.php 7 months ago class-limit-login-attempts.php 7 months ago class-login-id-type.php 7 months ago class-login-logout-menu.php 7 months ago class-maintenance-mode.php 7 months ago class-manage-ads-appads-txt.php 7 months ago class-manage-robots-txt.php 7 months ago class-media-replacement.php 7 months ago class-multiple-user-roles.php 7 months ago class-obfuscate-author-slugs.php 7 months ago class-open-external-links-in-new-tab.php 7 months ago class-password-protection.php 7 months ago class-redirect-after-login.php 7 months ago class-redirect-after-logout.php 7 months ago class-redirect-fourofour.php 7 months ago class-registration-date-column.php 7 months ago class-revisions-control.php 7 months ago class-search-engines-visibility.php 7 months ago class-settings-fields-render.php 7 months ago class-settings-sanitization.php 7 months ago class-settings-sections-fields.php 7 months ago class-show-custom-taxonomy-filters.php 7 months ago class-site-identity-on-login-page.php 7 months ago class-svg-upload.php 7 months ago class-various-admin-ui-enhancements.php 7 months ago class-view-admin-as-role.php 7 months ago class-wider-admin-menu.php 7 months ago class-wp-config-transformer.php 7 months ago
class-external-permalinks.php
166 lines
1 <?php
2
3 namespace ASENHA\Classes;
4
5 /**
6 * Class for External Permalinks module
7 *
8 * @since 6.9.5
9 */
10 class External_Permalinks {
11
12 /**
13 * Add external permalink meta box for enabled post types
14 *
15 * @since 3.9.0
16 */
17 public function add_external_permalink_meta_box( $post_type, $post ) {
18
19 $options = get_option( ASENHA_SLUG_U, array() );
20 $enable_external_permalinks_for = $options['enable_external_permalinks_for'];
21
22 foreach ( $enable_external_permalinks_for as $post_type_slug => $is_external_permalink_enabled ) {
23 if ( ( get_post_type() == $post_type_slug ) && $is_external_permalink_enabled ) {
24
25 // Skip adding meta box for post types where Gutenberg is enabled
26 // if (
27 // function_exists( 'use_block_editor_for_post_type' )
28 // && use_block_editor_for_post_type( $post_type_slug )
29 // ) {
30 // continue; // go to the beginning of next iteration
31 // }
32
33 add_meta_box(
34 'asenha-external-permalink', // ID of meta box
35 'External Permalink', // Title of meta box
36 [ $this, 'output_external_permalink_meta_box' ], // Callback function
37 $post_type_slug, // The screen on which the meta box should be output to
38 'normal', // context
39 'high' // priority
40 // array(), // $args to pass to callback function. Ref: https://developer.wordpress.org/reference/functions/add_meta_box/#comment-342
41 );
42
43 }
44 }
45
46 }
47
48 /**
49 * Render External Permalink meta box
50 *
51 * @since 3.9.0
52 */
53 public function output_external_permalink_meta_box( $post ) {
54 ?>
55 <div class="external-permalink-input">
56 <input name="<?php echo esc_attr( 'external_permalink' ); ?>" class="large-text" id="<?php echo esc_attr( 'external_permalink' ); ?>" type="text" value="<?php echo esc_url( get_post_meta( $post->ID, '_links_to', true ) ); ?>" placeholder="https://" />
57 <div class="external-permalink-input-description">Keep empty to use the default WordPress permalink. External permalink will open in a new browser tab.</div>
58 <?php wp_nonce_field( 'external_permalink_' . $post->ID, 'external_permalink_nonce', false, true ); ?>
59 </div>
60 <?php
61 }
62
63 /**
64 * Save external permalink input
65 *
66 * @since 3.9.0
67 */
68 public function save_external_permalink( $post_id ) {
69
70 // Only proceed if nonce is verified
71 if ( isset( $_POST['external_permalink_nonce'] ) && wp_verify_nonce( $_POST['external_permalink_nonce'], 'external_permalink_' . $post_id ) ) {
72
73 // Get the value of external permalink from input field
74 $external_permalink = isset( $_POST['external_permalink'] ) ? esc_url_raw( trim( $_POST['external_permalink'] ) ) : '';
75
76 // Update or delete external permalink post meta
77 if ( ! empty( $external_permalink ) ) {
78 update_post_meta( $post_id, '_links_to', $external_permalink );
79 } else {
80 delete_post_meta( $post_id, '_links_to' );
81 }
82
83 }
84
85 }
86
87 /**
88 * Change WordPress default permalink into external permalink for pages
89 *
90 * @since 3.9.0
91 */
92 public function use_external_permalink_for_pages( $permalink, $post_id ) {
93
94 $request_uri = sanitize_text_field( $_SERVER['REQUEST_URI'] ); // e.g. /wp-admin/index.php?page=page-slug
95
96 if ( false === strpos( $request_uri, 'mfn-live-builder' ) ) {
97 // When not in BeTheme template builder, that has the 'action=mfn-live-builder' parameter in the URL
98
99 $external_permalink = get_post_meta( $post_id, '_links_to', true );
100
101 if ( ! empty( $external_permalink ) ) {
102 $permalink = $external_permalink;
103 }
104
105 }
106
107 return $permalink;
108
109 }
110
111 /**
112 * Change WordPress default permalink into external permalink for posts and custom post types
113 *
114 * @since 3.9.0
115 */
116 public function use_external_permalink_for_posts( $permalink, $post ) {
117
118 $request_uri = sanitize_text_field( $_SERVER['REQUEST_URI'] ); // e.g. /wp-admin/index.php?page=page-slug
119
120 if ( false === strpos( $request_uri, 'mfn-live-builder' ) ) {
121 // When not in BeTheme template builder, that has the 'action=mfn-live-builder' parameter in the URL
122
123 $external_permalink = get_post_meta( $post->ID, '_links_to', true );
124
125 if ( ! empty( $external_permalink ) ) {
126 $permalink = $external_permalink;
127
128 if ( ! is_admin() ) {
129 $permalink = $permalink . '#new_tab';
130 }
131 }
132
133 }
134
135 return $permalink;
136
137 }
138
139 /**
140 * Redirect page/post to external permalink if it's loaded directly from the WP default permalink
141 *
142 * @since 3.9.0
143 */
144 public function redirect_to_external_permalink() {
145
146 // If not on/loading the single page/post URL, do nothing
147 if ( ! is_singular() ) {
148 return;
149 }
150
151 global $post;
152
153 if ( ! is_null( $post ) && is_object( $post ) && is_a( $post, 'WP_Post' ) ) {
154 if ( property_exists( $post, 'ID' ) ) {
155 $external_permalink = get_post_meta( $post->ID, '_links_to', true );
156
157 if ( ! empty( $external_permalink ) ) {
158 wp_redirect( $external_permalink, 302 ); // temporary redirect
159 exit;
160 }
161 }
162 }
163
164 }
165
166 }