PluginProbe ʕ •ᴥ•ʔ
Admin and Site Enhancements (ASE) / 7.3.0
Admin and Site Enhancements (ASE) v7.3.0
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 2 years ago class-admin-columns-manager.php 2 years ago class-admin-menu-organizer.php 2 years ago class-auto-publish-posts-with-missed-schedule.php 2 years ago class-avif-upload.php 2 years ago class-change-login-url.php 2 years ago class-cleanup-admin-bar.php 2 years ago class-code-snippets-manager.php 2 years ago class-common-methods.php 2 years ago class-content-duplication.php 2 years ago class-content-order.php 2 years ago class-custom-admin-footer-text.php 2 years ago class-custom-body-class.php 2 years ago class-custom-content-types.php 2 years ago class-custom-css.php 2 years ago class-custom-nav-menu-items-in-new-tab.php 2 years ago class-deactivation.php 2 years ago class-disable-comments.php 2 years ago class-disable-dashboard-widgets.php 2 years ago class-disable-feeds.php 2 years ago class-disable-gutenberg.php 2 years ago class-disable-rest-api.php 2 years ago class-disable-smaller-components.php 2 years ago class-disable-updates.php 2 years ago class-disable-xml-rpc.php 2 years ago class-display-system-summary.php 2 years ago class-email-address-obfuscator.php 2 years ago class-email-delivery.php 2 years ago class-enhance-list-tables.php 2 years ago class-external-permalinks.php 2 years ago class-heartbeat-control.php 2 years ago class-hide-admin-bar.php 2 years ago class-hide-admin-notices.php 2 years ago class-image-sizes-panel.php 2 years ago class-image-upload-control.php 2 years ago class-insert-head-body-footer-code.php 2 years ago class-last-login-column.php 2 years ago class-limit-login-attempts.php 2 years ago class-login-id-type.php 2 years ago class-login-logout-menu.php 2 years ago class-maintenance-mode.php 2 years ago class-manage-ads-appads-txt.php 2 years ago class-manage-robots-txt.php 2 years ago class-media-replacement.php 2 years ago class-multiple-user-roles.php 2 years ago class-obfuscate-author-slugs.php 2 years ago class-open-external-links-in-new-tab.php 2 years ago class-password-protection.php 2 years ago class-redirect-after-login.php 2 years ago class-redirect-after-logout.php 2 years ago class-redirect-fourofour.php 2 years ago class-revisions-control.php 2 years ago class-search-engines-visibility.php 2 years ago class-settings-fields-render.php 2 years ago class-settings-sanitization.php 2 years ago class-settings-sections-fields.php 2 years ago class-show-custom-taxonomy-filters.php 2 years ago class-site-identity-on-login-page.php 2 years ago class-svg-upload.php 2 years ago class-various-admin-ui-enhancements.php 2 years ago class-view-admin-as-role.php 2 years ago class-wider-admin-menu.php 2 years ago
class-external-permalinks.php
148 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 $external_permalink = get_post_meta( $post_id, '_links_to', true );
95
96 if ( ! empty( $external_permalink ) ) {
97 $permalink = $external_permalink;
98 }
99
100 return $permalink;
101
102 }
103
104 /**
105 * Change WordPress default permalink into external permalink for posts and custom post types
106 *
107 * @since 3.9.0
108 */
109 public function use_external_permalink_for_posts( $permalink, $post ) {
110
111 $external_permalink = get_post_meta( $post->ID, '_links_to', true );
112
113 if ( ! empty( $external_permalink ) ) {
114 $permalink = $external_permalink;
115
116 if ( ! is_admin() ) {
117 $permalink = $permalink . '#new_tab';
118 }
119 }
120
121 return $permalink;
122
123 }
124
125 /**
126 * Redirect page/post to external permalink if it's loaded directly from the WP default permalink
127 *
128 * @since 3.9.0
129 */
130 public function redirect_to_external_permalink() {
131
132 global $post;
133
134 // If not on/loading the single page/post URL, do nothing
135 if ( ! is_singular() ) {
136 return;
137 }
138
139 $external_permalink = get_post_meta( $post->ID, '_links_to', true );
140
141 if ( ! empty( $external_permalink ) ) {
142 wp_redirect( $external_permalink, 302 ); // temporary redirect
143 exit;
144 }
145
146 }
147
148 }