PluginProbe
Hide/Remove Metadata / trunk
Hide/Remove Metadata vtrunk
trunk 1.0.0 1.0.1 1.1 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.1
hide-metadata / hide-metadata.php

hide-metadata.php in Hide/Remove Metadata trunk, at hide-metadata.php

295 lines 10.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: Hide/Remove Metadata
4 * Description: Hide/Remove Metadata is a free, simple yet extremely handy WordPress plugin that helps you hide author and published date either by CSS or PHP from your website effortlessly.
5 * Plugin URI: http://catchplugins.com/plugins/hide-metadata
6 * Author: Catch Plugins
7 * Author URI: http://catchplugins.com/
8 * Version: 2.1
9 * License: GPL2
10 * Text Domain: hide-metadata
11 * Domain Path: /languages
12 */
13
14 /*
15 Copyright (C) Year Author Email
16
17 This program is free software; you can redistribute it and/or modify
18 it under the terms of the GNU General Public License, version 2, as
19 published by the Free Software Foundation.
20
21 This program is distributed in the hope that it will be useful,
22 but WITHOUT ANY WARRANTY; without even the implied warranty of
23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 GNU General Public License for more details.
25
26 You should have received a copy of the GNU General Public License
27 along with this program; if not, write to the Free Software
28 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
29 */
30
31 if (! defined('ABSPATH')) {
32 exit; // Exit if accessed directly
33 }
34
35 // Define Version
36 if ( ! defined( 'HIDE_METADATA_VERSION' ) ) {
37 define( 'HIDE_METADATA_VERSION', '2.1' );
38 }
39
40 if ( ! defined( 'HIDE_METADATA_BASENAME' ) ) {
41 define('HIDE_METADATA_BASENAME', plugin_basename(__FILE__));
42 }
43
44 class Hide_Metadata
45 {
46 private $plugin_name;
47 private $version;
48 private $options;
49
50 function __construct()
51 {
52 $this->plugin_name = 'hide-metadata';
53 $this->version = HIDE_METADATA_VERSION;
54 $this->options = hide_metadata_get_options();
55
56 add_filter('body_class', array($this, 'hide_metadata_body_class'));
57 add_action('admin_init', array($this, 'register_settings'));
58 add_action('admin_menu', array($this, 'add_plugin_settings_menu'));
59 add_action('admin_enqueue_scripts', array($this, 'enqueue_styles'));
60 add_action('wp_enqueue_scripts', array($this, 'plugin_styles'));
61 add_action('admin_enqueue_scripts', array($this, 'enqueue_scripts'));
62
63 add_filter('plugin_row_meta', array($this, 'add_plugin_meta_links'), 10, 2);
64
65 add_filter('plugin_action_links', array($this, 'action_links'), 10, 2);
66
67 if ('php' === $this->options['hide_by']) {
68 add_action('loop_start', array($this, 'remove_php'));
69 add_action('init', array($this, 'remove_php'));
70 }
71 }
72
73
74 /**
75 * Register the stylesheets for the admin area.
76 *
77 * @since 1.0.0
78 */
79 function enqueue_styles()
80 {
81 $hm_page = isset($_GET['page']) ? sanitize_text_field(wp_unslash($_GET['page'])) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- read-only page check for admin style loading.
82 if ('hide-metadata' === $hm_page) {
83 wp_enqueue_style($this->plugin_name . '-display-dashboard', plugin_dir_url(__FILE__) . 'css/admin-dashboard.css', array(), $this->version, 'all');
84 }
85 }
86
87
88 function plugin_styles()
89 {
90 wp_enqueue_style($this->plugin_name . '-style', plugin_dir_url(__FILE__) . 'css/style.css', array(), $this->version, 'all');
91 }
92
93
94 /**
95 * Register the scripts for the admin area.
96 *
97 * @since 1.0.0
98 */
99 function enqueue_scripts()
100 {
101 $hm_page = isset($_GET['page']) ? sanitize_text_field(wp_unslash($_GET['page'])) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- read-only page check for admin script loading.
102 if ('hide-metadata' === $hm_page) {
103 wp_enqueue_script($this->plugin_name, plugin_dir_url(__FILE__) . 'js/hide-metadata-admin.js', array('jquery', 'matchHeight', 'jquery-ui-tooltip'), $this->version, false);
104
105 wp_enqueue_script('matchHeight', plugin_dir_url(__FILE__) . 'js/jquery-matchHeight.min.js', array('jquery'), $this->version, false);
106 }
107 }
108
109 /**
110 * Hide/Remove MetaData: action_links
111 * Hide/Remove MetaData Settings Link function callback
112 *
113 * @param arrray $links Link url.
114 *
115 * @param arrray $file File name.
116 */
117 function action_links($links, $file)
118 {
119 if ($file === $this->plugin_name . '/' . $this->plugin_name . '.php') {
120 $settings_link = '<a href="' . esc_url(admin_url('tools.php?page=hide-metadata')) . '">' . esc_html__('Settings', 'hide-metadata') . '</a>';
121
122 array_unshift($links, $settings_link);
123 }
124 return $links;
125 }
126
127 /**
128 * Add settings menu
129 */
130 function add_plugin_settings_menu()
131 {
132 // Add menu under tools
133 add_submenu_page(
134 'tools.php',
135 esc_html__('Hide/Remove Metadata', 'hide-metadata'),
136 esc_html__('Hide/Remove Metadata', 'hide-metadata'),
137 'manage_options',
138 'hide-metadata',
139 array($this, 'settings_page')
140 );
141 }
142
143 /**
144 * Hide/Remove MetaData: settings_page
145 * Hide/Remove MetaData Setting function
146 */
147 function settings_page()
148 {
149 if (! current_user_can('manage_options')) {
150 wp_die(esc_html__('You do not have sufficient permissions to access this page.', 'hide-metadata'));
151 }
152
153 require plugin_dir_path(__FILE__) . 'partials/admin-display.php';
154 }
155
156 function register_settings()
157 {
158 register_setting(
159 'hide-metadata-group',
160 'hide_metadata_options',
161 array($this, 'sanitize_callback')
162 );
163 }
164
165 public function sanitize_callback($input)
166 {
167
168 if (isset($input['reset']) && $input['reset']) {
169 // If reset, restore defaults
170 return hide_metadata_default_options();
171 }
172 $message = null;
173 $type = null;
174
175 // Verify the nonce before proceeding.
176 if ((defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
177 || (! isset($_POST['hide_metadata_nonce'])
178 || ! wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['hide_metadata_nonce'])), HIDE_METADATA_BASENAME))
179 || (! check_admin_referer(HIDE_METADATA_BASENAME, 'hide_metadata_nonce'))
180 ) {
181
182 return esc_html__('Invalid Nonce', 'hide-metadata');
183 } else {
184 if (null !== $input) {
185
186 $input['hide_by'] = sanitize_key($input['hide_by']);
187 $input['hide_author'] = (isset($input['hide_author']) && '1' === $input['hide_author']) ? '1' : '0';
188 $input['hide_date'] = (isset($input['hide_date']) && '1' === $input['hide_date']) ? '1' : '0';
189 }
190 return $input;
191 }
192 }
193
194
195 // Removal using css
196
197 public function hide_metadata_body_class($classes)
198 {
199
200 $options = hide_metadata_get_options();
201
202 if ('1' === $options['hide_author'] && 'css' === $options['hide_by']) {
203 $classes[] = 'hide-meta-author';
204 }
205 if ('1' === $options['hide_date'] && 'css' === $options['hide_by']) {
206 $classes[] = 'hide-meta-date';
207 }
208 if ('1' === $options['hide_date'] && 'php' === $options['hide_by']) {
209 $classes[] = 'hide-meta-date-php';
210 }
211 if ('1' === $options['hide_author'] && 'php' === $options['hide_by']) {
212 $classes[] = 'hide-meta-author-php';
213 }
214
215 return $classes;
216 }
217
218
219
220 function remove_php()
221 {
222 $options = hide_metadata_get_options();
223
224 if ('1' === $options['hide_author']) {
225 add_filter('the_author', '__return_false');
226 add_filter('get_the_author', '__return_false');
227 add_filter('author_link', '__return_false');
228 }
229
230 if ('1' === $options['hide_date']) {
231 add_filter('the_date', '__return_false');
232 add_filter('the_time', '__return_false');
233 add_filter('the_modified_date', '__return_false');
234 add_filter('get_the_date', '__return_false');
235 add_filter('get_the_time', '__return_false');
236 add_filter('get_the_modified_date', '__return_false');
237 }
238 }
239
240
241 function add_plugin_meta_links($meta_fields, $file)
242 {
243
244 if (plugin_basename(__FILE__) === $file) {
245
246 $meta_fields[] = "<a href='https://catchplugins.com/support-forum/forum/hide-metadata/' target='_blank'>Support Forum</a>";
247 $meta_fields[] = "<a href='https://wordpress.org/support/plugin/hide-metadata/reviews#new-post' target='_blank' title='Rate'>
248 <i class='ct-rate-stars'>"
249 . "<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-star'><polygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/></svg>"
250 . "<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-star'><polygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/></svg>"
251 . "<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-star'><polygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/></svg>"
252 . "<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-star'><polygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/></svg>"
253 . "<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-star'><polygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/></svg>"
254 . '</i></a>';
255
256 $stars_color = '#ffb900';
257
258 echo '<style>'
259 . '.ct-rate-stars{display:inline-block;color:' . esc_html($stars_color) . ';position:relative;top:3px;}'
260 . '.ct-rate-stars svg{fill:' . esc_html($stars_color) . ';}'
261 . '.ct-rate-stars svg:hover{fill:' . esc_html($stars_color) . '}'
262 . '.ct-rate-stars svg:hover ~ svg{fill:none;}'
263 . '</style>';
264 }
265
266 return $meta_fields;
267 }
268 }
269
270 new Hide_Metadata();
271
272
273 function hide_metadata_default_options($option = null)
274 {
275 $default_options = array(
276 'hide_by' => 'css',
277 'hide_author' => '0',
278 'hide_date' => '0',
279 );
280
281 if (null === $option) {
282 return apply_filters('hide_metadata_options', $default_options);
283 } else {
284 return $default_options[$option];
285 }
286 }
287
288 function hide_metadata_get_options()
289 {
290 $defaults = hide_metadata_default_options();
291 $options = get_option('hide_metadata_options', $defaults);
292
293 return wp_parse_args($options, $defaults);
294 }
295