WP Date Remover - Version 1.1.0

Version Description

  • WPML 3.8 compatibility.
Download this release

Release Info

Developer selmam
Plugin Icon 128x128 WP Date Remover
Version 1.1.0
Comparing to
See all releases

Version 1.1.0

LICENSE.txt ADDED
@@ -0,0 +1,339 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ GNU GENERAL PUBLIC LICENSE
2
+ Version 2, June 1991
3
+
4
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
5
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6
+ Everyone is permitted to copy and distribute verbatim copies
7
+ of this license document, but changing it is not allowed.
8
+
9
+ Preamble
10
+
11
+ The licenses for most software are designed to take away your
12
+ freedom to share and change it. By contrast, the GNU General Public
13
+ License is intended to guarantee your freedom to share and change free
14
+ software--to make sure the software is free for all its users. This
15
+ General Public License applies to most of the Free Software
16
+ Foundation's software and to any other program whose authors commit to
17
+ using it. (Some other Free Software Foundation software is covered by
18
+ the GNU Lesser General Public License instead.) You can apply it to
19
+ your programs, too.
20
+
21
+ When we speak of free software, we are referring to freedom, not
22
+ price. Our General Public Licenses are designed to make sure that you
23
+ have the freedom to distribute copies of free software (and charge for
24
+ this service if you wish), that you receive source code or can get it
25
+ if you want it, that you can change the software or use pieces of it
26
+ in new free programs; and that you know you can do these things.
27
+
28
+ To protect your rights, we need to make restrictions that forbid
29
+ anyone to deny you these rights or to ask you to surrender the rights.
30
+ These restrictions translate to certain responsibilities for you if you
31
+ distribute copies of the software, or if you modify it.
32
+
33
+ For example, if you distribute copies of such a program, whether
34
+ gratis or for a fee, you must give the recipients all the rights that
35
+ you have. You must make sure that they, too, receive or can get the
36
+ source code. And you must show them these terms so they know their
37
+ rights.
38
+
39
+ We protect your rights with two steps: (1) copyright the software, and
40
+ (2) offer you this license which gives you legal permission to copy,
41
+ distribute and/or modify the software.
42
+
43
+ Also, for each author's protection and ours, we want to make certain
44
+ that everyone understands that there is no warranty for this free
45
+ software. If the software is modified by someone else and passed on, we
46
+ want its recipients to know that what they have is not the original, so
47
+ that any problems introduced by others will not reflect on the original
48
+ authors' reputations.
49
+
50
+ Finally, any free program is threatened constantly by software
51
+ patents. We wish to avoid the danger that redistributors of a free
52
+ program will individually obtain patent licenses, in effect making the
53
+ program proprietary. To prevent this, we have made it clear that any
54
+ patent must be licensed for everyone's free use or not licensed at all.
55
+
56
+ The precise terms and conditions for copying, distribution and
57
+ modification follow.
58
+
59
+ GNU GENERAL PUBLIC LICENSE
60
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
+
62
+ 0. This License applies to any program or other work which contains
63
+ a notice placed by the copyright holder saying it may be distributed
64
+ under the terms of this General Public License. The "Program", below,
65
+ refers to any such program or work, and a "work based on the Program"
66
+ means either the Program or any derivative work under copyright law:
67
+ that is to say, a work containing the Program or a portion of it,
68
+ either verbatim or with modifications and/or translated into another
69
+ language. (Hereinafter, translation is included without limitation in
70
+ the term "modification".) Each licensee is addressed as "you".
71
+
72
+ Activities other than copying, distribution and modification are not
73
+ covered by this License; they are outside its scope. The act of
74
+ running the Program is not restricted, and the output from the Program
75
+ is covered only if its contents constitute a work based on the
76
+ Program (independent of having been made by running the Program).
77
+ Whether that is true depends on what the Program does.
78
+
79
+ 1. You may copy and distribute verbatim copies of the Program's
80
+ source code as you receive it, in any medium, provided that you
81
+ conspicuously and appropriately publish on each copy an appropriate
82
+ copyright notice and disclaimer of warranty; keep intact all the
83
+ notices that refer to this License and to the absence of any warranty;
84
+ and give any other recipients of the Program a copy of this License
85
+ along with the Program.
86
+
87
+ You may charge a fee for the physical act of transferring a copy, and
88
+ you may at your option offer warranty protection in exchange for a fee.
89
+
90
+ 2. You may modify your copy or copies of the Program or any portion
91
+ of it, thus forming a work based on the Program, and copy and
92
+ distribute such modifications or work under the terms of Section 1
93
+ above, provided that you also meet all of these conditions:
94
+
95
+ a) You must cause the modified files to carry prominent notices
96
+ stating that you changed the files and the date of any change.
97
+
98
+ b) You must cause any work that you distribute or publish, that in
99
+ whole or in part contains or is derived from the Program or any
100
+ part thereof, to be licensed as a whole at no charge to all third
101
+ parties under the terms of this License.
102
+
103
+ c) If the modified program normally reads commands interactively
104
+ when run, you must cause it, when started running for such
105
+ interactive use in the most ordinary way, to print or display an
106
+ announcement including an appropriate copyright notice and a
107
+ notice that there is no warranty (or else, saying that you provide
108
+ a warranty) and that users may redistribute the program under
109
+ these conditions, and telling the user how to view a copy of this
110
+ License. (Exception: if the Program itself is interactive but
111
+ does not normally print such an announcement, your work based on
112
+ the Program is not required to print an announcement.)
113
+
114
+ These requirements apply to the modified work as a whole. If
115
+ identifiable sections of that work are not derived from the Program,
116
+ and can be reasonably considered independent and separate works in
117
+ themselves, then this License, and its terms, do not apply to those
118
+ sections when you distribute them as separate works. But when you
119
+ distribute the same sections as part of a whole which is a work based
120
+ on the Program, the distribution of the whole must be on the terms of
121
+ this License, whose permissions for other licensees extend to the
122
+ entire whole, and thus to each and every part regardless of who wrote it.
123
+
124
+ Thus, it is not the intent of this section to claim rights or contest
125
+ your rights to work written entirely by you; rather, the intent is to
126
+ exercise the right to control the distribution of derivative or
127
+ collective works based on the Program.
128
+
129
+ In addition, mere aggregation of another work not based on the Program
130
+ with the Program (or with a work based on the Program) on a volume of
131
+ a storage or distribution medium does not bring the other work under
132
+ the scope of this License.
133
+
134
+ 3. You may copy and distribute the Program (or a work based on it,
135
+ under Section 2) in object code or executable form under the terms of
136
+ Sections 1 and 2 above provided that you also do one of the following:
137
+
138
+ a) Accompany it with the complete corresponding machine-readable
139
+ source code, which must be distributed under the terms of Sections
140
+ 1 and 2 above on a medium customarily used for software interchange; or,
141
+
142
+ b) Accompany it with a written offer, valid for at least three
143
+ years, to give any third party, for a charge no more than your
144
+ cost of physically performing source distribution, a complete
145
+ machine-readable copy of the corresponding source code, to be
146
+ distributed under the terms of Sections 1 and 2 above on a medium
147
+ customarily used for software interchange; or,
148
+
149
+ c) Accompany it with the information you received as to the offer
150
+ to distribute corresponding source code. (This alternative is
151
+ allowed only for noncommercial distribution and only if you
152
+ received the program in object code or executable form with such
153
+ an offer, in accord with Subsection b above.)
154
+
155
+ The source code for a work means the preferred form of the work for
156
+ making modifications to it. For an executable work, complete source
157
+ code means all the source code for all modules it contains, plus any
158
+ associated interface definition files, plus the scripts used to
159
+ control compilation and installation of the executable. However, as a
160
+ special exception, the source code distributed need not include
161
+ anything that is normally distributed (in either source or binary
162
+ form) with the major components (compiler, kernel, and so on) of the
163
+ operating system on which the executable runs, unless that component
164
+ itself accompanies the executable.
165
+
166
+ If distribution of executable or object code is made by offering
167
+ access to copy from a designated place, then offering equivalent
168
+ access to copy the source code from the same place counts as
169
+ distribution of the source code, even though third parties are not
170
+ compelled to copy the source along with the object code.
171
+
172
+ 4. You may not copy, modify, sublicense, or distribute the Program
173
+ except as expressly provided under this License. Any attempt
174
+ otherwise to copy, modify, sublicense or distribute the Program is
175
+ void, and will automatically terminate your rights under this License.
176
+ However, parties who have received copies, or rights, from you under
177
+ this License will not have their licenses terminated so long as such
178
+ parties remain in full compliance.
179
+
180
+ 5. You are not required to accept this License, since you have not
181
+ signed it. However, nothing else grants you permission to modify or
182
+ distribute the Program or its derivative works. These actions are
183
+ prohibited by law if you do not accept this License. Therefore, by
184
+ modifying or distributing the Program (or any work based on the
185
+ Program), you indicate your acceptance of this License to do so, and
186
+ all its terms and conditions for copying, distributing or modifying
187
+ the Program or works based on it.
188
+
189
+ 6. Each time you redistribute the Program (or any work based on the
190
+ Program), the recipient automatically receives a license from the
191
+ original licensor to copy, distribute or modify the Program subject to
192
+ these terms and conditions. You may not impose any further
193
+ restrictions on the recipients' exercise of the rights granted herein.
194
+ You are not responsible for enforcing compliance by third parties to
195
+ this License.
196
+
197
+ 7. If, as a consequence of a court judgment or allegation of patent
198
+ infringement or for any other reason (not limited to patent issues),
199
+ conditions are imposed on you (whether by court order, agreement or
200
+ otherwise) that contradict the conditions of this License, they do not
201
+ excuse you from the conditions of this License. If you cannot
202
+ distribute so as to satisfy simultaneously your obligations under this
203
+ License and any other pertinent obligations, then as a consequence you
204
+ may not distribute the Program at all. For example, if a patent
205
+ license would not permit royalty-free redistribution of the Program by
206
+ all those who receive copies directly or indirectly through you, then
207
+ the only way you could satisfy both it and this License would be to
208
+ refrain entirely from distribution of the Program.
209
+
210
+ If any portion of this section is held invalid or unenforceable under
211
+ any particular circumstance, the balance of the section is intended to
212
+ apply and the section as a whole is intended to apply in other
213
+ circumstances.
214
+
215
+ It is not the purpose of this section to induce you to infringe any
216
+ patents or other property right claims or to contest validity of any
217
+ such claims; this section has the sole purpose of protecting the
218
+ integrity of the free software distribution system, which is
219
+ implemented by public license practices. Many people have made
220
+ generous contributions to the wide range of software distributed
221
+ through that system in reliance on consistent application of that
222
+ system; it is up to the author/donor to decide if he or she is willing
223
+ to distribute software through any other system and a licensee cannot
224
+ impose that choice.
225
+
226
+ This section is intended to make thoroughly clear what is believed to
227
+ be a consequence of the rest of this License.
228
+
229
+ 8. If the distribution and/or use of the Program is restricted in
230
+ certain countries either by patents or by copyrighted interfaces, the
231
+ original copyright holder who places the Program under this License
232
+ may add an explicit geographical distribution limitation excluding
233
+ those countries, so that distribution is permitted only in or among
234
+ countries not thus excluded. In such case, this License incorporates
235
+ the limitation as if written in the body of this License.
236
+
237
+ 9. The Free Software Foundation may publish revised and/or new versions
238
+ of the General Public License from time to time. Such new versions will
239
+ be similar in spirit to the present version, but may differ in detail to
240
+ address new problems or concerns.
241
+
242
+ Each version is given a distinguishing version number. If the Program
243
+ specifies a version number of this License which applies to it and "any
244
+ later version", you have the option of following the terms and conditions
245
+ either of that version or of any later version published by the Free
246
+ Software Foundation. If the Program does not specify a version number of
247
+ this License, you may choose any version ever published by the Free Software
248
+ Foundation.
249
+
250
+ 10. If you wish to incorporate parts of the Program into other free
251
+ programs whose distribution conditions are different, write to the author
252
+ to ask for permission. For software which is copyrighted by the Free
253
+ Software Foundation, write to the Free Software Foundation; we sometimes
254
+ make exceptions for this. Our decision will be guided by the two goals
255
+ of preserving the free status of all derivatives of our free software and
256
+ of promoting the sharing and reuse of software generally.
257
+
258
+ NO WARRANTY
259
+
260
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266
+ TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268
+ REPAIR OR CORRECTION.
269
+
270
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274
+ OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275
+ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278
+ POSSIBILITY OF SUCH DAMAGES.
279
+
280
+ END OF TERMS AND CONDITIONS
281
+
282
+ How to Apply These Terms to Your New Programs
283
+
284
+ If you develop a new program, and you want it to be of the greatest
285
+ possible use to the public, the best way to achieve this is to make it
286
+ free software which everyone can redistribute and change under these terms.
287
+
288
+ To do so, attach the following notices to the program. It is safest
289
+ to attach them to the start of each source file to most effectively
290
+ convey the exclusion of warranty; and each file should have at least
291
+ the "copyright" line and a pointer to where the full notice is found.
292
+
293
+ <one line to give the program's name and a brief idea of what it does.>
294
+ Copyright (C) <year> <name of author>
295
+
296
+ This program is free software; you can redistribute it and/or modify
297
+ it under the terms of the GNU General Public License as published by
298
+ the Free Software Foundation; either version 2 of the License, or
299
+ (at your option) any later version.
300
+
301
+ This program is distributed in the hope that it will be useful,
302
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
303
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304
+ GNU General Public License for more details.
305
+
306
+ You should have received a copy of the GNU General Public License along
307
+ with this program; if not, write to the Free Software Foundation, Inc.,
308
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
309
+
310
+ Also add information on how to contact you by electronic and paper mail.
311
+
312
+ If the program is interactive, make it output a short notice like this
313
+ when it starts in an interactive mode:
314
+
315
+ Gnomovision version 69, Copyright (C) year name of author
316
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
317
+ This is free software, and you are welcome to redistribute it
318
+ under certain conditions; type `show c' for details.
319
+
320
+ The hypothetical commands `show w' and `show c' should show the appropriate
321
+ parts of the General Public License. Of course, the commands you use may
322
+ be called something other than `show w' and `show c'; they could even be
323
+ mouse-clicks or menu items--whatever suits your program.
324
+
325
+ You should also get your employer (if you work as a programmer) or your
326
+ school, if any, to sign a "copyright disclaimer" for the program, if
327
+ necessary. Here is a sample; alter the names:
328
+
329
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
330
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
331
+
332
+ <signature of Ty Coon>, 1 April 1989
333
+ Ty Coon, President of Vice
334
+
335
+ This General Public License does not permit incorporating your program into
336
+ proprietary programs. If your program is a subroutine library, you may
337
+ consider it more useful to permit linking proprietary applications with the
338
+ library. If this is what you want to do, use the GNU Lesser General
339
+ Public License instead of this License.
README.txt ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === WP Date Remover ===
2
+ Contributors: selmam
3
+ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=HDDZC67MECKQQ
4
+ Tags: Remove Time And Date, Date Information, Date, Posting Date, Remove, Remover, Entry-Meta, Free, Post, Posts, Category, Categories, Specific Post Categories, WP Date Remover, Timeless, Timeless Content, Evergreen
5
+ Requires at least: 4.0
6
+ Tested up to: 4.8.2
7
+ Stable tag: 1.1.0
8
+ License: GPLv2 or later
9
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
+
11
+ The easiest way to remove the time and date from specific post categories.
12
+
13
+ == Description ==
14
+
15
+ WP Date Remover allows you to quickly and easily remove the time and date from specific post categories.
16
+
17
+ There are plenty of similar plugins out there – but what makes WP Date Remover unique – is that it allows you to remove the time and date from specific categories. This means you get to choose!
18
+
19
+ If you like this plugin, please rate it.
20
+
21
+ == Installation ==
22
+
23
+ To install the plugin, you can either use the built in automatic installer in WordPress or install the plugin manually.
24
+
25
+ = Install the plugin in WordPress: =
26
+ Go to Plugins => Add New => and search for: WP Date Remover
27
+ Press Install Now for the WP Date Remover plugin
28
+ Press Activate Plugin
29
+
30
+ = Install the plugin manually: =
31
+ Upload the WP Date Remover directory to the /wp-content/plugins/ directory
32
+ Activate the plugin through the Plugins menu in WordPress
33
+
34
+ = Configuring the plugin: =
35
+ Go to Settings => Wp Date Remover
36
+ Select the categories you want to hide time and date in
37
+ Click Update
38
+ You’re done
39
+
40
+ == Frequently Asked Questions ==
41
+
42
+ = I miss a feature, can you add it? =
43
+
44
+ Feel free to send me an email, if more people request the same feature I will add it.
45
+
46
+ == Screenshots ==
47
+
48
+ 1. Before activation
49
+ 2. After activation
50
+ 3. Settings page
51
+
52
+ == Changelog ==
53
+
54
+ = 1.1.0 =
55
+ * WPML 3.8 compatibility.
56
+
57
+ = 1.0.2 =
58
+ * Tested & found compatible with WP 4.8.1.
59
+
60
+ = 1.0.1 =
61
+ * Tested & found compatible with WP 4.7.2.
62
+
63
+ = 1.0.0 =
64
+ * First release
65
+
66
+ == Upgrade Notice ==
67
+
68
+ = 1.1.0 - October 11th, 2017 =
69
+ * WPML 3.8 compatibility.
70
+
71
+
72
+
admin/class-wp-date-remover-admin.php ADDED
@@ -0,0 +1,188 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * The admin-specific functionality of the plugin.
5
+ *
6
+ * @link http://selmamariudottir.com
7
+ * @since 1.0.0
8
+ *
9
+ * @package Wp_Date_Remover
10
+ * @subpackage Wp_Date_Remover/admin
11
+ */
12
+
13
+ /**
14
+ * The admin-specific functionality of the plugin.
15
+ *
16
+ * Defines the plugin name, version, and two examples hooks for how to
17
+ * enqueue the admin-specific stylesheet and JavaScript.
18
+ *
19
+ * @package Wp_Date_Remover
20
+ * @subpackage Wp_Date_Remover/admin
21
+ * @author Selma Mariudottir <selma@selmamariudottir.com>
22
+ */
23
+ class Wp_Date_Remover_Admin {
24
+
25
+ /**
26
+ * The ID of this plugin.
27
+ *
28
+ * @since 1.0.0
29
+ * @access private
30
+ * @var string $plugin_name The ID of this plugin.
31
+ */
32
+ private $plugin_name;
33
+
34
+ /**
35
+ * The version of this plugin.
36
+ *
37
+ * @since 1.0.0
38
+ * @access private
39
+ * @var string $version The current version of this plugin.
40
+ */
41
+ private $version;
42
+
43
+ /**
44
+ * Initialize the class and set its properties.
45
+ *
46
+ * @since 1.0.0
47
+ * @param string $plugin_name The name of this plugin.
48
+ * @param string $version The version of this plugin.
49
+ */
50
+ public function __construct( $plugin_name, $version ) {
51
+
52
+ $this->plugin_name = $plugin_name;
53
+ $this->version = $version;
54
+
55
+ }
56
+
57
+ /**
58
+ * Register the stylesheets for the admin area.
59
+ *
60
+ * @since 1.0.0
61
+ */
62
+ public function enqueue_styles() {
63
+
64
+ /**
65
+ * This function is provided for demonstration purposes only.
66
+ *
67
+ * An instance of this class should be passed to the run() function
68
+ * defined in Wp_Date_Remover_Loader as all of the hooks are defined
69
+ * in that particular class.
70
+ *
71
+ * The Wp_Date_Remover_Loader will then create the relationship
72
+ * between the defined hooks and the functions defined in this
73
+ * class.
74
+ */
75
+
76
+ wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/wp-date-remover-admin.css', array(), $this->version, 'all' );
77
+
78
+ }
79
+
80
+ /**
81
+ * Register the JavaScript for the admin area.
82
+ *
83
+ * @since 1.0.0
84
+ */
85
+ public function enqueue_scripts() {
86
+
87
+ /**
88
+ * This function is provided for demonstration purposes only.
89
+ *
90
+ * An instance of this class should be passed to the run() function
91
+ * defined in Wp_Date_Remover_Loader as all of the hooks are defined
92
+ * in that particular class.
93
+ *
94
+ * The Wp_Date_Remover_Loader will then create the relationship
95
+ * between the defined hooks and the functions defined in this
96
+ * class.
97
+ */
98
+
99
+ wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/wp-date-remover-admin.js', array( 'jquery' ), $this->version, false );
100
+
101
+ }
102
+ /**
103
+ * Register the administration menu for this plugin into the WordPress Dashboard menu.
104
+ *
105
+ * @since 1.0.0
106
+ */
107
+
108
+ public function add_plugin_admin_menu() {
109
+
110
+ /*
111
+ * Add a settings page for this plugin to the Settings menu.
112
+ *
113
+ * NOTE: Alternative menu locations are available via WordPress administration menu functions.
114
+ *
115
+ * Administration Menus: http://codex.wordpress.org/Administration_Menus
116
+ *
117
+ */
118
+ add_options_page( 'WP Date Remover', 'WP Date Remover', 'manage_options', $this->plugin_name, array($this, 'wp_date_remove_settings')
119
+ );
120
+ }
121
+
122
+ /**
123
+ * Add settings action link to the plugins page.
124
+ *
125
+ * @since 1.0.0
126
+ */
127
+
128
+ public function add_action_links( $links ) {
129
+ /*
130
+ * Documentation : https://codex.wordpress.org/Plugin_API/Filter_Reference/plugin_action_links_(plugin_file_name)
131
+ */
132
+ $settings_link = array(
133
+ '<a href="' . admin_url( 'options-general.php?page=' . $this->plugin_name ) . '">' . __('Settings', $this->plugin_name) . '</a>',
134
+ );
135
+ return array_merge( $settings_link, $links );
136
+
137
+ }
138
+
139
+ /**
140
+ * Render the settings page for this plugin.
141
+ *
142
+ * @since 1.0.0
143
+ */
144
+
145
+ public function wp_date_remove_settings() {
146
+ include_once( 'partials/wp-date-remover-admin-display.php' );
147
+ }
148
+
149
+ /*======= Remove This OLD CODE WP DATE REMOVER ======= */
150
+
151
+ /*public function options_update() {
152
+ register_setting($this->plugin_name, $this->plugin_name, array($this, 'validate'));
153
+ }
154
+
155
+ public function validate($input) {
156
+ // All checkboxes inputs
157
+ $valid = array();
158
+
159
+ $wdr_args = array(
160
+ 'orderby' => 'name',
161
+ 'order' => 'ASC'
162
+ );
163
+ $wdr_categories = get_categories($wdr_args);
164
+ if(is_array($wdr_categories) && !empty($wdr_categories))
165
+ {
166
+ foreach($wdr_categories as $wdr_cat)
167
+ {
168
+ $wdr_i++;
169
+ $valid['removedt_'.$wdr_cat->term_id] = (isset($input['removedt_'.$wdr_cat->term_id]) && !empty($input['removedt_'.$wdr_cat->term_id])) ? 1 : 0;
170
+ }
171
+ }
172
+
173
+ return $valid;
174
+ }*/
175
+ /*======= \Remove This OLD CODE WP DATE REMOVER ======= */
176
+
177
+ public function wp_date_remover_add_notice()
178
+ {
179
+ include_once( 'partials/wp-date-remover-admin-display-notice.php' );
180
+ }
181
+
182
+ public function wp_date_remover_hide_notice()
183
+ {
184
+ update_option("wdr_admin_notices_show", 0);
185
+ }
186
+
187
+
188
+ }
admin/css/wp-date-remover-admin.css ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /**
2
+ * All of the CSS for your admin-specific functionality should be
3
+ * included in this file.
4
+ */
admin/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php // Silence is golden
admin/js/wp-date-remover-admin.js ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function($) {
2
+
3
+ $(document).ready(function() {
4
+
5
+ $("#wp_date_remover_no_btn").click(wp_date_remover_hide_notice);
6
+
7
+ if($("#wp_date_remover_yes_btn").length > 0) {
8
+
9
+ $("#wp_date_remover_yes_btn").click(function() {
10
+ $("#wp_date_remover_form").show().next().hide();
11
+ });
12
+
13
+ $("#wp_date_remover_form").submit(function() {
14
+ $("#wp_date_remover_no_btn").click();
15
+ });
16
+ }
17
+
18
+ });
19
+
20
+ wp_date_remover_hide_notice = function(e){
21
+ var data = {
22
+ 'action': 'wp_date_remover_hide_notice',
23
+ };
24
+
25
+ $.post(ajaxurl, data, function(response) {
26
+ $(e.target).closest("div#wp-date-remover-notice").remove();
27
+ });
28
+ return false;
29
+ };
30
+
31
+ })(jQuery);
admin/partials/wp-date-remover-admin-display-notice.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Provide a admin area view for the plugin
5
+ *
6
+ * This file is used to markup the admin-facing aspects of the plugin.
7
+ *
8
+ * @link http://selmamariudottir.com
9
+ * @since 1.0.0
10
+ *
11
+ * @package Wp_Date_Remover
12
+ * @subpackage Wp_Date_Remover/admin/partials
13
+ */
14
+ ?>
15
+
16
+ <!-- This file should primarily consist of HTML with a little bit of PHP. -->
17
+ <?php
18
+ if (get_option("wdr_admin_notices_show", true)) {
19
+ ?>
20
+ <div id="wp-date-remover-notice" class="update-nag" style="border-left: 4px solid lightgreen;">
21
+ <b>Thank you for using WP Date Remover</b>
22
+
23
+ <p style='font-size: 1.15em;'>Want to get WordPress Plugins, Videos, and Other Useful Resources - FREE!</em></p>
24
+
25
+ <p>
26
+
27
+ <form target="_blank" action="https://app.convertkit.com/landing_pages/266937/subscribe" id="wp_date_remover_form" style="display: none;" data-remote="true">
28
+
29
+ <label>Please send it to</label>
30
+
31
+ <input type="email" name="email" id="ck_emailField" required/>
32
+
33
+ <input type="hidden" name="id" value="266937"/>
34
+
35
+ <input type="submit" class="button button-primary" value="Get it now!">
36
+ </form>
37
+
38
+ <div>
39
+ <input id="wp_date_remover_yes_btn" type="button" class="button button-primary" value="Yes, please!">
40
+ <input id="wp_date_remover_no_btn" type="button" class="button" value="No, thanks." style='margin-left: 0.5em;'>
41
+ </div>
42
+
43
+ </p>
44
+ </div>
45
+ <?php
46
+
47
+ }
admin/partials/wp-date-remover-admin-display.php ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Provide a admin area view for the plugin
5
+ *
6
+ * This file is used to markup the admin-facing aspects of the plugin.
7
+ *
8
+ * @link http://selmamariudottir.com
9
+ * @since 1.0.0
10
+ *
11
+ * @package Wp_Date_Remover
12
+ * @subpackage Wp_Date_Remover/admin/partials
13
+ */
14
+ ?>
15
+
16
+ <!-- This file should primarily consist of HTML with a little bit of PHP. -->
17
+ <div class="wrap">
18
+
19
+ <?php
20
+ /*======== WP DATE REMOVER OPTION FIELD START =======*/
21
+ $wp_date_option = get_option('wp-date-remover');
22
+
23
+ if(is_array($wp_date_option) && !empty($wp_date_option))
24
+ {
25
+ foreach($wp_date_option as $key => $value)
26
+ {
27
+ $option_term_id = explode('_',$key);
28
+
29
+ if($value=='1')
30
+ {
31
+ if(is_array($option_term_id) && !empty($option_term_id))
32
+ {
33
+ update_term_meta($option_term_id[1], 'wp-date-remover', true);
34
+ delete_option('wp-date-remover');
35
+ }
36
+ }
37
+ }
38
+ }
39
+ /*======== \WP DATE REMOVER OPTION FIELD END =======*/
40
+
41
+ /*======= WP DATE REMOVER SUBMIT CODE START ======= */
42
+ global $wpdb;
43
+ if(isset($_POST['wp_date_btn_submit']))
44
+ {
45
+ $wdr_args = array(
46
+ 'orderby' => 'name',
47
+ 'order' => 'ASC'
48
+ );
49
+ $wdr_categories = get_categories($wdr_args);
50
+ if(is_array($wdr_categories) && !empty($wdr_categories))
51
+ {
52
+ foreach($wdr_categories as $wdr_cat)
53
+ {
54
+ $t_id=$wdr_cat->term_id;
55
+
56
+ $t_val=$_POST['wp-date-remover-removedt'][$t_id];
57
+ if($t_val==1)
58
+ {
59
+ update_term_meta($t_id, 'wp-date-remover', 1);
60
+ }
61
+ else
62
+ {
63
+ update_term_meta($t_id, 'wp-date-remover', 0);
64
+ }
65
+ }
66
+ }
67
+ echo '<div class="updated"><p>Settings saved.</p></div>';
68
+
69
+ }
70
+ /*======= \WP DATE REMOVER SUBMIT CODE END ======= */
71
+ ?>
72
+
73
+ <h2><?php echo esc_html(get_admin_page_title()); ?></h2>
74
+ <?php
75
+ $wdr_args = array(
76
+ 'orderby' => 'name',
77
+ 'order' => 'ASC'
78
+ );
79
+ $wdr_categories = get_categories($wdr_args);
80
+ if(is_array($wdr_categories) && !empty($wdr_categories))
81
+ {
82
+ $wdr_i=0;
83
+ ?>
84
+ <form method="post" name="wdr_settings">
85
+ <table class="form-table">
86
+ <tbody>
87
+ <!-- remove date and time from specific categories -->
88
+ <?php
89
+ foreach($wdr_categories as $wdr_cat)
90
+ {
91
+ //Remove This OLD CODE WP DATE REMOVER
92
+ //$wdr_category_option=$options['removedt_'.$wdr_cat->term_id];
93
+ $wdr_category_option = get_term_meta($wdr_cat->term_id, 'wp-date-remover', true);
94
+ $wdr_i++;
95
+ if($wdr_i==1 || $wdr_i%3==1)
96
+ {
97
+ ?>
98
+
99
+ <tr>
100
+ <?php
101
+ }
102
+
103
+ ?>
104
+ <td>
105
+ <fieldset>
106
+ <legend class="screen-reader-text"><span><?php _e('Remove Date/Time', $this->plugin_name);?></span></legend>
107
+ <label for="<?php echo $this->plugin_name; ?>-removedt_<?php echo $wdr_cat->term_id; ?>">
108
+ <input type="checkbox" value="1" <?php if($wdr_category_option==1){echo "checked";}?> id="<?php echo $this->plugin_name; ?>-removedt_<?php echo $wdr_cat->term_id; ?>" name="<?php echo $this->plugin_name; ?>-removedt[<?php echo $wdr_cat->term_id; ?>]">
109
+ <span><?php esc_attr_e($wdr_cat->name, $this->plugin_name); ?></span>
110
+ </label>
111
+ </fieldset>
112
+ </td>
113
+
114
+ <?php
115
+ if($wdr_i%3==0 || $wdr_i==count($wdr_categories))
116
+ {
117
+ ?>
118
+ </tr>
119
+ <?php
120
+ }
121
+ }
122
+ ?>
123
+ </tbody>
124
+ </table>
125
+ <?php //Remove This OLD BUTTON WP DATE REMOVER
126
+ //submit_button(__('Save all changes', $this->plugin_name), 'primary','submit', TRUE); ?>
127
+ <input type="submit" name="wp_date_btn_submit" id="submit" class="button button-primary" value="Save all changes" />
128
+ </form>
129
+ <?php
130
+ }
131
+ ?>
132
+ </div>
includes/class-wp-date-remover-activator.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Fired during plugin activation
5
+ *
6
+ * @link http://selmamariudottir.com
7
+ * @since 1.0.0
8
+ *
9
+ * @package Wp_Date_Remover
10
+ * @subpackage Wp_Date_Remover/includes
11
+ */
12
+
13
+ /**
14
+ * Fired during plugin activation.
15
+ *
16
+ * This class defines all code necessary to run during the plugin's activation.
17
+ *
18
+ * @since 1.0.0
19
+ * @package Wp_Date_Remover
20
+ * @subpackage Wp_Date_Remover/includes
21
+ * @author Selma Mariudottir <selma@selmamariudottir.com>
22
+ */
23
+ class Wp_Date_Remover_Activator {
24
+
25
+ /**
26
+ * Short Description. (use period)
27
+ *
28
+ * Long Description.
29
+ *
30
+ * @since 1.0.0
31
+ */
32
+ public static function activate() {
33
+
34
+ }
35
+
36
+ }
includes/class-wp-date-remover-deactivator.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Fired during plugin deactivation
5
+ *
6
+ * @link http://selmamariudottir.com
7
+ * @since 1.0.0
8
+ *
9
+ * @package Wp_Date_Remover
10
+ * @subpackage Wp_Date_Remover/includes
11
+ */
12
+
13
+ /**
14
+ * Fired during plugin deactivation.
15
+ *
16
+ * This class defines all code necessary to run during the plugin's deactivation.
17
+ *
18
+ * @since 1.0.0
19
+ * @package Wp_Date_Remover
20
+ * @subpackage Wp_Date_Remover/includes
21
+ * @author Selma Mariudottir <selma@selmamariudottir.com>
22
+ */
23
+ class Wp_Date_Remover_Deactivator {
24
+
25
+ /**
26
+ * Short Description. (use period)
27
+ *
28
+ * Long Description.
29
+ *
30
+ * @since 1.0.0
31
+ */
32
+ public static function deactivate() {
33
+
34
+ }
35
+
36
+ }
includes/class-wp-date-remover-i18n.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Define the internationalization functionality
5
+ *
6
+ * Loads and defines the internationalization files for this plugin
7
+ * so that it is ready for translation.
8
+ *
9
+ * @link http://selmamariudottir.com
10
+ * @since 1.0.0
11
+ *
12
+ * @package Wp_Date_Remover
13
+ * @subpackage Wp_Date_Remover/includes
14
+ */
15
+
16
+ /**
17
+ * Define the internationalization functionality.
18
+ *
19
+ * Loads and defines the internationalization files for this plugin
20
+ * so that it is ready for translation.
21
+ *
22
+ * @since 1.0.0
23
+ * @package Wp_Date_Remover
24
+ * @subpackage Wp_Date_Remover/includes
25
+ * @author Selma Mariudottir <selma@selmamariudottir.com>
26
+ */
27
+ class Wp_Date_Remover_i18n {
28
+
29
+
30
+ /**
31
+ * Load the plugin text domain for translation.
32
+ *
33
+ * @since 1.0.0
34
+ */
35
+ public function load_plugin_textdomain() {
36
+
37
+ load_plugin_textdomain(
38
+ 'wp-date-remover',
39
+ false,
40
+ dirname( dirname( plugin_basename( __FILE__ ) ) ) . '/languages/'
41
+ );
42
+
43
+ }
44
+
45
+
46
+
47
+ }
includes/class-wp-date-remover-loader.php ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Register all actions and filters for the plugin
5
+ *
6
+ * @link http://selmamariudottir.com
7
+ * @since 1.0.0
8
+ *
9
+ * @package Wp_Date_Remover
10
+ * @subpackage Wp_Date_Remover/includes
11
+ */
12
+
13
+ /**
14
+ * Register all actions and filters for the plugin.
15
+ *
16
+ * Maintain a list of all hooks that are registered throughout
17
+ * the plugin, and register them with the WordPress API. Call the
18
+ * run function to execute the list of actions and filters.
19
+ *
20
+ * @package Wp_Date_Remover
21
+ * @subpackage Wp_Date_Remover/includes
22
+ * @author Selma Mariudottir <selma@selmamariudottir.com>
23
+ */
24
+ class Wp_Date_Remover_Loader {
25
+
26
+ /**
27
+ * The array of actions registered with WordPress.
28
+ *
29
+ * @since 1.0.0
30
+ * @access protected
31
+ * @var array $actions The actions registered with WordPress to fire when the plugin loads.
32
+ */
33
+ protected $actions;
34
+
35
+ /**
36
+ * The array of filters registered with WordPress.
37
+ *
38
+ * @since 1.0.0
39
+ * @access protected
40
+ * @var array $filters The filters registered with WordPress to fire when the plugin loads.
41
+ */
42
+ protected $filters;
43
+
44
+ /**
45
+ * Initialize the collections used to maintain the actions and filters.
46
+ *
47
+ * @since 1.0.0
48
+ */
49
+ public function __construct() {
50
+
51
+ $this->actions = array();
52
+ $this->filters = array();
53
+
54
+ }
55
+
56
+ /**
57
+ * Add a new action to the collection to be registered with WordPress.
58
+ *
59
+ * @since 1.0.0
60
+ * @param string $hook The name of the WordPress action that is being registered.
61
+ * @param object $component A reference to the instance of the object on which the action is defined.
62
+ * @param string $callback The name of the function definition on the $component.
63
+ * @param int $priority Optional. he priority at which the function should be fired. Default is 10.
64
+ * @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1.
65
+ */
66
+ public function add_action( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
67
+ $this->actions = $this->add( $this->actions, $hook, $component, $callback, $priority, $accepted_args );
68
+ }
69
+
70
+ /**
71
+ * Add a new filter to the collection to be registered with WordPress.
72
+ *
73
+ * @since 1.0.0
74
+ * @param string $hook The name of the WordPress filter that is being registered.
75
+ * @param object $component A reference to the instance of the object on which the filter is defined.
76
+ * @param string $callback The name of the function definition on the $component.
77
+ * @param int $priority Optional. he priority at which the function should be fired. Default is 10.
78
+ * @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1
79
+ */
80
+ public function add_filter( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
81
+ $this->filters = $this->add( $this->filters, $hook, $component, $callback, $priority, $accepted_args );
82
+ }
83
+
84
+ /**
85
+ * A utility function that is used to register the actions and hooks into a single
86
+ * collection.
87
+ *
88
+ * @since 1.0.0
89
+ * @access private
90
+ * @param array $hooks The collection of hooks that is being registered (that is, actions or filters).
91
+ * @param string $hook The name of the WordPress filter that is being registered.
92
+ * @param object $component A reference to the instance of the object on which the filter is defined.
93
+ * @param string $callback The name of the function definition on the $component.
94
+ * @param int $priority The priority at which the function should be fired.
95
+ * @param int $accepted_args The number of arguments that should be passed to the $callback.
96
+ * @return array The collection of actions and filters registered with WordPress.
97
+ */
98
+ private function add( $hooks, $hook, $component, $callback, $priority, $accepted_args ) {
99
+
100
+ $hooks[] = array(
101
+ 'hook' => $hook,
102
+ 'component' => $component,
103
+ 'callback' => $callback,
104
+ 'priority' => $priority,
105
+ 'accepted_args' => $accepted_args
106
+ );
107
+
108
+ return $hooks;
109
+
110
+ }
111
+
112
+ /**
113
+ * Register the filters and actions with WordPress.
114
+ *
115
+ * @since 1.0.0
116
+ */
117
+ public function run() {
118
+
119
+ foreach ( $this->filters as $hook ) {
120
+ add_filter( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
121
+ }
122
+
123
+ foreach ( $this->actions as $hook ) {
124
+ add_action( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
125
+ }
126
+
127
+ }
128
+
129
+ }
includes/class-wp-date-remover.php ADDED
@@ -0,0 +1,235 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * The file that defines the core plugin class
5
+ *
6
+ * A class definition that includes attributes and functions used across both the
7
+ * public-facing side of the site and the admin area.
8
+ *
9
+ * @link http://selmamariudottir.com
10
+ * @since 1.0.0
11
+ *
12
+ * @package Wp_Date_Remover
13
+ * @subpackage Wp_Date_Remover/includes
14
+ */
15
+
16
+ /**
17
+ * The core plugin class.
18
+ *
19
+ * This is used to define internationalization, admin-specific hooks, and
20
+ * public-facing site hooks.
21
+ *
22
+ * Also maintains the unique identifier of this plugin as well as the current
23
+ * version of the plugin.
24
+ *
25
+ * @since 1.0.0
26
+ * @package Wp_Date_Remover
27
+ * @subpackage Wp_Date_Remover/includes
28
+ * @author Selma Mariudottir <selma@selmamariudottir.com>
29
+ */
30
+ class Wp_Date_Remover {
31
+
32
+ /**
33
+ * The loader that's responsible for maintaining and registering all hooks that power
34
+ * the plugin.
35
+ *
36
+ * @since 1.0.0
37
+ * @access protected
38
+ * @var Wp_Date_Remover_Loader $loader Maintains and registers all hooks for the plugin.
39
+ */
40
+ protected $loader;
41
+
42
+ /**
43
+ * The unique identifier of this plugin.
44
+ *
45
+ * @since 1.0.0
46
+ * @access protected
47
+ * @var string $plugin_name The string used to uniquely identify this plugin.
48
+ */
49
+ protected $plugin_name;
50
+
51
+ /**
52
+ * The current version of the plugin.
53
+ *
54
+ * @since 1.0.0
55
+ * @access protected
56
+ * @var string $version The current version of the plugin.
57
+ */
58
+ protected $version;
59
+
60
+ /**
61
+ * Define the core functionality of the plugin.
62
+ *
63
+ * Set the plugin name and the plugin version that can be used throughout the plugin.
64
+ * Load the dependencies, define the locale, and set the hooks for the admin area and
65
+ * the public-facing side of the site.
66
+ *
67
+ * @since 1.0.0
68
+ */
69
+ public function __construct() {
70
+
71
+ $this->plugin_name = 'wp-date-remover';
72
+ $this->version = '1.0.0';
73
+
74
+ $this->load_dependencies();
75
+ $this->set_locale();
76
+ $this->define_admin_hooks();
77
+ $this->define_public_hooks();
78
+
79
+ }
80
+
81
+ /**
82
+ * Load the required dependencies for this plugin.
83
+ *
84
+ * Include the following files that make up the plugin:
85
+ *
86
+ * - Wp_Date_Remover_Loader. Orchestrates the hooks of the plugin.
87
+ * - Wp_Date_Remover_i18n. Defines internationalization functionality.
88
+ * - Wp_Date_Remover_Admin. Defines all hooks for the admin area.
89
+ * - Wp_Date_Remover_Public. Defines all hooks for the public side of the site.
90
+ *
91
+ * Create an instance of the loader which will be used to register the hooks
92
+ * with WordPress.
93
+ *
94
+ * @since 1.0.0
95
+ * @access private
96
+ */
97
+ private function load_dependencies() {
98
+
99
+ /**
100
+ * The class responsible for orchestrating the actions and filters of the
101
+ * core plugin.
102
+ */
103
+ require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wp-date-remover-loader.php';
104
+
105
+ /**
106
+ * The class responsible for defining internationalization functionality
107
+ * of the plugin.
108
+ */
109
+ require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-wp-date-remover-i18n.php';
110
+
111
+ /**
112
+ * The class responsible for defining all actions that occur in the admin area.
113
+ */
114
+ require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-wp-date-remover-admin.php';
115
+
116
+ /**
117
+ * The class responsible for defining all actions that occur in the public-facing
118
+ * side of the site.
119
+ */
120
+ require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-wp-date-remover-public.php';
121
+
122
+ $this->loader = new Wp_Date_Remover_Loader();
123
+
124
+ }
125
+
126
+ /**
127
+ * Define the locale for this plugin for internationalization.
128
+ *
129
+ * Uses the Wp_Date_Remover_i18n class in order to set the domain and to register the hook
130
+ * with WordPress.
131
+ *
132
+ * @since 1.0.0
133
+ * @access private
134
+ */
135
+ private function set_locale() {
136
+
137
+ $plugin_i18n = new Wp_Date_Remover_i18n();
138
+
139
+ $this->loader->add_action( 'plugins_loaded', $plugin_i18n, 'load_plugin_textdomain' );
140
+
141
+ }
142
+
143
+ /**
144
+ * Register all of the hooks related to the admin area functionality
145
+ * of the plugin.
146
+ *
147
+ * @since 1.0.0
148
+ * @access private
149
+ */
150
+ private function define_admin_hooks() {
151
+
152
+ $plugin_admin = new Wp_Date_Remover_Admin( $this->get_plugin_name(), $this->get_version() );
153
+
154
+ $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
155
+ $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
156
+
157
+ // Add menu item
158
+ $this->loader->add_action( 'admin_menu', $plugin_admin, 'add_plugin_admin_menu' );
159
+
160
+ // Add Settings link to the plugin
161
+ $plugin_basename = plugin_basename( plugin_dir_path( __DIR__ ) . $this->plugin_name . '.php' );
162
+ $this->loader->add_filter( 'plugin_action_links_' . $plugin_basename, $plugin_admin, 'add_action_links' );
163
+
164
+ //Remove This OLD HOOK WP DATE REMOVER
165
+ //$this->loader->add_action('admin_init', $plugin_admin, 'options_update');
166
+
167
+ $this->loader->add_action( 'admin_notices', $plugin_admin, 'wp_date_remover_add_notice' );
168
+
169
+ $this->loader->add_action( 'wp_ajax_wp_date_remover_hide_notice', $plugin_admin, 'wp_date_remover_hide_notice' );
170
+
171
+ }
172
+
173
+ /**
174
+ * Register all of the hooks related to the public-facing functionality
175
+ * of the plugin.
176
+ *
177
+ * @since 1.0.0
178
+ * @access private
179
+ */
180
+ private function define_public_hooks() {
181
+
182
+ $plugin_public = new Wp_Date_Remover_Public( $this->get_plugin_name(), $this->get_version() );
183
+
184
+ $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_styles' );
185
+ $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_scripts' );
186
+
187
+ $this->loader->add_action( 'init', $plugin_public, 'wp_date_remover_remove' );
188
+ if(!is_admin())
189
+ {
190
+ $this->loader->add_action( 'the_post', $plugin_public, 'wp_date_remover_remove_date_php' );
191
+ }
192
+ $this->loader->add_action( 'wp_footer', $plugin_public, 'wp_date_remover_custom_script' );
193
+ }
194
+
195
+ /**
196
+ * Run the loader to execute all of the hooks with WordPress.
197
+ *
198
+ * @since 1.0.0
199
+ */
200
+ public function run() {
201
+ $this->loader->run();
202
+ }
203
+
204
+ /**
205
+ * The name of the plugin used to uniquely identify it within the context of
206
+ * WordPress and to define internationalization functionality.
207
+ *
208
+ * @since 1.0.0
209
+ * @return string The name of the plugin.
210
+ */
211
+ public function get_plugin_name() {
212
+ return $this->plugin_name;
213
+ }
214
+
215
+ /**
216
+ * The reference to the class that orchestrates the hooks with the plugin.
217
+ *
218
+ * @since 1.0.0
219
+ * @return Wp_Date_Remover_Loader Orchestrates the hooks of the plugin.
220
+ */
221
+ public function get_loader() {
222
+ return $this->loader;
223
+ }
224
+
225
+ /**
226
+ * Retrieve the version number of the plugin.
227
+ *
228
+ * @since 1.0.0
229
+ * @return string The version number of the plugin.
230
+ */
231
+ public function get_version() {
232
+ return $this->version;
233
+ }
234
+
235
+ }
includes/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php // Silence is golden
index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php // Silence is golden
languages/wp-date-remover.pot ADDED
File without changes
public/class-wp-date-remover-public.php ADDED
@@ -0,0 +1,186 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * The public-facing functionality of the plugin.
5
+ *
6
+ * @link http://selmamariudottir.com
7
+ * @since 1.0.0
8
+ *
9
+ * @package Wp_Date_Remover
10
+ * @subpackage Wp_Date_Remover/public
11
+ */
12
+
13
+ /**
14
+ * The public-facing functionality of the plugin.
15
+ *
16
+ * Defines the plugin name, version, and two examples hooks for how to
17
+ * enqueue the admin-specific stylesheet and JavaScript.
18
+ *
19
+ * @package Wp_Date_Remover
20
+ * @subpackage Wp_Date_Remover/public
21
+ * @author Selma Mariudottir <selma@selmamariudottir.com>
22
+ */
23
+ class Wp_Date_Remover_Public {
24
+
25
+ /**
26
+ * The ID of this plugin.
27
+ *
28
+ * @since 1.0.0
29
+ * @access private
30
+ * @var string $plugin_name The ID of this plugin.
31
+ */
32
+ private $plugin_name;
33
+
34
+ /**
35
+ * The version of this plugin.
36
+ *
37
+ * @since 1.0.0
38
+ * @access private
39
+ * @var string $version The current version of this plugin.
40
+ */
41
+ private $version;
42
+
43
+
44
+ /**
45
+ * Initialize the class and set its properties.
46
+ *
47
+ * @since 1.0.0
48
+ * @param string $plugin_name The name of the plugin.
49
+ * @param string $version The version of this plugin.
50
+ */
51
+ public function __construct( $plugin_name, $version ) {
52
+
53
+ $this->plugin_name = $plugin_name;
54
+ $this->version = $version;
55
+ $this->wp_date_remover_options = get_option($this->plugin_name);
56
+ }
57
+
58
+ /**
59
+ * Register the stylesheets for the public-facing side of the site.
60
+ *
61
+ * @since 1.0.0
62
+ */
63
+ public function enqueue_styles() {
64
+
65
+ /**
66
+ * This function is provided for demonstration purposes only.
67
+ *
68
+ * An instance of this class should be passed to the run() function
69
+ * defined in Wp_Date_Remover_Loader as all of the hooks are defined
70
+ * in that particular class.
71
+ *
72
+ * The Wp_Date_Remover_Loader will then create the relationship
73
+ * between the defined hooks and the functions defined in this
74
+ * class.
75
+ */
76
+
77
+ wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/wp-date-remover-public.css', array(), $this->version, 'all' );
78
+
79
+ }
80
+
81
+ /**
82
+ * Register the JavaScript for the public-facing side of the site.
83
+ *
84
+ * @since 1.0.0
85
+ */
86
+ public function enqueue_scripts() {
87
+
88
+ /**
89
+ * This function is provided for demonstration purposes only.
90
+ *
91
+ * An instance of this class should be passed to the run() function
92
+ * defined in Wp_Date_Remover_Loader as all of the hooks are defined
93
+ * in that particular class.
94
+ *
95
+ * The Wp_Date_Remover_Loader will then create the relationship
96
+ * between the defined hooks and the functions defined in this
97
+ * class.
98
+ */
99
+
100
+ wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/wp-date-remover-public.js', array( 'jquery' ), $this->version, false );
101
+
102
+ }
103
+
104
+ public function wp_date_remover_remove() {
105
+ global $wdr_cat_arry,$wdr_post_arry;
106
+ $wdr_cat_arry=array();
107
+ $wdr_post_arry=array();
108
+ $wdr_args = array(
109
+ 'orderby' => 'name',
110
+ 'order' => 'ASC'
111
+ );
112
+ $wdr_categories = get_categories($wdr_args);
113
+ if(is_array($wdr_categories) && !empty($wdr_categories))
114
+ {
115
+ foreach($wdr_categories as $wdr_cat)
116
+ {
117
+ //Remove This OLD CODE WP DATE REMOVER
118
+ //if($this->wp_date_remover_options['removedt_'.$wdr_cat->term_id])
119
+ if(get_term_meta($wdr_cat->term_id, 'wp-date-remover', true) == 1)
120
+ {
121
+ if(!in_array($wdr_cat->term_id,$wdr_cat_arry))
122
+ {
123
+ array_push($wdr_cat_arry,$wdr_cat->term_id);
124
+ }
125
+ }
126
+ }
127
+ }
128
+
129
+ }
130
+ // remove date/time using php.
131
+ public function wp_date_remover_remove_date_php() {
132
+ global $wdr_cat_arry,$wdr_post_arry;
133
+ remove_filter('the_date', '__return_false');
134
+ remove_filter('the_time', '__return_false');
135
+ //remove_filter('the_modified_date', '__return_false');
136
+ remove_filter('get_the_date', '__return_false');
137
+ remove_filter('get_the_time', '__return_false');
138
+ //remove_filter('get_the_modified_date', '__return_false');
139
+
140
+ if(is_array($wdr_cat_arry) && !empty($wdr_cat_arry))
141
+ {
142
+ foreach($wdr_cat_arry as $term_id)
143
+ {
144
+ if(in_category($term_id,get_the_id()))
145
+ {
146
+ if(!in_array(get_the_id(),$wdr_post_arry))
147
+ {
148
+ array_push($wdr_post_arry,get_the_id());
149
+ }
150
+ add_filter('the_date', '__return_false');
151
+ add_filter('the_time', '__return_false');
152
+ //add_filter('the_modified_date', '__return_false');
153
+ add_filter('get_the_date', '__return_false');
154
+ add_filter('get_the_time', '__return_false');
155
+ //add_filter('get_the_modified_date', '__return_false');
156
+ break;
157
+ }
158
+ }
159
+ }
160
+
161
+ }
162
+ public function wp_date_remover_custom_script()
163
+ {
164
+ ?>
165
+ <script type="text/javascript">
166
+ <?php
167
+ global $wdr_post_arry;
168
+ if(is_array($wdr_post_arry) && !empty($wdr_post_arry))
169
+ {
170
+ foreach($wdr_post_arry as $wdr_post_id)
171
+ {
172
+ ?>
173
+ jQuery("#post-<?php echo $wdr_post_id?> .entry-meta .date").css("display","none");
174
+ jQuery("#post-<?php echo $wdr_post_id?> .entry-date").css("display","none");
175
+ jQuery("#post-<?php echo $wdr_post_id?> .posted-on").css("display","none");
176
+ <?php
177
+ }
178
+
179
+ }
180
+ ?>
181
+ </script>
182
+ <?php
183
+ }
184
+
185
+
186
+ }
public/css/wp-date-remover-public.css ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /**
2
+ * All of the CSS for your public-facing functionality should be
3
+ * included in this file.
4
+ */
public/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php // Silence is golden
public/js/wp-date-remover-public.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function( $ ) {
2
+ 'use strict';
3
+
4
+ /**
5
+ * All of the code for your public-facing JavaScript source
6
+ * should reside in this file.
7
+ *
8
+ * Note: It has been assumed you will write jQuery code here, so the
9
+ * $ function reference has been prepared for usage within the scope
10
+ * of this function.
11
+ *
12
+ * This enables you to define handlers, for when the DOM is ready:
13
+ *
14
+ * $(function() {
15
+ *
16
+ * });
17
+ *
18
+ * When the window is loaded:
19
+ *
20
+ * $( window ).load(function() {
21
+ *
22
+ * });
23
+ *
24
+ * ...and/or other possibilities.
25
+ *
26
+ * Ideally, it is not considered best practise to attach more than a
27
+ * single DOM-ready or window-load handler for a particular page.
28
+ * Although scripts in the WordPress core, Plugins and Themes may be
29
+ * practising this, we should strive to set a better example in our own work.
30
+ */
31
+
32
+ })( jQuery );
public/partials/wp-date-remover-public-display.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Provide a public-facing view for the plugin
5
+ *
6
+ * This file is used to markup the public-facing aspects of the plugin.
7
+ *
8
+ * @link http://selmamariudottir.com
9
+ * @since 1.0.0
10
+ *
11
+ * @package Wp_Date_Remover
12
+ * @subpackage Wp_Date_Remover/public/partials
13
+ */
14
+ ?>
15
+
16
+ <!-- This file should primarily consist of HTML with a little bit of PHP. -->
uninstall.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Fired when the plugin is uninstalled.
5
+ *
6
+ * When populating this file, consider the following flow
7
+ * of control:
8
+ *
9
+ * - This method should be static
10
+ * - Check if the $_REQUEST content actually is the plugin name
11
+ * - Run an admin referrer check to make sure it goes through authentication
12
+ * - Verify the output of $_GET makes sense
13
+ * - Repeat with other user roles. Best directly by using the links/query string parameters.
14
+ * - Repeat things for multisite. Once for a single site in the network, once sitewide.
15
+ *
16
+ * This file may be updated more in future version of the Boilerplate; however, this is the
17
+ * general skeleton and outline for how the file should work.
18
+ *
19
+ * For more information, see the following discussion:
20
+ * https://github.com/tommcfarlin/WordPress-Plugin-Boilerplate/pull/123#issuecomment-28541913
21
+ *
22
+ * @link http://selmamariudottir.com
23
+ * @since 1.0.0
24
+ *
25
+ * @package Wp_Date_Remover
26
+ */
27
+
28
+ // If uninstall not called from WordPress, then exit.
29
+ if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
30
+ exit;
31
+ }
32
+ delete_option('wp-date-remover');
33
+ delete_option('wdr_admin_notices_show');
34
+
35
+ /*======= DELETE TERM META WP DATE REMOVER ======= */
36
+ global $wpdb;
37
+ $wdr_delete_query = $wpdb->get_results("SELECT * FROM `".$wpdb->prefix."termmeta`");
38
+ foreach($wdr_delete_query as $wdr_delete_meta)
39
+ {
40
+ $wpdb->query("DELETE FROM ".$wpdb->prefix."termmeta WHERE meta_key = 'wp-date-remover'");
41
+ }
42
+ /*======= \DELETE TERM META WP DATE REMOVER ======= */
wp-date-remover.php ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * The plugin bootstrap file
5
+ *
6
+ * This file is read by WordPress to generate the plugin information in the plugin
7
+ * admin area. This file also includes all of the dependencies used by the plugin,
8
+ * registers the activation and deactivation functions, and defines a function
9
+ * that starts the plugin.
10
+ *
11
+ * @link http://selmamariudottir.com
12
+ * @since 1.0.0
13
+ * @package Wp_Date_Remover
14
+ *
15
+ * @wordpress-plugin
16
+ * Plugin Name: WP Date Remover
17
+ * Plugin URI: http://wpdateremover.com/
18
+ * Description: WP Date Remover allows you to quickly and easily remove the time and date from specific post categories.
19
+ * Version: 1.1.0
20
+ * Author: Selma Mariudottir
21
+ * Author URI: http://selmamariudottir.com
22
+ * License: GPL-2.0+
23
+ * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
24
+ * Text Domain: wp-date-remover
25
+ * Domain Path: /languages
26
+ */
27
+
28
+ // If this file is called directly, abort.
29
+ if ( ! defined( 'WPINC' ) ) {
30
+ die;
31
+ }
32
+
33
+ /**
34
+ * The code that runs during plugin activation.
35
+ * This action is documented in includes/class-wp-date-remover-activator.php
36
+ */
37
+ function activate_wp_date_remover() {
38
+ require_once plugin_dir_path( __FILE__ ) . 'includes/class-wp-date-remover-activator.php';
39
+ Wp_Date_Remover_Activator::activate();
40
+ }
41
+
42
+ /**
43
+ * The code that runs during plugin deactivation.
44
+ * This action is documented in includes/class-wp-date-remover-deactivator.php
45
+ */
46
+ function deactivate_wp_date_remover() {
47
+ require_once plugin_dir_path( __FILE__ ) . 'includes/class-wp-date-remover-deactivator.php';
48
+ Wp_Date_Remover_Deactivator::deactivate();
49
+ }
50
+
51
+ register_activation_hook( __FILE__, 'activate_wp_date_remover' );
52
+ register_deactivation_hook( __FILE__, 'deactivate_wp_date_remover' );
53
+
54
+ /**
55
+ * The core plugin class that is used to define internationalization,
56
+ * admin-specific hooks, and public-facing site hooks.
57
+ */
58
+ require plugin_dir_path( __FILE__ ) . 'includes/class-wp-date-remover.php';
59
+
60
+ /**
61
+ * Begins execution of the plugin.
62
+ *
63
+ * Since everything within the plugin is registered via hooks,
64
+ * then kicking off the plugin from this point in the file does
65
+ * not affect the page life cycle.
66
+ *
67
+ * @since 1.0.0
68
+ */
69
+ function run_wp_date_remover() {
70
+
71
+ $plugin = new Wp_Date_Remover();
72
+ $plugin->run();
73
+
74
+ }
75
+ run_wp_date_remover();