PluginProbe
Hide/Remove Metadata / 2.0
Hide/Remove Metadata v2.0
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 2.0, at hide-metadata.php

294 lines 9.7 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.0
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.0' );
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 if (isset($_GET['page']) && 'hide-metadata' === $_GET['page']) {
82 wp_enqueue_style($this->plugin_name . '-display-dashboard', plugin_dir_url(__FILE__) . 'css/admin-dashboard.css', array(), $this->version, 'all');
83 }
84 }
85
86
87 function plugin_styles()
88 {
89 wp_enqueue_style($this->plugin_name . '-style', plugin_dir_url(__FILE__) . 'css/style.css', array(), $this->version, 'all');
90 }
91
92
93 /**
94 * Register the scripts for the admin area.
95 *
96 * @since 1.0.0
97 */
98 function enqueue_scripts()
99 {
100 if (isset($_GET['page']) && 'hide-metadata' === $_GET['page']) {
101 wp_enqueue_script($this->plugin_name, plugin_dir_url(__FILE__) . 'js/hide-metadata-admin.js', array('jquery', 'matchHeight', 'jquery-ui-tooltip'), $this->version, false);
102
103 wp_enqueue_script('matchHeight', plugin_dir_url(__FILE__) . 'js/jquery-matchHeight.min.js', array('jquery'), $this->version, false);
104 }
105 }
106
107 /**
108 * Hide/Remove MetaData: action_links
109 * Hide/Remove MetaData Settings Link function callback
110 *
111 * @param arrray $links Link url.
112 *
113 * @param arrray $file File name.
114 */
115 function action_links($links, $file)
116 {
117 if ($file === $this->plugin_name . '/' . $this->plugin_name . '.php') {
118 $settings_link = '<a href="' . esc_url(admin_url('admin.php?page=hide-metadata')) . '">' . esc_html__('Settings', 'hide-metadata') . '</a>';
119
120 array_unshift($links, $settings_link);
121 }
122 return $links;
123 }
124
125 /**
126 * Add settings menu
127 */
128 function add_plugin_settings_menu()
129 {
130 // Add menu under tools
131 add_submenu_page(
132 'tools.php',
133 esc_html__('Hide/Remove Metadata', 'hide-metadata'),
134 esc_html__('Hide/Remove Metadata', 'hide-metadata'),
135 'manage_options',
136 'hide-metadata',
137 array($this, 'settings_page')
138 );
139 }
140
141 /**
142 * Hide/Remove MetaData: settings_page
143 * Hide/Remove MetaData Setting function
144 */
145 function settings_page()
146 {
147 if (! current_user_can('manage_options')) {
148 wp_die(esc_html__('You do not have sufficient permissions to access this page.', 'hide-metadata'));
149 }
150
151 require plugin_dir_path(__FILE__) . 'partials/admin-display.php';
152 }
153
154 function register_settings()
155 {
156 register_setting(
157 'hide-metadata-group',
158 'hide_metadata_options',
159 array($this, 'sanitize_callback')
160 );
161 }
162
163 public function sanitize_callback($input)
164 {
165
166 if (isset($input['reset']) && $input['reset']) {
167 // If reset, restore defaults
168 return hide_metadata_default_options();
169 }
170 $message = null;
171 $type = null;
172
173 // Verify the nonce before proceeding.
174 if ((defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
175 || (! isset($_POST['hide_metadata_nonce'])
176 || ! wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['hide_metadata_nonce'])), HIDE_METADATA_BASENAME))
177 || (! check_admin_referer(HIDE_METADATA_BASENAME, 'hide_metadata_nonce'))
178 ) {
179
180 return esc_html__('Invalid Nonce', 'hide-metadata');
181 } else {
182 if (null !== $input) {
183
184 $input['hide_by'] = sanitize_key($input['hide_by']);
185 $input['hide_author'] = (isset($input['hide_author']) && '1' === $input['hide_author']) ? '1' : '0';
186 $input['hide_date'] = (isset($input['hide_date']) && '1' === $input['hide_date']) ? '1' : '0';
187 }
188 return $input;
189 }
190 }
191
192
193 // Removal using css
194
195 public function hide_metadata_body_class($classes)
196 {
197
198 $options = hide_metadata_get_options();
199
200 if ('1' === $options['hide_author'] && 'css' === $options['hide_by']) {
201 $classes[] = 'hide-meta-author';
202 }
203 if ('1' === $options['hide_date'] && 'css' === $options['hide_by']) {
204 $classes[] = 'hide-meta-date';
205 }
206 if ('1' === $options['hide_date'] && 'php' === $options['hide_by']) {
207 $classes[] = 'hide-meta-date-php';
208 }
209 if ('1' === $options['hide_author'] && 'php' === $options['hide_by']) {
210 $classes[] = 'hide-meta-author-php';
211 }
212
213 return $classes;
214 }
215
216
217
218 function remove_php()
219 {
220 $options = hide_metadata_get_options();
221
222 if ('1' === $options['hide_author']) {
223 add_filter('the_author', '__return_false');
224 add_filter('get_the_author', '__return_false');
225 add_filter('author_link', '__return_false');
226 }
227
228 if ('1' === $options['hide_date']) {
229 add_filter('the_date', '__return_false');
230 add_filter('the_time', '__return_false');
231 add_filter('the_modified_date', '__return_false');
232 add_filter('get_the_date', '__return_false');
233 add_filter('get_the_title', '__return_false');
234 add_filter('get_the_time', '__return_false');
235 add_filter('get_the_modified_date', '__return_false');
236 }
237 }
238
239
240 function add_plugin_meta_links($meta_fields, $file)
241 {
242
243 if (plugin_basename(__FILE__) === $file) {
244
245 $meta_fields[] = "<a href='https://catchplugins.com/support-forum/forum/hide-metadata/' target='_blank'>Support Forum</a>";
246 $meta_fields[] = "<a href='https://wordpress.org/support/plugin/hide-metadata/reviews#new-post' target='_blank' title='Rate'>
247 <i class='ct-rate-stars'>"
248 . "<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>"
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 . '</i></a>';
254
255 $stars_color = '#ffb900';
256
257 echo '<style>'
258 . '.ct-rate-stars{display:inline-block;color:' . esc_html($stars_color) . ';position:relative;top:3px;}'
259 . '.ct-rate-stars svg{fill:' . esc_html($stars_color) . ';}'
260 . '.ct-rate-stars svg:hover{fill:' . esc_html($stars_color) . '}'
261 . '.ct-rate-stars svg:hover ~ svg{fill:none;}'
262 . '</style>';
263 }
264
265 return $meta_fields;
266 }
267 }
268
269 new Hide_Metadata();
270
271
272 function hide_metadata_default_options($option = null)
273 {
274 $default_options = array(
275 'hide_by' => 'css',
276 'hide_author' => '0',
277 'hide_date' => '0',
278 );
279
280 if (null === $option) {
281 return apply_filters('hide_metadata_options', $default_options);
282 } else {
283 return $default_options[$option];
284 }
285 }
286
287 function hide_metadata_get_options()
288 {
289 $defaults = hide_metadata_default_options();
290 $options = get_option('hide_metadata_options', $defaults);
291
292 return wp_parse_args($options, $defaults);
293 }
294