AMP for WP – Accelerated Mobile Pages - Version 1.0.77.54

Version Description

(21st November 2022) = * Fixed: Tested compatibility with wp 6.1 #5331 * Fixed: Removed deprecated warning in php 8.1.10 #5333 * Fixed: Resolved STN video Ads due to the outdated tag issue #5334 * New : BFCM internal offer #5336

Download this release

Release Info

Developer ahmedkaludi
Plugin Icon 128x128 AMP for WP – Accelerated Mobile Pages
Version 1.0.77.54
Comparing to
See all releases

Code changes from version 1.0.77.53 to 1.0.77.54

LICENSE CHANGED
@@ -1,357 +1,357 @@
1
- This program is free software; you can redistribute it and/or modify
2
- it under the terms of the GNU General Public License as published by
3
- the Free Software Foundation; either version 2 of the License, or
4
- (at your option) any later version.
5
-
6
- This program is distributed in the hope that it will be useful,
7
- but WITHOUT ANY WARRANTY; without even the implied warranty of
8
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9
- GNU General Public License for more details.
10
-
11
- You should have received a copy of the GNU General Public License
12
- along with this program; if not, write to the Free Software
13
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
14
-
15
-
16
- ===================================
17
-
18
- GNU GENERAL PUBLIC LICENSE
19
- Version 2, June 1991
20
-
21
- Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
22
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23
- Everyone is permitted to copy and distribute verbatim copies
24
- of this license document, but changing it is not allowed.
25
-
26
- Preamble
27
-
28
- The licenses for most software are designed to take away your
29
- freedom to share and change it. By contrast, the GNU General Public
30
- License is intended to guarantee your freedom to share and change free
31
- software--to make sure the software is free for all its users. This
32
- General Public License applies to most of the Free Software
33
- Foundation's software and to any other program whose authors commit to
34
- using it. (Some other Free Software Foundation software is covered by
35
- the GNU Lesser General Public License instead.) You can apply it to
36
- your programs, too.
37
-
38
- When we speak of free software, we are referring to freedom, not
39
- price. Our General Public Licenses are designed to make sure that you
40
- have the freedom to distribute copies of free software (and charge for
41
- this service if you wish), that you receive source code or can get it
42
- if you want it, that you can change the software or use pieces of it
43
- in new free programs; and that you know you can do these things.
44
-
45
- To protect your rights, we need to make restrictions that forbid
46
- anyone to deny you these rights or to ask you to surrender the rights.
47
- These restrictions translate to certain responsibilities for you if you
48
- distribute copies of the software, or if you modify it.
49
-
50
- For example, if you distribute copies of such a program, whether
51
- gratis or for a fee, you must give the recipients all the rights that
52
- you have. You must make sure that they, too, receive or can get the
53
- source code. And you must show them these terms so they know their
54
- rights.
55
-
56
- We protect your rights with two steps: (1) copyright the software, and
57
- (2) offer you this license which gives you legal permission to copy,
58
- distribute and/or modify the software.
59
-
60
- Also, for each author's protection and ours, we want to make certain
61
- that everyone understands that there is no warranty for this free
62
- software. If the software is modified by someone else and passed on, we
63
- want its recipients to know that what they have is not the original, so
64
- that any problems introduced by others will not reflect on the original
65
- authors' reputations.
66
-
67
- Finally, any free program is threatened constantly by software
68
- patents. We wish to avoid the danger that redistributors of a free
69
- program will individually obtain patent licenses, in effect making the
70
- program proprietary. To prevent this, we have made it clear that any
71
- patent must be licensed for everyone's free use or not licensed at all.
72
-
73
- The precise terms and conditions for copying, distribution and
74
- modification follow.
75
-
76
- GNU GENERAL PUBLIC LICENSE
77
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
78
-
79
- 0. This License applies to any program or other work which contains
80
- a notice placed by the copyright holder saying it may be distributed
81
- under the terms of this General Public License. The "Program", below,
82
- refers to any such program or work, and a "work based on the Program"
83
- means either the Program or any derivative work under copyright law:
84
- that is to say, a work containing the Program or a portion of it,
85
- either verbatim or with modifications and/or translated into another
86
- language. (Hereinafter, translation is included without limitation in
87
- the term "modification".) Each licensee is addressed as "you".
88
-
89
- Activities other than copying, distribution and modification are not
90
- covered by this License; they are outside its scope. The act of
91
- running the Program is not restricted, and the output from the Program
92
- is covered only if its contents constitute a work based on the
93
- Program (independent of having been made by running the Program).
94
- Whether that is true depends on what the Program does.
95
-
96
- 1. You may copy and distribute verbatim copies of the Program's
97
- source code as you receive it, in any medium, provided that you
98
- conspicuously and appropriately publish on each copy an appropriate
99
- copyright notice and disclaimer of warranty; keep intact all the
100
- notices that refer to this License and to the absence of any warranty;
101
- and give any other recipients of the Program a copy of this License
102
- along with the Program.
103
-
104
- You may charge a fee for the physical act of transferring a copy, and
105
- you may at your option offer warranty protection in exchange for a fee.
106
-
107
- 2. You may modify your copy or copies of the Program or any portion
108
- of it, thus forming a work based on the Program, and copy and
109
- distribute such modifications or work under the terms of Section 1
110
- above, provided that you also meet all of these conditions:
111
-
112
- a) You must cause the modified files to carry prominent notices
113
- stating that you changed the files and the date of any change.
114
-
115
- b) You must cause any work that you distribute or publish, that in
116
- whole or in part contains or is derived from the Program or any
117
- part thereof, to be licensed as a whole at no charge to all third
118
- parties under the terms of this License.
119
-
120
- c) If the modified program normally reads commands interactively
121
- when run, you must cause it, when started running for such
122
- interactive use in the most ordinary way, to print or display an
123
- announcement including an appropriate copyright notice and a
124
- notice that there is no warranty (or else, saying that you provide
125
- a warranty) and that users may redistribute the program under
126
- these conditions, and telling the user how to view a copy of this
127
- License. (Exception: if the Program itself is interactive but
128
- does not normally print such an announcement, your work based on
129
- the Program is not required to print an announcement.)
130
-
131
- These requirements apply to the modified work as a whole. If
132
- identifiable sections of that work are not derived from the Program,
133
- and can be reasonably considered independent and separate works in
134
- themselves, then this License, and its terms, do not apply to those
135
- sections when you distribute them as separate works. But when you
136
- distribute the same sections as part of a whole which is a work based
137
- on the Program, the distribution of the whole must be on the terms of
138
- this License, whose permissions for other licensees extend to the
139
- entire whole, and thus to each and every part regardless of who wrote it.
140
-
141
- Thus, it is not the intent of this section to claim rights or contest
142
- your rights to work written entirely by you; rather, the intent is to
143
- exercise the right to control the distribution of derivative or
144
- collective works based on the Program.
145
-
146
- In addition, mere aggregation of another work not based on the Program
147
- with the Program (or with a work based on the Program) on a volume of
148
- a storage or distribution medium does not bring the other work under
149
- the scope of this License.
150
-
151
- 3. You may copy and distribute the Program (or a work based on it,
152
- under Section 2) in object code or executable form under the terms of
153
- Sections 1 and 2 above provided that you also do one of the following:
154
-
155
- a) Accompany it with the complete corresponding machine-readable
156
- source code, which must be distributed under the terms of Sections
157
- 1 and 2 above on a medium customarily used for software interchange; or,
158
-
159
- b) Accompany it with a written offer, valid for at least three
160
- years, to give any third party, for a charge no more than your
161
- cost of physically performing source distribution, a complete
162
- machine-readable copy of the corresponding source code, to be
163
- distributed under the terms of Sections 1 and 2 above on a medium
164
- customarily used for software interchange; or,
165
-
166
- c) Accompany it with the information you received as to the offer
167
- to distribute corresponding source code. (This alternative is
168
- allowed only for noncommercial distribution and only if you
169
- received the program in object code or executable form with such
170
- an offer, in accord with Subsection b above.)
171
-
172
- The source code for a work means the preferred form of the work for
173
- making modifications to it. For an executable work, complete source
174
- code means all the source code for all modules it contains, plus any
175
- associated interface definition files, plus the scripts used to
176
- control compilation and installation of the executable. However, as a
177
- special exception, the source code distributed need not include
178
- anything that is normally distributed (in either source or binary
179
- form) with the major components (compiler, kernel, and so on) of the
180
- operating system on which the executable runs, unless that component
181
- itself accompanies the executable.
182
-
183
- If distribution of executable or object code is made by offering
184
- access to copy from a designated place, then offering equivalent
185
- access to copy the source code from the same place counts as
186
- distribution of the source code, even though third parties are not
187
- compelled to copy the source along with the object code.
188
-
189
- 4. You may not copy, modify, sublicense, or distribute the Program
190
- except as expressly provided under this License. Any attempt
191
- otherwise to copy, modify, sublicense or distribute the Program is
192
- void, and will automatically terminate your rights under this License.
193
- However, parties who have received copies, or rights, from you under
194
- this License will not have their licenses terminated so long as such
195
- parties remain in full compliance.
196
-
197
- 5. You are not required to accept this License, since you have not
198
- signed it. However, nothing else grants you permission to modify or
199
- distribute the Program or its derivative works. These actions are
200
- prohibited by law if you do not accept this License. Therefore, by
201
- modifying or distributing the Program (or any work based on the
202
- Program), you indicate your acceptance of this License to do so, and
203
- all its terms and conditions for copying, distributing or modifying
204
- the Program or works based on it.
205
-
206
- 6. Each time you redistribute the Program (or any work based on the
207
- Program), the recipient automatically receives a license from the
208
- original licensor to copy, distribute or modify the Program subject to
209
- these terms and conditions. You may not impose any further
210
- restrictions on the recipients' exercise of the rights granted herein.
211
- You are not responsible for enforcing compliance by third parties to
212
- this License.
213
-
214
- 7. If, as a consequence of a court judgment or allegation of patent
215
- infringement or for any other reason (not limited to patent issues),
216
- conditions are imposed on you (whether by court order, agreement or
217
- otherwise) that contradict the conditions of this License, they do not
218
- excuse you from the conditions of this License. If you cannot
219
- distribute so as to satisfy simultaneously your obligations under this
220
- License and any other pertinent obligations, then as a consequence you
221
- may not distribute the Program at all. For example, if a patent
222
- license would not permit royalty-free redistribution of the Program by
223
- all those who receive copies directly or indirectly through you, then
224
- the only way you could satisfy both it and this License would be to
225
- refrain entirely from distribution of the Program.
226
-
227
- If any portion of this section is held invalid or unenforceable under
228
- any particular circumstance, the balance of the section is intended to
229
- apply and the section as a whole is intended to apply in other
230
- circumstances.
231
-
232
- It is not the purpose of this section to induce you to infringe any
233
- patents or other property right claims or to contest validity of any
234
- such claims; this section has the sole purpose of protecting the
235
- integrity of the free software distribution system, which is
236
- implemented by public license practices. Many people have made
237
- generous contributions to the wide range of software distributed
238
- through that system in reliance on consistent application of that
239
- system; it is up to the author/donor to decide if he or she is willing
240
- to distribute software through any other system and a licensee cannot
241
- impose that choice.
242
-
243
- This section is intended to make thoroughly clear what is believed to
244
- be a consequence of the rest of this License.
245
-
246
- 8. If the distribution and/or use of the Program is restricted in
247
- certain countries either by patents or by copyrighted interfaces, the
248
- original copyright holder who places the Program under this License
249
- may add an explicit geographical distribution limitation excluding
250
- those countries, so that distribution is permitted only in or among
251
- countries not thus excluded. In such case, this License incorporates
252
- the limitation as if written in the body of this License.
253
-
254
- 9. The Free Software Foundation may publish revised and/or new versions
255
- of the General Public License from time to time. Such new versions will
256
- be similar in spirit to the present version, but may differ in detail to
257
- address new problems or concerns.
258
-
259
- Each version is given a distinguishing version number. If the Program
260
- specifies a version number of this License which applies to it and "any
261
- later version", you have the option of following the terms and conditions
262
- either of that version or of any later version published by the Free
263
- Software Foundation. If the Program does not specify a version number of
264
- this License, you may choose any version ever published by the Free Software
265
- Foundation.
266
-
267
- 10. If you wish to incorporate parts of the Program into other free
268
- programs whose distribution conditions are different, write to the author
269
- to ask for permission. For software which is copyrighted by the Free
270
- Software Foundation, write to the Free Software Foundation; we sometimes
271
- make exceptions for this. Our decision will be guided by the two goals
272
- of preserving the free status of all derivatives of our free software and
273
- of promoting the sharing and reuse of software generally.
274
-
275
- NO WARRANTY
276
-
277
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
278
- FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
279
- OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
280
- PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
281
- OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
282
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
283
- TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
284
- PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
285
- REPAIR OR CORRECTION.
286
-
287
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
288
- WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
289
- REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
290
- INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
291
- OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
292
- TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
293
- YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
294
- PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
295
- POSSIBILITY OF SUCH DAMAGES.
296
-
297
- END OF TERMS AND CONDITIONS
298
-
299
- How to Apply These Terms to Your New Programs
300
-
301
- If you develop a new program, and you want it to be of the greatest
302
- possible use to the public, the best way to achieve this is to make it
303
- free software which everyone can redistribute and change under these terms.
304
-
305
- To do so, attach the following notices to the program. It is safest
306
- to attach them to the start of each source file to most effectively
307
- convey the exclusion of warranty; and each file should have at least
308
- the "copyright" line and a pointer to where the full notice is found.
309
-
310
- {description}
311
- Copyright (C) {year} {fullname}
312
-
313
- This program is free software; you can redistribute it and/or modify
314
- it under the terms of the GNU General Public License as published by
315
- the Free Software Foundation; either version 2 of the License, or
316
- (at your option) any later version.
317
-
318
- This program is distributed in the hope that it will be useful,
319
- but WITHOUT ANY WARRANTY; without even the implied warranty of
320
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
321
- GNU General Public License for more details.
322
-
323
- You should have received a copy of the GNU General Public License along
324
- with this program; if not, write to the Free Software Foundation, Inc.,
325
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
326
-
327
- Also add information on how to contact you by electronic and paper mail.
328
-
329
- If the program is interactive, make it output a short notice like this
330
- when it starts in an interactive mode:
331
-
332
- Gnomovision version 69, Copyright (C) year name of author
333
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
334
- This is free software, and you are welcome to redistribute it
335
- under certain conditions; type `show c' for details.
336
-
337
- The hypothetical commands `show w' and `show c' should show the appropriate
338
- parts of the General Public License. Of course, the commands you use may
339
- be called something other than `show w' and `show c'; they could even be
340
- mouse-clicks or menu items--whatever suits your program.
341
-
342
- You should also get your employer (if you work as a programmer) or your
343
- school, if any, to sign a "copyright disclaimer" for the program, if
344
- necessary. Here is a sample; alter the names:
345
-
346
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
347
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
348
-
349
- {signature of Ty Coon}, 1 April 1989
350
- Ty Coon, President of Vice
351
-
352
- This General Public License does not permit incorporating your program into
353
- proprietary programs. If your program is a subroutine library, you may
354
- consider it more useful to permit linking proprietary applications with the
355
- library. If this is what you want to do, use the GNU Lesser General
356
- Public License instead of this License.
357
-
1
+ This program is free software; you can redistribute it and/or modify
2
+ it under the terms of the GNU General Public License as published by
3
+ the Free Software Foundation; either version 2 of the License, or
4
+ (at your option) any later version.
5
+
6
+ This program is distributed in the hope that it will be useful,
7
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
8
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9
+ GNU General Public License for more details.
10
+
11
+ You should have received a copy of the GNU General Public License
12
+ along with this program; if not, write to the Free Software
13
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
14
+
15
+
16
+ ===================================
17
+
18
+ GNU GENERAL PUBLIC LICENSE
19
+ Version 2, June 1991
20
+
21
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
22
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23
+ Everyone is permitted to copy and distribute verbatim copies
24
+ of this license document, but changing it is not allowed.
25
+
26
+ Preamble
27
+
28
+ The licenses for most software are designed to take away your
29
+ freedom to share and change it. By contrast, the GNU General Public
30
+ License is intended to guarantee your freedom to share and change free
31
+ software--to make sure the software is free for all its users. This
32
+ General Public License applies to most of the Free Software
33
+ Foundation's software and to any other program whose authors commit to
34
+ using it. (Some other Free Software Foundation software is covered by
35
+ the GNU Lesser General Public License instead.) You can apply it to
36
+ your programs, too.
37
+
38
+ When we speak of free software, we are referring to freedom, not
39
+ price. Our General Public Licenses are designed to make sure that you
40
+ have the freedom to distribute copies of free software (and charge for
41
+ this service if you wish), that you receive source code or can get it
42
+ if you want it, that you can change the software or use pieces of it
43
+ in new free programs; and that you know you can do these things.
44
+
45
+ To protect your rights, we need to make restrictions that forbid
46
+ anyone to deny you these rights or to ask you to surrender the rights.
47
+ These restrictions translate to certain responsibilities for you if you
48
+ distribute copies of the software, or if you modify it.
49
+
50
+ For example, if you distribute copies of such a program, whether
51
+ gratis or for a fee, you must give the recipients all the rights that
52
+ you have. You must make sure that they, too, receive or can get the
53
+ source code. And you must show them these terms so they know their
54
+ rights.
55
+
56
+ We protect your rights with two steps: (1) copyright the software, and
57
+ (2) offer you this license which gives you legal permission to copy,
58
+ distribute and/or modify the software.
59
+
60
+ Also, for each author's protection and ours, we want to make certain
61
+ that everyone understands that there is no warranty for this free
62
+ software. If the software is modified by someone else and passed on, we
63
+ want its recipients to know that what they have is not the original, so
64
+ that any problems introduced by others will not reflect on the original
65
+ authors' reputations.
66
+
67
+ Finally, any free program is threatened constantly by software
68
+ patents. We wish to avoid the danger that redistributors of a free
69
+ program will individually obtain patent licenses, in effect making the
70
+ program proprietary. To prevent this, we have made it clear that any
71
+ patent must be licensed for everyone's free use or not licensed at all.
72
+
73
+ The precise terms and conditions for copying, distribution and
74
+ modification follow.
75
+
76
+ GNU GENERAL PUBLIC LICENSE
77
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
78
+
79
+ 0. This License applies to any program or other work which contains
80
+ a notice placed by the copyright holder saying it may be distributed
81
+ under the terms of this General Public License. The "Program", below,
82
+ refers to any such program or work, and a "work based on the Program"
83
+ means either the Program or any derivative work under copyright law:
84
+ that is to say, a work containing the Program or a portion of it,
85
+ either verbatim or with modifications and/or translated into another
86
+ language. (Hereinafter, translation is included without limitation in
87
+ the term "modification".) Each licensee is addressed as "you".
88
+
89
+ Activities other than copying, distribution and modification are not
90
+ covered by this License; they are outside its scope. The act of
91
+ running the Program is not restricted, and the output from the Program
92
+ is covered only if its contents constitute a work based on the
93
+ Program (independent of having been made by running the Program).
94
+ Whether that is true depends on what the Program does.
95
+
96
+ 1. You may copy and distribute verbatim copies of the Program's
97
+ source code as you receive it, in any medium, provided that you
98
+ conspicuously and appropriately publish on each copy an appropriate
99
+ copyright notice and disclaimer of warranty; keep intact all the
100
+ notices that refer to this License and to the absence of any warranty;
101
+ and give any other recipients of the Program a copy of this License
102
+ along with the Program.
103
+
104
+ You may charge a fee for the physical act of transferring a copy, and
105
+ you may at your option offer warranty protection in exchange for a fee.
106
+
107
+ 2. You may modify your copy or copies of the Program or any portion
108
+ of it, thus forming a work based on the Program, and copy and
109
+ distribute such modifications or work under the terms of Section 1
110
+ above, provided that you also meet all of these conditions:
111
+
112
+ a) You must cause the modified files to carry prominent notices
113
+ stating that you changed the files and the date of any change.
114
+
115
+ b) You must cause any work that you distribute or publish, that in
116
+ whole or in part contains or is derived from the Program or any
117
+ part thereof, to be licensed as a whole at no charge to all third
118
+ parties under the terms of this License.
119
+
120
+ c) If the modified program normally reads commands interactively
121
+ when run, you must cause it, when started running for such
122
+ interactive use in the most ordinary way, to print or display an
123
+ announcement including an appropriate copyright notice and a
124
+ notice that there is no warranty (or else, saying that you provide
125
+ a warranty) and that users may redistribute the program under
126
+ these conditions, and telling the user how to view a copy of this
127
+ License. (Exception: if the Program itself is interactive but
128
+ does not normally print such an announcement, your work based on
129
+ the Program is not required to print an announcement.)
130
+
131
+ These requirements apply to the modified work as a whole. If
132
+ identifiable sections of that work are not derived from the Program,
133
+ and can be reasonably considered independent and separate works in
134
+ themselves, then this License, and its terms, do not apply to those
135
+ sections when you distribute them as separate works. But when you
136
+ distribute the same sections as part of a whole which is a work based
137
+ on the Program, the distribution of the whole must be on the terms of
138
+ this License, whose permissions for other licensees extend to the
139
+ entire whole, and thus to each and every part regardless of who wrote it.
140
+
141
+ Thus, it is not the intent of this section to claim rights or contest
142
+ your rights to work written entirely by you; rather, the intent is to
143
+ exercise the right to control the distribution of derivative or
144
+ collective works based on the Program.
145
+
146
+ In addition, mere aggregation of another work not based on the Program
147
+ with the Program (or with a work based on the Program) on a volume of
148
+ a storage or distribution medium does not bring the other work under
149
+ the scope of this License.
150
+
151
+ 3. You may copy and distribute the Program (or a work based on it,
152
+ under Section 2) in object code or executable form under the terms of
153
+ Sections 1 and 2 above provided that you also do one of the following:
154
+
155
+ a) Accompany it with the complete corresponding machine-readable
156
+ source code, which must be distributed under the terms of Sections
157
+ 1 and 2 above on a medium customarily used for software interchange; or,
158
+
159
+ b) Accompany it with a written offer, valid for at least three
160
+ years, to give any third party, for a charge no more than your
161
+ cost of physically performing source distribution, a complete
162
+ machine-readable copy of the corresponding source code, to be
163
+ distributed under the terms of Sections 1 and 2 above on a medium
164
+ customarily used for software interchange; or,
165
+
166
+ c) Accompany it with the information you received as to the offer
167
+ to distribute corresponding source code. (This alternative is
168
+ allowed only for noncommercial distribution and only if you
169
+ received the program in object code or executable form with such
170
+ an offer, in accord with Subsection b above.)
171
+
172
+ The source code for a work means the preferred form of the work for
173
+ making modifications to it. For an executable work, complete source
174
+ code means all the source code for all modules it contains, plus any
175
+ associated interface definition files, plus the scripts used to
176
+ control compilation and installation of the executable. However, as a
177
+ special exception, the source code distributed need not include
178
+ anything that is normally distributed (in either source or binary
179
+ form) with the major components (compiler, kernel, and so on) of the
180
+ operating system on which the executable runs, unless that component
181
+ itself accompanies the executable.
182
+
183
+ If distribution of executable or object code is made by offering
184
+ access to copy from a designated place, then offering equivalent
185
+ access to copy the source code from the same place counts as
186
+ distribution of the source code, even though third parties are not
187
+ compelled to copy the source along with the object code.
188
+
189
+ 4. You may not copy, modify, sublicense, or distribute the Program
190
+ except as expressly provided under this License. Any attempt
191
+ otherwise to copy, modify, sublicense or distribute the Program is
192
+ void, and will automatically terminate your rights under this License.
193
+ However, parties who have received copies, or rights, from you under
194
+ this License will not have their licenses terminated so long as such
195
+ parties remain in full compliance.
196
+
197
+ 5. You are not required to accept this License, since you have not
198
+ signed it. However, nothing else grants you permission to modify or
199
+ distribute the Program or its derivative works. These actions are
200
+ prohibited by law if you do not accept this License. Therefore, by
201
+ modifying or distributing the Program (or any work based on the
202
+ Program), you indicate your acceptance of this License to do so, and
203
+ all its terms and conditions for copying, distributing or modifying
204
+ the Program or works based on it.
205
+
206
+ 6. Each time you redistribute the Program (or any work based on the
207
+ Program), the recipient automatically receives a license from the
208
+ original licensor to copy, distribute or modify the Program subject to
209
+ these terms and conditions. You may not impose any further
210
+ restrictions on the recipients' exercise of the rights granted herein.
211
+ You are not responsible for enforcing compliance by third parties to
212
+ this License.
213
+
214
+ 7. If, as a consequence of a court judgment or allegation of patent
215
+ infringement or for any other reason (not limited to patent issues),
216
+ conditions are imposed on you (whether by court order, agreement or
217
+ otherwise) that contradict the conditions of this License, they do not
218
+ excuse you from the conditions of this License. If you cannot
219
+ distribute so as to satisfy simultaneously your obligations under this
220
+ License and any other pertinent obligations, then as a consequence you
221
+ may not distribute the Program at all. For example, if a patent
222
+ license would not permit royalty-free redistribution of the Program by
223
+ all those who receive copies directly or indirectly through you, then
224
+ the only way you could satisfy both it and this License would be to
225
+ refrain entirely from distribution of the Program.
226
+
227
+ If any portion of this section is held invalid or unenforceable under
228
+ any particular circumstance, the balance of the section is intended to
229
+ apply and the section as a whole is intended to apply in other
230
+ circumstances.
231
+
232
+ It is not the purpose of this section to induce you to infringe any
233
+ patents or other property right claims or to contest validity of any
234
+ such claims; this section has the sole purpose of protecting the
235
+ integrity of the free software distribution system, which is
236
+ implemented by public license practices. Many people have made
237
+ generous contributions to the wide range of software distributed
238
+ through that system in reliance on consistent application of that
239
+ system; it is up to the author/donor to decide if he or she is willing
240
+ to distribute software through any other system and a licensee cannot
241
+ impose that choice.
242
+
243
+ This section is intended to make thoroughly clear what is believed to
244
+ be a consequence of the rest of this License.
245
+
246
+ 8. If the distribution and/or use of the Program is restricted in
247
+ certain countries either by patents or by copyrighted interfaces, the
248
+ original copyright holder who places the Program under this License
249
+ may add an explicit geographical distribution limitation excluding
250
+ those countries, so that distribution is permitted only in or among
251
+ countries not thus excluded. In such case, this License incorporates
252
+ the limitation as if written in the body of this License.
253
+
254
+ 9. The Free Software Foundation may publish revised and/or new versions
255
+ of the General Public License from time to time. Such new versions will
256
+ be similar in spirit to the present version, but may differ in detail to
257
+ address new problems or concerns.
258
+
259
+ Each version is given a distinguishing version number. If the Program
260
+ specifies a version number of this License which applies to it and "any
261
+ later version", you have the option of following the terms and conditions
262
+ either of that version or of any later version published by the Free
263
+ Software Foundation. If the Program does not specify a version number of
264
+ this License, you may choose any version ever published by the Free Software
265
+ Foundation.
266
+
267
+ 10. If you wish to incorporate parts of the Program into other free
268
+ programs whose distribution conditions are different, write to the author
269
+ to ask for permission. For software which is copyrighted by the Free
270
+ Software Foundation, write to the Free Software Foundation; we sometimes
271
+ make exceptions for this. Our decision will be guided by the two goals
272
+ of preserving the free status of all derivatives of our free software and
273
+ of promoting the sharing and reuse of software generally.
274
+
275
+ NO WARRANTY
276
+
277
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
278
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
279
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
280
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
281
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
282
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
283
+ TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
284
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
285
+ REPAIR OR CORRECTION.
286
+
287
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
288
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
289
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
290
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
291
+ OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
292
+ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
293
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
294
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
295
+ POSSIBILITY OF SUCH DAMAGES.
296
+
297
+ END OF TERMS AND CONDITIONS
298
+
299
+ How to Apply These Terms to Your New Programs
300
+
301
+ If you develop a new program, and you want it to be of the greatest
302
+ possible use to the public, the best way to achieve this is to make it
303
+ free software which everyone can redistribute and change under these terms.
304
+
305
+ To do so, attach the following notices to the program. It is safest
306
+ to attach them to the start of each source file to most effectively
307
+ convey the exclusion of warranty; and each file should have at least
308
+ the "copyright" line and a pointer to where the full notice is found.
309
+
310
+ {description}
311
+ Copyright (C) {year} {fullname}
312
+
313
+ This program is free software; you can redistribute it and/or modify
314
+ it under the terms of the GNU General Public License as published by
315
+ the Free Software Foundation; either version 2 of the License, or
316
+ (at your option) any later version.
317
+
318
+ This program is distributed in the hope that it will be useful,
319
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
320
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
321
+ GNU General Public License for more details.
322
+
323
+ You should have received a copy of the GNU General Public License along
324
+ with this program; if not, write to the Free Software Foundation, Inc.,
325
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
326
+
327
+ Also add information on how to contact you by electronic and paper mail.
328
+
329
+ If the program is interactive, make it output a short notice like this
330
+ when it starts in an interactive mode:
331
+
332
+ Gnomovision version 69, Copyright (C) year name of author
333
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
334
+ This is free software, and you are welcome to redistribute it
335
+ under certain conditions; type `show c' for details.
336
+
337
+ The hypothetical commands `show w' and `show c' should show the appropriate
338
+ parts of the General Public License. Of course, the commands you use may
339
+ be called something other than `show w' and `show c'; they could even be
340
+ mouse-clicks or menu items--whatever suits your program.
341
+
342
+ You should also get your employer (if you work as a programmer) or your
343
+ school, if any, to sign a "copyright disclaimer" for the program, if
344
+ necessary. Here is a sample; alter the names:
345
+
346
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
347
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
348
+
349
+ {signature of Ty Coon}, 1 April 1989
350
+ Ty Coon, President of Vice
351
+
352
+ This General Public License does not permit incorporating your program into
353
+ proprietary programs. If your program is a subroutine library, you may
354
+ consider it more useful to permit linking proprietary applications with the
355
+ library. If this is what you want to do, use the GNU Lesser General
356
+ Public License instead of this License.
357
+
README.md CHANGED
@@ -1,245 +1,251 @@
1
- === AMP for WP - Accelerated Mobile Pages ===
2
- Contributors: mohammed_kaludi, ahmedkaludi, ampforwp
3
- Tags: AMP, accelerated mobile pages, mobile, amp project, google amp, amp wp, google, plugin, SEO
4
- Donate link: https://www.paypal.me/Kaludi/25
5
- Requires at least: 3.0
6
- Tested up to: 6.0
7
- Stable tag: 1.0.77.53
8
- License: GPLv2 or later
9
- License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
-
11
- AMP for WP is the most recommended AMP plugin by the community. Automatically add Accelerated Mobile Pages (Google AMP Project) functionality on your WordPress site.
12
-
13
- == Description ==
14
- AMP for WP automatically adds Accelerated Mobile Pages (Google AMP Project) functionality to your WordPress site. AMP makes your website faster for Mobile visitors.
15
-
16
- [What's New in this Version?](https://ampforwp.com/new/) | [Priority Support](https://ampforwp.com/priority-support/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin) | [View Demo](https://ampforwp.com/demo/) | [Screenshots](https://wordpress.org/plugins/accelerated-mobile-pages/screenshots/) | [Community](https://ampforwp.com/help-center/)
17
-
18
- <strong>Extensions</strong><br>
19
- Some useful extensions to extend AMP features, check [AMP Adsense Support](https://ampforwp.com/advanced-amp-ads/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin), [Contact Form 7 Support](https://ampforwp.com/contact-form-7/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin), [Email Opt-in Support](https://ampforwp.com/opt-in-forms/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin) and [Call To Action Support](https://ampforwp.com/call-to-action/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin). To view more, go to our [Extensions page](https://ampforwp.com/extensions/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin).
20
-
21
- <strong>Support</strong><br>
22
- We try our best to provide support on WordPress.org forums. However, We have a special [community support](https://ampforwp.com/help-center/) where you can ask us questions and get help about your AMP related questions. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.
23
-
24
- <strong>Bug Reports</strong><br>
25
- Bug reports for AMP for WP are [welcomed on GitHub](https://github.com/ahmedkaludi/Accelerated-Mobile-Pages). Please note GitHub is _not_ a support forum, and issues that aren't properly qualified as bugs will be closed.
26
-
27
-
28
- = Features: =
29
-
30
- * NEW - Gutenberg Support
31
- * NEW - Divi and Elementor Support [More Info](https://ampforwp.com/amp-pagebuilder-compatibility/)
32
- * NEW - GDPR Compliance
33
- * NEW - Google PageSpeed Optimization with SSR (Server Side Rendering)
34
- * NEW - CSS Optimization (Tree Shaking) - This will automatically remove all the unused CSS from your AMP pages
35
- * NEW - Google Font API and Local Fonts Support For All Designs
36
- * Out of the box compatiblity for Yoast SEO, All in One Seo, Rank Math, Genesis, SEOPress, Bridge Qode SEO, The SEO Framework, SmartCrawl and Squrilly SEO Plugin.
37
- * Introducing Page Builder 3.0 for AMP! [Learn More & Video](https://ampforwp.com/tutorials/article/amp-page-builder-installation/)
38
- * New Default Theme for AMP called Swift
39
- * 3 Pre-built AMP Layouts for Business websites and landing pages
40
- * OneSignal and TruePush Push Notifications integration
41
- * Advanced WooCommerce Support [More Info](https://ampforwp.com/woocommerce/)
42
- * AMP Plugins Manager - Which allows you to disable a specific plugin functionality only in the AMP version
43
- * Structured Data Options
44
- * Page Break / NextPage (Pagination) Support
45
- * Contact Form 7 Support [More Info](https://ampforwp.com/contact-form-7/)
46
- * Graviry Form Support [More Info](https://ampforwp.com/gravity-forms/)
47
- * Caldera Form Support [More Info](https://ampforwp.com/caldera-forms-for-amp/)
48
- * Ninja Form Support [More Info](https://ampforwp.com/ninja-forms/)
49
- * Facebook Comments Support
50
- * Github Gist Support
51
- * Email Opt-in Subscription form support in AMP added
52
- * Call to Action boxes and notification bars
53
- * 9 Advertisement sizes - 2 More AD slots added recently
54
- * Comments Forms in AMP.
55
- * Native AMP Search functionality.
56
- * Design 3 [Watch the Video Overview](https://www.youtube.com/watch?v=ub1pwskt3Rc)
57
- * Disqus Comments Support
58
- * Vuukle Comments Support
59
- * Spot.IM Comments Support
60
- * Google Tag Manager Support
61
- * Page, Category & Tags Support Added
62
- * Custom AMP Editor - Which allows you to override your Content that you had written in Post or page, so you can add the different content just for AMP.
63
- * Mobile Redirection - More than 50% of your traffic is from mobile and you aren’t doing anything to improve their user experience, which means you are falling behind on SEO and it can result in lower SERPS. Lightning fast mobile version means faster User experience means more engagement which directly results in the lower bounce rate.
64
- * Custom Post Type Support
65
- * Custom Post Type Support
66
- * Star Ratings
67
- * Drag & Drop Page builder Added
68
- * 4 Designs for AMP
69
- * AMP WooCommerce Support
70
- * Switch on/off Support for Pages & Posts on AMP
71
- * Translation Panel & RTL
72
- * Internal AMP linking - You can browse AMP pages internally
73
- * Related posts below the post
74
- * Recent Comments list
75
- * Automatically integrate AMP to your website.
76
- * Google Adsense (AMP-AD) Support with 6 different Ad slots across the layout! The First Plugin to have this capability.
77
- * Built in MGID Ads Support with 6 different ad slots.
78
- * Google Analytics Support.
79
- * User Friendly Theme Options Panel.
80
- * Unlimited Color Scheme.
81
- * Image Logo Upload.
82
- * Supports Posts and Pages and other custom post types.
83
- * Proper rel canonical tags which means that Google know the original page.
84
- * Overlay Navigation Menu bar.
85
- * Social Sharing in the Single.
86
- * Sexy Design.
87
- * Separate WordPress Menu for AMP version.
88
- * Page builder & Shortcodes Compatibility.
89
- * Carousel support for Gallery.
90
- * Better Image stretching and resizing.
91
- * Youtube Video Embed Support.
92
- * Vine Embed Support.
93
- * Twitter oembed Support.
94
- * Instagram Embed Support.
95
- * Facebook Video Embed Support.
96
- * RTL Support
97
- * Custom AMP FrontPage
98
- * Notifications
99
- * Alexa Metrics, Chartbeat, Hi-stats, Yandex Metrika, Piwik, Segment.com, StatCounter, Effective Measure and comScore Builtin Support
100
- * Incontent & DoubleClick Support
101
- * Great Support & Active Development.
102
- * Widgets & WooCommerce
103
- * Breadcrumb Support added
104
- * Facebook Instant Articles Support Added
105
- * AMP Installation Wizard that makes it easy to setup for new users.
106
- * Category base remover support
107
- * Tag base remover support
108
- * Addthis Sharing Support
109
- * Infinite Scroll Support
110
- * Photo Gallery by 10Web Support
111
- * 12 New Social Media Integrations added (Reddit, Tumblr, Telegram, Digg, StumbleUpon, Wechat, Viber, Hatena Bookmarks, Pocket, Yummly, MeWe, Flipboard)
112
- * AMP Theme Framework Core Support Added. You can now create AMP templates of your own in just minutes. **[More](https://ampforwp.com/amp-theme-framework/)**
113
- * NEW - Make AMP & Non-AMP Same with just one click!
114
- * NEW - Allows you to use AMP as primary website!
115
-
116
-
117
- **[JOIN CHAT GROUP COMMUNITY](https://ampforwp.com/community/)**: Purpose of this group is to get proper suggestions and feedback from plugin users and the community so that we can make the plugin even better.
118
-
119
- = Getting Started: =
120
- **[1. User Documentation:](https://ampforwp.com/help/)** The AMP for WordPress plugin is easy to setup but we have some tutorials and guides prepared for you which will help you dive deep with the plugin.
121
-
122
- **[2. Developer Docs:](https://ampforwp.com/tutorials/article-categories/developer-documentation/)** We have created special documentations for developers and semi technical users who are willing to modify the plugin according to their own needs.
123
-
124
- **[3. Support:](https://ampforwp.com/help-center/)** We try our best to provide support on WordPress.org forums. However, We have a special community support where you can ask us questions and get help about your AMP related questions. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.
125
-
126
- **[4. Premium Support:](https://ampforwp.com/priority-support/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin)** We will personally take care that your website’s AMP version is perfectly validated. We will make sure that your AMP version gets approved and indexed by Google Webmaster Tools properly and we will even keep an eye on AMP updates from Google and implement them into your website.
127
-
128
- == Credits ==
129
- Some code used in this plugin was forked from 'AMP for WordPress' plugin https://wordpress.org/plugins/amp/ - License URI: http://www.gnu.org/licenses/gpl-2.0.html.
130
- Mobile & Tablet detection library used https://github.com/serbanghita/Mobile-Detect - License URI: https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt
131
- PHP CSS Parser library used https://github.com/sabberworm/PHP-CSS-Parser - License URI: https://github.com/sabberworm/PHP-CSS-Parser#license (PHP-CSS-Parser is freely distributable under the terms of an MIT-style license.)
132
- AMP Optimizer library used https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer - License URI: https://github.com/ampproject/amp-toolbox#license (AMP Toolbox is made by the AMP Project, and is licensed under the Apache License, Version 2.0.)
133
-
134
- == Installation ==
135
- **[Visit Help area for the Documentation:](https://ampforwp.com/help/)**
136
-
137
- [youtube https://www.youtube.com/watch?v=Em1nsE_KaKw]
138
-
139
- **[Visit Help area for the Documentation:](https://ampforwp.com/help/)**
140
-
141
-
142
- == Frequently Asked Questions ==
143
-
144
- = Can I add analytics? =
145
-
146
- Yes, you easily can. In fact, we have support for 12 Analytics companies. Including Google Analytics, Facebook Pixel, StatCounter, QuantCast, Chartbeat, comScore to list a few. Also, we have Google Tag Manager (GTM) support as well.
147
-
148
- = Can I add Ads in my AMP pages? =
149
-
150
- Yes, you can. We have 6 ad placement slots that are built in and strategically placed to get maximum views. Also, we have [an extension](https://ampforwp.com/advanced-amp-ads/) from which you can insert ads between the content, will get more ad slots and also add custom banners to all the available slots.
151
-
152
-
153
- = Can I extend/Change the AMP design, so it suits my needs? =
154
-
155
- Yes, you easily can. We have created this plugin in such a way that it can easily be extended. Check out our [AMP Theme Framework](https://ampforwp.com/tutorials/article/getting-started-amp-framework/)
156
-
157
-
158
- = Do you have any prebuilt designs? =
159
-
160
- Yes, we have AMP themes section where we have free and paid designs available. We also update it regularly. You can check it out our [AMP Themes](https://ampforwp.com/themes)
161
-
162
-
163
- = I'm a developer and I want to add custom functionality for a client, can I do that? =
164
-
165
- Yes, of course. This plugin is very developer friendly, we have lots of hooks and filters that you can use to extend and customize according to the requirements. Also, we have [developer documentation](https://ampforwp.com/tutorials/article-categories/developer-documentation/) which we update regularly.
166
-
167
-
168
- = How do I report bugs and suggest new features? =
169
-
170
- You can report the bugs [here](https://github.com/ahmedkaludi/Accelerated-Mobile-Pages/issues)
171
-
172
- = Will you Add New features to my request? =
173
-
174
- Yes, Absolutely! We would suggest you send your feature request by creating an issue in [Github](https://github.com/ahmedkaludi/Accelerated-Mobile-Pages/issues/new/) . It helps us organize the feedback easily.
175
-
176
-
177
- = How do I get in touch? =
178
-
179
- You can contact us from [here](https://ampforwp.com/contact/)
180
-
181
-
182
- == Screenshots ==
183
- 1. AMP Homepage
184
- 2. AMP Single Post
185
- 3. Post Navigation in Single
186
- 4. Sticky Social sharing icons
187
- 5. Overlay Navigation menu sidebar.
188
- 6. Page builder of the Single article. You can drag and drop any element.
189
- 7. Single post of Design One
190
- 8. GTMetrix Performance Report
191
- 9. Google PageSpeed Insight report for AMP
192
- 10. Homepage of Design One
193
- 11. Pingdom Speed Report for AMP
194
-
195
- Device testing done through [BrowserStack](https://www.browserstack.com)
196
- ![BrowserStack](https://user-images.githubusercontent.com/16618009/53022655-a24ea780-3481-11e9-9a48-a2ca5bcd96d6.png)
197
-
198
- == Changelog ==
199
-
200
- = 1.0.77.53 (25th October 2022) =
201
- * Fixed: Backslash in custom css error #5329
202
- * Fixed: If we enable the Responsive ad option then no need to show size option. #5302
203
- * Fixed: TikTok embed video is not working in AMP #5325
204
- * Fixed: lightbox for Youtube feature is not working properly #5327
205
-
206
- = 1.0.77.52 (14th October 2022) =
207
- * Fixed: Duplicate canonical URL when AIOSEO Pro is active. #5320
208
- * Fixed: Youtube embedded videos via elementor is not displaying in the AMP version #5322
209
- * Fixed: Slide Anything image src not loading properly. #5315
210
- * Fixed: PHP Warning Attempt to read property "post_type" on null #5323
211
- * Fixed: While adding the multiple Webstories on the website page, the image is not showing of the web stories the AMP Pages. #5301
212
- * Fixed: Author names are not shown in AMP when the Co-Authors Plus plugin is activated #5319
213
-
214
- = 1.0.77.51 (9th September 2022) =
215
- * Fixed: Infinite scroll doesn't work with custom post type. #5309
216
- * Fixed: Need to make it compatible with the Co-Authors Plus plugin #5313
217
- * Fixed: Slide Anything image src not loading properly. #5315
218
-
219
- = 1.0.77.50 (24th August 2022) =
220
- * Fixed: "Back to Top link" option adds amp-animation & amp-position-observer script without its usage on page #5305
221
- * Fixed: AMPforWP is creating "/amp" as an endpoint in Addon mode. #5303
222
- * Improvements: Strange Exclamation mark . #5304
223
-
224
- = 1.0.77.49 (22nd August 2022) =
225
- * Fixed: There is a compatibility issue with the latest version of the All in One SEO Plugin. #5306
226
-
227
- = 1.0.77.48 (11th August 2022) =
228
- * Improvements: Added Super Related Posts plugin compatibility #5298
229
- * Improvements: Added Inline Related Post plugin compatibility #5296
230
- * Fixed: Fatal error while activating official AMP. #5300
231
- * Fixed: Spotify Embed not working after 1.0.77.46 version #5294
232
- * Fixed: AMP Pagebuilder not loading with All in One SEO latest update #5299
233
-
234
- = 1.0.77.47 (5th July 2022) =
235
- * Fixed: AMP validation error when youtube video is embeded with query parameters #5292
236
- * Fixed: Instagram embeds not working when added with blockquote tags #5289
237
-
238
- = 1.0.77.46 (28th June 2022) =
239
- * Fixed: Reduced the execution of JS in youtube embeds #5287
240
- * Fixed: Instagram embeds not working when added with iframe #5289
241
- * Fixed: Subchild menu items does not expand with UberMenu plugin
242
- * Fixed: Incorrect default value in TPD #5286
243
- * Fixed: Debug Warnings - Undefined array-key: row #5283
244
-
 
 
 
 
 
 
245
  Full changelog available [ at changelog.txt](https://plugins.svn.wordpress.org/accelerated-mobile-pages/trunk/changelog.txt)
1
+ === AMP for WP - Accelerated Mobile Pages ===
2
+ Contributors: mohammed_kaludi, ahmedkaludi, ampforwp
3
+ Tags: AMP, accelerated mobile pages, mobile, amp project, google amp, amp wp, google, plugin, SEO
4
+ Donate link: https://www.paypal.me/Kaludi/25
5
+ Requires at least: 3.0
6
+ Tested up to: 6.1
7
+ Stable tag: 1.0.77.54
8
+ License: GPLv2 or later
9
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
+
11
+ AMP for WP is the most recommended AMP plugin by the community. Automatically add Accelerated Mobile Pages (Google AMP Project) functionality on your WordPress site.
12
+
13
+ == Description ==
14
+ AMP for WP automatically adds Accelerated Mobile Pages (Google AMP Project) functionality to your WordPress site. AMP makes your website faster for Mobile visitors.
15
+
16
+ [What's New in this Version?](https://ampforwp.com/new/) | [Priority Support](https://ampforwp.com/priority-support/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin) | [View Demo](https://ampforwp.com/demo/) | [Screenshots](https://wordpress.org/plugins/accelerated-mobile-pages/screenshots/) | [Community](https://ampforwp.com/help-center/)
17
+
18
+ <strong>Extensions</strong><br>
19
+ Some useful extensions to extend AMP features, check [AMP Adsense Support](https://ampforwp.com/advanced-amp-ads/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin), [Contact Form 7 Support](https://ampforwp.com/contact-form-7/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin), [Email Opt-in Support](https://ampforwp.com/opt-in-forms/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin) and [Call To Action Support](https://ampforwp.com/call-to-action/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin). To view more, go to our [Extensions page](https://ampforwp.com/extensions/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin).
20
+
21
+ <strong>Support</strong><br>
22
+ We try our best to provide support on WordPress.org forums. However, We have a special [community support](https://ampforwp.com/help-center/) where you can ask us questions and get help about your AMP related questions. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.
23
+
24
+ <strong>Bug Reports</strong><br>
25
+ Bug reports for AMP for WP are [welcomed on GitHub](https://github.com/ahmedkaludi/Accelerated-Mobile-Pages). Please note GitHub is _not_ a support forum, and issues that aren't properly qualified as bugs will be closed.
26
+
27
+
28
+ = Features: =
29
+
30
+ * NEW - Gutenberg Support
31
+ * NEW - Divi and Elementor Support [More Info](https://ampforwp.com/amp-pagebuilder-compatibility/)
32
+ * NEW - GDPR Compliance
33
+ * NEW - Google PageSpeed Optimization with SSR (Server Side Rendering)
34
+ * NEW - CSS Optimization (Tree Shaking) - This will automatically remove all the unused CSS from your AMP pages
35
+ * NEW - Google Font API and Local Fonts Support For All Designs
36
+ * Out of the box compatiblity for Yoast SEO, All in One Seo, Rank Math, Genesis, SEOPress, Bridge Qode SEO, The SEO Framework, SmartCrawl and Squrilly SEO Plugin.
37
+ * Introducing Page Builder 3.0 for AMP! [Learn More & Video](https://ampforwp.com/tutorials/article/amp-page-builder-installation/)
38
+ * New Default Theme for AMP called Swift
39
+ * 3 Pre-built AMP Layouts for Business websites and landing pages
40
+ * OneSignal and TruePush Push Notifications integration
41
+ * Advanced WooCommerce Support [More Info](https://ampforwp.com/woocommerce/)
42
+ * AMP Plugins Manager - Which allows you to disable a specific plugin functionality only in the AMP version
43
+ * Structured Data Options
44
+ * Page Break / NextPage (Pagination) Support
45
+ * Contact Form 7 Support [More Info](https://ampforwp.com/contact-form-7/)
46
+ * Graviry Form Support [More Info](https://ampforwp.com/gravity-forms/)
47
+ * Caldera Form Support [More Info](https://ampforwp.com/caldera-forms-for-amp/)
48
+ * Ninja Form Support [More Info](https://ampforwp.com/ninja-forms/)
49
+ * Facebook Comments Support
50
+ * Github Gist Support
51
+ * Email Opt-in Subscription form support in AMP added
52
+ * Call to Action boxes and notification bars
53
+ * 9 Advertisement sizes - 2 More AD slots added recently
54
+ * Comments Forms in AMP.
55
+ * Native AMP Search functionality.
56
+ * Design 3 [Watch the Video Overview](https://www.youtube.com/watch?v=ub1pwskt3Rc)
57
+ * Disqus Comments Support
58
+ * Vuukle Comments Support
59
+ * Spot.IM Comments Support
60
+ * Google Tag Manager Support
61
+ * Page, Category & Tags Support Added
62
+ * Custom AMP Editor - Which allows you to override your Content that you had written in Post or page, so you can add the different content just for AMP.
63
+ * Mobile Redirection - More than 50% of your traffic is from mobile and you aren’t doing anything to improve their user experience, which means you are falling behind on SEO and it can result in lower SERPS. Lightning fast mobile version means faster User experience means more engagement which directly results in the lower bounce rate.
64
+ * Custom Post Type Support
65
+ * Custom Post Type Support
66
+ * Star Ratings
67
+ * Drag & Drop Page builder Added
68
+ * 4 Designs for AMP
69
+ * AMP WooCommerce Support
70
+ * Switch on/off Support for Pages & Posts on AMP
71
+ * Translation Panel & RTL
72
+ * Internal AMP linking - You can browse AMP pages internally
73
+ * Related posts below the post
74
+ * Recent Comments list
75
+ * Automatically integrate AMP to your website.
76
+ * Google Adsense (AMP-AD) Support with 6 different Ad slots across the layout! The First Plugin to have this capability.
77
+ * Built in MGID Ads Support with 6 different ad slots.
78
+ * Google Analytics Support.
79
+ * User Friendly Theme Options Panel.
80
+ * Unlimited Color Scheme.
81
+ * Image Logo Upload.
82
+ * Supports Posts and Pages and other custom post types.
83
+ * Proper rel canonical tags which means that Google know the original page.
84
+ * Overlay Navigation Menu bar.
85
+ * Social Sharing in the Single.
86
+ * Sexy Design.
87
+ * Separate WordPress Menu for AMP version.
88
+ * Page builder & Shortcodes Compatibility.
89
+ * Carousel support for Gallery.
90
+ * Better Image stretching and resizing.
91
+ * Youtube Video Embed Support.
92
+ * Vine Embed Support.
93
+ * Twitter oembed Support.
94
+ * Instagram Embed Support.
95
+ * Facebook Video Embed Support.
96
+ * RTL Support
97
+ * Custom AMP FrontPage
98
+ * Notifications
99
+ * Alexa Metrics, Chartbeat, Hi-stats, Yandex Metrika, Piwik, Segment.com, StatCounter, Effective Measure and comScore Builtin Support
100
+ * Incontent & DoubleClick Support
101
+ * Great Support & Active Development.
102
+ * Widgets & WooCommerce
103
+ * Breadcrumb Support added
104
+ * Facebook Instant Articles Support Added
105
+ * AMP Installation Wizard that makes it easy to setup for new users.
106
+ * Category base remover support
107
+ * Tag base remover support
108
+ * Addthis Sharing Support
109
+ * Infinite Scroll Support
110
+ * Photo Gallery by 10Web Support
111
+ * 12 New Social Media Integrations added (Reddit, Tumblr, Telegram, Digg, StumbleUpon, Wechat, Viber, Hatena Bookmarks, Pocket, Yummly, MeWe, Flipboard)
112
+ * AMP Theme Framework Core Support Added. You can now create AMP templates of your own in just minutes. **[More](https://ampforwp.com/amp-theme-framework/)**
113
+ * NEW - Make AMP & Non-AMP Same with just one click!
114
+ * NEW - Allows you to use AMP as primary website!
115
+
116
+
117
+ **[JOIN CHAT GROUP COMMUNITY](https://ampforwp.com/community/)**: Purpose of this group is to get proper suggestions and feedback from plugin users and the community so that we can make the plugin even better.
118
+
119
+ = Getting Started: =
120
+ **[1. User Documentation:](https://ampforwp.com/help/)** The AMP for WordPress plugin is easy to setup but we have some tutorials and guides prepared for you which will help you dive deep with the plugin.
121
+
122
+ **[2. Developer Docs:](https://ampforwp.com/tutorials/article-categories/developer-documentation/)** We have created special documentations for developers and semi technical users who are willing to modify the plugin according to their own needs.
123
+
124
+ **[3. Support:](https://ampforwp.com/help-center/)** We try our best to provide support on WordPress.org forums. However, We have a special community support where you can ask us questions and get help about your AMP related questions. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.
125
+
126
+ **[4. Premium Support:](https://ampforwp.com/priority-support/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin)** We will personally take care that your website’s AMP version is perfectly validated. We will make sure that your AMP version gets approved and indexed by Google Webmaster Tools properly and we will even keep an eye on AMP updates from Google and implement them into your website.
127
+
128
+ == Credits ==
129
+ Some code used in this plugin was forked from 'AMP for WordPress' plugin https://wordpress.org/plugins/amp/ - License URI: http://www.gnu.org/licenses/gpl-2.0.html.
130
+ Mobile & Tablet detection library used https://github.com/serbanghita/Mobile-Detect - License URI: https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt
131
+ PHP CSS Parser library used https://github.com/sabberworm/PHP-CSS-Parser - License URI: https://github.com/sabberworm/PHP-CSS-Parser#license (PHP-CSS-Parser is freely distributable under the terms of an MIT-style license.)
132
+ AMP Optimizer library used https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer - License URI: https://github.com/ampproject/amp-toolbox#license (AMP Toolbox is made by the AMP Project, and is licensed under the Apache License, Version 2.0.)
133
+
134
+ == Installation ==
135
+ **[Visit Help area for the Documentation:](https://ampforwp.com/help/)**
136
+
137
+ [youtube https://www.youtube.com/watch?v=Em1nsE_KaKw]
138
+
139
+ **[Visit Help area for the Documentation:](https://ampforwp.com/help/)**
140
+
141
+
142
+ == Frequently Asked Questions ==
143
+
144
+ = Can I add analytics? =
145
+
146
+ Yes, you easily can. In fact, we have support for 12 Analytics companies. Including Google Analytics, Facebook Pixel, StatCounter, QuantCast, Chartbeat, comScore to list a few. Also, we have Google Tag Manager (GTM) support as well.
147
+
148
+ = Can I add Ads in my AMP pages? =
149
+
150
+ Yes, you can. We have 6 ad placement slots that are built in and strategically placed to get maximum views. Also, we have [an extension](https://ampforwp.com/advanced-amp-ads/) from which you can insert ads between the content, will get more ad slots and also add custom banners to all the available slots.
151
+
152
+
153
+ = Can I extend/Change the AMP design, so it suits my needs? =
154
+
155
+ Yes, you easily can. We have created this plugin in such a way that it can easily be extended. Check out our [AMP Theme Framework](https://ampforwp.com/tutorials/article/getting-started-amp-framework/)
156
+
157
+
158
+ = Do you have any prebuilt designs? =
159
+
160
+ Yes, we have AMP themes section where we have free and paid designs available. We also update it regularly. You can check it out our [AMP Themes](https://ampforwp.com/themes)
161
+
162
+
163
+ = I'm a developer and I want to add custom functionality for a client, can I do that? =
164
+
165
+ Yes, of course. This plugin is very developer friendly, we have lots of hooks and filters that you can use to extend and customize according to the requirements. Also, we have [developer documentation](https://ampforwp.com/tutorials/article-categories/developer-documentation/) which we update regularly.
166
+
167
+
168
+ = How do I report bugs and suggest new features? =
169
+
170
+ You can report the bugs [here](https://github.com/ahmedkaludi/Accelerated-Mobile-Pages/issues)
171
+
172
+ = Will you Add New features to my request? =
173
+
174
+ Yes, Absolutely! We would suggest you send your feature request by creating an issue in [Github](https://github.com/ahmedkaludi/Accelerated-Mobile-Pages/issues/new/) . It helps us organize the feedback easily.
175
+
176
+
177
+ = How do I get in touch? =
178
+
179
+ You can contact us from [here](https://ampforwp.com/contact/)
180
+
181
+
182
+ == Screenshots ==
183
+ 1. AMP Homepage
184
+ 2. AMP Single Post
185
+ 3. Post Navigation in Single
186
+ 4. Sticky Social sharing icons
187
+ 5. Overlay Navigation menu sidebar.
188
+ 6. Page builder of the Single article. You can drag and drop any element.
189
+ 7. Single post of Design One
190
+ 8. GTMetrix Performance Report
191
+ 9. Google PageSpeed Insight report for AMP
192
+ 10. Homepage of Design One
193
+ 11. Pingdom Speed Report for AMP
194
+
195
+ Device testing done through [BrowserStack](https://www.browserstack.com)
196
+ ![BrowserStack](https://user-images.githubusercontent.com/16618009/53022655-a24ea780-3481-11e9-9a48-a2ca5bcd96d6.png)
197
+
198
+ == Changelog ==
199
+
200
+ = 1.0.77.54 (21st November 2022) =
201
+ * Fixed: Tested compatibility with wp 6.1 #5331
202
+ * Fixed: Removed deprecated warning in php 8.1.10 #5333
203
+ * Fixed: Resolved STN video Ads due to the outdated tag issue #5334
204
+ * New : BFCM internal offer #5336
205
+
206
+ = 1.0.77.53 (25th October 2022) =
207
+ * Fixed: Backslash in custom css error #5329
208
+ * Fixed: If we enable the Responsive ad option then no need to show size option. #5302
209
+ * Fixed: TikTok embed video is not working in AMP #5325
210
+ * Fixed: lightbox for Youtube feature is not working properly #5327
211
+
212
+ = 1.0.77.52 (14th October 2022) =
213
+ * Fixed: Duplicate canonical URL when AIOSEO Pro is active. #5320
214
+ * Fixed: Youtube embedded videos via elementor is not displaying in the AMP version #5322
215
+ * Fixed: Slide Anything image src not loading properly. #5315
216
+ * Fixed: PHP Warning Attempt to read property "post_type" on null #5323
217
+ * Fixed: While adding the multiple Webstories on the website page, the image is not showing of the web stories the AMP Pages. #5301
218
+ * Fixed: Author names are not shown in AMP when the Co-Authors Plus plugin is activated #5319
219
+
220
+ = 1.0.77.51 (9th September 2022) =
221
+ * Fixed: Infinite scroll doesn't work with custom post type. #5309
222
+ * Fixed: Need to make it compatible with the Co-Authors Plus plugin #5313
223
+ * Fixed: Slide Anything image src not loading properly. #5315
224
+
225
+ = 1.0.77.50 (24th August 2022) =
226
+ * Fixed: "Back to Top link" option adds amp-animation & amp-position-observer script without its usage on page #5305
227
+ * Fixed: AMPforWP is creating "/amp" as an endpoint in Addon mode. #5303
228
+ * Improvements: Strange Exclamation mark . #5304
229
+
230
+ = 1.0.77.49 (22nd August 2022) =
231
+ * Fixed: There is a compatibility issue with the latest version of the All in One SEO Plugin. #5306
232
+
233
+ = 1.0.77.48 (11th August 2022) =
234
+ * Improvements: Added Super Related Posts plugin compatibility #5298
235
+ * Improvements: Added Inline Related Post plugin compatibility #5296
236
+ * Fixed: Fatal error while activating official AMP. #5300
237
+ * Fixed: Spotify Embed not working after 1.0.77.46 version #5294
238
+ * Fixed: AMP Pagebuilder not loading with All in One SEO latest update #5299
239
+
240
+ = 1.0.77.47 (5th July 2022) =
241
+ * Fixed: AMP validation error when youtube video is embeded with query parameters #5292
242
+ * Fixed: Instagram embeds not working when added with blockquote tags #5289
243
+
244
+ = 1.0.77.46 (28th June 2022) =
245
+ * Fixed: Reduced the execution of JS in youtube embeds #5287
246
+ * Fixed: Instagram embeds not working when added with iframe #5289
247
+ * Fixed: Subchild menu items does not expand with UberMenu plugin
248
+ * Fixed: Incorrect default value in TPD #5286
249
+ * Fixed: Debug Warnings - Undefined array-key: row #5283
250
+
251
  Full changelog available [ at changelog.txt](https://plugins.svn.wordpress.org/accelerated-mobile-pages/trunk/changelog.txt)
accelerated-moblie-pages.php CHANGED
@@ -1,1605 +1,1605 @@
1
- <?php
2
- /*
3
- Plugin Name: Accelerated Mobile Pages
4
- Plugin URI: https://wordpress.org/plugins/accelerated-mobile-pages/
5
- Description: AMP for WP - Accelerated Mobile Pages for WordPress
6
- Version: 1.0.77.53
7
- Author: Ahmed Kaludi, Mohammed Kaludi
8
- Author URI: https://ampforwp.com/
9
- Donate link: https://www.paypal.me/Kaludi/25
10
- License: GPL2+
11
- Text Domain: accelerated-mobile-pages
12
- Domain Path: /languages/
13
- */
14
-
15
- // Exit if accessed directly.
16
- if ( ! defined( 'ABSPATH' ) ) exit;
17
-
18
- define('AMPFORWP_PLUGIN_DIR', plugin_dir_path( __FILE__ ));
19
- define('AMPFORWP_PLUGIN_DIR_URI', plugin_dir_url(__FILE__));
20
- define('AMPFORWP_DISQUS_URL',plugin_dir_url(__FILE__).'includes/disqus.html');
21
- define('AMPFORWP_IMAGE_DIR',plugin_dir_url(__FILE__).'images');
22
- define('AMPFORWP_MAIN_PLUGIN_DIR', plugin_dir_path( __DIR__ ) );
23
- define('AMPFORWP_VERSION','1.0.77.53');
24
- define('AMPFORWP_EXTENSION_DIR',plugin_dir_path(__FILE__).'includes/options/extensions');
25
- if(!defined('AMPFROWP_HOST_NAME')){
26
- $urlinfo = get_bloginfo('url');
27
- $url = parse_url($urlinfo);
28
- $host = $url['host'];
29
- define('AMPFROWP_HOST_NAME', esc_attr($host));
30
- }
31
- // any changes to AMP_QUERY_VAR should be refelected here
32
- function ampforwp_generate_endpoint(){
33
- $ampforwp_slug = '';
34
- $get_permalink_structure = '';
35
-
36
- $ampforwp_slug = "amp";
37
-
38
- return $ampforwp_slug;
39
- }
40
-
41
- define('AMPFORWP_AMP_QUERY_VAR', apply_filters( 'amp_query_var', ampforwp_generate_endpoint() ) );
42
-
43
- // Rewrite the Endpoints after the plugin is activate, as priority is set to 11
44
- function ampforwp_add_custom_post_support() {
45
- // Adding rewrite rules only when we are in standard mode
46
- if (is_amp_plugin_active()) {
47
- return;
48
- }
49
- global $redux_builder_amp;
50
- add_rewrite_endpoint( AMPFORWP_AMP_QUERY_VAR, EP_PAGES | EP_PERMALINK | EP_AUTHORS | EP_ALL_ARCHIVES | EP_ROOT );
51
- // Pages
52
- if ( isset($redux_builder_amp['amp-on-off-for-all-pages']) && $redux_builder_amp['amp-on-off-for-all-pages'] ) {
53
- add_post_type_support( 'page', AMPFORWP_AMP_QUERY_VAR );
54
- }
55
- // Custom Post Types
56
- if ( isset($redux_builder_amp['ampforwp-custom-type'] ) && $redux_builder_amp['ampforwp-custom-type'] ) {
57
- foreach ( $redux_builder_amp['ampforwp-custom-type'] as $custom_post ) {
58
- add_post_type_support( $custom_post, AMP_QUERY_VAR );
59
- }
60
- }
61
- }
62
- add_action( 'init', 'ampforwp_add_custom_post_support',11);
63
-
64
- // Frontpage and Blog page check from reading settings.
65
- function ampforwp_name_blog_page() {
66
- if ( ! $page_for_posts = get_option('page_for_posts')) return;
67
- $page_for_posts = get_option( 'page_for_posts' );
68
- $post = get_post($page_for_posts);
69
- if ( $post ) {
70
- $slug = $post->post_name;
71
- return $slug;
72
- }
73
- }
74
- function ampforwp_custom_post_page() {
75
- $front_page_type = get_option( 'show_on_front' );
76
- if ( $front_page_type ) {
77
- return $front_page_type;
78
- }
79
- }
80
-
81
- function ampforwp_get_the_page_id_blog_page(){
82
- $page = "";
83
- $output = "";
84
- if ( ampforwp_name_blog_page() ) {
85
- $page = get_page_by_path( ampforwp_name_blog_page() );
86
- if( $page )
87
- $output = $page->ID;
88
- }
89
-
90
- return $output;
91
- }
92
-
93
- // Add Custom Rewrite Rule to make sure pagination & redirection is working correctly
94
- function ampforwp_add_custom_rewrite_rules() {
95
-
96
- // Adding rewrite rules only when we are in standard mode
97
- if (is_amp_plugin_active()) {
98
- return;
99
- }
100
- global $redux_builder_amp, $wp_rewrite;
101
- // For Homepage
102
- add_rewrite_rule(
103
- 'amp/?$',
104
- 'index.php?amp',
105
- 'top'
106
- );
107
- // For Homepage with Pagination
108
- add_rewrite_rule(
109
- 'amp/'.$wp_rewrite->pagination_base.'/([0-9]{1,})/?$',
110
- 'index.php?amp=1&paged=$matches[1]',
111
- 'top'
112
- );
113
- // For Pagination with index.php
114
- add_rewrite_rule(
115
- 'index.php/amp/'.$wp_rewrite->pagination_base.'/([0-9]{1,})/?$',
116
- 'index.php?amp=1&paged=$matches[1]',
117
- 'top'
118
- );
119
- // For /Blog page with Pagination
120
- if( ampforwp_name_blog_page() ) {
121
- add_rewrite_rule(
122
- ampforwp_name_blog_page(). '/amp/'.$wp_rewrite->pagination_base.'/([0-9]{1,})/?$',
123
- 'index.php?amp=1&paged=$matches[1]&page_id=' .ampforwp_get_the_page_id_blog_page(),
124
- 'top'
125
- );
126
- // Pagination to work with Extensions like.hml
127
- add_rewrite_rule(
128
- ampforwp_name_blog_page(). '(.+?)/amp/'.$wp_rewrite->pagination_base.'/([0-9]{1,})/?$',
129
- 'index.php?amp=1&paged=$matches[2]&page_id=' .ampforwp_get_the_page_id_blog_page(),
130
- 'top'
131
- );
132
- }
133
-
134
- // For Author pages
135
- add_rewrite_rule(
136
- 'author\/([^/]+)\/amp\/?$',
137
- 'index.php?amp=1&author_name=$matches[1]',
138
- 'top'
139
- );
140
- add_rewrite_rule(
141
- 'author\/([^/]+)\/amp\/'.$wp_rewrite->pagination_base.'\/?([0-9]{1,})\/?$',
142
- 'index.php?amp=1&author_name=$matches[1]&paged=$matches[2]',
143
- 'top'
144
- );
145
-
146
- // For category pages
147
- $rewrite_category = '';
148
- $rewrite_category = get_transient('ampforwp_category_base');
149
-
150
- if ( false == $rewrite_category ) {
151
- $rewrite_category = get_option('category_base');
152
- if ( empty($rewrite_category) ) {
153
- $rewrite_category = 'category';
154
- }
155
- set_transient('ampforwp_category_base', $rewrite_category);
156
- }
157
-
158
- add_rewrite_rule(
159
- $rewrite_category.'\/(.+?)\/amp/?$',
160
- 'index.php?amp=1&category_name=$matches[1]',
161
- 'top'
162
- );
163
- // For category pages with Pagination
164
- add_rewrite_rule(
165
- $rewrite_category.'/(.+?)\/amp\/'.$wp_rewrite->pagination_base.'\/?([0-9]{1,})\/?$',
166
- 'index.php?amp=1&category_name=$matches[1]&paged=$matches[2]',
167
- 'top'
168
- );
169
-
170
- // For category pages with Pagination (Custom Permalink Structure)
171
- $permalink_structure = '';
172
- $permalink_structure = get_transient('ampforwp_permalink_structure');
173
- if ( false == $permalink_structure ) {
174
- $permalink_structure = get_option('permalink_structure');
175
- set_transient('ampforwp_permalink_structure', $permalink_structure );
176
- }
177
- $permalink_structure = preg_replace('/(%.*%)/', '', $permalink_structure);
178
- $permalink_structure = preg_replace('/\//', '', $permalink_structure);
179
- if ( $permalink_structure ) {
180
- add_rewrite_rule(
181
- $permalink_structure.'\/'.$rewrite_category.'\/(.+?)\/amp\/'.$wp_rewrite->pagination_base.'\/?([0-9]{1,})\/?$',
182
- 'index.php?amp=1&category_name=$matches[1]&paged=$matches[2]',
183
- 'top'
184
- );
185
- }
186
-
187
- // For tag pages
188
- $rewrite_tag = '';
189
- $rewrite_tag = get_transient('ampforwp_tag_base');
190
- if ( false == $rewrite_tag ) {
191
- $rewrite_tag = get_option('tag_base');
192
- if ( empty($rewrite_tag) ) {
193
- $rewrite_tag = 'tag';
194
- }
195
- set_transient('ampforwp_tag_base',$rewrite_tag);
196
- }
197
-
198
- add_rewrite_rule(
199
- $rewrite_tag.'\/(.+?)\/amp/?$',
200
- 'index.php?amp=1&tag=$matches[1]',
201
- 'top'
202
- );
203
- // For tag pages with Pagination
204
- add_rewrite_rule(
205
- $rewrite_tag.'\/(.+?)\/amp\/'.$wp_rewrite->pagination_base.'\/?([0-9]{1,})\/?$',
206
- 'index.php?amp=1&tag=$matches[1]&paged=$matches[2]',
207
- 'top'
208
- );
209
- // For tag pages with Pagination (Custom Permalink Structure)
210
- if ( $permalink_structure ) {
211
- add_rewrite_rule(
212
- $permalink_structure.'\/'.$rewrite_tag.'\/(.+?)\/amp\/'.$wp_rewrite->pagination_base.'\/?([0-9]{1,})\/?$',
213
- 'index.php?amp=1&tag=$matches[1]&paged=$matches[2]',
214
- 'top'
215
- );
216
- }
217
- // Rewrite rule for date archive
218
- add_rewrite_rule(
219
- '([0-9]{4})/([0-9]{1,2})\/amp\/?$',
220
- 'index.php?year=$matches[1]&monthnum=$matches[2]&amp=1',
221
- 'top'
222
- );
223
- // Rewrite rule for date archive with pagination #2289
224
- add_rewrite_rule(
225
- '([0-9]{4})/([0-9]{1,2})/amp/'.$wp_rewrite->pagination_base.'/?([0-9]{1,})/?$',
226
- 'index.php?year=$matches[1]&monthnum=$matches[2]&amp=1&paged=$matches[3]',
227
- 'top'
228
- );
229
- //Rewrite rule for custom Taxonomies
230
- $taxonomies = array();
231
- if( function_exists('ampforwp_generate_taxonomies_transient')){
232
- //Rewrite rule for custom Taxonomies
233
- $taxonomies = ampforwp_generate_taxonomies_transient();
234
- }
235
-
236
- if(!function_exists('amp_woocommerce_pro_add_woocommerce_support') ) {
237
- if( class_exists( 'WooCommerce' ) ) {
238
- $wc_permalinks = '';
239
- $wc_permalinks = get_transient('ampforwp_woocommerce_permalinks');
240
- if( false == $wc_permalinks ) {
241
- $wc_permalinks = get_option( 'woocommerce_permalinks' );
242
- set_transient('ampforwp_woocommerce_permalinks', $wc_permalinks);
243
- }
244
- if ( $wc_permalinks && !empty( $taxonomies) ) {
245
- $taxonomies = array_merge($taxonomies, $wc_permalinks);
246
- }
247
- }
248
- }
249
- $post_types = ampforwp_get_all_post_types();
250
- if ( $post_types ) {
251
- foreach ($post_types as $post_type ) {
252
- if ( 'post' != $post_type && 'page' != $post_type ){
253
- add_rewrite_rule(
254
- $post_type.'\/amp/?$',
255
- 'index.php?amp&post_type='.$post_type,
256
- 'top'
257
- );
258
- if ( class_exists( 'Lsvr_Permalink_Settings_Knowledge_Base' ) ) {
259
- $lsvr_value = get_post_type_archive_link( 'lsvr_kba' );
260
- $lsvr_value = explode("/",$lsvr_value);
261
- $lsvr_value = array_filter($lsvr_value);
262
- $lsvr_value = end($lsvr_value);
263
- add_rewrite_rule(
264
- $lsvr_value.'\/amp/?$',
265
- 'index.php?amp&post_type='.$post_type,
266
- 'top'
267
- );
268
- }
269
- add_rewrite_rule(
270
- $post_type.'\/(.+?)\/amp\/?$',
271
- 'index.php?amp&'.$post_type.'=$matches[1]',
272
- 'top'
273
- );
274
- add_rewrite_rule(
275
- $post_type.'\/(.+?)\/amp\/?$',
276
- 'index.php?amp&'.$post_type.'=$matches[1]',
277
- 'top'
278
- );
279
- add_rewrite_rule(
280
- $post_type.'\/amp/'.$wp_rewrite->pagination_base.'/([0-9]{1,})/?$',
281
- 'index.php?amp=1&post_type='.$post_type.'&paged=$matches[1]',
282
- 'top'
283
- );
284
- }
285
- }
286
- }
287
-
288
- $taxonomies = apply_filters( 'ampforwp_modify_rewrite_tax', $taxonomies );
289
- if ( $taxonomies ) {
290
- $taxonomySlug = '';
291
- foreach ( $taxonomies as $taxonomyName => $taxonomyLabel ) {
292
- $taxonomies = get_taxonomy( $taxonomyName );
293
- if(isset($taxonomies->rewrite['slug']) && !empty($taxonomies->rewrite['slug']) ){
294
- $taxonomySlug = $taxonomies->rewrite['slug'];
295
- }else{
296
- $taxonomySlug = $taxonomyName;
297
- }
298
- if ( ! empty( $taxonomySlug ) ) {
299
- add_rewrite_rule(
300
- $taxonomySlug.'\/([^/]+)\/amp/?$',
301
- 'index.php?amp&'.$taxonomyName.'=$matches[1]',
302
- 'top'
303
- );
304
- // For Custom Taxonomies with pages
305
- add_rewrite_rule(
306
- $taxonomySlug.'\/([^/]+)\/amp\/'.$wp_rewrite->pagination_base.'\/?([0-9]{1,})\/?$',
307
- 'index.php?amp&'.$taxonomyName.'=$matches[1]&paged=$matches[2]',
308
- 'top'
309
- );
310
- }
311
- }
312
- }
313
- if (ampforwp_get_setting('ampforwp-pagination-link-type')) {
314
- add_rewrite_rule(
315
- '(.+?)-[0-9]+\/([0-9]{1,})\/amp$',
316
- 'index.php?amp=1&name=$matches[1]&paged=$matches[2]',
317
- 'top'
318
- );
319
- add_rewrite_rule(
320
- '(.+?)\/([0-9]{1,})\/amp$',
321
- 'index.php?amp=1&name=$matches[1]&paged=$matches[2]',
322
- 'top'
323
- );
324
- }
325
- }
326
- add_action( 'init', 'ampforwp_add_custom_rewrite_rules', 25 );
327
- // Delete category_base transient when it is updated #2924
328
- add_action('update_option_category_base', 'ampforwp_update_option_category_base');
329
- function ampforwp_update_option_category_base(){
330
- delete_transient('ampforwp_category_base');
331
- }
332
- // Delete category_base transient when it is updated #2924
333
- add_action('update_option_tag_base', 'ampforwp_update_option_tag_base');
334
- function ampforwp_update_option_tag_base(){
335
- delete_transient('ampforwp_tag_base');
336
- }
337
- // Delete permalink_structure transient when it is updated #2924
338
- add_action('update_option_permalink_structure', 'ampforwp_update_option_permalink_structure');
339
- function ampforwp_update_option_permalink_structure(){
340
- delete_transient('ampforwp_permalink_structure');
341
- // Delete ampforwp_woocommerce_permalinks transient when it is updated #2924
342
- if( class_exists( 'WooCommerce' ) ) {
343
- delete_transient('ampforwp_woocommerce_permalinks');
344
- }
345
- }
346
- // add re-write rule for Products
347
- add_action( 'init', 'ampforwp_custom_rewrite_rules_for_product_category' );
348
- if ( ! function_exists('ampforwp_custom_rewrite_rules_for_product_category') ) {
349
- function ampforwp_custom_rewrite_rules_for_product_category(){
350
-
351
- // Adding rewrite rules only when we are in standard mode
352
- if (is_amp_plugin_active()) {
353
- return;
354
- }
355
- if ( class_exists('WooCommerce') ) {
356
- $permalinks = wp_parse_args( (array) get_option( 'woocommerce_permalinks', array() ), array(
357
- 'product_base' => '',
358
- 'category_base' => '',
359
- 'tag_base' => '',
360
- 'attribute_base' => '',
361
- 'use_verbose_page_rules' => false,
362
- ) );
363
- // Ensure rewrite slugs are set.
364
- $permalinks['product_rewrite_slug'] = untrailingslashit( empty( $permalinks['product_base'] ) ? _x( 'product', 'slug', 'accelerated-mobile-pages' ) : $permalinks['product_base'] );
365
- $permalinks['category_rewrite_slug'] = untrailingslashit( empty( $permalinks['category_base'] ) ? _x( 'product-category', 'slug', 'accelerated-mobile-pages' ) : $permalinks['category_base'] );
366
- $permalinks['tag_rewrite_slug'] = untrailingslashit( empty( $permalinks['tag_base'] ) ? _x( 'product-tag', 'slug', 'accelerated-mobile-pages' ) : $permalinks['tag_base'] );
367
- $permalinks['attribute_rewrite_slug'] = untrailingslashit( empty( $permalinks['attribute_base'] ) ? '' : $permalinks['attribute_base'] );
368
-
369
-
370
-
371
- add_rewrite_rule(
372
- $permalinks['product_rewrite_slug']."\/amp\/page\/([0-9]{1,})/?$",
373
- 'index.php?post_type=product&paged=$matches[1]&amp=1',
374
- 'top'
375
- );
376
- add_rewrite_rule(
377
- $permalinks['category_rewrite_slug'].'\/(.+?)\/amp\/page\/?([0-9]{1,})/?$',
378
- 'index.php?product_cat=$matches[1]&paged=$matches[2]&amp=1',
379
- 'top'
380
- );
381
- add_rewrite_rule(
382
- $permalinks['category_rewrite_slug'].'\/(.+?)\/amp\/?$',
383
- 'index.php?amp&product_cat=$matches[1]',
384
- 'top'
385
- );
386
-
387
-
388
- add_rewrite_rule(
389
- $permalinks['tag_rewrite_slug'].'\/(.+?)\/amp\/page\/?([0-9]{1,})/?$',
390
- 'index.php?product_tag=$matches[1]&paged=$matches[2]&amp=1',
391
- 'top'
392
- );
393
- add_rewrite_rule(
394
- $permalinks['tag_rewrite_slug'].'\/(.+?)\/amp\/?$',
395
- 'index.php?amp&product_tag=$matches[1]',
396
- 'top'
397
- );
398
- }
399
- }
400
- }
401
-
402
- function ampforwp_plugin_info(){
403
- $data = array();
404
- $date = new DateTime();
405
- $data = array('activation_data' => $date->getTimestamp() );
406
- add_option( 'ampforwp_plugin_info', $data );
407
- }
408
- add_action('upgrader_process_complete','ampforwp_plugin_info' );
409
-
410
- register_activation_hook( __FILE__, 'ampforwp_rewrite_activation', 20 );
411
- function ampforwp_rewrite_activation() {
412
-
413
- if ( ! did_action( 'ampforwp_init' ) ) {
414
- ampforwp_init();
415
- }
416
-
417
- flush_rewrite_rules();
418
-
419
- ampforwp_add_custom_post_support();
420
- ampforwp_add_custom_rewrite_rules();
421
- ampforwp_plugin_info();
422
-
423
- // Flushing rewrite urls ONLY on activation
424
- global $wp_rewrite;
425
- $wp_rewrite->flush_rules();
426
-
427
- delete_option('ampforwp_rewrite_flush_option');
428
-
429
- // Set transient for Welcome page
430
- set_transient( 'ampforwp_welcome_screen_activation_redirect', true, 30 );
431
-
432
- }
433
-
434
- add_action( 'admin_init', 'ampforwp_flush_after_update');
435
- function ampforwp_flush_after_update() {
436
- // Flushing rewrite urls ONLY on after Update is installed
437
- $older_version = "";
438
- $older_version = get_transient('ampforwp_current_version_check');
439
- if ( empty($older_version) || ( $older_version < AMPFORWP_VERSION ) ) {
440
- flush_rewrite_rules();
441
- global $wp_rewrite;
442
- $wp_rewrite->flush_rules();
443
- set_transient('ampforwp_current_version_check', AMPFORWP_VERSION);
444
- }
445
- }
446
-
447
-
448
- add_action('init', 'ampforwp_flush_rewrite_by_option', 20);
449
-
450
- function ampforwp_flush_rewrite_by_option(){
451
-
452
- global $wp_rewrite;
453
- $get_current_permalink_settings = "";
454
-
455
- $get_current_permalink_settings = get_option('ampforwp_rewrite_flush_option');
456
-
457
- if ( $get_current_permalink_settings ) {
458
- return;
459
- }
460
- // Adding double check to make sure, we are not updating and calling database unnecessarily
461
- if ( empty( $get_current_permalink_settings ) ) {
462
- $wp_rewrite->flush_rules();
463
- update_option('ampforwp_rewrite_flush_option', 'true');
464
- }
465
-
466
- }
467
-
468
- register_deactivation_hook( __FILE__, 'ampforwp_rewrite_deactivate', 20 );
469
- function ampforwp_rewrite_deactivate() {
470
- // Flushing rewrite urls ONLY on deactivation
471
- global $wp_rewrite;
472
-
473
- foreach ( $wp_rewrite->endpoints as $index => $endpoint ) {
474
- if ( AMP_QUERY_VAR === $endpoint[1] ) {
475
- unset( $wp_rewrite->endpoints[ $index ] );
476
- break;
477
- }
478
- }
479
-
480
- flush_rewrite_rules();
481
-
482
- $wp_rewrite->flush_rules();
483
-
484
- // Remove transient for Welcome page
485
- delete_transient( 'ampforwp_welcome_screen_activation_redirect');
486
- // Remove admin notice after dismissing it
487
- delete_transient( 'ampforwp_automattic_activation_notice');
488
-
489
- }
490
-
491
- if( !function_exists('ampforwp_upcomming_layouts_demo') ){
492
- function ampforwp_upcomming_layouts_demo(){
493
- return array(
494
- array(
495
- "name"=>'Creative Services',
496
- "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-9.png',
497
- "link"=>'https://ampforwp.com/layouts-9/',
498
- ),
499
- array(
500
- "name"=>'App',
501
- "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-8.png',
502
- "link"=>'https://ampforwp.com/layouts-8/',
503
- ),
504
- array(
505
- "name"=>'Business Blog',
506
- "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-7.png',
507
- "link"=>'https://ampforwp.com/layouts-7/',
508
- ),
509
- array(
510
- "name"=>'Journal',
511
- "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-6.png',
512
- "link"=>'https://ampforwp.com/layouts-6/',
513
- ),
514
- array(
515
- "name"=>'Studio',
516
- "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-5.png',
517
- "link"=>'https://ampforwp.com/layouts-5/',
518
- ),
519
- array(
520
- "name"=>'Agency',
521
- "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-4.png',
522
- "link"=>'https://ampforwp.com/layouts-4/',
523
- ),
524
- array(
525
- "name"=>'Elegance',
526
- "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-3.png',
527
- "link"=>'https://ampforwp.com/layouts-3/',
528
- ),
529
- array(
530
- "name"=>'Weekly Magazine',
531
- "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-2.png',
532
- "link"=>'https://ampforwp.com/layouts-2/',
533
- ),
534
- array(
535
- "name"=>'News',
536
- "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-1.png',
537
- "link"=>'https://ampforwp.com/layouts-1/',
538
- ),
539
-
540
- );
541
- }
542
- }
543
-
544
- require_once dirname( __FILE__ ).'/includes/options/redux-core/framework.php';
545
- require_once dirname( __FILE__ ).'/includes/options/extensions/loader.php';
546
- add_action('after_setup_theme', 'ampforwp_include_options_file' );
547
-
548
- function ampforwp_include_options_file(){
549
- if ( is_admin() ) {
550
- // Register all the main options
551
- require_once dirname( __FILE__ ).'/includes/options/admin-config.php';
552
- require_once dirname( __FILE__ ).'/templates/report-bugs.php';
553
- // Global UX Fields
554
- $amp_ux_fields = array();
555
- require_once AMPFORWP_PLUGIN_DIR."includes/ampforwp-fields-array.php";
556
- }
557
- }
558
-
559
- // Modules
560
- add_action('after_setup_theme','ampforwp_add_module_files');
561
- function ampforwp_add_module_files() {
562
-
563
- global $redux_builder_amp;
564
- if ( function_exists('ampforwp_custom_theme_files_register') ) {
565
- if ( ! function_exists( 'bstw' ) ) {
566
- require_once AMPFORWP_PLUGIN_DIR .'/includes/vendor/tinymce-widget/tinymce-widget.php';
567
- }
568
- require_once AMPFORWP_PLUGIN_DIR .'/includes/modules/ampforwp-blurb.php';
569
- require_once AMPFORWP_PLUGIN_DIR .'/includes/modules/ampforwp-button.php';
570
- }
571
- }
572
-
573
- /*
574
- * Load Files only in the backend
575
- * As we don't need plugin activation code to run everytime the site loads
576
- */
577
- if ( is_admin() ) {
578
- add_action( 'plugins_loaded', 'amp_update_db_check' );
579
- // Include Welcome page only on Admin pages
580
- require AMPFORWP_PLUGIN_DIR .'/includes/welcome.php';
581
-
582
- // Add Settings Button in Plugin backend
583
- if ( ! function_exists( 'ampforwp_plugin_settings_link' ) ) {
584
-
585
- // Deactivate Parent Plugin notice
586
- add_filter( 'plugin_action_links', 'ampforwp_plugin_settings_link', 10, 5 );
587
-
588
- function ampforwp_plugin_settings_link( $actions, $plugin_file ) {
589
- static $plugin;
590
- if ( ! isset($plugin))
591
- $plugin = plugin_basename(__FILE__);
592
- if ( $plugin === $plugin_file ) {
593
- $amp_activate = '';
594
- if ( function_exists('amp_activate') ) {
595
- $amp_activate = ' | <span style="color:black;">Status: Addon Mode</span style=>';
596
- }
597
- $settings = array( 'settings' => '<a href="admin.php?page=amp_options&tab=8">' . esc_html__('Settings', 'accelerated-mobile-pages') . '</a> | <a href="https://ampforwp.com/extensions/#utm_source=plugin-panel&utm_medium=plugin-extension&utm_campaign=features">' . esc_html__('Premium Features', 'accelerated-mobile-pages') . '</a> | <a href="https://ampforwp.com/membership/#utm_source=plugin-panel&utm_medium=plugin-extension&utm_campaign=pro">' . esc_html__('Pro', 'accelerated-mobile-pages') . '</a>'. $amp_activate );
598
-
599
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
600
- $actions = array_merge( $actions, $settings );
601
- }
602
- return $actions;
603
- }
604
- }
605
- } // is_admin() closing
606
-
607
- // Fallback for file exists #3156
608
- if( ! function_exists('ampforwp_require_file') ){
609
- function ampforwp_require_file($path){
610
- if(file_exists($path)){
611
- return require_once $path;
612
- }
613
- else{
614
- return false;
615
- }
616
- }
617
- }
618
-
619
- // AMP endpoint Verifier
620
- function ampforwp_is_amp_endpoint() {
621
- if ( (function_exists('ampforwp_is_non_amp') && ampforwp_is_non_amp()) && ! is_admin()) {
622
- return apply_filters('ampforwp_is_amp_endpoint_takeover', ampforwp_is_non_amp() );
623
- }
624
- else {
625
- return apply_filters('ampforwp_is_amp_endpoint', false !== get_query_var( 'amp', false ) );
626
- }
627
- }
628
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
629
- if ( ! class_exists( 'Ampforwp_Init', false ) ) {
630
- class Ampforwp_Init {
631
-
632
- public function __construct(){
633
-
634
- require AMPFORWP_PLUGIN_DIR .'/includes/features/functions.php';
635
- // Load Files required for the plugin to run
636
- if( function_exists('amp_activate') ){
637
- require_once AMPFORWP_PLUGIN_DIR."includes/features/amp_bridge.php";
638
- }
639
- else{
640
- require AMPFORWP_PLUGIN_DIR .'/includes/includes.php';
641
- // Redirection Code added
642
- require AMPFORWP_PLUGIN_DIR.'/includes/redirect.php';
643
-
644
- require AMPFORWP_PLUGIN_DIR .'/classes/class-init.php';
645
- new Ampforwp_Loader();
646
-
647
- }
648
- //Other Features
649
- require_once AMPFORWP_PLUGIN_DIR."includes/features/advertisement/ads-functions.php";
650
- require_once AMPFORWP_PLUGIN_DIR."includes/features/advertisement/mgid-ads-functions.php";
651
- require_once AMPFORWP_PLUGIN_DIR."includes/features/performance/performance-functions.php";
652
- require_once AMPFORWP_PLUGIN_DIR."includes/features/analytics/analytics-functions.php";
653
- require_once AMPFORWP_PLUGIN_DIR."includes/features/structure-data/structured-data-functions.php";
654
- require_once AMPFORWP_PLUGIN_DIR."includes/features/notice-bar/notice-bar-functions.php";
655
- require_once AMPFORWP_PLUGIN_DIR."includes/features/push-notification/push-notification-functions.php";
656
- require_once AMPFORWP_PLUGIN_DIR."includes/mb-helper-function.php";
657
-
658
- }
659
- }
660
- }
661
- /*
662
- * Start the plugin.
663
- * Gentlemen start your engines
664
- */
665
- function ampforwp_plugin_init() {
666
-
667
- if ( defined( 'AMPFORWP__FILE__' ) && defined('AMPFORWP_PLUGIN_DIR') ) {
668
- new Ampforwp_Init();
669
- }
670
- }
671
- add_action('init','ampforwp_plugin_init', 9);
672
-
673
- /*
674
- * customized output widget
675
- * to be used be used in before or after Loop
676
- */
677
- ampforwp_require_file( AMPFORWP_PLUGIN_DIR.'/templates/woo-widget.php' );
678
- ampforwp_require_file( AMPFORWP_PLUGIN_DIR.'/templates/amp-code-widget.php' );
679
-
680
- /*
681
- * Including core AMP plugin files and removing any other things if necessary
682
- */
683
- function ampforwp_bundle_core_amp_files(){
684
- // Bundling Default plugin
685
- require_once AMPFORWP_PLUGIN_DIR .'/includes/vendor/amp/amp.php';
686
- ampforwp_require_file( AMPFORWP_PLUGIN_DIR .'/templates/template-mode/template-mode.php' );
687
-
688
- define( 'AMPFORWP__FILE__', __FILE__ );
689
- if ( ! defined('AMP__VENDOR__DIR__') ) {
690
- define( 'AMP__VENDOR__DIR__', plugin_dir_path(__FILE__) . 'includes/vendor/amp/' );
691
- }
692
- if ( ! defined('AMP_QUERY_VAR') ){
693
- define('AMP_QUERY_VAR', 'amp');
694
- }
695
- define( 'AMP__VENDOR__VERSION', '0.4.2' );
696
- require_once( AMP__VENDOR__DIR__ . '/back-compat/back-compat.php' );
697
- require_once( AMP__VENDOR__DIR__ . '/includes/amp-helper-functions.php' );
698
- require_once( AMP__VENDOR__DIR__ . '/includes/admin/functions.php' );
699
- require_once( AMP__VENDOR__DIR__ . '/includes/settings/class-amp-customizer-settings.php' );
700
- require_once( AMP__VENDOR__DIR__ . '/includes/settings/class-amp-customizer-design-settings.php' );
701
- // Widgets
702
- require_once ( AMP__VENDOR__DIR__ . '/includes/widgets/class-amp-widget-categories.php' );
703
- require_once ( AMP__VENDOR__DIR__ . '/includes/widgets/class-amp-widget-archives.php' );
704
- require_once ( AMP__VENDOR__DIR__ . '/includes/widgets/class-amp-widget-media-video.php' );
705
- require_once ( AMP__VENDOR__DIR__ . '/includes/widgets/class-amp-widget-recent-comments.php' );
706
- require_once ( AMP__VENDOR__DIR__ . '/includes/widgets/class-amp-widget-text.php' );
707
- //Removed JNews AMP Extender #3526
708
- if ( function_exists( 'jnews_get_option' ) ){
709
- remove_action( 'plugins_loaded', 'jnews_amp' );
710
- remove_filter( 'amp_content_sanitizers', 'jnews_amp_content_sanitize');
711
- }
712
- if (function_exists('wpda_hb_pro__plugins_loaded')) {
713
- $url_path = trim(parse_url(add_query_arg(array()), PHP_URL_PATH),'/' );
714
- if( function_exists('ampforwp_is_amp_inURL') && ampforwp_is_amp_inURL($url_path)) {
715
- remove_action('plugins_loaded', 'wpda_hb_pro__plugins_loaded');
716
- }
717
- }
718
- }
719
- add_action('plugins_loaded','ampforwp_bundle_core_amp_files', 8);
720
-
721
- if ( ! function_exists('ampforwp_init') ) {
722
- add_action( 'init', 'ampforwp_init' );
723
- function ampforwp_init() {
724
- if ( false === apply_filters( 'amp_is_enabled', true ) ) {
725
- return;
726
- }
727
- if( ! defined('AMP_QUERY_VAR')){
728
- define( 'AMP_QUERY_VAR', apply_filters( 'amp_query_var', 'amp' ) );
729
- }
730
-
731
- if ( ! defined('AMP__VENDOR__DIR__') ) {
732
- define( 'AMP__VENDOR__DIR__', plugin_dir_path(__FILE__) . 'includes/vendor/amp/' );
733
- }
734
-
735
- do_action( 'amp_init' );
736
-
737
- load_plugin_textdomain( 'accelerated-mobile-pages', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
738
-
739
- // Adding rewrite rules only when we are in standard mode
740
- if (!is_amp_plugin_active()) {
741
- add_rewrite_endpoint( AMP_QUERY_VAR, EP_PERMALINK );
742
- }
743
- add_post_type_support( 'post', AMP_QUERY_VAR );
744
-
745
- add_filter( 'request', 'AMPforWP\\AMPVendor\\amp_force_query_var_value' );
746
- add_action( 'wp', 'AMPforWP\\AMPVendor\\amp_maybe_add_actions');
747
-
748
- // Redirect the old url of amp page to the updated url. #1033 (Vendor Update)
749
- add_filter( 'old_slug_redirect_url', 'ampforwp_redirect_old_slug_to_new_url' );
750
-
751
- if ( class_exists( 'Jetpack' ) && ! (defined( 'IS_WPCOM' ) && IS_WPCOM) && ( defined('JETPACK__VERSION') && JETPACK__VERSION < 6.9 ) ) {
752
- require_once( AMP__VENDOR__DIR__ . '/jetpack-helper.php' );
753
- }
754
- // AMP by Automattic Compatibility #2287
755
- // Remove the FrontPage query added by AMP to make our FrontPage/Homepage works
756
- if ( function_exists('amp_activate') ) {
757
- remove_action( 'parse_query', 'amp_correct_query_when_is_front_page' );
758
- remove_action( 'wp', 'amp_maybe_add_actions' );
759
- }
760
- }
761
- }
762
-
763
-
764
- function amp_update_db_check() {
765
- global $redux_builder_amp;
766
- $ampforwp_current_version = AMPFORWP_VERSION;
767
- if ( isset( $_GET['ampforwp-dismiss-theme'] ) && trim( $_GET['ampforwp-dismiss-theme']) === "ampforwp_dismiss_admin_notices" && wp_verify_nonce($_GET['ampforwp_notice'], 'ampforwp_notice') ) {
768
- update_option( 'ampforwp_theme_notice', true );
769
- wp_redirect("admin.php?page=amp_options");
770
- }
771
- if ( get_option( 'AMPforwp_db_version' ) !== $ampforwp_current_version ) {
772
-
773
- if ( isset( $_GET['ampforwp-dismiss'] ) && trim( $_GET['ampforwp-dismiss']) === "ampforwp_dismiss_admin_notices" && wp_verify_nonce($_GET['ampforwp_notice'], 'ampforwp_notice') ) {
774
- update_option( 'AMPforwp_db_version', $ampforwp_current_version );
775
- wp_redirect(remove_query_arg('ampforwp-dismiss'), 301);
776
- }
777
- }
778
- }
779
-
780
-
781
- // Admin notice for AMP WordPress Theme
782
- function ampforwp_ampwptheme_notice() {
783
- $theme = '';
784
- $theme = wp_get_theme(); // gets the current theme
785
-
786
- if ( ('AMP WordPress Theme' == $theme->name || 'AMP WordPress Theme' == $theme->parent_theme) && true != get_option('ampforwp_theme_notice') ) {
787
- add_thickbox(); ?>
788
- <div id="some" class="notice-warning settings-error notice is-dismissible">
789
- <span style="margin: 0.5em 0.5em 0 0"><?php echo esc_html__('AMP WordPress Theme is installed', 'accelerated-mobile-pages'); ?></span><br>
790
- <span style="margin: 0.5em 0.5em 0 0"><?php echo esc_html__('One Last Step Required:', 'accelerated-mobile-pages'); ?> <a href="#TB_inline?width=600&height=550&inlineId=my-content-id" class="thickbox"><?php echo esc_html__('Finish Setup', 'accelerated-mobile-pages') ?></a></span><br>
791
- </div>
792
- <div id="my-content-id" style="display:none;">
793
- <p>
794
- <iframe width="100%" height="480" src="https://www.youtube.com/embed/" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
795
- <a href="<?php echo esc_url( wp_nonce_url( add_query_arg( 'ampforwp-dismiss-theme', 'ampforwp_dismiss_admin_notices' ), 'ampforwp_notice', 'ampforwp_notice' ) ) ?>"><?php echo esc_html__('Take me to the Options Panel', 'accelerated-mobile-pages'); ?></a>
796
- </p>
797
- </div>
798
- <?php }
799
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
800
-
801
- $amp_plugin_manager_version = array();
802
-
803
- $plugin_manager_active = is_plugin_active('amp-plugin-manager/ampforwp-3rd-party-plugin-creator.php');
804
- $amp_plugin_manager_active = is_plugin_active('plugin-manager/ampforwp-3rd-party-plugin-creator.php');
805
-
806
- if ( $plugin_manager_active) {
807
- $amp_plugin_manager = get_plugin_data(AMPFORWP_MAIN_PLUGIN_DIR.'/amp-plugin-manager/ampforwp-3rd-party-plugin-creator.php');
808
- $amp_plugin_manager_version = $amp_plugin_manager['Version'];
809
- }
810
- if ( $amp_plugin_manager_active) {
811
- $plugin_manager = get_plugin_data(AMPFORWP_MAIN_PLUGIN_DIR.'/plugin-manager/ampforwp-3rd-party-plugin-creator.php');
812
- $amp_plugin_manager_version = $plugin_manager['Version'];
813
- }
814
-
815
- if ( $plugin_manager_active || $amp_plugin_manager_active ) {
816
- $screen = get_current_screen();
817
- if ( '1.0' == $amp_plugin_manager_version && 'plugins' === $screen->base) { ?>
818
- <div id="ampforwp_pluginmanager" class="notice-warning settings-error notice is-dismissible"><p><b><?php echo esc_html__(' Attention','accelerated-mobile-pages'); ?>:</b> <?php echo esc_html__(' AMPforWP Plugin Manager requires an upgrade. Please','accelerated-mobile-pages'); ?> <b><a href="https://ampforwp.com/plugins-manager/?update=plugins-manager#utm_source=plugin-page&utm_medium=plugin-manager-update&utm_campaign=update-notice" target="_blank"><?php echo esc_html__('Download &amp; install the latest version', 'accelerated-mobile-pages'); ?></a></b> <?php echo esc_html__('for free','accelerated-mobile-pages'); ?>.
819
- </p>
820
- </div>
821
- <?php }
822
- }
823
- }
824
- if ( ! defined('AMP_FRAMEWORK_COMOPNENT_DIR_PATH') ) {
825
- define('AMP_FRAMEWORK_COMOPNENT_DIR_PATH', AMPFORWP_PLUGIN_DIR ."/components");
826
- }
827
- require_once( AMP_FRAMEWORK_COMOPNENT_DIR_PATH . '/components-core.php' );
828
- require ( AMPFORWP_PLUGIN_DIR.'/install/index.php' );
829
- if ( !function_exists('amp_activate') ) {
830
- require_once( AMPFORWP_PLUGIN_DIR. 'base_remover/base_remover.php' );
831
- require_once( AMPFORWP_PLUGIN_DIR. 'includes/thirdparty-compatibility.php' );
832
- $enablePb = false;
833
- if(is_admin()){
834
- global $pagenow;
835
- if( is_multisite() ){
836
- $current_url = $_SERVER['REQUEST_URI'];
837
- $post_old = preg_match('/post\.php/', $current_url);
838
- $post_new = preg_match('/post-new\.php/', $current_url);
839
- if($post_old || $post_new){
840
- $enablePb = true;
841
- }
842
- }elseif( ('post.php' || 'post-new.php') == $pagenow ) {
843
- $enablePb = true;
844
- }
845
- if (defined('DOING_AJAX') && DOING_AJAX) {
846
- $enablePb = true;
847
- }
848
- }else{
849
- $enablePb = true;
850
- }
851
- if ($enablePb && ampforwp_get_setting('ampforwp-pagebuilder')== true ){
852
- require_once( AMPFORWP_PLUGIN_DIR. 'pagebuilder/amp-page-builder.php');
853
- }
854
- }
855
- if(is_admin()){
856
- require_once( AMPFORWP_PLUGIN_DIR. 'includes/modules-upgrade.php' );
857
- add_action( "redux/options/redux_builder_amp/saved", 'ampforwp_update_data_when_saved', 10, 2 );
858
- add_action( "redux/options/redux_builder_amp/reset", 'ampforwp_update_data_when_reset' );
859
- add_action( "redux/options/redux_builder_amp/section/reset", 'ampforwp_update_data_when_reset' );
860
- add_action( "redux/options/redux_builder_amp/saved", 'ampforwp_save_local_font', 10, 2 );
861
- }
862
-
863
- /**
864
- * Redirects the old AMP URL to the new AMP URL.
865
- * If post slug is updated the amp page with old post slug will be redirected to the updated url.
866
- *
867
- * @param string $link New URL of the post.
868
- *
869
- * @return string $link URL to be redirected.
870
- */
871
- if ( ! function_exists( 'ampforwp_redirect_old_slug_to_new_url' ) ) {
872
- function ampforwp_redirect_old_slug_to_new_url( $link ) {
873
-
874
- if ( function_exists( 'ampforwp_is_amp_endpoint' ) && ampforwp_is_amp_endpoint() ) {
875
- $link = trailingslashit( trailingslashit( $link ) . AMPFORWP_AMP_QUERY_VAR );
876
- }
877
-
878
- return $link;
879
- }
880
- }
881
-
882
- // Hide Post Builder if Swift is enabled
883
- add_filter('amp_customizer_is_enabled', 'ampforwp_customizer_is_enabled');
884
- if ( ! function_exists('ampforwp_customizer_is_enabled') ) {
885
- function ampforwp_customizer_is_enabled($value){
886
- global $redux_builder_amp;
887
- if ( 4 == ampforwp_get_setting('amp-design-selector') && ! function_exists('amp_activate') ) {
888
- $value = false;
889
- }
890
- return $value;
891
- }
892
- }
893
-
894
- // Get Settings from Redux #2177 & #2911
895
- function ampforwp_get_setting( $opt_name='', $child_option='', $sanitize_method='' ){
896
- global $redux_builder_amp;
897
- if (is_plugin_active('amp/amp.php')) {
898
- unset($redux_builder_amp['ampforwp-seo-selection']);
899
- }
900
- if(empty($redux_builder_amp)){
901
- $redux_builder_amp = (array) get_option('redux_builder_amp');
902
- }
903
- $opt_value = '';
904
- if ( isset($redux_builder_amp[$opt_name]) ) {
905
- $opt_value = $redux_builder_amp[$opt_name];
906
- if ( '' !== $child_option && isset($redux_builder_amp[$opt_name][$child_option]) ){
907
- $opt_value = $redux_builder_amp[$opt_name][$child_option];
908
- }
909
- }
910
- if ( '' !== $sanitize_method && function_exists($sanitize_method) ){
911
- return $sanitize_method($opt_value);
912
- }
913
- return $opt_value;
914
- }
915
-
916
- // Setup funtion
917
- if(!function_exists('ampforwp_get_setup_info')){
918
- function ampforwp_get_setup_info($ux_option=''){
919
- $ux_content = "";
920
- if($ux_option=="ampforwp-ux-website-type-section"){
921
- $ux_content = ampforwp_get_setting('ampforwp-setup-ux-website-type');
922
- if(ampforwp_get_setting('ampforwp-sd-type-posts') && preg_match("/Other/", $ux_content)==0 && $ux_content!=="Local Business"){
923
- $ux_content = ampforwp_get_setting('ampforwp-sd-type-posts');
924
- }else{
925
- $ux_content = ampforwp_get_setting('ampforwp-setup-ux-website-type');
926
- }
927
- if($ux_content=="NewsArticle" || $ux_content=="News"){
928
- $ux_content="News";
929
- }else if($ux_content=="BlogPosting" || $ux_content=="Blog" || $ux_content==""){
930
- $ux_content="Blog";
931
- }else if($ux_content=="Product"){
932
- $ux_content="Ecommerce";
933
- }
934
- if(preg_match("/Other/", $ux_content)!=0){
935
- $other = explode("-", $ux_content);
936
- if(isset($other[1])){
937
- $ux_content=$other[1];
938
- }else{
939
- $ux_content="WebPage";
940
- }
941
- }
942
-
943
- }else if($ux_option=="ampforwp-ux-need-type-section"){
944
- $home = ampforwp_get_setting('ampforwp-homepage-on-off-support');
945
- $posts = ampforwp_get_setting('amp-on-off-for-all-posts');
946
- $pages = ampforwp_get_setting('amp-on-off-for-all-pages');
947
- $archive = ampforwp_get_setting('ampforwp-archive-support');
948
- $ntype_arr = array();
949
- if($home==1){$ntype_arr[] = "Home";}
950
- if($posts==1){$ntype_arr[] = "Posts";}
951
- if($pages==1){$ntype_arr[] = "Pages";}
952
- if($archive==1){$ntype_arr[] = "Archive";}
953
- $ux_content = implode(", ", $ntype_arr);
954
- }else if($ux_option=="ampforwp-ux-design-section"){
955
- $ux_content = ampforwp_get_setting('opt-media','url');
956
- }else if($ux_option=="ampforwp-ux-analytics-section"){
957
- $ga_field = ampforwp_get_setting('ga-feild');
958
- $ga_field_gtm = ampforwp_get_setting('amp-gtm-id');
959
- $amp_fb_pixel_id = ampforwp_get_setting('amp-fb-pixel-id');
960
- $sa_feild = ampforwp_get_setting('sa-feild');
961
- $pa_feild = ampforwp_get_setting('pa-feild');
962
- $quantcast_c = ampforwp_get_setting('amp-quantcast-analytics-code');
963
- $comscore_c1 = ampforwp_get_setting('amp-comscore-analytics-code-c1');
964
- $comscore_c1 = ampforwp_get_setting('amp-comscore-analytics-code-c2');
965
- $eam_c = ampforwp_get_setting('eam-feild');
966
- $sc_c = ampforwp_get_setting('sc-feild');
967
- $histats_c = ampforwp_get_setting('histats-field');
968
- $yemdex_c = ampforwp_get_setting('amp-Yandex-Metrika-analytics-code');
969
- $chartbeat_c = ampforwp_get_setting('amp-Chartbeat-analytics-code');
970
- $alexa_c = ampforwp_get_setting('ampforwp-alexa-account');
971
- $alexa_d = ampforwp_get_setting('ampforwp-alexa-domain');
972
- $afs_c = ampforwp_get_setting('ampforwp-afs-siteid');
973
- $clicky_side_id = ampforwp_get_setting('clicky-site-id');
974
- $cr_config_url = ampforwp_get_setting('ampforwp-callrail-config-url');
975
- $cr_number = ampforwp_get_setting('ampforwp-callrail-number');
976
- $cr_analytics_url = ampforwp_get_setting('ampforwp-callrail-analytics-url');
977
- $analytics_txt = "";
978
- $analytic_arr = array();
979
- if(ampforwp_get_setting('ampforwp-ga-switch') && $ga_field!="UA-XXXXX-Y" && $ga_field!=""){$analytic_arr[]="Google Analytics";}
980
- if(ampforwp_get_setting('amp-use-gtm-option') && $ga_field_gtm!="" && $ga_field_gtm!=""){$analytic_arr[]="Google Tag Manager";}
981
- if(ampforwp_get_setting('amp-fb-pixel') && $amp_fb_pixel_id!=""){$analytic_arr[]="Facebook Pixel";}
982
- if(ampforwp_get_setting('ampforwp-Segment-switch') && $sa_feild!="SEGMENT-WRITE-KEY" && $sa_feild!=""){$analytic_arr[]="Segment Analytics";}
983
- if(ampforwp_get_setting('ampforwp-Piwik-switch') && $pa_feild!="#" && $pa_feild!=""){ $analytic_arr[]="Matomo Analytics";}
984
- if(ampforwp_get_setting('ampforwp-Quantcast-switch') && $quantcast_c!=""){ $analytic_arr[]="Quantcast Measurement";}
985
- if(ampforwp_get_setting('ampforwp-comScore-switch') && $comscore_c1!="" && $comscore_c1!=""){$analytic_arr[]="comScore";}
986
- if(ampforwp_get_setting('ampforwp-Effective-switch') && $eam_c!="#" && $eam_c!=""){$analytic_arr[]="Effective Measure";}
987
- if(ampforwp_get_setting('ampforwp-StatCounter-switch') && $sc_c!="#" && $sc_c!=""){$analytic_arr[]="StatCounter";}
988
- if(ampforwp_get_setting('ampforwp-Histats-switch') && $histats_c!=""){$analytic_arr[]="Histats Analytics";}
989
- if(ampforwp_get_setting('ampforwp-Yandex-switch') && $yemdex_c!=""){$analytic_arr[]="Yandex Metrika";}
990
- if(ampforwp_get_setting('ampforwp-Chartbeat-switch') && $chartbeat_c!=""){$analytic_arr[]="Chartbeat Analytics";}
991
- if(ampforwp_get_setting('ampforwp-Alexa-switch') && $alexa_c!="" && $alexa_d!=""){$analytic_arr[]="Alexa Metrics";}
992
- if(ampforwp_get_setting('ampforwp-afs-analytics-switch') && $afs_c!=""){$analytic_arr[]="AFS Analytics";}
993
- if(ampforwp_get_setting('amp-clicky-switch') && $clicky_side_id!=""){$analytic_arr[]="Clicky Analytics";}
994
- if(ampforwp_get_setting('ampforwp-callrail-switch') && $cr_config_url!="" && $cr_number!="" && $cr_analytics_url!=""){$analytic_arr[]="Call Rail Analytics";}
995
- $ux_content = implode(", ", $analytic_arr);
996
- }else if($ux_option=="ampforwp-ux-privacy-section"){
997
- $ux_cookie_enable = ampforwp_get_setting('amp-enable-notifications');
998
- $ux_compiance_switch = ampforwp_get_setting('amp-gdpr-compliance-switch');
999
- $policy_arr = array();
1000
- if($ux_cookie_enable){
1001
- $policy_arr[] = "Cookie Consent";
1002
- }
1003
- if($ux_compiance_switch){
1004
- $policy_arr[] = "GDPR";
1005
- }
1006
- $ux_content = implode(", ", $policy_arr);
1007
- }else if($ux_option=="ampforwp_ux_extension_check"){
1008
- include_once( ABSPATH . 'wp-admin/includes/plugin.php');
1009
- $ux_content = array();
1010
- if(defined('WPCF7_VERSION')){
1011
- $ux_content[] = 'contact_form_7';
1012
- }
1013
- if(class_exists('Ninja_Forms')){
1014
- $ux_content[] = 'ninja_forms';
1015
- }
1016
- if(function_exists('caldera_forms_fallback_shortcode')){
1017
- $ux_content[] = 'caldera_forms';
1018
- }
1019
- if(function_exists('wpforms')){
1020
- $ux_content[] = 'wpforms';
1021
- }
1022
- if(function_exists('WC')){
1023
- $ux_content[] = 'woocommerce';
1024
- }
1025
- if(class_exists('Easy_Digital_Downloads')){
1026
- $ux_content[] = 'easy_digital_downloads';
1027
- }
1028
- if(defined('POLYLANG_BASENAME')){
1029
- $ux_content[] = 'polylang';
1030
- }
1031
- if(class_exists('bbPress')){
1032
- $ux_content[] = 'bbpress';
1033
- }
1034
- if(function_exists('activate_shortcodes_ultimate')){
1035
- $ux_content[] = 'shortcodes';
1036
- }
1037
- if(class_exists('toc')){
1038
- $ux_content[] = 'toc';
1039
- }
1040
- if(class_exists('WPCOM_Liveblog')){
1041
- $ux_content[] = 'liveblog';
1042
- }
1043
- if(defined('TRIBE_EVENTS_FILE')){
1044
- $ux_content[] = 'eventcalendar';
1045
- }
1046
- if(function_exists('run_wp_recipe_maker') || function_exists('yasr_fs') || function_exists('wp_review_constants') || function_exists('postratings_init') || class_exists('WPCustomerReviews3') || defined('KKSR_PLUGIN') || function_exists('taqyeem_init') || class_exists('Multi_Rating')){
1047
- $ux_content[] = 'ratings';
1048
- }
1049
- if(class_exists('GFForms')){
1050
- $ux_content[] = 'gravityform';
1051
- }
1052
- if(function_exists('cp_display_version_warning')){
1053
- $ux_content[] = 'classipress';
1054
- }
1055
- if(function_exists('elementor_load_plugin_textdomain') || function_exists('et_divi_theme_body_class')){
1056
- if(function_exists('elementor_load_plugin_textdomain')){
1057
- $ux_content[] = 'Elementor';
1058
- }else if(function_exists('et_divi_theme_body_class')){
1059
- $ux_content[] = 'Divi';
1060
- }
1061
- }
1062
- if(function_exists('wpml_upgrade')){
1063
- $ux_content[] = 'wpml';
1064
- }
1065
- }
1066
- return $ux_content;
1067
- }
1068
- }
1069
- // Register widgets
1070
- add_action('amp_init', 'ampforwp_widgets');
1071
- function ampforwp_widgets(){
1072
- add_action( 'widgets_init', 'ampforwp_register_widgets' );
1073
- }
1074
- function ampforwp_register_widgets() {
1075
- global $wp_widget_factory;
1076
- foreach ( $wp_widget_factory->widgets as $registered_widget ) {
1077
- $registered_widget_class_name = get_class( $registered_widget );
1078
- if ( ! preg_match( '/^WP_Widget_(.+)$/', $registered_widget_class_name, $matches ) ) {
1079
- continue;
1080
- }
1081
- $amp_class_name = 'AMP_Widget_' . $matches[1];
1082
- if ( ! class_exists( $amp_class_name ) || is_a( $amp_class_name, $registered_widget_class_name ) ) {
1083
- continue;
1084
- }
1085
-
1086
- unregister_widget( $registered_widget_class_name );
1087
- register_widget( $amp_class_name );
1088
- }
1089
- }
1090
- // Post Types
1091
- function ampforwp_get_all_post_types(){
1092
- global $redux_builder_amp;
1093
- $post_types = array();
1094
- $selected_post_types = array();
1095
-
1096
- if( ampforwp_get_setting('amp-on-off-for-all-posts') ){
1097
- $post_types['post'] = 'post';
1098
- }
1099
- if( ampforwp_get_setting('amp-on-off-for-all-pages') ){
1100
- $post_types['page'] = 'page';
1101
- }
1102
- if( ampforwp_get_setting('ampforwp-archive-support') && ampforwp_get_setting('ampforwp-archive-support-cat') ){
1103
- $post_types['category'] = 'category';
1104
- }
1105
- if( ampforwp_get_setting('ampforwp-archive-support') && ampforwp_get_setting('ampforwp-archive-support-tag')){
1106
- $post_types['tag'] = 'post_tag';
1107
- }
1108
- $custom_taxonomies = ampforwp_get_setting('ampforwp-custom-taxonomies');
1109
- if(ampforwp_get_setting('ampforwp-archive-support') && !empty($custom_taxonomies) ){
1110
- foreach($custom_taxonomies as $taxonomy){
1111
- $terms = get_taxonomy( $taxonomy );
1112
- $taxonomy_name = ( isset($terms->name) ? $terms->name : '' );
1113
- if( isset($terms->name) && !empty($terms->name)){
1114
- $post_types[$terms->name] = $terms->name;
1115
- }
1116
- }
1117
- }
1118
-
1119
- if ( ampforwp_get_setting('ampforwp-custom-type')) {
1120
- foreach (ampforwp_get_setting('ampforwp-custom-type') as $key) {
1121
- $selected_post_types[$key] = $key;
1122
- }
1123
- $post_types = array_merge($post_types, $selected_post_types);
1124
- }
1125
- if(class_exists('WPUltimateRecipe') && function_exists('ampforwp_is_home') && ampforwp_is_home()){
1126
- $post_types['recipe'] = 'recipe';
1127
- }
1128
- return $post_types;
1129
- }
1130
-
1131
- // is_search_enabled_in_ampforwp function ( Design 1,2 and 3 ) #2681
1132
- if( !function_exists( 'is_search_enabled_in_ampforwp' ) ) {
1133
- function is_search_enabled_in_ampforwp() {
1134
- if( ( ampforwp_get_setting('amp-design-selector')==1 && ampforwp_get_setting('amp-design-1-search-feature') ) ||
1135
- ( ampforwp_get_setting('amp-design-selector')==2 && ampforwp_get_setting('amp-design-2-search-feature') ) ||
1136
- ( ampforwp_get_setting('amp-design-selector')==3 && ampforwp_get_setting('amp-design-3-search-feature') ) ) {
1137
- return true;
1138
- }
1139
- return false;
1140
- }
1141
- }
1142
- // Fallback for Redux class #2377
1143
- add_action('after_setup_theme', 'ampforwp_redux_class' );
1144
- function ampforwp_redux_class(){
1145
- if ( !class_exists('Redux') && class_exists('ReduxCore\\ReduxFramework\\Redux') && !class_exists('QuadMenu') && !function_exists('volcanno_plugins_loaded')) {
1146
- class Redux extends ReduxCore\ReduxFramework\Redux
1147
- {
1148
- # Do nothing, it will inherit all the methods
1149
- }
1150
- }
1151
- }
1152
- add_filter('plugin_row_meta' , 'ampforwp_add_plugin_meta_links', 10, 2);
1153
- if ( ! function_exists('ampforwp_add_plugin_meta_links') ) {
1154
- function ampforwp_add_plugin_meta_links($meta_fields, $file) {
1155
- if ( plugin_basename(__FILE__) == $file ) {
1156
- $plugin_url = "https://wordpress.org/support/plugin/accelerated-mobile-pages/reviews/?rate=5#new-post";
1157
- $meta_fields[] = "<a href='" . esc_url($plugin_url) ."' target='_blank' title='" . esc_html__('Rate', 'accelerated-mobile-pages') . "'>
1158
- <i class='ampforwp-rate-stars'>"
1159
- . "<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>"
1160
- . "<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>"
1161
- . "<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>"
1162
- . "<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>"
1163
- . "<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>"
1164
- . "</i></a>";
1165
-
1166
- }
1167
-
1168
- return $meta_fields;
1169
- }
1170
- }
1171
- // AMPforWP Global Data variable
1172
- $ampforwp_data = array();
1173
-
1174
- if(!function_exists('sanitize_hex_color')){
1175
- function sanitize_hex_color( $color ) {
1176
- if ( '' === $color ) {
1177
- return '';
1178
- }
1179
-
1180
- // 3 or 6 hex digits, or the empty string.
1181
- if ( preg_match( '|^#([A-Fa-f0-9]{3}){1,2}$|', $color ) ) {
1182
- return $color;
1183
- }
1184
- }
1185
- }
1186
- // color sanitizer
1187
- function ampforwp_sanitize_color( $color ) {
1188
- if ( empty( $color ) || is_array( $color ) )
1189
- return 'rgba(0,0,0,0)';
1190
- // If string does not start with 'rgba', then treat as hex
1191
- // sanitize the hex color and finally convert hex to rgba
1192
- if ( false === strpos( $color, 'rgba' ) ) {
1193
- return sanitize_hex_color( $color );
1194
- }
1195
- // By now we know the string is formatted as an rgba color so we need to further sanitize it.
1196
- $color = str_replace( ' ', '', $color );
1197
- sscanf( $color, 'rgba(%d,%d,%d,%f)', $red, $green, $blue, $alpha );
1198
- return 'rgba('.$red.','.$green.','.$blue.','.$alpha.')';
1199
- }
1200
-
1201
- // AMP Plugins Manager compatibility #2976
1202
- if ( false == get_transient('ampforwp-pm-disabler') ) {
1203
- $ampforwp_active_plugins = array_flip(get_option('active_plugins'));
1204
- if (isset($ampforwp_active_plugins['amp-plugin-manager/ampforwp-3rd-party-plugin-creator.php'] ) ){
1205
- $plugin_data = get_plugin_data(AMPFORWP_MAIN_PLUGIN_DIR . 'amp-plugin-manager/ampforwp-3rd-party-plugin-creator.php' );
1206
- if ( version_compare( floatval( $plugin_data['Version'] ), '1.1', '<' ) ){
1207
- unset($ampforwp_active_plugins['amp-plugin-manager/ampforwp-3rd-party-plugin-creator.php']);
1208
- update_option('active_plugins', array_flip($ampforwp_active_plugins));
1209
- set_transient('ampforwp-pm-disabler', true);
1210
- include_once( ABSPATH . 'wp-includes/pluggable.php' );
1211
- wp_redirect(admin_url('plugins.php'));
1212
- }
1213
- }
1214
- elseif(isset($ampforwp_active_plugins['amp-plugin-manager-master/ampforwp-3rd-party-plugin-creator.php'] )){
1215
- $plugin_data = get_plugin_data(AMPFORWP_MAIN_PLUGIN_DIR . 'amp-plugin-manager-master/ampforwp-3rd-party-plugin-creator.php' );
1216
- if ( version_compare( floatval( $plugin_data['Version'] ), '1.1', '<' ) ){
1217
- unset($ampforwp_active_plugins['amp-plugin-manager-master/ampforwp-3rd-party-plugin-creator.php']);
1218
- update_option('active_plugins', array_flip($ampforwp_active_plugins));
1219
- set_transient('ampforwp-pm-disabler', true);
1220
- include_once( ABSPATH . 'wp-includes/pluggable.php' );
1221
- wp_redirect(admin_url('plugins.php'));
1222
- }
1223
- }
1224
-
1225
- }
1226
- function ampforwp_plugins_manager_notice(){
1227
- if ( true == get_transient('ampforwp-pm-disabler') ) { ?>
1228
- <div id="ampforwp_pluginmanager" class="notice-warning settings-error notice is-dismissible"><p><b><?php echo esc_html__('Attention: ','accelerated-mobile-pages');?></b><?php echo esc_html__('AMPforWP Plugin Manager has been deactivated and requires an upgrade. Please','accelerated-mobile-pages');?> <b><a target="_blank" href=<?php echo esc_url('https://ampforwp.com/plugins-manager/?update=plugins-manager#utm_source=plugin-page&utm_medium=plugin-manager-update&utm_campaign=update-notice');?>><?php echo esc_html__('Download &amp; install the latest version','accelerated-mobile-pages');?></a></b><?php echo esc_html__(' for free.','accelerated-mobile-pages');?>
1229
- </p>
1230
- </div>
1231
- <?php
1232
- }
1233
- }
1234
- add_action( 'activate_plugin', 'ampforwp_delete_plugins_manager_transient' );
1235
- function ampforwp_delete_plugins_manager_transient($plugin){
1236
- if ( strpos($plugin, 'ampforwp-3rd-party-plugin-creator.php') || strpos($plugin, 'accelerated-moblie-pages.php') ) {
1237
- delete_transient( 'ampforwp-pm-disabler' );
1238
- }
1239
- }
1240
- // Infinite scroll/ amp-next-page #2244
1241
- add_action('pre_amp_render_post', 'ampforwp_initialise_classes');
1242
- if ( ! function_exists('ampforwp_initialise_classes') ) {
1243
- function ampforwp_initialise_classes(){
1244
- if ( true == ampforwp_get_setting('ampforwp-infinite-scroll') || true == ampforwp_get_setting('ampforwp-wcp-infinite-scroll') ) {
1245
- require AMPFORWP_PLUGIN_DIR .'/classes/class-ampforwp-infinite-scroll.php';
1246
- }
1247
- }
1248
- }
1249
-
1250
- // Data Consent
1251
- function ampforwp_get_data_consent(){
1252
- global $redux_builder_amp;
1253
- $dboc = false;
1254
- $is_dboc = '';
1255
- if(isset($redux_builder_amp['amp-gdpr-compliance-switch']) && $redux_builder_amp['amp-gdpr-compliance-switch'] ){
1256
-
1257
- $dboc = true;
1258
- }
1259
- return $dboc;
1260
- }
1261
-
1262
- //Levelup Compatibility
1263
- function ampforwp_levelup_compatibility($type='levelup_theme_and_elementor_check'){
1264
- //check theme
1265
- $returnVal = false;
1266
- switch($type){
1267
- case 'levelup_theme':
1268
- if(function_exists('levelup_theme_is_active')){
1269
- $returnVal = levelup_theme_is_active();
1270
- }
1271
- break;
1272
- case 'levelup_elementor':
1273
- if(function_exists('levelup_has_enable_elementor_builder')){
1274
- $returnVal = levelup_has_enable_elementor_builder();
1275
- }
1276
- break;
1277
- case 'levelup_theme_and_elementor':
1278
- if(function_exists('levelup_theme_is_active') && function_exists('levelup_has_enable_elementor_builder')){
1279
- $returnVal = levelup_theme_is_active() && levelup_has_enable_elementor_builder();
1280
- }
1281
- break;
1282
- case 'hf_builder_foot':
1283
- if(function_exists('levelup_check_hf_builder')){
1284
- $returnVal = levelup_check_hf_builder('foot');
1285
- }
1286
- break;
1287
- case 'hf_builder_head':
1288
- if(function_exists('levelup_check_hf_builder')){
1289
- $returnVal = levelup_check_hf_builder('head');
1290
- }
1291
- break;
1292
- }
1293
- return $returnVal;
1294
- }
1295
-
1296
- function ampforwp_amp_consent_check($attrs){
1297
-
1298
- if( ampforwp_get_data_consent() ){
1299
- $attrs['data-block-on-consent'] = '';
1300
- }
1301
- $attrs = apply_filters( 'ampforwp_embedd_attrs_handler', $attrs );
1302
- return $attrs;
1303
- }
1304
-
1305
- // Fallback for Class AMP_Content sanitizer #2287
1306
- add_action('pre_amp_render_post', 'ampforwp_vendor_amp_fallbacks');
1307
- function ampforwp_vendor_amp_fallbacks(){
1308
- if ( ! class_exists('AMP_Content') ) {
1309
- class AMP_Content extends AMPforWP\AMPVendor\AMP_Content{}
1310
- }
1311
- }
1312
- // Class AMP_Blacklist_Sanitizer #2287
1313
- add_action('plugins_loaded', 'ampforwp_sanitizers_loader');
1314
- function ampforwp_sanitizers_loader(){
1315
- if ( ! class_exists('AMP_Blacklist_Sanitizer') ) {
1316
- if(defined('AMP__VENDOR__DIR__')){
1317
- $amp_blacklist_sanitizer = realpath( AMP__VENDOR__DIR__ . 'includes/sanitizers/class-amp-blacklist-sanitizer.php') ;
1318
- require_once $amp_blacklist_sanitizer;
1319
- class AMP_Blacklist_Sanitizer extends AMPforWP\AMPVendor\AMP_Blacklist_Sanitizer{}
1320
- }
1321
- }
1322
- }
1323
- // is_amp_endpoint Fallback #2287 #3055
1324
- add_action('widgets_init','ampforwp_vendor_is_amp_endpoint');
1325
- function ampforwp_vendor_is_amp_endpoint(){
1326
- global $pagenow;
1327
- if ( ! function_exists('amp_activate') && ! function_exists('is_amp_endpoint' ) && 'plugins.php' !== $pagenow ) {
1328
- function is_amp_endpoint(){
1329
- if(true == ampforwp_get_setting('ampforwp-amp-takeover')){
1330
- return true;
1331
- }
1332
- return false !== get_query_var( AMP_QUERY_VAR, false );
1333
- }
1334
- }
1335
- }
1336
-
1337
- // ampforwp_exclude_posts function #3118
1338
- if ( ! function_exists('ampforwp_exclude_posts') ) {
1339
- function ampforwp_exclude_posts(){
1340
- $exclude_post_values = array();
1341
- $ampforwp_exclude_post_transient = get_transient('ampforwp_exclude_post_transient');
1342
- if ( false != $ampforwp_exclude_post_transient ) {
1343
- $exclude_post_values = $ampforwp_exclude_post_transient;
1344
- }
1345
- else{
1346
- $ampforwp_exclude_post = get_option('ampforwp_exclude_post');
1347
- if ( false != $ampforwp_exclude_post ) {
1348
- $exclude_post_values = $ampforwp_exclude_post;
1349
- set_transient('ampforwp_exclude_post_transient', $exclude_post_values);
1350
- }
1351
- }
1352
- return $exclude_post_values;
1353
- }
1354
- }
1355
-
1356
- // Redux Options Enabler #2939
1357
- add_filter( 'redux/options/redux_builder_amp/sections', 'ampforwp_redux_options_enabler',7,1 );
1358
- function ampforwp_redux_options_enabler($sections){
1359
- $redux_enabled_options = array();
1360
- // apply_filters to get the options to enable them
1361
- $redux_enabled_options = apply_filters('ampforwp_options_enabler', $redux_enabled_options);
1362
- if(is_array($redux_enabled_options) ) {
1363
- foreach ($sections as $key => $section_value) {
1364
- if(count($section_value['fields'])>0){
1365
- foreach ($section_value['fields'] as $fieldkey => $field_value) {
1366
- if(isset($field_value['required']) && in_array($field_value['id'], $redux_enabled_options) ){
1367
- unset($sections[$key]['fields'][$fieldkey]['required']);
1368
- }
1369
- }
1370
- }
1371
- }
1372
- }
1373
- return $sections;
1374
- }
1375
-
1376
- // Redux Options Remover #2939
1377
- add_filter( 'redux/options/redux_builder_amp/sections', 'ampforwp_redux_options_remover',7,1 );
1378
- function ampforwp_redux_options_remover($sections){
1379
- $redux_enabled_options = array();
1380
- // apply_filters to get the options to remove them
1381
- $redux_enabled_options = apply_filters('ampforwp_options_remover', $redux_enabled_options);
1382
- if(is_array($redux_enabled_options) ) {
1383
- foreach ($sections as $key => $section_value) {
1384
- if(count($section_value['fields'])>0){
1385
- foreach ($section_value['fields'] as $fieldkey => $field_value) {
1386
- if(isset($field_value['required']) && in_array($field_value['id'], $redux_enabled_options) ){
1387
- unset($sections[$key]['fields'][$fieldkey]);
1388
- }
1389
- }
1390
- }
1391
- }
1392
- }
1393
- return $sections;
1394
- }
1395
-
1396
- // AMP with AMPforWP notice #2287
1397
- function ampforwp_automattic_activation(){
1398
-
1399
- if ( function_exists('amp_activate') && get_transient( 'ampforwp_automattic_activation_notice' ) == false) {
1400
- $automattic_wizard_nonce = wp_create_nonce( "automattic_wizard_nonce" );?>
1401
- <div id="ampforwp-automattic-notice" data-nonce="<?php echo esc_attr($automattic_wizard_nonce);?>"class="updated notice is-dismissible message notice notice-alt ampforwp-setup-notice"><p><?php
1402
- echo esc_html__('AMP By AMP Project Contributors Plugin is activated so AMPforWP is now in the "Addon Mode". ','accelerated-mobile-pages') ?><a href="https://ampforwp.com/tutorials/article/guide-to-amp-by-automattic-compatibility-in-ampforwp" target="_blank"><?php echo esc_html__('Learn More','accelerated-mobile-pages'); ?></a></p></div><?php
1403
- }
1404
- }
1405
-
1406
- add_action('wp_ajax_ampforwp_automattic_notice_delete','ampforwp_automattic_notice_delete');
1407
- function ampforwp_automattic_notice_delete(){
1408
- $automattic_wizard_nonce = $_REQUEST['security'];
1409
-
1410
- if ( wp_verify_nonce( $automattic_wizard_nonce, 'automattic_wizard_nonce' ) && current_user_can( 'install_plugins' ) || current_user_can( 'update_plugins' ) ) {
1411
- set_transient( 'ampforwp_automattic_activation_notice', 1 );
1412
- }
1413
- exit();
1414
- }
1415
-
1416
- add_action('current_screen','ampforwp_replace_redux_comments');
1417
- function ampforwp_replace_redux_comments($screen){
1418
- if(current_user_can( 'manage_options' )){
1419
- if ( 'toplevel_page_amp_options' == $screen->base ) {
1420
- $replaced_redux_comments = get_transient('replaced_redux_comments_updated');
1421
- if(!$replaced_redux_comments){
1422
- $redux_val = get_option('redux_builder_amp',array());
1423
- if ( empty($redux_val) || ! is_array($redux_val)) {
1424
- return;
1425
- }
1426
- $ga_val = $redux_val['ampforwp-ga-field-advance'];
1427
- if(preg_match('/\/\*(.*?)\*\//s', $ga_val)){
1428
- $ga_val = preg_replace('/\/\*(.*?)\*\//s', '', $ga_val);
1429
- $redux_val['ampforwp-ga-field-advance'] = $ga_val;
1430
- update_option('redux_builder_amp',$redux_val);
1431
- }
1432
- if(preg_match('/\/\/Replace this with your Tracking ID/', $ga_val)){
1433
- $ga_val = preg_replace('/\/\/Replace this with your Tracking ID/', '', $ga_val);
1434
- $redux_val['ampforwp-ga-field-advance'] = $ga_val;
1435
- update_option('redux_builder_amp',$redux_val);
1436
- }
1437
- // GA CLOSE
1438
-
1439
- //FOR GTM
1440
- $gml_val = $redux_val['ampforwp-gtm-field-advance'];
1441
- if(preg_match('/\/\*(.*?)\*\//s', $gml_val)){
1442
- $gml_val = preg_replace('/\/\*(.*?)\*\//s', '', $gml_val);
1443
- $redux_val['ampforwp-gtm-field-advance'] = $gml_val;
1444
- update_option('redux_builder_amp',$redux_val);
1445
- }
1446
- if(preg_match('/\/\/Replace this with your Tracking ID/', $gml_val)){
1447
- $gml_val = preg_replace('/\/\/Replace this with your Tracking ID/', '', $gml_val);
1448
- $redux_val['ampforwp-gtm-field-advance'] = $gml_val;
1449
- update_option('redux_builder_amp',$redux_val);
1450
- }
1451
- // GLOBAL CSS EDITOR
1452
- $css_editor = $redux_val['css_editor'];
1453
- if(preg_match('/\/\*(.*?)\*\//s', $css_editor)){
1454
- $css_editor = preg_replace('/\/\*(.*?)\*\//s', '', $css_editor);
1455
- $redux_val['css_editor'] = $css_editor;
1456
- update_option('redux_builder_amp',$redux_val);
1457
- }
1458
- set_transient('replaced_redux_comments_updated',1);
1459
- }
1460
- }
1461
- }
1462
- }
1463
- if(!function_exists('ampforwp_wp_plugin_action_link')){
1464
- function ampforwp_wp_plugin_action_link( $plugin, $action = 'activate' ) {
1465
- if ( strpos( $plugin, '/' ) ) {
1466
- $plugin = str_replace( '\/', '%2F', $plugin );
1467
- }
1468
- $url = sprintf( admin_url( 'plugins.php?action=' . $action . '&plugin=%s&plugin_status=all&paged=1&s' ), $plugin );
1469
- $url = wp_nonce_url( $url, $action . '-plugin_' . $plugin );
1470
- return $url;
1471
- }
1472
- }
1473
- if(!function_exists('ampforwp_get_admin_current_page')){
1474
- function ampforwp_get_admin_current_page(){
1475
- $current_page = '';
1476
- if(is_admin()){
1477
- if(isset($_GET['page'])){
1478
- $current_page = $_GET['page'];
1479
- }
1480
- }
1481
- return $current_page;
1482
- }
1483
- }
1484
- function ampforwp_update_data_when_saved($options, $changed_values) {
1485
- if(!current_user_can( 'manage_options' )){
1486
- return ;
1487
- }
1488
- $updatedDataForTransient = array(
1489
- 'hide-amp-categories2',
1490
- 'amp-design-3-category-selector',
1491
- 'ampforwp-homepage-loop-cats',
1492
- 'hide-amp-tags-bulk-option2',
1493
- 'amp-design-3-tag-selector'
1494
- );
1495
- ampforwp_delete_transient_on_update($changed_values);
1496
- foreach ( $changed_values as $key => $value ) {
1497
- if ( in_array( $key, $updatedDataForTransient ) ) {
1498
- delete_transient( $key );
1499
- }
1500
- }
1501
- }
1502
-
1503
- function ampforwp_update_data_when_reset($rest_object = '') {
1504
- if(!current_user_can( 'manage_options' )){
1505
- return ;
1506
- }
1507
- if ( isset( $rest_object->parent->transients ) ) {
1508
- $updatedDataForTransient = array(
1509
- 'hide-amp-categories2',
1510
- 'amp-design-3-category-selector',
1511
- 'ampforwp-homepage-loop-cats',
1512
- 'hide-amp-tags-bulk-option2',
1513
- 'amp-design-3-tag-selector'
1514
- );
1515
- foreach ( $rest_object->parent->transients['changed_values'] as $key => $value ) {
1516
- if ( in_array( $key, $updatedDataForTransient ) ) {
1517
- delete_transient( $key );
1518
- }
1519
- }
1520
- }
1521
- }
1522
-
1523
- if(!function_exists('ampforwp_delete_transient_on_update')){
1524
- function ampforwp_delete_transient_on_update($changed_values){
1525
- if(!current_user_can( 'manage_options' )){
1526
- return ;
1527
- }
1528
- $key_for_trans = array('ampforwp-custom-taxonomies');
1529
- $del_trans_arr = array('ampforwp-custom-taxonomies'=>array('ampforwp_header_menu','ampforwp_footer_menu'));
1530
- foreach($changed_values as $key => $value ){
1531
- if(in_array($key,$key_for_trans)){
1532
- $trans_arr = $del_trans_arr[$key];
1533
- for($i=0;$i<count($trans_arr);$i++){
1534
- delete_transient( $trans_arr[$i] );
1535
- }
1536
- }
1537
- }
1538
- }
1539
- }
1540
- if(!function_exists('ampforwp_save_local_font')){
1541
- function ampforwp_save_local_font(){
1542
- if(ampforwp_get_setting('ampforwp-local-font-switch') && ampforwp_get_setting('ampforwp-local-font-upload','url')!=""){
1543
- $upload_dir = wp_upload_dir();
1544
- $user_dirname = $upload_dir['basedir'] . '/' . 'ampforwp-local-fonts';
1545
- if(!file_exists($user_dirname)) wp_mkdir_p($user_dirname);
1546
- $font_url = ampforwp_get_setting('ampforwp-local-font-upload','url');
1547
- $abs_path = explode("wp-content", $font_url);
1548
- if(isset($abs_path[1])){
1549
- $permfile = ABSPATH.'wp-content'.$abs_path[1];
1550
- $files = explode('/', $abs_path[1]);
1551
- $file_name = end($files);
1552
- $copy_to = esc_attr($user_dirname).'/'.esc_attr($file_name);
1553
- if(!file_exists($copy_to)){
1554
- $files = glob( $user_dirname . '/*' );
1555
- foreach ( $files as $file ) {
1556
- unlink( $file );
1557
- }
1558
- copy($permfile, $copy_to);
1559
- unzip_file($permfile, $user_dirname );
1560
- $files = glob( $user_dirname . '/*' );
1561
- foreach ( $files as $file ) {
1562
- if(is_dir($file)){
1563
- rmdir($file);
1564
- }
1565
- $fonts = explode("/", $file);
1566
- $font_names = end($fonts);
1567
- $ext = end(explode(".", $font_names));
1568
- if($ext!='ttf' && $ext!='eot' && $ext!='svg'){
1569
- unlink( $file );
1570
- }
1571
- }
1572
- }
1573
- }
1574
- }else if(ampforwp_get_setting('ampforwp-local-font-switch') && ampforwp_get_setting('ampforwp-local-font-upload','url')==""){
1575
- $upload_dir = wp_upload_dir();
1576
- $user_dirname = esc_attr($upload_dir['basedir']) . '/' . 'ampforwp-local-fonts';
1577
- if ( file_exists( $user_dirname ) ) {
1578
- $files = glob( $user_dirname . '/*' );
1579
- foreach ( $files as $file ) {
1580
- unlink( $file );
1581
- }
1582
- }
1583
- }
1584
- }
1585
- }
1586
-
1587
- add_action("amp_init", "ampforwp_amp_optimizer");
1588
- function ampforwp_amp_optimizer(){
1589
- require_once AMPFORWP_PLUGIN_DIR."/includes/amp-optimizer-addon.php";
1590
- }
1591
-
1592
- if(!function_exists('is_amp_plugin_active')){
1593
- function is_amp_plugin_active()
1594
- {
1595
- if (!function_exists('is_plugin_active')) {
1596
- include_once(ABSPATH . 'wp-admin/includes/plugin.php');
1597
- }
1598
-
1599
- if (is_plugin_active('amp/amp.php')) {
1600
- return true;
1601
- }
1602
- return false;
1603
- }
1604
-
1605
  }
1
+ <?php
2
+ /*
3
+ Plugin Name: Accelerated Mobile Pages
4
+ Plugin URI: https://wordpress.org/plugins/accelerated-mobile-pages/
5
+ Description: AMP for WP - Accelerated Mobile Pages for WordPress
6
+ Version: 1.0.77.54
7
+ Author: Ahmed Kaludi, Mohammed Kaludi
8
+ Author URI: https://ampforwp.com/
9
+ Donate link: https://www.paypal.me/Kaludi/25
10
+ License: GPL2+
11
+ Text Domain: accelerated-mobile-pages
12
+ Domain Path: /languages/
13
+ */
14
+
15
+ // Exit if accessed directly.
16
+ if ( ! defined( 'ABSPATH' ) ) exit;
17
+
18
+ define('AMPFORWP_PLUGIN_DIR', plugin_dir_path( __FILE__ ));
19
+ define('AMPFORWP_PLUGIN_DIR_URI', plugin_dir_url(__FILE__));
20
+ define('AMPFORWP_DISQUS_URL',plugin_dir_url(__FILE__).'includes/disqus.html');
21
+ define('AMPFORWP_IMAGE_DIR',plugin_dir_url(__FILE__).'images');
22
+ define('AMPFORWP_MAIN_PLUGIN_DIR', plugin_dir_path( __DIR__ ) );
23
+ define('AMPFORWP_VERSION','1.0.77.54');
24
+ define('AMPFORWP_EXTENSION_DIR',plugin_dir_path(__FILE__).'includes/options/extensions');
25
+ if(!defined('AMPFROWP_HOST_NAME')){
26
+ $urlinfo = get_bloginfo('url');
27
+ $url = parse_url($urlinfo);
28
+ $host = $url['host'];
29
+ define('AMPFROWP_HOST_NAME', esc_attr($host));
30
+ }
31
+ // any changes to AMP_QUERY_VAR should be refelected here
32
+ function ampforwp_generate_endpoint(){
33
+ $ampforwp_slug = '';
34
+ $get_permalink_structure = '';
35
+
36
+ $ampforwp_slug = "amp";
37
+
38
+ return $ampforwp_slug;
39
+ }
40
+
41
+ define('AMPFORWP_AMP_QUERY_VAR', apply_filters( 'amp_query_var', ampforwp_generate_endpoint() ) );
42
+
43
+ // Rewrite the Endpoints after the plugin is activate, as priority is set to 11
44
+ function ampforwp_add_custom_post_support() {
45
+ // Adding rewrite rules only when we are in standard mode
46
+ if (is_amp_plugin_active()) {
47
+ return;
48
+ }
49
+ global $redux_builder_amp;
50
+ add_rewrite_endpoint( AMPFORWP_AMP_QUERY_VAR, EP_PAGES | EP_PERMALINK | EP_AUTHORS | EP_ALL_ARCHIVES | EP_ROOT );
51
+ // Pages
52
+ if ( isset($redux_builder_amp['amp-on-off-for-all-pages']) && $redux_builder_amp['amp-on-off-for-all-pages'] ) {
53
+ add_post_type_support( 'page', AMPFORWP_AMP_QUERY_VAR );
54
+ }
55
+ // Custom Post Types
56
+ if ( isset($redux_builder_amp['ampforwp-custom-type'] ) && $redux_builder_amp['ampforwp-custom-type'] ) {
57
+ foreach ( $redux_builder_amp['ampforwp-custom-type'] as $custom_post ) {
58
+ add_post_type_support( $custom_post, AMP_QUERY_VAR );
59
+ }
60
+ }
61
+ }
62
+ add_action( 'init', 'ampforwp_add_custom_post_support',11);
63
+
64
+ // Frontpage and Blog page check from reading settings.
65
+ function ampforwp_name_blog_page() {
66
+ if ( ! $page_for_posts = get_option('page_for_posts')) return;
67
+ $page_for_posts = get_option( 'page_for_posts' );
68
+ $post = get_post($page_for_posts);
69
+ if ( $post ) {
70
+ $slug = $post->post_name;
71
+ return $slug;
72
+ }
73
+ }
74
+ function ampforwp_custom_post_page() {
75
+ $front_page_type = get_option( 'show_on_front' );
76
+ if ( $front_page_type ) {
77
+ return $front_page_type;
78
+ }
79
+ }
80
+
81
+ function ampforwp_get_the_page_id_blog_page(){
82
+ $page = "";
83
+ $output = "";
84
+ if ( ampforwp_name_blog_page() ) {
85
+ $page = get_page_by_path( ampforwp_name_blog_page() );
86
+ if( $page )
87
+ $output = $page->ID;
88
+ }
89
+
90
+ return $output;
91
+ }
92
+
93
+ // Add Custom Rewrite Rule to make sure pagination & redirection is working correctly
94
+ function ampforwp_add_custom_rewrite_rules() {
95
+
96
+ // Adding rewrite rules only when we are in standard mode
97
+ if (is_amp_plugin_active()) {
98
+ return;
99
+ }
100
+ global $redux_builder_amp, $wp_rewrite;
101
+ // For Homepage
102
+ add_rewrite_rule(
103
+ 'amp/?$',
104
+ 'index.php?amp',
105
+ 'top'
106
+ );
107
+ // For Homepage with Pagination
108
+ add_rewrite_rule(
109
+ 'amp/'.$wp_rewrite->pagination_base.'/([0-9]{1,})/?$',
110
+ 'index.php?amp=1&paged=$matches[1]',
111
+ 'top'
112
+ );
113
+ // For Pagination with index.php
114
+ add_rewrite_rule(
115
+ 'index.php/amp/'.$wp_rewrite->pagination_base.'/([0-9]{1,})/?$',
116
+ 'index.php?amp=1&paged=$matches[1]',
117
+ 'top'
118
+ );
119
+ // For /Blog page with Pagination
120
+ if( ampforwp_name_blog_page() ) {
121
+ add_rewrite_rule(
122
+ ampforwp_name_blog_page(). '/amp/'.$wp_rewrite->pagination_base.'/([0-9]{1,})/?$',
123
+ 'index.php?amp=1&paged=$matches[1]&page_id=' .ampforwp_get_the_page_id_blog_page(),
124
+ 'top'
125
+ );
126
+ // Pagination to work with Extensions like.hml
127
+ add_rewrite_rule(
128
+ ampforwp_name_blog_page(). '(.+?)/amp/'.$wp_rewrite->pagination_base.'/([0-9]{1,})/?$',
129
+ 'index.php?amp=1&paged=$matches[2]&page_id=' .ampforwp_get_the_page_id_blog_page(),
130
+ 'top'
131
+ );
132
+ }
133
+
134
+ // For Author pages
135
+ add_rewrite_rule(
136
+ 'author\/([^/]+)\/amp\/?$',
137
+ 'index.php?amp=1&author_name=$matches[1]',
138
+ 'top'
139
+ );
140
+ add_rewrite_rule(
141
+ 'author\/([^/]+)\/amp\/'.$wp_rewrite->pagination_base.'\/?([0-9]{1,})\/?$',
142
+ 'index.php?amp=1&author_name=$matches[1]&paged=$matches[2]',
143
+ 'top'
144
+ );
145
+
146
+ // For category pages
147
+ $rewrite_category = '';
148
+ $rewrite_category = get_transient('ampforwp_category_base');
149
+
150
+ if ( false == $rewrite_category ) {
151
+ $rewrite_category = get_option('category_base');
152
+ if ( empty($rewrite_category) ) {
153
+ $rewrite_category = 'category';
154
+ }
155
+ set_transient('ampforwp_category_base', $rewrite_category);
156
+ }
157
+
158
+ add_rewrite_rule(
159
+ $rewrite_category.'\/(.+?)\/amp/?$',
160
+ 'index.php?amp=1&category_name=$matches[1]',
161
+ 'top'
162
+ );
163
+ // For category pages with Pagination
164
+ add_rewrite_rule(
165
+ $rewrite_category.'/(.+?)\/amp\/'.$wp_rewrite->pagination_base.'\/?([0-9]{1,})\/?$',
166
+ 'index.php?amp=1&category_name=$matches[1]&paged=$matches[2]',
167
+ 'top'
168
+ );
169
+
170
+ // For category pages with Pagination (Custom Permalink Structure)
171
+ $permalink_structure = '';
172
+ $permalink_structure = get_transient('ampforwp_permalink_structure');
173
+ if ( false == $permalink_structure ) {
174
+ $permalink_structure = get_option('permalink_structure');
175
+ set_transient('ampforwp_permalink_structure', $permalink_structure );
176
+ }
177
+ $permalink_structure = preg_replace('/(%.*%)/', '', $permalink_structure);
178
+ $permalink_structure = preg_replace('/\//', '', $permalink_structure);
179
+ if ( $permalink_structure ) {
180
+ add_rewrite_rule(
181
+ $permalink_structure.'\/'.$rewrite_category.'\/(.+?)\/amp\/'.$wp_rewrite->pagination_base.'\/?([0-9]{1,})\/?$',
182
+ 'index.php?amp=1&category_name=$matches[1]&paged=$matches[2]',
183
+ 'top'
184
+ );
185
+ }
186
+
187
+ // For tag pages
188
+ $rewrite_tag = '';
189
+ $rewrite_tag = get_transient('ampforwp_tag_base');
190
+ if ( false == $rewrite_tag ) {
191
+ $rewrite_tag = get_option('tag_base');
192
+ if ( empty($rewrite_tag) ) {
193
+ $rewrite_tag = 'tag';
194
+ }
195
+ set_transient('ampforwp_tag_base',$rewrite_tag);
196
+ }
197
+
198
+ add_rewrite_rule(
199
+ $rewrite_tag.'\/(.+?)\/amp/?$',
200
+ 'index.php?amp=1&tag=$matches[1]',
201
+ 'top'
202
+ );
203
+ // For tag pages with Pagination
204
+ add_rewrite_rule(
205
+ $rewrite_tag.'\/(.+?)\/amp\/'.$wp_rewrite->pagination_base.'\/?([0-9]{1,})\/?$',
206
+ 'index.php?amp=1&tag=$matches[1]&paged=$matches[2]',
207
+ 'top'
208
+ );
209
+ // For tag pages with Pagination (Custom Permalink Structure)
210
+ if ( $permalink_structure ) {
211
+ add_rewrite_rule(
212
+ $permalink_structure.'\/'.$rewrite_tag.'\/(.+?)\/amp\/'.$wp_rewrite->pagination_base.'\/?([0-9]{1,})\/?$',
213
+ 'index.php?amp=1&tag=$matches[1]&paged=$matches[2]',
214
+ 'top'
215
+ );
216
+ }
217
+ // Rewrite rule for date archive
218
+ add_rewrite_rule(
219
+ '([0-9]{4})/([0-9]{1,2})\/amp\/?$',
220
+ 'index.php?year=$matches[1]&monthnum=$matches[2]&amp=1',
221
+ 'top'
222
+ );
223
+ // Rewrite rule for date archive with pagination #2289
224
+ add_rewrite_rule(
225
+ '([0-9]{4})/([0-9]{1,2})/amp/'.$wp_rewrite->pagination_base.'/?([0-9]{1,})/?$',
226
+ 'index.php?year=$matches[1]&monthnum=$matches[2]&amp=1&paged=$matches[3]',
227
+ 'top'
228
+ );
229
+ //Rewrite rule for custom Taxonomies
230
+ $taxonomies = array();
231
+ if( function_exists('ampforwp_generate_taxonomies_transient')){
232
+ //Rewrite rule for custom Taxonomies
233
+ $taxonomies = ampforwp_generate_taxonomies_transient();
234
+ }
235
+
236
+ if(!function_exists('amp_woocommerce_pro_add_woocommerce_support') ) {
237
+ if( class_exists( 'WooCommerce' ) ) {
238
+ $wc_permalinks = '';
239
+ $wc_permalinks = get_transient('ampforwp_woocommerce_permalinks');
240
+ if( false == $wc_permalinks ) {
241
+ $wc_permalinks = get_option( 'woocommerce_permalinks' );
242
+ set_transient('ampforwp_woocommerce_permalinks', $wc_permalinks);
243
+ }
244
+ if ( $wc_permalinks && !empty( $taxonomies) ) {
245
+ $taxonomies = array_merge($taxonomies, $wc_permalinks);
246
+ }
247
+ }
248
+ }
249
+ $post_types = ampforwp_get_all_post_types();
250
+ if ( $post_types ) {
251
+ foreach ($post_types as $post_type ) {
252
+ if ( 'post' != $post_type && 'page' != $post_type ){
253
+ add_rewrite_rule(
254
+ $post_type.'\/amp/?$',
255
+ 'index.php?amp&post_type='.$post_type,
256
+ 'top'
257
+ );
258
+ if ( class_exists( 'Lsvr_Permalink_Settings_Knowledge_Base' ) ) {
259
+ $lsvr_value = get_post_type_archive_link( 'lsvr_kba' );
260
+ $lsvr_value = explode("/",$lsvr_value);
261
+ $lsvr_value = array_filter($lsvr_value);
262
+ $lsvr_value = end($lsvr_value);
263
+ add_rewrite_rule(
264
+ $lsvr_value.'\/amp/?$',
265
+ 'index.php?amp&post_type='.$post_type,
266
+ 'top'
267
+ );
268
+ }
269
+ add_rewrite_rule(
270
+ $post_type.'\/(.+?)\/amp\/?$',
271
+ 'index.php?amp&'.$post_type.'=$matches[1]',
272
+ 'top'
273
+ );
274
+ add_rewrite_rule(
275
+ $post_type.'\/(.+?)\/amp\/?$',
276
+ 'index.php?amp&'.$post_type.'=$matches[1]',
277
+ 'top'
278
+ );
279
+ add_rewrite_rule(
280
+ $post_type.'\/amp/'.$wp_rewrite->pagination_base.'/([0-9]{1,})/?$',
281
+ 'index.php?amp=1&post_type='.$post_type.'&paged=$matches[1]',
282
+ 'top'
283
+ );
284
+ }
285
+ }
286
+ }
287
+
288
+ $taxonomies = apply_filters( 'ampforwp_modify_rewrite_tax', $taxonomies );
289
+ if ( $taxonomies ) {
290
+ $taxonomySlug = '';
291
+ foreach ( $taxonomies as $taxonomyName => $taxonomyLabel ) {
292
+ $taxonomies = get_taxonomy( $taxonomyName );
293
+ if(isset($taxonomies->rewrite['slug']) && !empty($taxonomies->rewrite['slug']) ){
294
+ $taxonomySlug = $taxonomies->rewrite['slug'];
295
+ }else{
296
+ $taxonomySlug = $taxonomyName;
297
+ }
298
+ if ( ! empty( $taxonomySlug ) ) {
299
+ add_rewrite_rule(
300
+ $taxonomySlug.'\/([^/]+)\/amp/?$',
301
+ 'index.php?amp&'.$taxonomyName.'=$matches[1]',
302
+ 'top'
303
+ );
304
+ // For Custom Taxonomies with pages
305
+ add_rewrite_rule(
306
+ $taxonomySlug.'\/([^/]+)\/amp\/'.$wp_rewrite->pagination_base.'\/?([0-9]{1,})\/?$',
307
+ 'index.php?amp&'.$taxonomyName.'=$matches[1]&paged=$matches[2]',
308
+ 'top'
309
+ );
310
+ }
311
+ }
312
+ }
313
+ if (ampforwp_get_setting('ampforwp-pagination-link-type')) {
314
+ add_rewrite_rule(
315
+ '(.+?)-[0-9]+\/([0-9]{1,})\/amp$',
316
+ 'index.php?amp=1&name=$matches[1]&paged=$matches[2]',
317
+ 'top'
318
+ );
319
+ add_rewrite_rule(
320
+ '(.+?)\/([0-9]{1,})\/amp$',
321
+ 'index.php?amp=1&name=$matches[1]&paged=$matches[2]',
322
+ 'top'
323
+ );
324
+ }
325
+ }
326
+ add_action( 'init', 'ampforwp_add_custom_rewrite_rules', 25 );
327
+ // Delete category_base transient when it is updated #2924
328
+ add_action('update_option_category_base', 'ampforwp_update_option_category_base');
329
+ function ampforwp_update_option_category_base(){
330
+ delete_transient('ampforwp_category_base');
331
+ }
332
+ // Delete category_base transient when it is updated #2924
333
+ add_action('update_option_tag_base', 'ampforwp_update_option_tag_base');
334
+ function ampforwp_update_option_tag_base(){
335
+ delete_transient('ampforwp_tag_base');
336
+ }
337
+ // Delete permalink_structure transient when it is updated #2924
338
+ add_action('update_option_permalink_structure', 'ampforwp_update_option_permalink_structure');
339
+ function ampforwp_update_option_permalink_structure(){
340
+ delete_transient('ampforwp_permalink_structure');
341
+ // Delete ampforwp_woocommerce_permalinks transient when it is updated #2924
342
+ if( class_exists( 'WooCommerce' ) ) {
343
+ delete_transient('ampforwp_woocommerce_permalinks');
344
+ }
345
+ }
346
+ // add re-write rule for Products
347
+ add_action( 'init', 'ampforwp_custom_rewrite_rules_for_product_category' );
348
+ if ( ! function_exists('ampforwp_custom_rewrite_rules_for_product_category') ) {
349
+ function ampforwp_custom_rewrite_rules_for_product_category(){
350
+
351
+ // Adding rewrite rules only when we are in standard mode
352
+ if (is_amp_plugin_active()) {
353
+ return;
354
+ }
355
+ if ( class_exists('WooCommerce') ) {
356
+ $permalinks = wp_parse_args( (array) get_option( 'woocommerce_permalinks', array() ), array(
357
+ 'product_base' => '',
358
+ 'category_base' => '',
359
+ 'tag_base' => '',
360
+ 'attribute_base' => '',
361
+ 'use_verbose_page_rules' => false,
362
+ ) );
363
+ // Ensure rewrite slugs are set.
364
+ $permalinks['product_rewrite_slug'] = untrailingslashit( empty( $permalinks['product_base'] ) ? _x( 'product', 'slug', 'accelerated-mobile-pages' ) : $permalinks['product_base'] );
365
+ $permalinks['category_rewrite_slug'] = untrailingslashit( empty( $permalinks['category_base'] ) ? _x( 'product-category', 'slug', 'accelerated-mobile-pages' ) : $permalinks['category_base'] );
366
+ $permalinks['tag_rewrite_slug'] = untrailingslashit( empty( $permalinks['tag_base'] ) ? _x( 'product-tag', 'slug', 'accelerated-mobile-pages' ) : $permalinks['tag_base'] );
367
+ $permalinks['attribute_rewrite_slug'] = untrailingslashit( empty( $permalinks['attribute_base'] ) ? '' : $permalinks['attribute_base'] );
368
+
369
+
370
+
371
+ add_rewrite_rule(
372
+ $permalinks['product_rewrite_slug']."\/amp\/page\/([0-9]{1,})/?$",
373
+ 'index.php?post_type=product&paged=$matches[1]&amp=1',
374
+ 'top'
375
+ );
376
+ add_rewrite_rule(
377
+ $permalinks['category_rewrite_slug'].'\/(.+?)\/amp\/page\/?([0-9]{1,})/?$',
378
+ 'index.php?product_cat=$matches[1]&paged=$matches[2]&amp=1',
379
+ 'top'
380
+ );
381
+ add_rewrite_rule(
382
+ $permalinks['category_rewrite_slug'].'\/(.+?)\/amp\/?$',
383
+ 'index.php?amp&product_cat=$matches[1]',
384
+ 'top'
385
+ );
386
+
387
+
388
+ add_rewrite_rule(
389
+ $permalinks['tag_rewrite_slug'].'\/(.+?)\/amp\/page\/?([0-9]{1,})/?$',
390
+ 'index.php?product_tag=$matches[1]&paged=$matches[2]&amp=1',
391
+ 'top'
392
+ );
393
+ add_rewrite_rule(
394
+ $permalinks['tag_rewrite_slug'].'\/(.+?)\/amp\/?$',
395
+ 'index.php?amp&product_tag=$matches[1]',
396
+ 'top'
397
+ );
398
+ }
399
+ }
400
+ }
401
+
402
+ function ampforwp_plugin_info(){
403
+ $data = array();
404
+ $date = new DateTime();
405
+ $data = array('activation_data' => $date->getTimestamp() );
406
+ add_option( 'ampforwp_plugin_info', $data );
407
+ }
408
+ add_action('upgrader_process_complete','ampforwp_plugin_info' );
409
+
410
+ register_activation_hook( __FILE__, 'ampforwp_rewrite_activation', 20 );
411
+ function ampforwp_rewrite_activation() {
412
+
413
+ if ( ! did_action( 'ampforwp_init' ) ) {
414
+ ampforwp_init();
415
+ }
416
+
417
+ flush_rewrite_rules();
418
+
419
+ ampforwp_add_custom_post_support();
420
+ ampforwp_add_custom_rewrite_rules();
421
+ ampforwp_plugin_info();
422
+
423
+ // Flushing rewrite urls ONLY on activation
424
+ global $wp_rewrite;
425
+ $wp_rewrite->flush_rules();
426
+
427
+ delete_option('ampforwp_rewrite_flush_option');
428
+
429
+ // Set transient for Welcome page
430
+ set_transient( 'ampforwp_welcome_screen_activation_redirect', true, 30 );
431
+
432
+ }
433
+
434
+ add_action( 'admin_init', 'ampforwp_flush_after_update');
435
+ function ampforwp_flush_after_update() {
436
+ // Flushing rewrite urls ONLY on after Update is installed
437
+ $older_version = "";
438
+ $older_version = get_transient('ampforwp_current_version_check');
439
+ if ( empty($older_version) || ( $older_version < AMPFORWP_VERSION ) ) {
440
+ flush_rewrite_rules();
441
+ global $wp_rewrite;
442
+ $wp_rewrite->flush_rules();
443
+ set_transient('ampforwp_current_version_check', AMPFORWP_VERSION);
444
+ }
445
+ }
446
+
447
+
448
+ add_action('init', 'ampforwp_flush_rewrite_by_option', 20);
449
+
450
+ function ampforwp_flush_rewrite_by_option(){
451
+
452
+ global $wp_rewrite;
453
+ $get_current_permalink_settings = "";
454
+
455
+ $get_current_permalink_settings = get_option('ampforwp_rewrite_flush_option');
456
+
457
+ if ( $get_current_permalink_settings ) {
458
+ return;
459
+ }
460
+ // Adding double check to make sure, we are not updating and calling database unnecessarily
461
+ if ( empty( $get_current_permalink_settings ) ) {
462
+ $wp_rewrite->flush_rules();
463
+ update_option('ampforwp_rewrite_flush_option', 'true');
464
+ }
465
+
466
+ }
467
+
468
+ register_deactivation_hook( __FILE__, 'ampforwp_rewrite_deactivate', 20 );
469
+ function ampforwp_rewrite_deactivate() {
470
+ // Flushing rewrite urls ONLY on deactivation
471
+ global $wp_rewrite;
472
+
473
+ foreach ( $wp_rewrite->endpoints as $index => $endpoint ) {
474
+ if ( AMP_QUERY_VAR === $endpoint[1] ) {
475
+ unset( $wp_rewrite->endpoints[ $index ] );
476
+ break;
477
+ }
478
+ }
479
+
480
+ flush_rewrite_rules();
481
+
482
+ $wp_rewrite->flush_rules();
483
+
484
+ // Remove transient for Welcome page
485
+ delete_transient( 'ampforwp_welcome_screen_activation_redirect');
486
+ // Remove admin notice after dismissing it
487
+ delete_transient( 'ampforwp_automattic_activation_notice');
488
+
489
+ }
490
+
491
+ if( !function_exists('ampforwp_upcomming_layouts_demo') ){
492
+ function ampforwp_upcomming_layouts_demo(){
493
+ return array(
494
+ array(
495
+ "name"=>'Creative Services',
496
+ "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-9.png',
497
+ "link"=>'https://ampforwp.com/layouts-9/',
498
+ ),
499
+ array(
500
+ "name"=>'App',
501
+ "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-8.png',
502
+ "link"=>'https://ampforwp.com/layouts-8/',
503
+ ),
504
+ array(
505
+ "name"=>'Business Blog',
506
+ "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-7.png',
507
+ "link"=>'https://ampforwp.com/layouts-7/',
508
+ ),
509
+ array(
510
+ "name"=>'Journal',
511
+ "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-6.png',
512
+ "link"=>'https://ampforwp.com/layouts-6/',
513
+ ),
514
+ array(
515
+ "name"=>'Studio',
516
+ "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-5.png',
517
+ "link"=>'https://ampforwp.com/layouts-5/',
518
+ ),
519
+ array(
520
+ "name"=>'Agency',
521
+ "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-4.png',
522
+ "link"=>'https://ampforwp.com/layouts-4/',
523
+ ),
524
+ array(
525
+ "name"=>'Elegance',
526
+ "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-3.png',
527
+ "link"=>'https://ampforwp.com/layouts-3/',
528
+ ),
529
+ array(
530
+ "name"=>'Weekly Magazine',
531
+ "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-2.png',
532
+ "link"=>'https://ampforwp.com/layouts-2/',
533
+ ),
534
+ array(
535
+ "name"=>'News',
536
+ "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-1.png',
537
+ "link"=>'https://ampforwp.com/layouts-1/',
538
+ ),
539
+
540
+ );
541
+ }
542
+ }
543
+
544
+ require_once dirname( __FILE__ ).'/includes/options/redux-core/framework.php';
545
+ require_once dirname( __FILE__ ).'/includes/options/extensions/loader.php';
546
+ add_action('after_setup_theme', 'ampforwp_include_options_file' );
547
+
548
+ function ampforwp_include_options_file(){
549
+ if ( is_admin() ) {
550
+ // Register all the main options
551
+ require_once dirname( __FILE__ ).'/includes/options/admin-config.php';
552
+ require_once dirname( __FILE__ ).'/templates/report-bugs.php';
553
+ // Global UX Fields
554
+ $amp_ux_fields = array();
555
+ require_once AMPFORWP_PLUGIN_DIR."includes/ampforwp-fields-array.php";
556
+ }
557
+ }
558
+
559
+ // Modules
560
+ add_action('after_setup_theme','ampforwp_add_module_files');
561
+ function ampforwp_add_module_files() {
562
+
563
+ global $redux_builder_amp;
564
+ if ( function_exists('ampforwp_custom_theme_files_register') ) {
565
+ if ( ! function_exists( 'bstw' ) ) {
566
+ require_once AMPFORWP_PLUGIN_DIR .'/includes/vendor/tinymce-widget/tinymce-widget.php';
567
+ }
568
+ require_once AMPFORWP_PLUGIN_DIR .'/includes/modules/ampforwp-blurb.php';
569
+ require_once AMPFORWP_PLUGIN_DIR .'/includes/modules/ampforwp-button.php';
570
+ }
571
+ }
572
+
573
+ /*
574
+ * Load Files only in the backend
575
+ * As we don't need plugin activation code to run everytime the site loads
576
+ */
577
+ if ( is_admin() ) {
578
+ add_action( 'plugins_loaded', 'amp_update_db_check' );
579
+ // Include Welcome page only on Admin pages
580
+ require AMPFORWP_PLUGIN_DIR .'/includes/welcome.php';
581
+
582
+ // Add Settings Button in Plugin backend
583
+ if ( ! function_exists( 'ampforwp_plugin_settings_link' ) ) {
584
+
585
+ // Deactivate Parent Plugin notice
586
+ add_filter( 'plugin_action_links', 'ampforwp_plugin_settings_link', 10, 5 );
587
+
588
+ function ampforwp_plugin_settings_link( $actions, $plugin_file ) {
589
+ static $plugin;
590
+ if ( ! isset($plugin))
591
+ $plugin = plugin_basename(__FILE__);
592
+ if ( $plugin === $plugin_file ) {
593
+ $amp_activate = '';
594
+ if ( function_exists('amp_activate') ) {
595
+ $amp_activate = ' | <span style="color:black;">Status: Addon Mode</span style=>';
596
+ }
597
+ $settings = array( 'settings' => '<a href="admin.php?page=amp_options&tab=8">' . esc_html__('Settings', 'accelerated-mobile-pages') . '</a> | <a href="https://ampforwp.com/extensions/#utm_source=plugin-panel&utm_medium=plugin-extension&utm_campaign=features">' . esc_html__('Premium Features', 'accelerated-mobile-pages') . '</a> | <a href="https://ampforwp.com/membership/#utm_source=plugin-panel&utm_medium=plugin-extension&utm_campaign=pro">' . esc_html__('Pro', 'accelerated-mobile-pages') . '</a>'. $amp_activate );
598
+
599
+ include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
600
+ $actions = array_merge( $actions, $settings );
601
+ }
602
+ return $actions;
603
+ }
604
+ }
605
+ } // is_admin() closing
606
+
607
+ // Fallback for file exists #3156
608
+ if( ! function_exists('ampforwp_require_file') ){
609
+ function ampforwp_require_file($path){
610
+ if(file_exists($path)){
611
+ return require_once $path;
612
+ }
613
+ else{
614
+ return false;
615
+ }
616
+ }
617
+ }
618
+
619
+ // AMP endpoint Verifier
620
+ function ampforwp_is_amp_endpoint() {
621
+ if ( (function_exists('ampforwp_is_non_amp') && ampforwp_is_non_amp()) && ! is_admin()) {
622
+ return apply_filters('ampforwp_is_amp_endpoint_takeover', ampforwp_is_non_amp() );
623
+ }
624
+ else {
625
+ return apply_filters('ampforwp_is_amp_endpoint', false !== get_query_var( 'amp', false ) );
626
+ }
627
+ }
628
+ include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
629
+ if ( ! class_exists( 'Ampforwp_Init', false ) ) {
630
+ class Ampforwp_Init {
631
+
632
+ public function __construct(){
633
+
634
+ require AMPFORWP_PLUGIN_DIR .'/includes/features/functions.php';
635
+ // Load Files required for the plugin to run
636
+ if( function_exists('amp_activate') ){
637
+ require_once AMPFORWP_PLUGIN_DIR."includes/features/amp_bridge.php";
638
+ }
639
+ else{
640
+ require AMPFORWP_PLUGIN_DIR .'/includes/includes.php';
641
+ // Redirection Code added
642
+ require AMPFORWP_PLUGIN_DIR.'/includes/redirect.php';
643
+
644
+ require AMPFORWP_PLUGIN_DIR .'/classes/class-init.php';
645
+ new Ampforwp_Loader();
646
+
647
+ }
648
+ //Other Features
649
+ require_once AMPFORWP_PLUGIN_DIR."includes/features/advertisement/ads-functions.php";
650
+ require_once AMPFORWP_PLUGIN_DIR."includes/features/advertisement/mgid-ads-functions.php";
651
+ require_once AMPFORWP_PLUGIN_DIR."includes/features/performance/performance-functions.php";
652
+ require_once AMPFORWP_PLUGIN_DIR."includes/features/analytics/analytics-functions.php";
653
+ require_once AMPFORWP_PLUGIN_DIR."includes/features/structure-data/structured-data-functions.php";
654
+ require_once AMPFORWP_PLUGIN_DIR."includes/features/notice-bar/notice-bar-functions.php";
655
+ require_once AMPFORWP_PLUGIN_DIR."includes/features/push-notification/push-notification-functions.php";
656
+ require_once AMPFORWP_PLUGIN_DIR."includes/mb-helper-function.php";
657
+
658
+ }
659
+ }
660
+ }
661
+ /*
662
+ * Start the plugin.
663
+ * Gentlemen start your engines
664
+ */
665
+ function ampforwp_plugin_init() {
666
+
667
+ if ( defined( 'AMPFORWP__FILE__' ) && defined('AMPFORWP_PLUGIN_DIR') ) {
668
+ new Ampforwp_Init();
669
+ }
670
+ }
671
+ add_action('init','ampforwp_plugin_init', 9);
672
+
673
+ /*
674
+ * customized output widget
675
+ * to be used be used in before or after Loop
676
+ */
677
+ ampforwp_require_file( AMPFORWP_PLUGIN_DIR.'/templates/woo-widget.php' );
678
+ ampforwp_require_file( AMPFORWP_PLUGIN_DIR.'/templates/amp-code-widget.php' );
679
+
680
+ /*
681
+ * Including core AMP plugin files and removing any other things if necessary
682
+ */
683
+ function ampforwp_bundle_core_amp_files(){
684
+ // Bundling Default plugin
685
+ require_once AMPFORWP_PLUGIN_DIR .'/includes/vendor/amp/amp.php';
686
+ ampforwp_require_file( AMPFORWP_PLUGIN_DIR .'/templates/template-mode/template-mode.php' );
687
+
688
+ define( 'AMPFORWP__FILE__', __FILE__ );
689
+ if ( ! defined('AMP__VENDOR__DIR__') ) {
690
+ define( 'AMP__VENDOR__DIR__', plugin_dir_path(__FILE__) . 'includes/vendor/amp/' );
691
+ }
692
+ if ( ! defined('AMP_QUERY_VAR') ){
693
+ define('AMP_QUERY_VAR', 'amp');
694
+ }
695
+ define( 'AMP__VENDOR__VERSION', '0.4.2' );
696
+ require_once( AMP__VENDOR__DIR__ . '/back-compat/back-compat.php' );
697
+ require_once( AMP__VENDOR__DIR__ . '/includes/amp-helper-functions.php' );
698
+ require_once( AMP__VENDOR__DIR__ . '/includes/admin/functions.php' );
699
+ require_once( AMP__VENDOR__DIR__ . '/includes/settings/class-amp-customizer-settings.php' );
700
+ require_once( AMP__VENDOR__DIR__ . '/includes/settings/class-amp-customizer-design-settings.php' );
701
+ // Widgets
702
+ require_once ( AMP__VENDOR__DIR__ . '/includes/widgets/class-amp-widget-categories.php' );
703
+ require_once ( AMP__VENDOR__DIR__ . '/includes/widgets/class-amp-widget-archives.php' );
704
+ require_once ( AMP__VENDOR__DIR__ . '/includes/widgets/class-amp-widget-media-video.php' );
705
+ require_once ( AMP__VENDOR__DIR__ . '/includes/widgets/class-amp-widget-recent-comments.php' );
706
+ require_once ( AMP__VENDOR__DIR__ . '/includes/widgets/class-amp-widget-text.php' );
707
+ //Removed JNews AMP Extender #3526
708
+ if ( function_exists( 'jnews_get_option' ) ){
709
+ remove_action( 'plugins_loaded', 'jnews_amp' );
710
+ remove_filter( 'amp_content_sanitizers', 'jnews_amp_content_sanitize');
711
+ }
712
+ if (function_exists('wpda_hb_pro__plugins_loaded')) {
713
+ $url_path = trim(parse_url(add_query_arg(array()), PHP_URL_PATH),'/' );
714
+ if( function_exists('ampforwp_is_amp_inURL') && ampforwp_is_amp_inURL($url_path)) {
715
+ remove_action('plugins_loaded', 'wpda_hb_pro__plugins_loaded');
716
+ }
717
+ }
718
+ }
719
+ add_action('plugins_loaded','ampforwp_bundle_core_amp_files', 8);
720
+
721
+ if ( ! function_exists('ampforwp_init') ) {
722
+ add_action( 'init', 'ampforwp_init' );
723
+ function ampforwp_init() {
724
+ if ( false === apply_filters( 'amp_is_enabled', true ) ) {
725
+ return;
726
+ }
727
+ if( ! defined('AMP_QUERY_VAR')){
728
+ define( 'AMP_QUERY_VAR', apply_filters( 'amp_query_var', 'amp' ) );
729
+ }
730
+
731
+ if ( ! defined('AMP__VENDOR__DIR__') ) {
732
+ define( 'AMP__VENDOR__DIR__', plugin_dir_path(__FILE__) . 'includes/vendor/amp/' );
733
+ }
734
+
735
+ do_action( 'amp_init' );
736
+
737
+ load_plugin_textdomain( 'accelerated-mobile-pages', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
738
+
739
+ // Adding rewrite rules only when we are in standard mode
740
+ if (!is_amp_plugin_active()) {
741
+ add_rewrite_endpoint( AMP_QUERY_VAR, EP_PERMALINK );
742
+ }
743
+ add_post_type_support( 'post', AMP_QUERY_VAR );
744
+
745
+ add_filter( 'request', 'AMPforWP\\AMPVendor\\amp_force_query_var_value' );
746
+ add_action( 'wp', 'AMPforWP\\AMPVendor\\amp_maybe_add_actions');
747
+
748
+ // Redirect the old url of amp page to the updated url. #1033 (Vendor Update)
749
+ add_filter( 'old_slug_redirect_url', 'ampforwp_redirect_old_slug_to_new_url' );
750
+
751
+ if ( class_exists( 'Jetpack' ) && ! (defined( 'IS_WPCOM' ) && IS_WPCOM) && ( defined('JETPACK__VERSION') && JETPACK__VERSION < 6.9 ) ) {
752
+ require_once( AMP__VENDOR__DIR__ . '/jetpack-helper.php' );
753
+ }
754
+ // AMP by Automattic Compatibility #2287
755
+ // Remove the FrontPage query added by AMP to make our FrontPage/Homepage works
756
+ if ( function_exists('amp_activate') ) {
757
+ remove_action( 'parse_query', 'amp_correct_query_when_is_front_page' );
758
+ remove_action( 'wp', 'amp_maybe_add_actions' );
759
+ }
760
+ }
761
+ }
762
+
763
+
764
+ function amp_update_db_check() {
765
+ global $redux_builder_amp;
766
+ $ampforwp_current_version = AMPFORWP_VERSION;
767
+ if ( isset( $_GET['ampforwp-dismiss-theme'] ) && trim( $_GET['ampforwp-dismiss-theme']) === "ampforwp_dismiss_admin_notices" && wp_verify_nonce($_GET['ampforwp_notice'], 'ampforwp_notice') ) {
768
+ update_option( 'ampforwp_theme_notice', true );
769
+ wp_redirect("admin.php?page=amp_options");
770
+ }
771
+ if ( get_option( 'AMPforwp_db_version' ) !== $ampforwp_current_version ) {
772
+
773
+ if ( isset( $_GET['ampforwp-dismiss'] ) && trim( $_GET['ampforwp-dismiss']) === "ampforwp_dismiss_admin_notices" && wp_verify_nonce($_GET['ampforwp_notice'], 'ampforwp_notice') ) {
774
+ update_option( 'AMPforwp_db_version', $ampforwp_current_version );
775
+ wp_redirect(remove_query_arg('ampforwp-dismiss'), 301);
776
+ }
777
+ }
778
+ }
779
+
780
+
781
+ // Admin notice for AMP WordPress Theme
782
+ function ampforwp_ampwptheme_notice() {
783
+ $theme = '';
784
+ $theme = wp_get_theme(); // gets the current theme
785
+
786
+ if ( ('AMP WordPress Theme' == $theme->name || 'AMP WordPress Theme' == $theme->parent_theme) && true != get_option('ampforwp_theme_notice') ) {
787
+ add_thickbox(); ?>
788
+ <div id="some" class="notice-warning settings-error notice is-dismissible">
789
+ <span style="margin: 0.5em 0.5em 0 0"><?php echo esc_html__('AMP WordPress Theme is installed', 'accelerated-mobile-pages'); ?></span><br>
790
+ <span style="margin: 0.5em 0.5em 0 0"><?php echo esc_html__('One Last Step Required:', 'accelerated-mobile-pages'); ?> <a href="#TB_inline?width=600&height=550&inlineId=my-content-id" class="thickbox"><?php echo esc_html__('Finish Setup', 'accelerated-mobile-pages') ?></a></span><br>
791
+ </div>
792
+ <div id="my-content-id" style="display:none;">
793
+ <p>
794
+ <iframe width="100%" height="480" src="https://www.youtube.com/embed/" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
795
+ <a href="<?php echo esc_url( wp_nonce_url( add_query_arg( 'ampforwp-dismiss-theme', 'ampforwp_dismiss_admin_notices' ), 'ampforwp_notice', 'ampforwp_notice' ) ) ?>"><?php echo esc_html__('Take me to the Options Panel', 'accelerated-mobile-pages'); ?></a>
796
+ </p>
797
+ </div>
798
+ <?php }
799
+ include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
800
+
801
+ $amp_plugin_manager_version = array();
802
+
803
+ $plugin_manager_active = is_plugin_active('amp-plugin-manager/ampforwp-3rd-party-plugin-creator.php');
804
+ $amp_plugin_manager_active = is_plugin_active('plugin-manager/ampforwp-3rd-party-plugin-creator.php');
805
+
806
+ if ( $plugin_manager_active) {
807
+ $amp_plugin_manager = get_plugin_data(AMPFORWP_MAIN_PLUGIN_DIR.'/amp-plugin-manager/ampforwp-3rd-party-plugin-creator.php');
808
+ $amp_plugin_manager_version = $amp_plugin_manager['Version'];
809
+ }
810
+ if ( $amp_plugin_manager_active) {
811
+ $plugin_manager = get_plugin_data(AMPFORWP_MAIN_PLUGIN_DIR.'/plugin-manager/ampforwp-3rd-party-plugin-creator.php');
812
+ $amp_plugin_manager_version = $plugin_manager['Version'];
813
+ }
814
+
815
+ if ( $plugin_manager_active || $amp_plugin_manager_active ) {
816
+ $screen = get_current_screen();
817
+ if ( '1.0' == $amp_plugin_manager_version && 'plugins' === $screen->base) { ?>
818
+ <div id="ampforwp_pluginmanager" class="notice-warning settings-error notice is-dismissible"><p><b><?php echo esc_html__(' Attention','accelerated-mobile-pages'); ?>:</b> <?php echo esc_html__(' AMPforWP Plugin Manager requires an upgrade. Please','accelerated-mobile-pages'); ?> <b><a href="https://ampforwp.com/plugins-manager/?update=plugins-manager#utm_source=plugin-page&utm_medium=plugin-manager-update&utm_campaign=update-notice" target="_blank"><?php echo esc_html__('Download &amp; install the latest version', 'accelerated-mobile-pages'); ?></a></b> <?php echo esc_html__('for free','accelerated-mobile-pages'); ?>.
819
+ </p>
820
+ </div>
821
+ <?php }
822
+ }
823
+ }
824
+ if ( ! defined('AMP_FRAMEWORK_COMOPNENT_DIR_PATH') ) {
825
+ define('AMP_FRAMEWORK_COMOPNENT_DIR_PATH', AMPFORWP_PLUGIN_DIR ."/components");
826
+ }
827
+ require_once( AMP_FRAMEWORK_COMOPNENT_DIR_PATH . '/components-core.php' );
828
+ require ( AMPFORWP_PLUGIN_DIR.'/install/index.php' );
829
+ if ( !function_exists('amp_activate') ) {
830
+ require_once( AMPFORWP_PLUGIN_DIR. 'base_remover/base_remover.php' );
831
+ require_once( AMPFORWP_PLUGIN_DIR. 'includes/thirdparty-compatibility.php' );
832
+ $enablePb = false;
833
+ if(is_admin()){
834
+ global $pagenow;
835
+ if( is_multisite() ){
836
+ $current_url = $_SERVER['REQUEST_URI'];
837
+ $post_old = preg_match('/post\.php/', $current_url);
838
+ $post_new = preg_match('/post-new\.php/', $current_url);
839
+ if($post_old || $post_new){
840
+ $enablePb = true;
841
+ }
842
+ }elseif( ('post.php' || 'post-new.php') == $pagenow ) {
843
+ $enablePb = true;
844
+ }
845
+ if (defined('DOING_AJAX') && DOING_AJAX) {
846
+ $enablePb = true;
847
+ }
848
+ }else{
849
+ $enablePb = true;
850
+ }
851
+ if ($enablePb && ampforwp_get_setting('ampforwp-pagebuilder')== true ){
852
+ require_once( AMPFORWP_PLUGIN_DIR. 'pagebuilder/amp-page-builder.php');
853
+ }
854
+ }
855
+ if(is_admin()){
856
+ require_once( AMPFORWP_PLUGIN_DIR. 'includes/modules-upgrade.php' );
857
+ add_action( "redux/options/redux_builder_amp/saved", 'ampforwp_update_data_when_saved', 10, 2 );
858
+ add_action( "redux/options/redux_builder_amp/reset", 'ampforwp_update_data_when_reset' );
859
+ add_action( "redux/options/redux_builder_amp/section/reset", 'ampforwp_update_data_when_reset' );
860
+ add_action( "redux/options/redux_builder_amp/saved", 'ampforwp_save_local_font', 10, 2 );
861
+ }
862
+
863
+ /**
864
+ * Redirects the old AMP URL to the new AMP URL.
865
+ * If post slug is updated the amp page with old post slug will be redirected to the updated url.
866
+ *
867
+ * @param string $link New URL of the post.
868
+ *
869
+ * @return string $link URL to be redirected.
870
+ */
871
+ if ( ! function_exists( 'ampforwp_redirect_old_slug_to_new_url' ) ) {
872
+ function ampforwp_redirect_old_slug_to_new_url( $link ) {
873
+
874
+ if ( function_exists( 'ampforwp_is_amp_endpoint' ) && ampforwp_is_amp_endpoint() ) {
875
+ $link = trailingslashit( trailingslashit( $link ) . AMPFORWP_AMP_QUERY_VAR );
876
+ }
877
+
878
+ return $link;
879
+ }
880
+ }
881
+
882
+ // Hide Post Builder if Swift is enabled
883
+ add_filter('amp_customizer_is_enabled', 'ampforwp_customizer_is_enabled');
884
+ if ( ! function_exists('ampforwp_customizer_is_enabled') ) {
885
+ function ampforwp_customizer_is_enabled($value){
886
+ global $redux_builder_amp;
887
+ if ( 4 == ampforwp_get_setting('amp-design-selector') && ! function_exists('amp_activate') ) {
888
+ $value = false;
889
+ }
890
+ return $value;
891
+ }
892
+ }
893
+
894
+ // Get Settings from Redux #2177 & #2911
895
+ function ampforwp_get_setting( $opt_name='', $child_option='', $sanitize_method='' ){
896
+ global $redux_builder_amp;
897
+ if (is_plugin_active('amp/amp.php')) {
898
+ unset($redux_builder_amp['ampforwp-seo-selection']);
899
+ }
900
+ if(empty($redux_builder_amp)){
901
+ $redux_builder_amp = (array) get_option('redux_builder_amp');
902
+ }
903
+ $opt_value = '';
904
+ if ( isset($redux_builder_amp[$opt_name]) ) {
905
+ $opt_value = $redux_builder_amp[$opt_name];
906
+ if ( '' !== $child_option && isset($redux_builder_amp[$opt_name][$child_option]) ){
907
+ $opt_value = $redux_builder_amp[$opt_name][$child_option];
908
+ }
909
+ }
910
+ if ( '' !== $sanitize_method && function_exists($sanitize_method) ){
911
+ return $sanitize_method($opt_value);
912
+ }
913
+ return $opt_value;
914
+ }
915
+
916
+ // Setup funtion
917
+ if(!function_exists('ampforwp_get_setup_info')){
918
+ function ampforwp_get_setup_info($ux_option=''){
919
+ $ux_content = "";
920
+ if($ux_option=="ampforwp-ux-website-type-section"){
921
+ $ux_content = ampforwp_get_setting('ampforwp-setup-ux-website-type');
922
+ if(ampforwp_get_setting('ampforwp-sd-type-posts') && preg_match("/Other/", $ux_content)==0 && $ux_content!=="Local Business"){
923
+ $ux_content = ampforwp_get_setting('ampforwp-sd-type-posts');
924
+ }else{
925
+ $ux_content = ampforwp_get_setting('ampforwp-setup-ux-website-type');
926
+ }
927
+ if($ux_content=="NewsArticle" || $ux_content=="News"){
928
+ $ux_content="News";
929
+ }else if($ux_content=="BlogPosting" || $ux_content=="Blog" || $ux_content==""){
930
+ $ux_content="Blog";
931
+ }else if($ux_content=="Product"){
932
+ $ux_content="Ecommerce";
933
+ }
934
+ if(preg_match("/Other/", $ux_content)!=0){
935
+ $other = explode("-", $ux_content);
936
+ if(isset($other[1])){
937
+ $ux_content=$other[1];
938
+ }else{
939
+ $ux_content="WebPage";
940
+ }
941
+ }
942
+
943
+ }else if($ux_option=="ampforwp-ux-need-type-section"){
944
+ $home = ampforwp_get_setting('ampforwp-homepage-on-off-support');
945
+ $posts = ampforwp_get_setting('amp-on-off-for-all-posts');
946
+ $pages = ampforwp_get_setting('amp-on-off-for-all-pages');
947
+ $archive = ampforwp_get_setting('ampforwp-archive-support');
948
+ $ntype_arr = array();
949
+ if($home==1){$ntype_arr[] = "Home";}
950
+ if($posts==1){$ntype_arr[] = "Posts";}
951
+ if($pages==1){$ntype_arr[] = "Pages";}
952
+ if($archive==1){$ntype_arr[] = "Archive";}
953
+ $ux_content = implode(", ", $ntype_arr);
954
+ }else if($ux_option=="ampforwp-ux-design-section"){
955
+ $ux_content = ampforwp_get_setting('opt-media','url');
956
+ }else if($ux_option=="ampforwp-ux-analytics-section"){
957
+ $ga_field = ampforwp_get_setting('ga-feild');
958
+ $ga_field_gtm = ampforwp_get_setting('amp-gtm-id');
959
+ $amp_fb_pixel_id = ampforwp_get_setting('amp-fb-pixel-id');
960
+ $sa_feild = ampforwp_get_setting('sa-feild');
961
+ $pa_feild = ampforwp_get_setting('pa-feild');
962
+ $quantcast_c = ampforwp_get_setting('amp-quantcast-analytics-code');
963
+ $comscore_c1 = ampforwp_get_setting('amp-comscore-analytics-code-c1');
964
+ $comscore_c1 = ampforwp_get_setting('amp-comscore-analytics-code-c2');
965
+ $eam_c = ampforwp_get_setting('eam-feild');
966
+ $sc_c = ampforwp_get_setting('sc-feild');
967
+ $histats_c = ampforwp_get_setting('histats-field');
968
+ $yemdex_c = ampforwp_get_setting('amp-Yandex-Metrika-analytics-code');
969
+ $chartbeat_c = ampforwp_get_setting('amp-Chartbeat-analytics-code');
970
+ $alexa_c = ampforwp_get_setting('ampforwp-alexa-account');
971
+ $alexa_d = ampforwp_get_setting('ampforwp-alexa-domain');
972
+ $afs_c = ampforwp_get_setting('ampforwp-afs-siteid');
973
+ $clicky_side_id = ampforwp_get_setting('clicky-site-id');
974
+ $cr_config_url = ampforwp_get_setting('ampforwp-callrail-config-url');
975
+ $cr_number = ampforwp_get_setting('ampforwp-callrail-number');
976
+ $cr_analytics_url = ampforwp_get_setting('ampforwp-callrail-analytics-url');
977
+ $analytics_txt = "";
978
+ $analytic_arr = array();
979
+ if(ampforwp_get_setting('ampforwp-ga-switch') && $ga_field!="UA-XXXXX-Y" && $ga_field!=""){$analytic_arr[]="Google Analytics";}
980
+ if(ampforwp_get_setting('amp-use-gtm-option') && $ga_field_gtm!="" && $ga_field_gtm!=""){$analytic_arr[]="Google Tag Manager";}
981
+ if(ampforwp_get_setting('amp-fb-pixel') && $amp_fb_pixel_id!=""){$analytic_arr[]="Facebook Pixel";}
982
+ if(ampforwp_get_setting('ampforwp-Segment-switch') && $sa_feild!="SEGMENT-WRITE-KEY" && $sa_feild!=""){$analytic_arr[]="Segment Analytics";}
983
+ if(ampforwp_get_setting('ampforwp-Piwik-switch') && $pa_feild!="#" && $pa_feild!=""){ $analytic_arr[]="Matomo Analytics";}
984
+ if(ampforwp_get_setting('ampforwp-Quantcast-switch') && $quantcast_c!=""){ $analytic_arr[]="Quantcast Measurement";}
985
+ if(ampforwp_get_setting('ampforwp-comScore-switch') && $comscore_c1!="" && $comscore_c1!=""){$analytic_arr[]="comScore";}
986
+ if(ampforwp_get_setting('ampforwp-Effective-switch') && $eam_c!="#" && $eam_c!=""){$analytic_arr[]="Effective Measure";}
987
+ if(ampforwp_get_setting('ampforwp-StatCounter-switch') && $sc_c!="#" && $sc_c!=""){$analytic_arr[]="StatCounter";}
988
+ if(ampforwp_get_setting('ampforwp-Histats-switch') && $histats_c!=""){$analytic_arr[]="Histats Analytics";}
989
+ if(ampforwp_get_setting('ampforwp-Yandex-switch') && $yemdex_c!=""){$analytic_arr[]="Yandex Metrika";}
990
+ if(ampforwp_get_setting('ampforwp-Chartbeat-switch') && $chartbeat_c!=""){$analytic_arr[]="Chartbeat Analytics";}
991
+ if(ampforwp_get_setting('ampforwp-Alexa-switch') && $alexa_c!="" && $alexa_d!=""){$analytic_arr[]="Alexa Metrics";}
992
+ if(ampforwp_get_setting('ampforwp-afs-analytics-switch') && $afs_c!=""){$analytic_arr[]="AFS Analytics";}
993
+ if(ampforwp_get_setting('amp-clicky-switch') && $clicky_side_id!=""){$analytic_arr[]="Clicky Analytics";}
994
+ if(ampforwp_get_setting('ampforwp-callrail-switch') && $cr_config_url!="" && $cr_number!="" && $cr_analytics_url!=""){$analytic_arr[]="Call Rail Analytics";}
995
+ $ux_content = implode(", ", $analytic_arr);
996
+ }else if($ux_option=="ampforwp-ux-privacy-section"){
997
+ $ux_cookie_enable = ampforwp_get_setting('amp-enable-notifications');
998
+ $ux_compiance_switch = ampforwp_get_setting('amp-gdpr-compliance-switch');
999
+ $policy_arr = array();
1000
+ if($ux_cookie_enable){
1001
+ $policy_arr[] = "Cookie Consent";
1002
+ }
1003
+ if($ux_compiance_switch){
1004
+ $policy_arr[] = "GDPR";
1005
+ }
1006
+ $ux_content = implode(", ", $policy_arr);
1007
+ }else if($ux_option=="ampforwp_ux_extension_check"){
1008
+ include_once( ABSPATH . 'wp-admin/includes/plugin.php');
1009
+ $ux_content = array();
1010
+ if(defined('WPCF7_VERSION')){
1011
+ $ux_content[] = 'contact_form_7';
1012
+ }
1013
+ if(class_exists('Ninja_Forms')){
1014
+ $ux_content[] = 'ninja_forms';
1015
+ }
1016
+ if(function_exists('caldera_forms_fallback_shortcode')){
1017
+ $ux_content[] = 'caldera_forms';
1018
+ }
1019
+ if(function_exists('wpforms')){
1020
+ $ux_content[] = 'wpforms';
1021
+ }
1022
+ if(function_exists('WC')){
1023
+ $ux_content[] = 'woocommerce';
1024
+ }
1025
+ if(class_exists('Easy_Digital_Downloads')){
1026
+ $ux_content[] = 'easy_digital_downloads';
1027
+ }
1028
+ if(defined('POLYLANG_BASENAME')){
1029
+ $ux_content[] = 'polylang';
1030
+ }
1031
+ if(class_exists('bbPress')){
1032
+ $ux_content[] = 'bbpress';
1033
+ }
1034
+ if(function_exists('activate_shortcodes_ultimate')){
1035
+ $ux_content[] = 'shortcodes';
1036
+ }
1037
+ if(class_exists('toc')){
1038
+ $ux_content[] = 'toc';
1039
+ }
1040
+ if(class_exists('WPCOM_Liveblog')){
1041
+ $ux_content[] = 'liveblog';
1042
+ }
1043
+ if(defined('TRIBE_EVENTS_FILE')){
1044
+ $ux_content[] = 'eventcalendar';
1045
+ }
1046
+ if(function_exists('run_wp_recipe_maker') || function_exists('yasr_fs') || function_exists('wp_review_constants') || function_exists('postratings_init') || class_exists('WPCustomerReviews3') || defined('KKSR_PLUGIN') || function_exists('taqyeem_init') || class_exists('Multi_Rating')){
1047
+ $ux_content[] = 'ratings';
1048
+ }
1049
+ if(class_exists('GFForms')){
1050
+ $ux_content[] = 'gravityform';
1051
+ }
1052
+ if(function_exists('cp_display_version_warning')){
1053
+ $ux_content[] = 'classipress';
1054
+ }
1055
+ if(function_exists('elementor_load_plugin_textdomain') || function_exists('et_divi_theme_body_class')){
1056
+ if(function_exists('elementor_load_plugin_textdomain')){
1057
+ $ux_content[] = 'Elementor';
1058
+ }else if(function_exists('et_divi_theme_body_class')){
1059
+ $ux_content[] = 'Divi';
1060
+ }
1061
+ }
1062
+ if(function_exists('wpml_upgrade')){
1063
+ $ux_content[] = 'wpml';
1064
+ }
1065
+ }
1066
+ return $ux_content;
1067
+ }
1068
+ }
1069
+ // Register widgets
1070
+ add_action('amp_init', 'ampforwp_widgets');
1071
+ function ampforwp_widgets(){
1072
+ add_action( 'widgets_init', 'ampforwp_register_widgets' );
1073
+ }
1074
+ function ampforwp_register_widgets() {
1075
+ global $wp_widget_factory;
1076
+ foreach ( $wp_widget_factory->widgets as $registered_widget ) {
1077
+ $registered_widget_class_name = get_class( $registered_widget );
1078
+ if ( ! preg_match( '/^WP_Widget_(.+)$/', $registered_widget_class_name, $matches ) ) {
1079
+ continue;
1080
+ }
1081
+ $amp_class_name = 'AMP_Widget_' . $matches[1];
1082
+ if ( ! class_exists( $amp_class_name ) || is_a( $amp_class_name, $registered_widget_class_name ) ) {
1083
+ continue;
1084
+ }
1085
+
1086
+ unregister_widget( $registered_widget_class_name );
1087
+ register_widget( $amp_class_name );
1088
+ }
1089
+ }
1090
+ // Post Types
1091
+ function ampforwp_get_all_post_types(){
1092
+ global $redux_builder_amp;
1093
+ $post_types = array();
1094
+ $selected_post_types = array();
1095
+
1096
+ if( ampforwp_get_setting('amp-on-off-for-all-posts') ){
1097
+ $post_types['post'] = 'post';
1098
+ }
1099
+ if( ampforwp_get_setting('amp-on-off-for-all-pages') ){
1100
+ $post_types['page'] = 'page';
1101
+ }
1102
+ if( ampforwp_get_setting('ampforwp-archive-support') && ampforwp_get_setting('ampforwp-archive-support-cat') ){
1103
+ $post_types['category'] = 'category';
1104
+ }
1105
+ if( ampforwp_get_setting('ampforwp-archive-support') && ampforwp_get_setting('ampforwp-archive-support-tag')){
1106
+ $post_types['tag'] = 'post_tag';
1107
+ }
1108
+ $custom_taxonomies = ampforwp_get_setting('ampforwp-custom-taxonomies');
1109
+ if(ampforwp_get_setting('ampforwp-archive-support') && !empty($custom_taxonomies) ){
1110
+ foreach($custom_taxonomies as $taxonomy){
1111
+ $terms = get_taxonomy( $taxonomy );
1112
+ $taxonomy_name = ( isset($terms->name) ? $terms->name : '' );
1113
+ if( isset($terms->name) && !empty($terms->name)){
1114
+ $post_types[$terms->name] = $terms->name;
1115
+ }
1116
+ }
1117
+ }
1118
+
1119
+ if ( ampforwp_get_setting('ampforwp-custom-type')) {
1120
+ foreach (ampforwp_get_setting('ampforwp-custom-type') as $key) {
1121
+ $selected_post_types[$key] = $key;
1122
+ }
1123
+ $post_types = array_merge($post_types, $selected_post_types);
1124
+ }
1125
+ if(class_exists('WPUltimateRecipe') && function_exists('ampforwp_is_home') && ampforwp_is_home()){
1126
+ $post_types['recipe'] = 'recipe';
1127
+ }
1128
+ return $post_types;
1129
+ }
1130
+
1131
+ // is_search_enabled_in_ampforwp function ( Design 1,2 and 3 ) #2681
1132
+ if( !function_exists( 'is_search_enabled_in_ampforwp' ) ) {
1133
+ function is_search_enabled_in_ampforwp() {
1134
+ if( ( ampforwp_get_setting('amp-design-selector')==1 && ampforwp_get_setting('amp-design-1-search-feature') ) ||
1135
+ ( ampforwp_get_setting('amp-design-selector')==2 && ampforwp_get_setting('amp-design-2-search-feature') ) ||
1136
+ ( ampforwp_get_setting('amp-design-selector')==3 && ampforwp_get_setting('amp-design-3-search-feature') ) ) {
1137
+ return true;
1138
+ }
1139
+ return false;
1140
+ }
1141
+ }
1142
+ // Fallback for Redux class #2377
1143
+ add_action('after_setup_theme', 'ampforwp_redux_class' );
1144
+ function ampforwp_redux_class(){
1145
+ if ( !class_exists('Redux') && class_exists('ReduxCore\\ReduxFramework\\Redux') && !class_exists('QuadMenu') && !function_exists('volcanno_plugins_loaded')) {
1146
+ class Redux extends ReduxCore\ReduxFramework\Redux
1147
+ {
1148
+ # Do nothing, it will inherit all the methods
1149
+ }
1150
+ }
1151
+ }
1152
+ add_filter('plugin_row_meta' , 'ampforwp_add_plugin_meta_links', 10, 2);
1153
+ if ( ! function_exists('ampforwp_add_plugin_meta_links') ) {
1154
+ function ampforwp_add_plugin_meta_links($meta_fields, $file) {
1155
+ if ( plugin_basename(__FILE__) == $file ) {
1156
+ $plugin_url = "https://wordpress.org/support/plugin/accelerated-mobile-pages/reviews/?rate=5#new-post";
1157
+ $meta_fields[] = "<a href='" . esc_url($plugin_url) ."' target='_blank' title='" . esc_html__('Rate', 'accelerated-mobile-pages') . "'>
1158
+ <i class='ampforwp-rate-stars'>"
1159
+ . "<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>"
1160
+ . "<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>"
1161
+ . "<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>"
1162
+ . "<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>"
1163
+ . "<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>"
1164
+ . "</i></a>";
1165
+
1166
+ }
1167
+
1168
+ return $meta_fields;
1169
+ }
1170
+ }
1171
+ // AMPforWP Global Data variable
1172
+ $ampforwp_data = array();
1173
+
1174
+ if(!function_exists('sanitize_hex_color')){
1175
+ function sanitize_hex_color( $color ) {
1176
+ if ( '' === $color ) {
1177
+ return '';
1178
+ }
1179
+
1180
+ // 3 or 6 hex digits, or the empty string.
1181
+ if ( preg_match( '|^#([A-Fa-f0-9]{3}){1,2}$|', $color ) ) {
1182
+ return $color;
1183
+ }
1184
+ }
1185
+ }
1186
+ // color sanitizer
1187
+ function ampforwp_sanitize_color( $color ) {
1188
+ if ( empty( $color ) || is_array( $color ) )
1189
+ return 'rgba(0,0,0,0)';
1190
+ // If string does not start with 'rgba', then treat as hex
1191
+ // sanitize the hex color and finally convert hex to rgba
1192
+ if ( false === strpos( $color, 'rgba' ) ) {
1193
+ return sanitize_hex_color( $color );
1194
+ }
1195
+ // By now we know the string is formatted as an rgba color so we need to further sanitize it.
1196
+ $color = str_replace( ' ', '', $color );
1197
+ sscanf( $color, 'rgba(%d,%d,%d,%f)', $red, $green, $blue, $alpha );
1198
+ return 'rgba('.$red.','.$green.','.$blue.','.$alpha.')';
1199
+ }
1200
+
1201
+ // AMP Plugins Manager compatibility #2976
1202
+ if ( false == get_transient('ampforwp-pm-disabler') ) {
1203
+ $ampforwp_active_plugins = array_flip(get_option('active_plugins'));
1204
+ if (isset($ampforwp_active_plugins['amp-plugin-manager/ampforwp-3rd-party-plugin-creator.php'] ) ){
1205
+ $plugin_data = get_plugin_data(AMPFORWP_MAIN_PLUGIN_DIR . 'amp-plugin-manager/ampforwp-3rd-party-plugin-creator.php' );
1206
+ if ( version_compare( floatval( $plugin_data['Version'] ), '1.1', '<' ) ){
1207
+ unset($ampforwp_active_plugins['amp-plugin-manager/ampforwp-3rd-party-plugin-creator.php']);
1208
+ update_option('active_plugins', array_flip($ampforwp_active_plugins));
1209
+ set_transient('ampforwp-pm-disabler', true);
1210
+ include_once( ABSPATH . 'wp-includes/pluggable.php' );
1211
+ wp_redirect(admin_url('plugins.php'));
1212
+ }
1213
+ }
1214
+ elseif(isset($ampforwp_active_plugins['amp-plugin-manager-master/ampforwp-3rd-party-plugin-creator.php'] )){
1215
+ $plugin_data = get_plugin_data(AMPFORWP_MAIN_PLUGIN_DIR . 'amp-plugin-manager-master/ampforwp-3rd-party-plugin-creator.php' );
1216
+ if ( version_compare( floatval( $plugin_data['Version'] ), '1.1', '<' ) ){
1217
+ unset($ampforwp_active_plugins['amp-plugin-manager-master/ampforwp-3rd-party-plugin-creator.php']);
1218
+ update_option('active_plugins', array_flip($ampforwp_active_plugins));
1219
+ set_transient('ampforwp-pm-disabler', true);
1220
+ include_once( ABSPATH . 'wp-includes/pluggable.php' );
1221
+ wp_redirect(admin_url('plugins.php'));
1222
+ }
1223
+ }
1224
+
1225
+ }
1226
+ function ampforwp_plugins_manager_notice(){
1227
+ if ( true == get_transient('ampforwp-pm-disabler') ) { ?>
1228
+ <div id="ampforwp_pluginmanager" class="notice-warning settings-error notice is-dismissible"><p><b><?php echo esc_html__('Attention: ','accelerated-mobile-pages');?></b><?php echo esc_html__('AMPforWP Plugin Manager has been deactivated and requires an upgrade. Please','accelerated-mobile-pages');?> <b><a target="_blank" href=<?php echo esc_url('https://ampforwp.com/plugins-manager/?update=plugins-manager#utm_source=plugin-page&utm_medium=plugin-manager-update&utm_campaign=update-notice');?>><?php echo esc_html__('Download &amp; install the latest version','accelerated-mobile-pages');?></a></b><?php echo esc_html__(' for free.','accelerated-mobile-pages');?>
1229
+ </p>
1230
+ </div>
1231
+ <?php
1232
+ }
1233
+ }
1234
+ add_action( 'activate_plugin', 'ampforwp_delete_plugins_manager_transient' );
1235
+ function ampforwp_delete_plugins_manager_transient($plugin){
1236
+ if ( strpos($plugin, 'ampforwp-3rd-party-plugin-creator.php') || strpos($plugin, 'accelerated-moblie-pages.php') ) {
1237
+ delete_transient( 'ampforwp-pm-disabler' );
1238
+ }
1239
+ }
1240
+ // Infinite scroll/ amp-next-page #2244
1241
+ add_action('pre_amp_render_post', 'ampforwp_initialise_classes');
1242
+ if ( ! function_exists('ampforwp_initialise_classes') ) {
1243
+ function ampforwp_initialise_classes(){
1244
+ if ( true == ampforwp_get_setting('ampforwp-infinite-scroll') || true == ampforwp_get_setting('ampforwp-wcp-infinite-scroll') ) {
1245
+ require AMPFORWP_PLUGIN_DIR .'/classes/class-ampforwp-infinite-scroll.php';
1246
+ }
1247
+ }
1248
+ }
1249
+
1250
+ // Data Consent
1251
+ function ampforwp_get_data_consent(){
1252
+ global $redux_builder_amp;
1253
+ $dboc = false;
1254
+ $is_dboc = '';
1255
+ if(isset($redux_builder_amp['amp-gdpr-compliance-switch']) && $redux_builder_amp['amp-gdpr-compliance-switch'] ){
1256
+
1257
+ $dboc = true;
1258
+ }
1259
+ return $dboc;
1260
+ }
1261
+
1262
+ //Levelup Compatibility
1263
+ function ampforwp_levelup_compatibility($type='levelup_theme_and_elementor_check'){
1264
+ //check theme
1265
+ $returnVal = false;
1266
+ switch($type){
1267
+ case 'levelup_theme':
1268
+ if(function_exists('levelup_theme_is_active')){
1269
+ $returnVal = levelup_theme_is_active();
1270
+ }
1271
+ break;
1272
+ case 'levelup_elementor':
1273
+ if(function_exists('levelup_has_enable_elementor_builder')){
1274
+ $returnVal = levelup_has_enable_elementor_builder();
1275
+ }
1276
+ break;
1277
+ case 'levelup_theme_and_elementor':
1278
+ if(function_exists('levelup_theme_is_active') && function_exists('levelup_has_enable_elementor_builder')){
1279
+ $returnVal = levelup_theme_is_active() && levelup_has_enable_elementor_builder();
1280
+ }
1281
+ break;
1282
+ case 'hf_builder_foot':
1283
+ if(function_exists('levelup_check_hf_builder')){
1284
+ $returnVal = levelup_check_hf_builder('foot');
1285
+ }
1286
+ break;
1287
+ case 'hf_builder_head':
1288
+ if(function_exists('levelup_check_hf_builder')){
1289
+ $returnVal = levelup_check_hf_builder('head');
1290
+ }
1291
+ break;
1292
+ }
1293
+ return $returnVal;
1294
+ }
1295
+
1296
+ function ampforwp_amp_consent_check($attrs){
1297
+
1298
+ if( ampforwp_get_data_consent() ){
1299
+ $attrs['data-block-on-consent'] = '';
1300
+ }
1301
+ $attrs = apply_filters( 'ampforwp_embedd_attrs_handler', $attrs );
1302
+ return $attrs;
1303
+ }
1304
+
1305
+ // Fallback for Class AMP_Content sanitizer #2287
1306
+ add_action('pre_amp_render_post', 'ampforwp_vendor_amp_fallbacks');
1307
+ function ampforwp_vendor_amp_fallbacks(){
1308
+ if ( ! class_exists('AMP_Content') ) {
1309
+ class AMP_Content extends AMPforWP\AMPVendor\AMP_Content{}
1310
+ }
1311
+ }
1312
+ // Class AMP_Blacklist_Sanitizer #2287
1313
+ add_action('plugins_loaded', 'ampforwp_sanitizers_loader');
1314
+ function ampforwp_sanitizers_loader(){
1315
+ if ( ! class_exists('AMP_Blacklist_Sanitizer') ) {
1316
+ if(defined('AMP__VENDOR__DIR__')){
1317
+ $amp_blacklist_sanitizer = realpath( AMP__VENDOR__DIR__ . 'includes/sanitizers/class-amp-blacklist-sanitizer.php') ;
1318
+ require_once $amp_blacklist_sanitizer;
1319
+ class AMP_Blacklist_Sanitizer extends AMPforWP\AMPVendor\AMP_Blacklist_Sanitizer{}
1320
+ }
1321
+ }
1322
+ }
1323
+ // is_amp_endpoint Fallback #2287 #3055
1324
+ add_action('widgets_init','ampforwp_vendor_is_amp_endpoint');
1325
+ function ampforwp_vendor_is_amp_endpoint(){
1326
+ global $pagenow;
1327
+ if ( ! function_exists('amp_activate') && ! function_exists('is_amp_endpoint' ) && 'plugins.php' !== $pagenow ) {
1328
+ function is_amp_endpoint(){
1329
+ if(true == ampforwp_get_setting('ampforwp-amp-takeover')){
1330
+ return true;
1331
+ }
1332
+ return false !== get_query_var( AMP_QUERY_VAR, false );
1333
+ }
1334
+ }
1335
+ }
1336
+
1337
+ // ampforwp_exclude_posts function #3118
1338
+ if ( ! function_exists('ampforwp_exclude_posts') ) {
1339
+ function ampforwp_exclude_posts(){
1340
+ $exclude_post_values = array();
1341
+ $ampforwp_exclude_post_transient = get_transient('ampforwp_exclude_post_transient');
1342
+ if ( false != $ampforwp_exclude_post_transient ) {
1343
+ $exclude_post_values = $ampforwp_exclude_post_transient;
1344
+ }
1345
+ else{
1346
+ $ampforwp_exclude_post = get_option('ampforwp_exclude_post');
1347
+ if ( false != $ampforwp_exclude_post ) {
1348
+ $exclude_post_values = $ampforwp_exclude_post;
1349
+ set_transient('ampforwp_exclude_post_transient', $exclude_post_values);
1350
+ }
1351
+ }
1352
+ return $exclude_post_values;
1353
+ }
1354
+ }
1355
+
1356
+ // Redux Options Enabler #2939
1357
+ add_filter( 'redux/options/redux_builder_amp/sections', 'ampforwp_redux_options_enabler',7,1 );
1358
+ function ampforwp_redux_options_enabler($sections){
1359
+ $redux_enabled_options = array();
1360
+ // apply_filters to get the options to enable them
1361
+ $redux_enabled_options = apply_filters('ampforwp_options_enabler', $redux_enabled_options);
1362
+ if(is_array($redux_enabled_options) ) {
1363
+ foreach ($sections as $key => $section_value) {
1364
+ if(count($section_value['fields'])>0){
1365
+ foreach ($section_value['fields'] as $fieldkey => $field_value) {
1366
+ if(isset($field_value['required']) && in_array($field_value['id'], $redux_enabled_options) ){
1367
+ unset($sections[$key]['fields'][$fieldkey]['required']);
1368
+ }
1369
+ }
1370
+ }
1371
+ }
1372
+ }
1373
+ return $sections;
1374
+ }
1375
+
1376
+ // Redux Options Remover #2939
1377
+ add_filter( 'redux/options/redux_builder_amp/sections', 'ampforwp_redux_options_remover',7,1 );
1378
+ function ampforwp_redux_options_remover($sections){
1379
+ $redux_enabled_options = array();
1380
+ // apply_filters to get the options to remove them
1381
+ $redux_enabled_options = apply_filters('ampforwp_options_remover', $redux_enabled_options);
1382
+ if(is_array($redux_enabled_options) ) {
1383
+ foreach ($sections as $key => $section_value) {
1384
+ if(count($section_value['fields'])>0){
1385
+ foreach ($section_value['fields'] as $fieldkey => $field_value) {
1386
+ if(isset($field_value['required']) && in_array($field_value['id'], $redux_enabled_options) ){
1387
+ unset($sections[$key]['fields'][$fieldkey]);
1388
+ }
1389
+ }
1390
+ }
1391
+ }
1392
+ }
1393
+ return $sections;
1394
+ }
1395
+
1396
+ // AMP with AMPforWP notice #2287
1397
+ function ampforwp_automattic_activation(){
1398
+
1399
+ if ( function_exists('amp_activate') && get_transient( 'ampforwp_automattic_activation_notice' ) == false) {
1400
+ $automattic_wizard_nonce = wp_create_nonce( "automattic_wizard_nonce" );?>
1401
+ <div id="ampforwp-automattic-notice" data-nonce="<?php echo esc_attr($automattic_wizard_nonce);?>"class="updated notice is-dismissible message notice notice-alt ampforwp-setup-notice"><p><?php
1402
+ echo esc_html__('AMP By AMP Project Contributors Plugin is activated so AMPforWP is now in the "Addon Mode". ','accelerated-mobile-pages') ?><a href="https://ampforwp.com/tutorials/article/guide-to-amp-by-automattic-compatibility-in-ampforwp" target="_blank"><?php echo esc_html__('Learn More','accelerated-mobile-pages'); ?></a></p></div><?php
1403
+ }
1404
+ }
1405
+
1406
+ add_action('wp_ajax_ampforwp_automattic_notice_delete','ampforwp_automattic_notice_delete');
1407
+ function ampforwp_automattic_notice_delete(){
1408
+ $automattic_wizard_nonce = $_REQUEST['security'];
1409
+
1410
+ if ( wp_verify_nonce( $automattic_wizard_nonce, 'automattic_wizard_nonce' ) && current_user_can( 'install_plugins' ) || current_user_can( 'update_plugins' ) ) {
1411
+ set_transient( 'ampforwp_automattic_activation_notice', 1 );
1412
+ }
1413
+ exit();
1414
+ }
1415
+
1416
+ add_action('current_screen','ampforwp_replace_redux_comments');
1417
+ function ampforwp_replace_redux_comments($screen){
1418
+ if(current_user_can( 'manage_options' )){
1419
+ if ( 'toplevel_page_amp_options' == $screen->base ) {
1420
+ $replaced_redux_comments = get_transient('replaced_redux_comments_updated');
1421
+ if(!$replaced_redux_comments){
1422
+ $redux_val = get_option('redux_builder_amp',array());
1423
+ if ( empty($redux_val) || ! is_array($redux_val)) {
1424
+ return;
1425
+ }
1426
+ $ga_val = $redux_val['ampforwp-ga-field-advance'];
1427
+ if(preg_match('/\/\*(.*?)\*\//s', $ga_val)){
1428
+ $ga_val = preg_replace('/\/\*(.*?)\*\//s', '', $ga_val);
1429
+ $redux_val['ampforwp-ga-field-advance'] = $ga_val;
1430
+ update_option('redux_builder_amp',$redux_val);
1431
+ }
1432
+ if(preg_match('/\/\/Replace this with your Tracking ID/', $ga_val)){
1433
+ $ga_val = preg_replace('/\/\/Replace this with your Tracking ID/', '', $ga_val);
1434
+ $redux_val['ampforwp-ga-field-advance'] = $ga_val;
1435
+ update_option('redux_builder_amp',$redux_val);
1436
+ }
1437
+ // GA CLOSE
1438
+
1439
+ //FOR GTM
1440
+ $gml_val = $redux_val['ampforwp-gtm-field-advance'];
1441
+ if(preg_match('/\/\*(.*?)\*\//s', $gml_val)){
1442
+ $gml_val = preg_replace('/\/\*(.*?)\*\//s', '', $gml_val);
1443
+ $redux_val['ampforwp-gtm-field-advance'] = $gml_val;
1444
+ update_option('redux_builder_amp',$redux_val);
1445
+ }
1446
+ if(preg_match('/\/\/Replace this with your Tracking ID/', $gml_val)){
1447
+ $gml_val = preg_replace('/\/\/Replace this with your Tracking ID/', '', $gml_val);
1448
+ $redux_val['ampforwp-gtm-field-advance'] = $gml_val;
1449
+ update_option('redux_builder_amp',$redux_val);
1450
+ }
1451
+ // GLOBAL CSS EDITOR
1452
+ $css_editor = $redux_val['css_editor'];
1453
+ if(preg_match('/\/\*(.*?)\*\//s', $css_editor)){
1454
+ $css_editor = preg_replace('/\/\*(.*?)\*\//s', '', $css_editor);
1455
+ $redux_val['css_editor'] = $css_editor;
1456
+ update_option('redux_builder_amp',$redux_val);
1457
+ }
1458
+ set_transient('replaced_redux_comments_updated',1);
1459
+ }
1460
+ }
1461
+ }
1462
+ }
1463
+ if(!function_exists('ampforwp_wp_plugin_action_link')){
1464
+ function ampforwp_wp_plugin_action_link( $plugin, $action = 'activate' ) {
1465
+ if ( strpos( $plugin, '/' ) ) {
1466
+ $plugin = str_replace( '\/', '%2F', $plugin );
1467
+ }
1468
+ $url = sprintf( admin_url( 'plugins.php?action=' . $action . '&plugin=%s&plugin_status=all&paged=1&s' ), $plugin );
1469
+ $url = wp_nonce_url( $url, $action . '-plugin_' . $plugin );
1470
+ return $url;
1471
+ }
1472
+ }
1473
+ if(!function_exists('ampforwp_get_admin_current_page')){
1474
+ function ampforwp_get_admin_current_page(){
1475
+ $current_page = '';
1476
+ if(is_admin()){
1477
+ if(isset($_GET['page'])){
1478
+ $current_page = $_GET['page'];
1479
+ }
1480
+ }
1481
+ return $current_page;
1482
+ }
1483
+ }
1484
+ function ampforwp_update_data_when_saved($options, $changed_values) {
1485
+ if(!current_user_can( 'manage_options' )){
1486
+ return ;
1487
+ }
1488
+ $updatedDataForTransient = array(
1489
+ 'hide-amp-categories2',
1490
+ 'amp-design-3-category-selector',
1491
+ 'ampforwp-homepage-loop-cats',
1492
+ 'hide-amp-tags-bulk-option2',
1493
+ 'amp-design-3-tag-selector'
1494
+ );
1495
+ ampforwp_delete_transient_on_update($changed_values);
1496
+ foreach ( $changed_values as $key => $value ) {
1497
+ if ( in_array( $key, $updatedDataForTransient ) ) {
1498
+ delete_transient( $key );
1499
+ }
1500
+ }
1501
+ }
1502
+
1503
+ function ampforwp_update_data_when_reset($rest_object = '') {
1504
+ if(!current_user_can( 'manage_options' )){
1505
+ return ;
1506
+ }
1507
+ if ( isset( $rest_object->parent->transients ) ) {
1508
+ $updatedDataForTransient = array(
1509
+ 'hide-amp-categories2',
1510
+ 'amp-design-3-category-selector',
1511
+ 'ampforwp-homepage-loop-cats',
1512
+ 'hide-amp-tags-bulk-option2',
1513
+ 'amp-design-3-tag-selector'
1514
+ );
1515
+ foreach ( $rest_object->parent->transients['changed_values'] as $key => $value ) {
1516
+ if ( in_array( $key, $updatedDataForTransient ) ) {
1517
+ delete_transient( $key );
1518
+ }
1519
+ }
1520
+ }
1521
+ }
1522
+
1523
+ if(!function_exists('ampforwp_delete_transient_on_update')){
1524
+ function ampforwp_delete_transient_on_update($changed_values){
1525
+ if(!current_user_can( 'manage_options' )){
1526
+ return ;
1527
+ }
1528
+ $key_for_trans = array('ampforwp-custom-taxonomies');
1529
+ $del_trans_arr = array('ampforwp-custom-taxonomies'=>array('ampforwp_header_menu','ampforwp_footer_menu'));
1530
+ foreach($changed_values as $key => $value ){
1531
+ if(in_array($key,$key_for_trans)){
1532
+ $trans_arr = $del_trans_arr[$key];
1533
+ for($i=0;$i<count($trans_arr);$i++){
1534
+ delete_transient( $trans_arr[$i] );
1535
+ }
1536
+ }
1537
+ }
1538
+ }
1539
+ }
1540
+ if(!function_exists('ampforwp_save_local_font')){
1541
+ function ampforwp_save_local_font(){
1542
+ if(ampforwp_get_setting('ampforwp-local-font-switch') && ampforwp_get_setting('ampforwp-local-font-upload','url')!=""){
1543
+ $upload_dir = wp_upload_dir();
1544
+ $user_dirname = $upload_dir['basedir'] . '/' . 'ampforwp-local-fonts';
1545
+ if(!file_exists($user_dirname)) wp_mkdir_p($user_dirname);
1546
+ $font_url = ampforwp_get_setting('ampforwp-local-font-upload','url');
1547
+ $abs_path = explode("wp-content", $font_url);
1548
+ if(isset($abs_path[1])){
1549
+ $permfile = ABSPATH.'wp-content'.$abs_path[1];
1550
+ $files = explode('/', $abs_path[1]);
1551
+ $file_name = end($files);
1552
+ $copy_to = esc_attr($user_dirname).'/'.esc_attr($file_name);
1553
+ if(!file_exists($copy_to)){
1554
+ $files = glob( $user_dirname . '/*' );
1555
+ foreach ( $files as $file ) {
1556
+ unlink( $file );
1557
+ }
1558
+ copy($permfile, $copy_to);
1559
+ unzip_file($permfile, $user_dirname );
1560
+ $files = glob( $user_dirname . '/*' );
1561
+ foreach ( $files as $file ) {
1562
+ if(is_dir($file)){
1563
+ rmdir($file);
1564
+ }
1565
+ $fonts = explode("/", $file);
1566
+ $font_names = end($fonts);
1567
+ $ext = end(explode(".", $font_names));
1568
+ if($ext!='ttf' && $ext!='eot' && $ext!='svg'){
1569
+ unlink( $file );
1570
+ }
1571
+ }
1572
+ }
1573
+ }
1574
+ }else if(ampforwp_get_setting('ampforwp-local-font-switch') && ampforwp_get_setting('ampforwp-local-font-upload','url')==""){
1575
+ $upload_dir = wp_upload_dir();
1576
+ $user_dirname = esc_attr($upload_dir['basedir']) . '/' . 'ampforwp-local-fonts';
1577
+ if ( file_exists( $user_dirname ) ) {
1578
+ $files = glob( $user_dirname . '/*' );
1579
+ foreach ( $files as $file ) {
1580
+ unlink( $file );
1581
+ }
1582
+ }
1583
+ }
1584
+ }
1585
+ }
1586
+
1587
+ add_action("amp_init", "ampforwp_amp_optimizer");
1588
+ function ampforwp_amp_optimizer(){
1589
+ require_once AMPFORWP_PLUGIN_DIR."/includes/amp-optimizer-addon.php";
1590
+ }
1591
+
1592
+ if(!function_exists('is_amp_plugin_active')){
1593
+ function is_amp_plugin_active()
1594
+ {
1595
+ if (!function_exists('is_plugin_active')) {
1596
+ include_once(ABSPATH . 'wp-admin/includes/plugin.php');
1597
+ }
1598
+
1599
+ if (is_plugin_active('amp/amp.php')) {
1600
+ return true;
1601
+ }
1602
+ return false;
1603
+ }
1604
+
1605
  }
base_remover/base_remover.php CHANGED
@@ -1,111 +1,111 @@
1
- <?php
2
- // Exit if accessed directly
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- exit;
5
- }
6
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
7
-
8
- // check for plugin using plugin name
9
- $old_plugin = AMPFORWP_MAIN_PLUGIN_DIR.'amp-category-base-remover/amp-category-base-remover.php';
10
- if ( is_plugin_active( $old_plugin ) ) {
11
- //plugin is activated
12
- deactivate_plugins($old_plugin);
13
- add_action( 'admin_notices', 'ampforwp_catagory_base_removal_admin_notice' );
14
- }
15
-
16
- function ampforwp_catagory_base_removal_admin_notice(){
17
- ?>
18
- <div class="notice notice-success is-dismissible">
19
- <p><?php esc_html_e( 'AMP Category Base URL Remover plugin has De-activated, <br> Category removal option is added in our core plugin <a href="#">Click here to view details</a>', 'accelerated-mobile-pages' ); ?></p>
20
- </div>
21
- <?php
22
- }
23
-
24
- add_filter( 'init', 'ampforwp_url_base_rewrite_rules', 100 );
25
- function ampforwp_url_base_rewrite_rules(){
26
- global $redux_builder_amp;
27
- global $wp_rewrite;
28
- $categoryBaseRewrite = 0;
29
- $tagBaseRewrite = 0;
30
-
31
- if( isset($redux_builder_amp['ampforwp-category-base-removel-link']) ) {
32
- $categoryBaseRewrite = $redux_builder_amp['ampforwp-category-base-removel-link'];
33
- }
34
- if( isset($redux_builder_amp['ampforwp-tag-base-removal-link']) ) {
35
- $tagBaseRewrite = $redux_builder_amp['ampforwp-tag-base-removal-link'];
36
- }
37
- if($categoryBaseRewrite === '1'){
38
- add_action( 'created_category', 'amp_flush_rewrite_rules', 999 );
39
- add_action( 'edited_category', 'amp_flush_rewrite_rules', 999 );
40
- add_action( 'delete_category', 'amp_flush_rewrite_rules', 999 );
41
- add_filter( 'category_rewrite_rules', 'ampforwp_category_url_rewrite_rules');
42
- }elseif($categoryBaseRewrite === '0'){
43
- remove_action( 'created_category', 'amp_flush_rewrite_rules' , 999 );
44
- remove_action( 'edited_category', 'amp_flush_rewrite_rules' , 999 );
45
- remove_action( 'delete_category', 'amp_flush_rewrite_rules' , 999 );
46
- remove_filter( 'category_rewrite_rules', 'ampforwp_category_url_rewrite_rules');
47
-
48
- }
49
- if( $tagBaseRewrite === '1'){
50
- add_action( 'created_post_tag', 'amp_flush_rewrite_rules' , 999 );
51
- add_action( 'edited_post_tag', 'amp_flush_rewrite_rules', 999 );
52
- add_action( 'delete_post_tag', 'amp_flush_rewrite_rules', 999 );
53
- add_filter( 'post_tag_rewrite_rules', 'ampforwp_tag_url_rewrite_rules' );
54
- }elseif( $tagBaseRewrite === '0' ) {
55
- remove_action( 'created_post_tag', 'amp_flush_rewrite_rules' , 999 );
56
- remove_action( 'edited_post_tag', 'amp_flush_rewrite_rules', 999 );
57
- remove_action( 'delete_post_tag', 'amp_flush_rewrite_rules', 999 );
58
- remove_filter( 'post_tag_rewrite_rules', 'ampforwp_tag_url_rewrite_rules' );
59
- }
60
- }
61
-
62
-
63
-
64
-
65
- function amp_flush_rewrite_rules( $hard=true ) {
66
- global $wp_rewrite;
67
- $wp_rewrite->flush_rules( $hard );
68
- }
69
-
70
- function ampforwp_category_url_rewrite_rules( $rewrite ) {
71
- global $redux_builder_amp, $wp_rewrite;
72
- $categoryBaseRewrite = $redux_builder_amp['ampforwp-category-base-removel-link'];
73
- $categories = get_categories( array( 'hide_empty' => false ) );
74
- if(is_array( $categories ) && ! empty( $categories ) ) {
75
-
76
-
77
- foreach ( $categories as $category ) {
78
- $category_nicename = $category->slug;
79
- if ( $category->parent === $category->cat_ID ) {
80
- $category->parent = 0;
81
- } elseif ( 0 !== $category->parent ) {
82
- $category_nicename = get_category_parents( $category->parent, false, '/', true ) . $category_nicename;
83
- }
84
- $category_nicename = trim($category_nicename);
85
-
86
- $rewrite[ '('.$category_nicename.')'.'/amp/?$' ] = 'index.php?amp&category_name=$matches[1]';
87
- $rewrite[ '('.$category_nicename.')'.'/amp/' . $wp_rewrite->pagination_base . '/?([0-9]{1,})/?$' ] = 'index.php?amp&category_name=$matches[1]&paged=$matches[2]';
88
-
89
- // Redirect support from Old Category Base
90
- $old_category_base = get_option( 'category_base' ) ? get_option( 'category_base' ) : 'category';
91
- $old_category_base = trim( $old_category_base, '/' );
92
- $rewrite[ $old_category_base . '/(.*)$' ] = 'index.php?category_redirect=$matches[1]';
93
-
94
- }
95
- }
96
- return $rewrite;
97
- }
98
-
99
-
100
- function ampforwp_tag_url_rewrite_rules( $rewrite ) {
101
- $tags = get_terms('post_tag', array('hide_empty' => false));
102
- if(is_array( $tags ) && ! empty( $tags ) ) {
103
- foreach ( $tags as $tag ) {
104
- $tag_nicename = trim($tag->slug);
105
- $rewrite[ '('.$tag_nicename.')'.'/amp/?$' ] = 'index.php?amp&tag=$matches[1]';
106
- $rewrite[ '('.$tag_nicename.')'.'/amp/page/?([0-9]{1,})/?$' ] = 'index.php?amp&tag=$matches[1]&paged=$matches[2]';
107
- }
108
- }
109
-
110
- return $rewrite;
111
  }
1
+ <?php
2
+ // Exit if accessed directly
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+ include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
7
+
8
+ // check for plugin using plugin name
9
+ $old_plugin = AMPFORWP_MAIN_PLUGIN_DIR.'amp-category-base-remover/amp-category-base-remover.php';
10
+ if ( is_plugin_active( $old_plugin ) ) {
11
+ //plugin is activated
12
+ deactivate_plugins($old_plugin);
13
+ add_action( 'admin_notices', 'ampforwp_catagory_base_removal_admin_notice' );
14
+ }
15
+
16
+ function ampforwp_catagory_base_removal_admin_notice(){
17
+ ?>
18
+ <div class="notice notice-success is-dismissible">
19
+ <p><?php esc_html_e( 'AMP Category Base URL Remover plugin has De-activated, <br> Category removal option is added in our core plugin <a href="#">Click here to view details</a>', 'accelerated-mobile-pages' ); ?></p>
20
+ </div>
21
+ <?php
22
+ }
23
+
24
+ add_filter( 'init', 'ampforwp_url_base_rewrite_rules', 100 );
25
+ function ampforwp_url_base_rewrite_rules(){
26
+ global $redux_builder_amp;
27
+ global $wp_rewrite;
28
+ $categoryBaseRewrite = 0;
29
+ $tagBaseRewrite = 0;
30
+
31
+ if( isset($redux_builder_amp['ampforwp-category-base-removel-link']) ) {
32
+ $categoryBaseRewrite = $redux_builder_amp['ampforwp-category-base-removel-link'];
33
+ }
34
+ if( isset($redux_builder_amp['ampforwp-tag-base-removal-link']) ) {
35
+ $tagBaseRewrite = $redux_builder_amp['ampforwp-tag-base-removal-link'];
36
+ }
37
+ if($categoryBaseRewrite === '1'){
38
+ add_action( 'created_category', 'amp_flush_rewrite_rules', 999 );
39
+ add_action( 'edited_category', 'amp_flush_rewrite_rules', 999 );
40
+ add_action( 'delete_category', 'amp_flush_rewrite_rules', 999 );
41
+ add_filter( 'category_rewrite_rules', 'ampforwp_category_url_rewrite_rules');
42
+ }elseif($categoryBaseRewrite === '0'){
43
+ remove_action( 'created_category', 'amp_flush_rewrite_rules' , 999 );
44
+ remove_action( 'edited_category', 'amp_flush_rewrite_rules' , 999 );
45
+ remove_action( 'delete_category', 'amp_flush_rewrite_rules' , 999 );
46
+ remove_filter( 'category_rewrite_rules', 'ampforwp_category_url_rewrite_rules');
47
+
48
+ }
49
+ if( $tagBaseRewrite === '1'){
50
+ add_action( 'created_post_tag', 'amp_flush_rewrite_rules' , 999 );
51
+ add_action( 'edited_post_tag', 'amp_flush_rewrite_rules', 999 );
52
+ add_action( 'delete_post_tag', 'amp_flush_rewrite_rules', 999 );
53
+ add_filter( 'post_tag_rewrite_rules', 'ampforwp_tag_url_rewrite_rules' );
54
+ }elseif( $tagBaseRewrite === '0' ) {
55
+ remove_action( 'created_post_tag', 'amp_flush_rewrite_rules' , 999 );
56
+ remove_action( 'edited_post_tag', 'amp_flush_rewrite_rules', 999 );
57
+ remove_action( 'delete_post_tag', 'amp_flush_rewrite_rules', 999 );
58
+ remove_filter( 'post_tag_rewrite_rules', 'ampforwp_tag_url_rewrite_rules' );
59
+ }
60
+ }
61
+
62
+
63
+
64
+
65
+ function amp_flush_rewrite_rules( $hard=true ) {
66
+ global $wp_rewrite;
67
+ $wp_rewrite->flush_rules( $hard );
68
+ }
69
+
70
+ function ampforwp_category_url_rewrite_rules( $rewrite ) {
71
+ global $redux_builder_amp, $wp_rewrite;
72
+ $categoryBaseRewrite = $redux_builder_amp['ampforwp-category-base-removel-link'];
73
+ $categories = get_categories( array( 'hide_empty' => false ) );
74
+ if(is_array( $categories ) && ! empty( $categories ) ) {
75
+
76
+
77
+ foreach ( $categories as $category ) {
78
+ $category_nicename = $category->slug;
79
+ if ( $category->parent === $category->cat_ID ) {
80
+ $category->parent = 0;
81
+ } elseif ( 0 !== $category->parent ) {
82
+ $category_nicename = get_category_parents( $category->parent, false, '/', true ) . $category_nicename;
83
+ }
84
+ $category_nicename = trim($category_nicename);
85
+
86
+ $rewrite[ '('.$category_nicename.')'.'/amp/?$' ] = 'index.php?amp&category_name=$matches[1]';
87
+ $rewrite[ '('.$category_nicename.')'.'/amp/' . $wp_rewrite->pagination_base . '/?([0-9]{1,})/?$' ] = 'index.php?amp&category_name=$matches[1]&paged=$matches[2]';
88
+
89
+ // Redirect support from Old Category Base
90
+ $old_category_base = get_option( 'category_base' ) ? get_option( 'category_base' ) : 'category';
91
+ $old_category_base = trim( $old_category_base, '/' );
92
+ $rewrite[ $old_category_base . '/(.*)$' ] = 'index.php?category_redirect=$matches[1]';
93
+
94
+ }
95
+ }
96
+ return $rewrite;
97
+ }
98
+
99
+
100
+ function ampforwp_tag_url_rewrite_rules( $rewrite ) {
101
+ $tags = get_terms('post_tag', array('hide_empty' => false));
102
+ if(is_array( $tags ) && ! empty( $tags ) ) {
103
+ foreach ( $tags as $tag ) {
104
+ $tag_nicename = trim($tag->slug);
105
+ $rewrite[ '('.$tag_nicename.')'.'/amp/?$' ] = 'index.php?amp&tag=$matches[1]';
106
+ $rewrite[ '('.$tag_nicename.')'.'/amp/page/?([0-9]{1,})/?$' ] = 'index.php?amp&tag=$matches[1]&paged=$matches[2]';
107
+ }
108
+ }
109
+
110
+ return $rewrite;
111
  }
changelog.txt CHANGED
@@ -1,4240 +1,4246 @@
1
- == Changelog ==
2
-
3
- = 1.0.77.53 (25th October 2022) =
4
- * Fixed: Backslash in custom css error #5329
5
- * Fixed: If we enable the Responsive ad option then no need to show size option. #5302
6
- * Fixed: TikTok embed video is not working in AMP #5325
7
- * Fixed: lightbox for Youtube feature is not working properly #5327
8
-
9
- = 1.0.77.52 (14th October 2022) =
10
- * Fixed: Duplicate canonical URL when AIOSEO Pro is active. #5320
11
- * Fixed: Youtube embedded videos via elementor is not displaying in the AMP version #5322
12
- * Fixed: Slide Anything image src not loading properly. #5315
13
- * Fixed: PHP Warning Attempt to read property "post_type" on null #5323
14
- * Fixed: While adding the multiple Webstories on the website page, the image is not showing of the web stories the AMP Pages. #5301
15
- * Fixed: Author names are not shown in AMP when the Co-Authors Plus plugin is activated #5319
16
-
17
- = 1.0.77.51 (9th September 2022) =
18
- * Fixed: Infinite scroll doesn't work with custom post type. #5309
19
- * Fixed: Need to make it compatible with the Co-Authors Plus plugin #5313
20
- * Fixed: Slide Anything image src not loading properly. #5315
21
-
22
- = 1.0.77.50 (24th August 2022) =
23
- * Fixed: "Back to Top link" option adds amp-animation & amp-position-observer script without its usage on page #5305
24
- * Fixed: AMPforWP is creating "/amp" as an endpoint in Addon mode. #5303
25
- * Improvements: Strange Exclamation mark . #5304
26
-
27
- = 1.0.77.49 (22nd August 2022) =
28
- * Fixed: There is a compatibility issue with the latest version of the All in One SEO Plugin. #5306
29
-
30
- = 1.0.77.48 (11th August 2022) =
31
- * Improvements: Added Super Related Posts plugin compatibility #5298
32
- * Improvements: Added Inline Related Post plugin compatibility #5296
33
- * Fixed: Fatal error while activating official AMP. #5300
34
- * Fixed: Spotify Embed not working after 1.0.77.46 version #5294
35
- * Fixed: AMP Pagebuilder not loading with All in One SEO latest update #5299
36
-
37
- = 1.0.77.47 (5th July 2022) =
38
- * Fixed: AMP validation error when youtube video is embeded with query parameters #5292
39
- * Fixed: Instagram embeds not working when added with blockquote tags #5289
40
-
41
- = 1.0.77.46 (28th June 2022) =
42
- * Fixed: Reduced the execution of JS in youtube embeds #5287
43
- * Fixed: Instagram embeds not working when added with iframe #5289
44
- * Fixed: Subchild menu items does not expand with UberMenu plugin
45
- * Fixed: Incorrect default value in TPD #5286
46
- * Fixed: Debug Warnings - Undefined array-key: row #5283
47
-
48
- = 1.0.77.45 (13th June 2022) =
49
- * Fixed: Conflict issue with WPML #5274
50
- * Fixed: Page builder modal is getting hidden below the header of the post/page editor. #5279
51
- * Fixed: FAQ Schema For Pages And Posts compatibility #5278
52
- * Fixed: Debug Warnings - Trying to access array offset on value of type null #5277
53
- * Fixed: fatal error #5280
54
-
55
- = 1.0.77.44 (2nd June 2022) =
56
- * Improvements: Added Marfeel analytics compatibility in AMP #5266
57
- * Improvements: Added WP Table Builder compatibility in AMP #5270
58
- * Improvements: Updated the email id in feedback form #5273
59
- * Fixed: Instagram reels not working in AMP #5269
60
- * Fixed: Preload Funtionality not working when Image is added #5260
61
- * Fixed: AMP dashicons CSS overwrites the WP default dashicons #5265
62
- * Fixed: Tel protocols not working in the AMP #5268
63
- * Fixed: CTA links saving without '=' character #5267
64
-
65
- = 1.0.77.43 (10th May 2022) =
66
- * Updated: TPD feature updated #5257
67
- * Fixed: Resolved the issue of Image Gallery Carousel in AMP does not change the gallery view in posts/pages #5259
68
-
69
- = 1.0.77.42 (16th April 2022) =
70
- * Improvements: Added REHub Comparison charts, tables Compatibility #5250
71
- * Fixed: Debug Warnings - Undefined index: amp-license #5251
72
-
73
- = 1.0.77.41 (12th April 2022) =
74
- * Improvements: Added Compatibility with GenerateBlocks plugin #5248
75
- * Improvements: Added Web Safe Fonts in Google Fonts List #5242
76
- * Improvements: AMP Option panel improvements #5239
77
- * Fixed: White space in footer element between the posts of infinite scroll #5238
78
- * Fixed: Invalid JSON error in console when using Plausible analytics #5142
79
-
80
- = 1.0.77.40 (6th April 2022) =
81
- * Fixed: The Publisher Desk CDN URL added instead of Heroku link #5237
82
- * Fixed: AMP Option panel improvements #5240
83
-
84
- = 1.0.77.39 (5th April 2022) =
85
- * Improvements: Added New Guidelines in GDPR #5225
86
- * Improvements: Added AT internet analytics support #5233
87
- * Improvements: UI improved of feedback form #5223
88
- * Fixed: Header and footer showing twice in new infine scroll #5238
89
- * Fixed: AMP option panel not working with Tour Booking Manager plugin #5236
90
- * Fixed: Font style not loading correctly on first page load #5224
91
- * Fixed: The hamburger icon is not clickable when Font Icon Library is selected as CSS Icons #5243
92
- * Fixed: Duplicate li tags removed #5241
93
- * Fixed: Warning compatibility PHP 8.0 #5245
94
-
95
- = 1.0.77.38 (7th March 2022) =
96
- * Improvements: Added The Publisher Desk Support #5213
97
- * Fixed: Displaying a blank white screen when embed URLs are used #5193
98
-
99
- 1.0.77.37.1 (4TH March 2022)
100
- * Improvements: Added new infinite scrolling experience #4791
101
- * Fixed: The links in embed URLs are not clickable #5193
102
-
103
- = 1.0.77.37 (2nd March 2022) =
104
- * Improvements: Added feedback form with auto email system #5223
105
- * Improvements: Added new infinite scrolling experience #4791
106
- * Improvements: Added An option to add lang_ and privacyMode values in Quantcast #5206
107
- * Improvements: Added FireWork compatibility #5210
108
- * Fixed: AMP autocomplete tag is not working #5217
109
- * Fixed: Autoplay functionality not working in video module #5219
110
- * Fixed: Fonts loading twice in Global font family #5220
111
- * Fixed: Unable to connect to Matomo analytics #5221
112
-
113
- = 1.0.77.36 (18th February 2022) =
114
- * Fixed: If the server-side cache is aggressive then the pagination URL with ?amp=1 is redirecting to non-AMP #5208
115
- * Fixed: Errror getting in featured-image.php, on line 77 #5207
116
- * Fixed: Need to keep the mobile redirection filter outside of any condition #5216
117
-
118
- = 1.0.77.35 (21th January 2022) =
119
- * Fixed: Embed URLs not working with Amp takeover active #5193
120
- * Fixed: Need to change Google Fonts display to optional #5191
121
- * Fixed: Need to make compatibility of amp analytics in infinite scroll #5194
122
- * Fixed: Current year is not showing in design 1,2,3 #5190
123
- * Fixed: VKontakte social media not working in social media profile links #5196
124
- * Fixed: PHP Notice: tag_rewrite_rules is deprecated #5197
125
-
126
- = 1.0.77.34 (11th January 2022) =
127
- * Fixed: External stylesheet Errors using Vinkmag theme #5189
128
- * Fixed: AMP Takeover functionality is not working on the blog posts #5188
129
- * Fixed: Replace webvitalsdev to Microwork #5183
130
- * Fixed: Wrong Notice for first time installation #5184
131
-
132
- = 1.0.77.33 (15th December 2021) =
133
- * Fixed: Code improvements in AMP options panel #5179
134
- * Fixed: Stylesheet errors when using Qoxag theme #5177
135
-
136
- = 1.0.77.32 (11th December 2021) =
137
- * Fixed: Code improvements in AMP pagebuilder #5179
138
-
139
- = 1.0.77.31 (7th December 2021) =
140
- * Fixed: Uncaught ValueError - DOMDocument::loadHTML() Error #5174
141
- * Fixed: PHP Notice: Undefined index: rgba #5175
142
- * Fixed: Optional added for font display in google fonts #5176
143
-
144
- = 1.0.77.30 (25th November 2021) =
145
- * Improvements: Added Filter to modify title in AMP #5170
146
- * Fixed: Whitelisted amp-render tag #5171
147
- * Fixed: Featured image not appearing in loop with Offload Media Lite #5153
148
- * Fixed: Infinite scroll showing posts from different categories also when same category is selected #5168
149
- * Fixed: Webp images not appearing in preload with WEBP express plugin #5165
150
- * Fixed: pagination 404 issue with infinite scroll #5167
151
-
152
- = 1.0.77.29 (28TH October 2021) =
153
- Improvements: Search results opens directly in Google search in AMP #5161
154
- Fixed: Undefined variable - pathExploded debug notice #5160
155
- Fixed: ID has been getting removed from the amp-img tag #5163
156
-
157
- = 1.0.77.28 (28TH October 2021) =
158
- Improvements: License code improved #5151
159
- Fixed: Default Gravatar not appearing with FV Gravatar Cache #5149
160
- Fixed: Featured image not appearing with Offload Media Lite #5153
161
- Fixed: Function name updated in the seo framework #5155
162
- Fixed: Lifetime license key is showing as expired in admin panel #5156
163
- Fixed: Video is not loading when created by slider revolution with divi #5159
164
-
165
- = 1.0.77.27 (21TH October 2021) =
166
- Improvements: Added AdPushup Support in AMP #5144
167
-
168
- = 1.0.77.26 (20TH October 2021) =
169
- Improvements: Added FV Gravatar Cache Compatibility in AMP #5149
170
- Fixed: Images not loading when destination structure is document root in WebP Express #5150
171
-
172
- = 1.0.77.25 (1st October 2021) =
173
- * Improvements: Added Plausible analytics compatible in AMP #5142
174
- * Fixed: The amp-minute-media-player tag is getting stripped from the content #5146
175
- * Fixed: Author profile images not loading from Ultimate Member plugin #5141
176
- * Fixed: AMP Page builder content not rendering with Muffin builder #5147
177
- * Fixed: Debug log Errors #5145
178
-
179
- = 1.0.77.24 (23rd September 2021) =
180
- * Improvements: Added Filter to disable AMP for all categories except one #5139
181
- * Improvements: Added Ninja Form in the description of contact form module #5138
182
- * Fixed: Basic/Advance popup shows everytime when visiting option panel #5143
183
- * Fixed: Renewal link redirecting to 404 from options panel #5140
184
- * Fixed: Incorrect URL while using Matomo analytics #5136
185
- * Fixed: Validation error in the alt tag with Transposh plugin #5135
186
- * Fixed: Some design issues on one specific users #5134
187
- * Fixed: Debug Warnings - Use of undefined constant AUTH_KEY and SECURE_AUTH_KEY #5035
188
-
189
- = 1.0.77.23 (16th September 2021) =
190
- * Improvements: Added Top Mail Ru analytics support in amp #5130
191
- * Improvements: Added an option to move sponsorship label above the ad
192
- * Improvements: Updated the facebook instant articles to 50 when limit is not set #5131
193
-
194
- = 1.0.77.22 (6th September 2021) =
195
- * Fixed: Validation error with rankmath's "open external links in new tab" option #5129
196
-
197
- = 1.0.77.21 (6th September 2021) =
198
- * Fixed: Images not displaying in AMP with Lazy loading of Zeen theme #5126
199
- * Fixed: Missing rel noopener attribute in links #5125
200
- * Fixed: Incorrect canonical for Homepage if WordPress installation is another folder #5122
201
- * Fixed: No data hero attribute on featured image of default image #5121
202
- * Fixed: Debug log errors #5124
203
-
204
- = 1.0.77.20 (24th August 2021) =
205
- * Fixed: Validation errors when Jetpack boost plugin is active #5120
206
- * Fixed: Display Warning Icon more clearly if setup is not completed #5119
207
- * Fixed: Image loading issues while using Webp express #5118
208
-
209
- = 1.0.77.19 (13th August 2021) =
210
- * Fixed: Disable AMP on desktop not working with ?amp #5113
211
- * Fixed: Can't use function return value error when activating plugin #5115
212
- * Fixed: Button icon showing white When installing schema internally #5111
213
-
214
- = 1.0.77.18 (5th August 2021) =
215
- * Improvements: Added License Key information in AMP panel #5110
216
-
217
- = 1.0.77.17 (3rd August 2021) =
218
- * Improvements: Added dotmetrics analytics support in amp #5107
219
- * Improvements: Added support to preserve query string with ?amp #5103
220
-
221
- = 1.0.77.16 (29th July 2021) =
222
- * Improvements: Added Filter to remove last-modified header in amp #5101
223
- * Fixed: Webp images are not converting with Webp Express plugin #5108
224
- * Fixed: Validation error - The tag 'lite-youtube' is disallowed #5102
225
- * Fixed: Yoast custom breadcrumbs title not working after update #5100
226
-
227
- = 1.0.77.15 (27th July 2021) =
228
- * Improvements: Added Yoast custom breadcrumbs title support #5100
229
- * Fixed: Author name only showing for the first post on homepage #5099
230
- * Fixed: Youtube videos does not appear on the AMP page with the Video Yoast plugin
231
- * Fixed: The parent tag of tag ‘picture’ must be noscript validation error #5097
232
-
233
- = 1.0.77.14 (20th July 2021) =
234
- * Fixed: AMP page not showing with query string from 1.0.66 version #5096
235
- * Fixed: Related posts title and excerpt not appearing properly #5095
236
- * Fixed: Debug warnigs with WP Foro plugin #5094
237
-
238
- = 1.0.77.13 (16th July 2021) =
239
- * Fixed: FooGallery plugin not working with AMP #5090
240
- * Fixed: Console error when Back to Top link option is enabled #5091
241
- * Fixed: Exclude Categories is not working #5088
242
- * Fixed: Long word post title not breaking in mobile view #5092
243
-
244
- = 1.0.77.12 (12th July 2021) =
245
- * Fixed: Exclude categories loop not working #5088
246
- * Fixed: Endpoint '?amp' not working with plain permalink #5087
247
-
248
- = 1.0.77.11 (6th July 2021) =
249
- * Improvements: Improved readme.txt for newer features #5080
250
- * Fixed: SVG images are loading with a bigger size in the AMP version #5084
251
- * Fixed: Removed the percentage symbol beside AMP icon in dashboard #5082
252
- * Fixed: Gallery thumbnail image improved #5003
253
-
254
- = 1.0.77.10 (5th July 2021) =
255
- * Improvements: Unused CSS and Scripts are removed in AMP Optimizer (SSR) #5070
256
- * Improvements: Added data-hero attribute in AMP logo #5083
257
- * Fixed: Webp images not appearing with Litespeed cache #5081
258
-
259
- = 1.0.77.9 (29th June 2021) =
260
- * Added: AMP widget for adding amp code #5064
261
- * Added: Filter to modify the WP Rocket CDN URL #5076
262
- * Fixed: Meta description of Rank Math SEO plugin not showing on amp #5071
263
- * Fixed: Slide Anything Plugin slider content is not showing #5073
264
- * Fixed: When Convert AMP to WP theme Option is enabled, it breaks the Design #5074
265
- * Fixed: Remove preload if Featured Image option is off in AMP options panel #5077
266
- * Fixed: Icons are not loading when visiting first time or after clearing cache #5060
267
-
268
- = 1.0.77.8 (23rd June 2021) =
269
- * Added: Webp images support with LiteSpeed Cache plugin #5051
270
- * Added: Primary category compatibility of all SEO plugins #5049
271
- * Added: Notice if license key isn't added in AMP pro extension manager #5068
272
- * Fixed: Instagram embeds are not loading on the Facebook instance Article #5066
273
- * Fixed: WP rocket cache not working with ?amp query string #5063
274
- * Fixed: Debug error appearing in the non-amp #5059
275
- * Fixed: Code improvements for options panel #5057
276
- * Fixed: Disqus comments not showing on mobile when adding ads #5055
277
- * Fixed: Proper preload added if WebP Express is active #4357
278
- * Fixed: The slashes (\) are no longer appear in the custom CSS #5035
279
-
280
- = 1.0.77.7 (21st June 2021) =
281
- * Added: AMP Optimizer (SSR) Support #5034
282
-
283
- = 1.0.77.6 (12th June 2021) =
284
- * Fixed: Custom JavaScript is not allowed error when analytics added by All in one SEO #5062
285
-
286
- = 1.0.77.5 (10th June 2021) =
287
- * Fixed: Some issues found while refresh the individual extension from the Extension section #5056
288
- * Fixed: Referenced AMP URL is self-canonical AMP when AMP takeover is enabled #5053
289
- * Fixed: Remove AMP blocks from options panel for CWV #5052
290
- * Fixed: Incorrect link in the Breadcrumb #5050
291
- * Fixed: Blank taxonomy in option panel #5037
292
- * Fixed: Featured image not working for specific usecase in amp #5058
293
-
294
- = 1.0.77.4 (1st June 2021) =
295
- * Improvements: Added dynamic copyright code so that year changes automatically #5019
296
- * Improvements: Added Smart Sticky Header Extension #5001
297
- * Fixed: View Non-amp version link redirecting to 404 using custom permalink #5039
298
- * Fixed: Headline error in schema when adding more than 110 characters in title #5033
299
- * Fixed: Aq_resize.process() error in error logs #5041
300
- * Fixed: Google Fonts are not getting saved while using Safari #4978
301
- * Fixed: The tag 'animatetransform' is disallowed validation error #5043
302
- * Fixed: Debug Warning Function get_magic_quotes_gpc() is deprecated #5035
303
- * Fixed: Debug Warning Trying to get property 'ID' of non-object #5046
304
-
305
- = 1.0.77.3 (27th May 2021) =
306
- * Improvements: Added Compatibility with WebP Express plugin #4357
307
- * Improvements: Added an option to allow users to upload and use local fonts on AMP #4264
308
- * Improvements: Added Muffin builder Pagebuilder Support in AMP Pagebuilder Extension #5015
309
- * Fixed: Fatal error when both Sassy Social Share and Optimize CSS are enabled #5032
310
- * Fixed: Issues with Megashop theme #5010
311
- * Fixed: Images not sanitized when added using Muffin Pagebuilder #5013
312
- * Fixed: Hide featured images on a single post if this is older than certain date #5018
313
- * Fixed: Getting AMP validation Error in Add Widget After Content plugin #5027
314
- * Fixed: Query Monitor not working on AMP pages #5025
315
- * Fixed: Full-size image is always preloaded for the featured image in Swift theme #5038
316
-
317
- = 1.0.77.2 (20th May 2021) =
318
- * Fixed: Some issues with style on normal version after update #3844
319
-
320
- = 1.0.77.1 (19th May 2021) =
321
- * Improvements: Added a filter from which user can control Mobile redirection #4488
322
- * Improvements: Implemented the Mobile redirection functionality using Javascript method #3844
323
- * Improvements: Added preload to get featured image on AMP #5020
324
- * Fixed: Debug Warning in templates/features.php #5014
325
- * Fixed: Validation error in image lightbox for gallery #5021
326
- * Fixed: Fatal error on AMP pages after updating WP User Avatar plugin #5029
327
-
328
- = 1.0.77 (17th May 2021) =
329
- * Fixed: Related posts doesn't show more than 3-4 #4300
330
-
331
- = 1.0.76.17 (7th May 2021) =
332
- * Improvements: Added Beaver builder Pagebuilder Support in AMP Pagebuilder Extension #5009
333
- * Fixed: Title on Static Front Page is not displaying #5007
334
- * Fixed: The attribute 'height' in tag 'amp-img' is set to the invalid value. #5005
335
- * Fixed: ?amp doesnt removing from view non-amp text #5006
336
- * Fixed: Errors in Schema Pro FAQ #4956
337
- * Fixed: PHP Warning error when enable Breadcrumbs option #5008
338
-
339
- = 1.0.76.16 (4th May 2021) =
340
- * Fixed: Incorrent height in anchor.fm audio embed from the Pennews Theme #4576
341
- * Fixed: Slide Anything Plugin text slider not working in AMP #4999
342
- * Fixed: Backend button translation #4717
343
- * Fixed: Alignment issue with Gutenberg image block #4997
344
- * Fixed: Undefined variable $q / Attempt to read property max_num_pages on null #5004
345
-
346
- = 1.0.76.15 (28th April 2021) =
347
- * Improvements: Added an option to add one signal notification on the desktop #4377
348
- * Improvements: Added an option to set Target for CTA button in swift theme #4995
349
- * Improvements: Added an option to install PWA from options panel #4529
350
- * Improvements: Added HappyForms Compatibility Extension #5001
351
- * Fixed: Width in percentage not working for the audio from the Pennews Theme #4576
352
- * Fixed: Need to allow two attributes in input tag #4998
353
-
354
- = 1.0.76.14 (23rd April 2021) =
355
- * Improvements: Added an option to add Schema Pro FAQ in AMP #4956
356
- * Improvements: Added support for the audio from the Pennews Theme #4576
357
- * Improvements: Added Getty Images embed Compatibility #4188
358
- * Improvements: Added an option to move the search bar top and bottom. #4748
359
- * Improvements: Added an option for autoplay in slider module of AMP pagebuilder #3859
360
- * Improvements: Added an option to remove Site navigation element schema #4583
361
- * Improvements: Added related posts after the last post for infinity scroll posts in AMP layout #4652
362
- * Fixed: Call to undefined method MCI_Footnotes_Convert error #4993
363
- * Fixed: Search bar close icon is hidden behind the admin navigation bar #4991
364
- * Fixed: AMP menu automatically scrolls down to bottom in Design three #4967
365
- * Fixed: Single post content not showing when using AMP on subdomain #4996
366
-
367
- = 1.0.76.13 (19th April 2021) =
368
- * Improvements: Added an option to preserve original permalinks in mobile redirection #4207
369
- * Improvements: Added an option to add moderation tool for the Facebook comments #4485
370
- * Improvements: Added an option to make buttons side by side in the mobile with AMP pagebuilder #4472
371
- * Improvements: Added an option to add UTM souce parameters in URLs to both related & incontent related posts #4237
372
- * Improvements: Added Quantcast CMP (consent management platform) support in AMP 4951
373
- * Fixed: Alt tag not appearing in sticky social sharing icons #4984
374
- * Fixed: Debug Warning in edit tag page when using PHP8 #4990
375
-
376
- = 1.0.76.12 (14th April 2021) =
377
- * Fixed: Fatal error occuring with the recent update Version 1.0.76.11 #4986
378
-
379
- = 1.0.76.11 (14th April 2021) =
380
- * Improvements: Added an option to select same categories in infinite scroll #4017
381
- * Improvements: Added an option to select same tags in infinite scroll #4939
382
- * Improvements: Added the filter to change breadcrumbs name #4979
383
- * Fixed: Muffin pagebuilder not working in AMP #4983
384
- * Fixed: PHP 8 debug errors #4981
385
- * Fixed: AMP menu automatically scrolls down to bottom in Design three #4967
386
- * Fixed: Deprecated Filters Detected Warning in All in one SEO plugin #4980
387
-
388
- = 1.0.76.10 (9th April 2021) =
389
- * Improvements: Added the Compatibility with the Schema Pro FAQ #4956
390
- * Improvements: Added the feature to track each author contribution to the website pageview #4952
391
- * Improvements: Added an option to show published date and time below the title #4976
392
- * Improvements: Added an option to automatic redirect AMP to non-amp when access through desktop #4975
393
- * Improvements: Added the Compatibility for Add Widget After Content plugin #4949
394
- * Improvements: Added Forminator for AMP Extension #4965
395
- * Fixed: Search Close Button is hidden for the Google Cached AMP Pages #4977
396
- * Fixed: Image is not showing when the post is shared on social network #4971
397
-
398
- = 1.0.76.9 (2nd April 2021) =
399
- * Fixed: Facebook videos embedding not working #4973
400
- * Fixed: The incorrect excerpt for the custom front page if user is using the Divi #4972
401
- * Fixed: When Yoast SEO Multilingual is activated canonical getting addition http #4970
402
- * Fixed: Close button not visible in the menu for the Google Cached AMP Pages #4969
403
- * Fixed: Sassy social share icons are not displaying on AMP #4945
404
- * Fixed: The AMP For WP option panel not saving due to redux plugin #4963
405
- * Fixed: Docking functionality is not working for the amp-video type in mobile view #4961
406
- * Fixed: Cannot change the title for in-content related post #4959
407
- * Fixed: Upgrade for Free' button in structured data settings is not working #4960
408
- * Fixed: Beginner and advance mode popup not closing #4974
409
-
410
- = 1.0.76.8 (22nd March 2021) =
411
- * Fixed: Srcset attribute not appearing on images with AMP page builder #4954
412
- * Fixed: Option added to disable structured data in AMP #4953
413
- * Fixed: Debug Warning with PHP 8.02 and WordPress 5.6.2 #4946
414
- * Fixed: Background Video loop not working with AMP page builder #4948
415
- * Fixed: Mobile redirection not working for the front page when pages are disabled #4942
416
- * Fixed: Captions are not working on Slideshow Module by Jetpack Plugin #4950
417
-
418
- = 1.0.76.7 (15th March 2021) =
419
- * Fixed: WP_Scripts Debug Warnings when WordPress updated to v5.7 #4958
420
-
421
- = 1.0.76.6 (12th March 2021) =
422
- * Improvements: Added an option to show the author details after the title on mobile #4858
423
- * Fixed: Images not appearing with WP stateless Google cloud storage plugin #4575
424
- * Fixed: Category module doesnot have "/" at the end of the URL #4932
425
- * Fixed: Proper commenting added for hooks #3368
426
- * Fixed: Sticky social share bar icon colliding with polylang plugin #4935
427
- * Fixed: AMP Page Builder is breaking with contact form module #4937
428
- * Fixed: Truepush notification not working in AMP #4936
429
-
430
- = 1.0.76.5 (20th February 2021) =
431
- * Improvements: Added UX Builder compatibility #4933
432
- * Fixed: Second paginated post not working #4892
433
- * Fixed: Jetpack hosted videos not working on AMP #4931
434
- * Fixed: AMP Pagebuilder module getting narrowed with All in One SEO plugin #4930
435
-
436
- = 1.0.76.4 (19th February 2021) =
437
- * Fixed: AMP front page not working after update #4892
438
-
439
- = 1.0.76.3 (19th February 2021) =
440
- * Improvement: Added the Smart Mag Theme review schema #4898
441
- * Improvement: Added disable right click for copy protection #4877
442
- * Improvement: Added an option to hide the title on pages #4929
443
- * Fixed: AMP Browser caching policy #4876
444
- * Fixed: p tags getting stripped with Change Pagination Links to /amp option #4892
445
- * Fixed: Missing URL for attribute error for SVG images #4911
446
- * Fixed: Debug warnings #4924
447
-
448
- = 1.0.76.2 (17th February 2021) =
449
- * Fixed: Removed The SEO Checklist Banner #4912
450
-
451
- = 1.0.76.1 (16th February 2021) =
452
- * Fixed: Fatal conflict with Yoast Premium #4926
453
- * Fixed: Wrong Yoast breadcrumb links for the posts having multiple categories #4923
454
- * Fixed: Fatal error on bbpress profile page #4922
455
- * Fixed: Comments not showing on AMP front page #4921
456
-
457
- = 1.0.76 (9th February 2021) =
458
- * Improvement: The SEO Checklist Banner #4912
459
- * Fixed: Telegram icon not visible in menu #4919
460
- * Fixed: Validation error in amp-img with transposh plugin #4918
461
- * Fixed: Fatal error when FIFU plugin is activate #4920
462
- * Fixed: AMP admin option panel is showing blank on user end #4914
463
- * Fixed: Tag base remove in AMP not working after 1.0.60 #4908
464
- * Fixed: data-playlist gets removed automatically in amp-brid-player #4906
465
- * Fixed: View Non-Amp Version link does not link to proper canonical url #4901
466
- * Fixed: Srcset not loading in category module of AMP page builder #4900
467
- * Fixed: Debug warnings #4917
468
-
469
- = 1.0.75 (23rd January 2021) =
470
- * Fixed: Imgur embed code not working in AMP #4899
471
- * Fixed: Srcset not loading in category module of AMP page builder #4900
472
- * Fixed: Advertising section displaying blank when AdsforWP plugin is active #4889
473
- * Fixed: AMP Page Builder not working on the pages and posts except the homepage #4890
474
- * Fixed: Swift 2nd header menu aligned towards right with polylang plugin #4893
475
- * Fixed: Post Pagination not working after 1.0.69 version #4902
476
- * Fixed: Debug warnings #4896
477
-
478
- = 1.0.74 (30th December 2020) =
479
- * Improvement: Added Oxygen Pagebuilder Compatibility for AMP Pagebuilder Extension #4868
480
- * Improvement: Added disable right click option on AMP for copy protection #4877
481
- * Fixed: Validation Errors when WP Daddy Builder Pro is active #4879
482
- * Fixed: The yoast meta title is not reflecting in AMP with Smartmag theme #4885
483
-
484
- = 1.0.73 (23rd December 2020) =
485
- * Fixed: Javascript issues after update to WordPress 5.6 #4867
486
- * Fixed: '-' symbol is not appearing on post title #4866
487
- * Fixed: GDPR strings are not getting translated in WPML #4874
488
- * Fixed: AMP Browser caching policy updated #4876
489
- * Fixed: Validation Errors when WP Daddy Builder Pro is active #4879
490
- * Fixed: Vuukle comments box appearing twice in AMP #4878
491
- * Fixed: Validation error when 'area' tag is added in post content #4882
492
- * Fixed: Validation error "Custom JS is not allowed" with ALL in one SEO pro #4883
493
-
494
- = 1.0.72 (17th December 2020) =
495
- * Improvement: Added i2Pros and cons plugin compatibility #4837
496
- * Improvement: Added WP-PageNavi plugin compatibility #4831
497
- * Improvement: Added Categories Images plugin compatibility #3973
498
- * Improvement: Added webp images on the homepage and Archives with Imagify plugin #4725
499
- * Improvement: Added Recipe Compatibility for AMP Extension #4868
500
- * Fixed: Amp option panel breaks when AECC Global Theme is activated. #4863
501
- * Fixed: Facebook page embed fails #4871
502
- * Fixed: Referenced AMP URL is self-canonical AMP while using All in One Seo #4873
503
-
504
- = 1.0.71.2 (12th December 2020) =
505
- * Fixed: Incorrect AMPHTML on homepage with ?amp #4865
506
-
507
- = 1.0.71.1 (10th December 2020) =
508
- * Fixed: Validation error in author bio alt attribute #4864
509
-
510
- = 1.0.71 (10th December 2020) =
511
- * Fixed: AMP Page builder accordion not working in 1.0.70 #4862
512
- * Fixed: Category name in the dropdown not redirecting and AMP Sidebar alignment #4861
513
- * Fixed: AMP Sidebar Menu Remains Open After Browser Back in Firefox and Safari #4840
514
- * Fixed: amp-auto-ads was found on this page, but is unused error #4851
515
- * Fixed: Amp option panel breaks in Product Filter For WooCommerce Product Plugin #4853
516
- * Fixed: ID attribute added inside the analytics section #4852
517
- * Fixed: Updated Facebook Messanger Icon #4859
518
- * Fixed: Heading elements added in blurb module of AMP page builder #4856
519
- * Fixed: Special characters are showing for post titles after sharing tweets #4850
520
-
521
- = 1.0.70 (7th December 2020) =
522
- * Improvement: Added filter to modify author bio description #4849
523
- * Improvement: Added LGDP (Brazil's GDPR) #4854
524
- * Fixed: Ads are displaying even GDPR popup is rejected #4843
525
- * Fixed: Role Based Access not working for SEO manager role in Yoast #4830
526
- * Fixed: Homepage url not redirecting to non-amp url with AMP takeover and ?amp #4826
527
- * Fixed: The amphtml not generating with the Hide By Default option in AMP Takeover #4824
528
- * Fixed: Undefined variable: allscripts #4846
529
- * Fixed: Breadcrumb bug in amp homepage #4827
530
- * Fixed: When the minify option is disabled then the WhatsApp share link has a space #4848
531
- * Fixed: Validation error when using web stories plugin #4847
532
- * Fixed: The background color of feature module of layout2 is not getting applied #4835
533
- * Fixed: Canonical and meta description errors in All in one SEO PRO #4829
534
- * Fixed: Avatar image doesn't have alt attribute #4836
535
- * Fixed: AMP posts are redirecting to the 404 page when post id is added in permalink #4842
536
- * Fixed: The amphtml not generating on the custom taxonomy and the custom post types #4841
537
-
538
- = 1.0.69.2 (27th November 2020) =
539
- * Fixed: Improvements in offer banner #4833
540
-
541
- = 1.0.69.1 (25th November 2020) =
542
- * Fixed: amp-story-player was found on this page, but is unused. #4839
543
-
544
- = 1.0.69 (25th November 2020) =
545
- * Fixed: Wrong tooltip link in the infinite scroll #4823
546
- * Fixed: Images are not showing in the AMP due to SG Optimizer lazy load #4815
547
- * Fixed: Embeds not working in AMP Takeover mode #4819
548
- * Fixed: AMPHTML appearing in archive page of Google web stories #4820
549
- * Fixed: AMP option panel page is blank with ECPay Payment for WooCommerce plugin #4816
550
- * Fixed: 404 errors on pagination urls #4373
551
- * Fixed: Blank lines not appearing between paragraphs #4818
552
- * Fixed: amp-story-player preload is being added when not using #4828
553
-
554
- = 1.0.68.1 (10th November 2020) =
555
- * Fixed: Missing amphtml on product pages #4822
556
- * Fixed: Debug warnings #4821
557
-
558
- = 1.0.68 (9th November 2020) =
559
- * Fixed: Validation error occurs when input type image is added #4785
560
- * Fixed: Featured images are not showing when "Enable lazy load images" option is enabled in the "DEUS" Theme #4710
561
- * Fixed: AMP Push Notification - Dropdown issue #4812
562
- * Fixed: Italic style caption of gallery #4806
563
- * Fixed: The canonical links are not generating for the coupon store when YOAST Plugin is active with AMPFORWP #4811
564
- * Fixed: Content not displayed in AMP post/pages with plain permalink #4814
565
- * Fixed: Tables created with 2 columns displaying 1 extra column on mobile view #4765
566
- * Fixed: Content appearing in excerpt on single post #4798
567
- * Fixed: Code improvment for amp pagebuilder's category-module #4660
568
-
569
- = 1.0.67 (4th November 2020) =
570
- * Improvement: Optimize Pagespeed score by implimenting AMP video lightbox #4531
571
- * Improvement: Added Paid Memberships PRO for AMP Extension #4737
572
- * Improvement: Added help section for the users in Options panel #4683
573
- * Improvement: Added code improvement in Tag base remover and category base remover #4664
574
- * Improvement: Added UberMenu 3 Compatiblity #4732
575
- * Improvement: Added filter to overwrite the scripts #4642
576
- * Fixed: Style amp-custom unterminated comment Error on AMP #4792
577
- * Fixed: Proper styling of Header right side icons in Design 2 #3935
578
- * Fixed: Revolution Slider not working in AMP #4669
579
- * Fixed: Additional characters at the end of footer text in Design Two #4805
580
- * Fixed: Related thumbnail image title is getting break and leading to the validation error #4804
581
-
582
- = 1.0.66.3 (29th October 2020) =
583
- * Fixed: Content not visible in AMP Takeover #4744
584
-
585
- = 1.0.66.2 (28th October 2020) =
586
- * Fixed: Content not visible after 1.0.66 update #4744
587
-
588
- = 1.0.66.1 (26th October 2020) =
589
- * Fixed: Validation error due to amp-web-push AMP component script #4796
590
- * Fixed: Validation error due to amp-fx-flying-carpet AMP component script #4794
591
-
592
- = 1.0.66 (24th October 2020) =
593
- * Improvement: Added filter to modify GDPR popup output #4778
594
- * Improvement: Added Polylang string transaltion support #4784
595
- * Improvement: Added IO Technologies company analytics tracking code. #4753
596
- * Improvement: Added Ultimate Membership Pro Compatibility for AMP Extension #4790
597
- * Improvement: Code improvements #4744
598
- * Fixed: Validation error when the "OMGF | Host Google Fonts Locally" plugin is active #4775
599
- * Fixed: Margin top added in the twitter embed through the Gutenberg editor #4750
600
- * Fixed: Truepush push notification not working in AMP #4644
601
- * Fixed: Wrong amphtml on category and tags when ?amp is selected #4780
602
- * Fixed: Missing the amp-bind script tag #4776
603
- * Fixed: Two H1 tags appears in AMP #4786
604
- * Fixed: Debug warnings #4767
605
- * Fixed: Fallback images removed when Convert AMP to WP theme is enabled #4773
606
-
607
- = 1.0.65.2 (17th October 2020) =
608
- * Fixed: Menu not appearing in AMP #4657
609
- * Fixed: Wrong amphtml on homepage when ?amp is selected #4780
610
-
611
- = 1.0.65.1 (16th October 2020) =
612
- * Fixed: Jquery issue fixed due to Easy select option for category module #4672
613
-
614
- = 1.0.65 (15th October 2020) =
615
- * Added: Integrated Truepush in push notification section #4644
616
- * Added: Easy select option for category module #4672
617
- * Added: Option to change the image size for the related posts thumbnail #4534
618
- * Added: Option to change the image size of the first image in Swift theme #4476
619
- * Added: AMP compatibility with Web stories by Google #4667
620
- * Fixed: Validation error in the in-content related post #4729
621
- * Fixed: Image elements do not have alt attributes #4757
622
- * Fixed: When genesis theme is activated getting SEO error notice #4758
623
- * Fixed: Removed third party plugins notices on the AMP option panel #4730
624
- * Fixed: Instant articles not working when Site directory or Installation directory is different #4690
625
- * Fixed: Clicking on the menu gets # at the end of the URL in design 2 #4722
626
- * Fixed: Need to add tag for disqus comments #4692
627
- * Fixed: Optimize menu caching code #4657
628
- * Fixed: View non amp version is not working in mobile due to conflict with Redis Cache and WP Rocket #4614
629
- * Fixed: Social share Buttons do not have an accessible name using Design One #4764
630
- * Fixed: In the Contact form module, wp form options are not getting selected #4761
631
- * Fixed: Uncaught Error: Call to undefined function ampforwp_is_home() main file #4782
632
-
633
- = 1.0.64.1 (5th October 2020) =
634
- * Fixed: Images are not appearing in AMP with Shortpixel plugin #4738
635
-
636
- = 1.0.64 (5th October 2020) =
637
- * Fixed: Comments module of AMP pagebuilder is rendering only admin comments not the others #4745
638
- * Fixed: Shortpixel is not generating WebP in AMP #4738
639
- * Fixed: SEO option appearing in wordpress tool bar even No SEO plugin is active #4698
640
- * Fixed: Auto add amp in menu url functionality is not working in tags #4734
641
- * Fixed: The internal link for the the author page is generating in the AMP if the archive page support is disabled #4746
642
- * Fixed: Scroll to top button not visible in Design 2 #4693
643
- * Fixed: Notice: Undefined index: Cpage #4728
644
- * Fixed: GDPR banner is off-centered, the 'X 'is out of the screen #4724
645
- * Fixed: Wrong AMP html when the AMP takeover and ?amp is enabled #4731
646
- * Fixed: Addon mode forcefully redirecting to reader mode not others #4742
647
- * Fixed: Images not appearing with Image Photo Gallery Final Tiles Grid plugin #4675
648
- * Fixed: In Design three, when click on the menu, the page gets pushed to the right side #4736
649
- * Fixed: FAQ icon button is a too big in amp page. #4747
650
- * Fixed: Added meta name="referrer" content="no-referrer-when-downgrade" #4715
651
- * Fixed: In admin tool bar, (+) icon loading small and also author image invisible #4700
652
- * Fixed: Issue with menu background when user add internal page navigation menu-items. #4630
653
- * Fixed: Anchor tag getting stripped when Site Kit by Google is active. #4699
654
- * Fixed: Merriweather font option in Design 1 does not work. #4726
655
- * Fixed: If the user is adding the HTML code in the background video module then code is showing as output #4755
656
- * Fixed: AMP 404 template is applying on non amp page #4723
657
- * Fixed: In-Content Related Post appearing inside the blockquote when "After 50% of content" option is selected #4743
658
- * Fixed: If the sticky ads is active then the sticky social share link tab is hiding behind the ads #4749
659
-
660
- = 1.0.63 (26th September 2020) =
661
- * Improvement: Added Reddit embeds support #4406
662
- * Improvement: Added multi select for post type in loop field #4365
663
- * Improvement: Added custom classes in Body tag in AMP in all Designs #4594
664
- * Improvement: Added filter for GDPR on-off #4471
665
- * Improvement: Added admin notice when wrong seo plugin is selected #4678
666
- * Improvement: Added TikTok embed support #4504
667
- * Improvement: Added related post on/off in YouTube #4503
668
- * Improvement: Added Nofollow Link button on pricing tabs in AMP Page Builder #4505
669
- * Improvement: Improved Lighthouse Audits #4654
670
- * Improvement: Added filter for AMP front page function #4634
671
- * Fixed: Facebook Instant Articles (FBIA) Crawler Ingestion not working #4463
672
- * Fixed: Incontent related post not aligned if the post does not have featured image #4691
673
- * Fixed: Incontent path passed to load_plugin_textdomain function #4694
674
- * Fixed: Incorrect Styling for header area #4703
675
- * Fixed: Breadcrumb links are not generating the "amp/" #4708
676
- * Fixed: Google Analytics is not firing when GTM is enabled #4707
677
- * Fixed: Featured Image doesn’t appear on single post #4711
678
- * Fixed: Code improvements for options panel #4622 #4532 #4407 #4090
679
- * Fixed: Advanced section showing blank randomly #4741
680
-
681
- = 1.0.62.2 (21st August 2020) =
682
- * Fixed: Gutenberg gallery block caption appearing at the end of the content #4716
683
- * Fixed: Validation error - accordion section must have 2 child tags #4208
684
-
685
- = 1.0.62.1 (17th August 2020) =
686
- * Improvement: Removed unwanted javascript from AMP pages #4689
687
- * Fixed: Call to undefined function fifu_amp_url() #4688
688
- * Fixed: jQuery.fn.live() is deprecated warnings #4706
689
-
690
- = 1.0.62 (15th August 2020) =
691
- * Improvement: Added Yoast Local SEO plugin compatibility #4170
692
- * Improvement: Added option for changing the tags for the accordion module in AMP Page Builder #4208
693
- * Improvement: Added option for showing primary category of Yoast #4495
694
- * Improvement: Added condition for adding infinite scroll in AMP Woocommerce #4673
695
- * Improvement: Added excerpt option in in-content related posts #3981
696
- * Fixed: AMP not working on the Homepage with WP Ultimate recipe plugin #4538
697
- * Fixed: CSS overiding issue for the list and accourdion modules in AMP Page Builder #4674
698
- * Fixed: Alignment issue on homepage in design one #4676
699
- * Fixed: Debug Errors #4671
700
-
701
- = 1.0.61.2 (5th August 2020) =
702
- * Fixed: Removed Helpscout Beacon from Options Panel #4682
703
-
704
- = 1.0.61.1 (4th August 2020) =
705
- * Fixed: The right and left arrows are converting into the special characters in AMP #4668
706
-
707
- = 1.0.61 (3rd August 2020) =
708
- * Improvement: Added Open By Default option in accordion module of AMP Page Builder #4597
709
- * Fixed: Wrong preview link is generating for the AMP pages and posts #4670
710
- * Fixed: Code improved in category base and tag base remover #4664
711
- * Fixed: Wrong breadcrumb links are generating in the AMP #4666
712
- * Fixed: Optimize gallery code to enhance performance and improve the page load time #4656
713
- * Fixed: Homepage URL has /amp at the end even after enabling AMP Takeover #4662
714
- * Fixed: Background color not appearing in table when created with Tiny MCE advanced plugin #4627
715
- * Fixed: Header right side icons styling improved in Design 3 #3935
716
- * Fixed: The right and left arrows are converting into the special characters in AMP #4668
717
- * Fixed: Removed Shorthand versions of PHP from the code #4659
718
- * Fixed: Wrong width and height in logo for SVG images #4650
719
-
720
- = 1.0.60 (27th July 2020) =
721
- * Improvement: Added below the related post hook #4653
722
- * Fixed: Validation errors caused by Autoptimize for logged in users #4586
723
- * Fixed: Styling issues with Reactions plugin by Vicomi #4637
724
- * Fixed: If category name has special characters AMP Pagebuilder was not working #4610
725
- * Fixed: autoplay attribute not working in the amp-vimeo tag #4648
726
- * Fixed: incorrect width and height of logo in AMP #4650
727
- * Fixed: Styling issues with AdsforWP section #4658
728
- * Fixed: Code improvements for options panel #4647
729
- * Fixed: Recent post appearing on pages as well in design 3 #4651
730
-
731
- = 1.0.59 (23rd July 2020) =
732
- * Improvement: Added noreferrer noopener attributes on social links #4509
733
- * Improvement: Added webmaster tools meta tags when AMP takeover is enabled #4602
734
- * Improvement: Added Conversion Goals Tracking for AMP Extension #4647 #4655
735
- * Improvement: Added a filter to turn on/off the Aqua_resizer #4641
736
- * Improvement: Added a filter to add/remove fields in Google Analytics #4646
737
- * Fixed: noindex issue on homepage using Yoast #4609
738
- * Fixed: Pagination not working in AMP with Magplus theme #4611
739
- * Fixed: If category name has special characters AMP Pagebuilder was not working #4610
740
- * Fixed: Letter-spacing issue in Swift Theme if RTL is enabled #4598
741
- * Fixed: URL with square brackets [ ] causing issue in galleries AMP #4635
742
- * Fixed: Google Analytics trigger functionality not working #4645
743
- * Fixed: Validation error when css icons and sticky header is selected #4640
744
- * Fixed: If Extension manager was active it was showing incorrect message #4613
745
- * Fixed: Debug warnings #4626 #4639
746
-
747
- = 1.0.58.5 (15th July 2020) =
748
- * Fixed: Duplicate title tag on non-amp #4631
749
- * Fixed: Database deadlocks error #4618
750
-
751
- = 1.0.58.4 (13th July 2020) =
752
- * Fixed: Website getting blank after 1.0.58 update
753
-
754
- = 1.0.58.3 (9th July 2020) =
755
- * Fixed: Class 'AMPforWP\AMPVendor\WP_Error' not found error in the latest update of Jetpack #4624
756
-
757
- = 1.0.58.2 (9th July 2020) =
758
- * Fixed: Category pages are not working properly #4579
759
-
760
- = 1.0.58.1 (9th July 2020) =
761
- * Fixed: Validation error of target attribute appearing in span tag #4620
762
- * Fixed: Menu is hidden behind the content in iOS devices #4601
763
-
764
- = 1.0.58 (7th July 2020) =
765
- * Improvement: Added before and after comment hooks #4537
766
- * Fixed: WPRocket CDN is not working properly with the amp pages #4342
767
- * Fixed: Two galleries not working with Photo gallery plugin #4421
768
- * Fixed: Arrows not getting aligned in Breadcrumbs in Arabic with Swift theme #4593
769
- * Fixed: Customize font size not applying in the post title #4592
770
- * Fixed: Validation errors when adding 2 columns in AMP pagebuilder #4383
771
- * Fixed: Category pages are not working properly #4579
772
- * Fixed: Autoptimize is causing validation for logged in users #4586
773
- * Fixed: Changed gtag type in googleanalytics #4585
774
- * Fixed: Changed the sub-title tag to h2 with subtitles and jannah theme #4599
775
- * Fixed: The entire post content appearing in the excerpt #4603
776
- * Fixed: Updated the condition for amp ninja activation extension #4606
777
-
778
- = 1.0.57 (3rd July 2020) =
779
- * Fixed: Issue with external link with Rank Math #4584
780
- * Fixed: Incorrect yoast title with TagDiv's themes #4595
781
-
782
- = 1.0.56 (1st July 2020) =
783
- * Fixed: When gdpr option is enabled the site is becoming unclickable in browser Safari on IOS and MacOS #4542
784
-
785
- = 1.0.55 (30th June 2020) =
786
- * Improvement: Added option to change the Google theme color #4514
787
- * Improvement: Added TravelTour Theme compatibility #4540
788
- * Fixed: Whitelisted <details> and <summary> tags in AMP #4577
789
- * Fixed: amp-embed doesn't include the amp-ad script #4580
790
- * Fixed: Lightbox for images not working in specific scenario #4570
791
- * Fixed: Fatal error on one of the urls. #4438
792
- * Fixed: First priority added to load amp markup when marfeelpress and amp is active #4560
793
- * Fixed: Retina image breaking the layout for Design 2 in homepage #4558
794
- * Fixed: The duplicate text showing after the anchor link #4584
795
- * Fixed: Debug warning #4508
796
-
797
- = 1.0.54.1 (26th June 2020) =
798
- * Fixed: The duplicate text showing after the anchor link #4584
799
-
800
- = 1.0.54 (25th June 2020) =
801
- * Fixed: Odnoklassniki sharing not working properly #4525
802
- * Fixed: Post title is not appearing when a post is shared through Whatsapp #4513
803
- * Fixed: Even after activating amp page builder compatibility we are getting this message this feature requires Page Builder For AMP extension. #4530
804
- * Fixed: RedGIFs embeds break site #4422
805
- * Fixed: Show notice when user is enabling option "sort related item randomly". #4535
806
- * Fixed: The mandatory tag 'link rel=canonical' is missing or incorrect due to Yoast SEO premium plugin #4569
807
- * Fixed: AMP homepage has a wrong canonical link. #4564
808
- * Fixed: Yoast not working in rare scenario #4562
809
- * Fixed: Meta title not pulled from YOAST in version 1.0.53.2 #4574
810
- * Fixed: yoast breadcrumb links not redirecting to amp pages. #4566
811
- * Fixed: Need to make comatibility with the wordpress embed block in guntenburg editor #4506
812
- * Fixed: Custom Javascript added with orbital theme and it is showing a validation error on the AMP Pages #4539
813
- * Fixed: robots.txt file is not generating when AMP takeover beta option is enabled. #4541
814
- * Fixed: Need to add compatibility of the "Brightcove Video Connect" plugin. #4517
815
- * Fixed: Debug Warning #4568
816
- * Fixed: Comments are not displaying on Homepage (only in swift theme) #4571
817
- * Fixed: The button CSS not appearing in the AMP added with the Gutenberg button module #4572
818
-
819
- = 1.0.53.2 (21st June 2020) =
820
- * Fixed: Minor Bug
821
-
822
- = 1.0.53 (19th June 2020) =
823
- * Improvement: Need to implement YOAST breadcrumb for the category and the tags pages #4493
824
- * Improvement: Added new set of hooks in all designs #4550
825
- * Improvement: Added PostViews for AMP Extension #4549
826
- * Improvement: Created an extra argument to pass for amp_author_box function so author links can be controlled #4466
827
- * Fixed: Meta description tag is missing in AMP, when custom home page is selected. #4521
828
- * Fixed: The attribute 'src' in tag 'amp-form extension .js script' is set to the invalid value'. #4515
829
- * Fixed: The tag 'link rel=canonical' appears more than once in the document due to Yoast SEO premium plugin. #4511
830
- * Fixed: Getting warnings due to Yoast SEO plugin. #4510
831
- * Fixed: Issue with Image block of Gutenberg #4507
832
- * Fixed: Gallery images(Gutenberg editor) are stretched when the Optimize CSS option is enabled. #4502
833
- * Fixed: If category label has backslash in the name breadcrumbs break #4500
834
- * Fixed: Vertical scroll Issue in iOS devices when the 'menu overlay' is positioned in right. #4461
835
- * Fixed: WPRocket CDN is not working properly with the amp pages. #4342
836
- * Fixed: When gdpr option is enabled the site is becoming unclickable in browser Safari on IOS and MacOS #4542
837
- * Fixed: Unused HTML was showing in Video Module #4524
838
- * Fixed: Getting validation error as "The attribute '"_blank"' may not appear in tag 'a' with RankMath #4527
839
- * Fixed: Anchor tag is stripping in AMP with Sitekit By Google plugin is active #4552
840
- * Fixed: Date styling not looking good in Design 3 archive pages #4557
841
- * Fixed: Debug warning #4555
842
-
843
- = 1.0.52 (27th May 2020) =
844
- * Fixed: Reverted the CDN code of WP Rocket plugin which was causing the malformed url issue #4342
845
-
846
- = 1.0.51 (27th May 2020) =
847
- * Improvement: Added option to show instant article post according to updated date #4389
848
- * Improvement: Added Transposh for AMP Extension #4481
849
- * Fixed: Malformed url issue with WPRocket CDN #4342
850
- * Fixed: Call to undefined method WPSEO_Options::get() #4494
851
- * Fixed: Meta description is not working on homepage with yoast #4486
852
- * Fixed: Home Page Meta Description Not Showing in Rankmath SEO #4491
853
- * Fixed: DNS prefetch is disappearing after saving in safari #4470
854
- * Fixed: Robots txt is not working when AMP takeover is enabled #4475
855
- * Fixed: Canonical tag is missing when yoast is activated #4490
856
- * Fixed: Custom taxonomy archive not working LSVR Knowledge Base #4478
857
- * Fixed: Debug Notice trying to access array offset on value of type bool #4469
858
-
859
- = 1.0.50 (20th May 2020) =
860
- * Improvement: Added option to display the GDPR bar at top or bottom #4409
861
- * Improvement: Added option to enable/disable the AMP from the categories or product or any custom taxonomy #4326
862
- * Improvement: Added Hooks in Instant Article #4417
863
- * Improvement: Added Polls for AMP Extension #4451
864
- * Fixed: View Non-AMP link in the footer does not redirect to Non-AMP #3884
865
- * Fixed: Banner notice not looking good in reading settings #4414
866
- * Fixed: Lightbox for images appearing even after disabling #4442
867
- * Fixed: Last modified date showing wrong in header #4456
868
- * Fixed: WPRocket CDN is not working properly in the AMP pages #4342
869
- * Fixed: Lighthouse issues #4443
870
- * Fixed: Thumbnail images in category module not showing in RTL #4459
871
- * Fixed: Blank screen when alt added in images with short pixel plugin #4452
872
- * Fixed: invalid value defer onload with The Business News theme #4465
873
- * Fixed: Text links are not working in mobile #4462
874
- * Fixed: PHP Notice Undefined variable thumb_alt #4460
875
-
876
- = 1.0.49 (11th May 2020) =
877
- * Fixed: Background color of the row is not working in the AMP Page Builder #4398
878
-
879
- = 1.0.48 (9th May 2020) =
880
- * Fixed: Title not showing with Yoast in some scenarios #4434
881
- * Fixed: Canonical not showing with Yoast when AMP takeover is enabled #4434
882
- * Fixed: Lightbox for images appearing even after disabling #4442
883
- * Fixed: Menu and internal links are not working through Google CDN #4429
884
- * Fixed: GDPR privacy text appearing on the top of the homepage #4435
885
- * Fixed: Modules are not displaying in background video in pagebuilder #4398
886
- * Fixed: Showing too many redirect in WPML with mobile redirection #4444
887
- * Fixed: Detecting the Mobile redirection config to avoid manual tasks #4382
888
- * Fixed: Pagination of category module not jumping on 1st & last links #4401
889
- * Fixed: Notice added when category based is removed from Yoast #4437
890
- * Fixed: Debug notices on the AMP pages #4440
891
-
892
- = 1.0.47 (5th May 2020) =
893
- * Fixed: Few issues fixed with latest version of yoast plugin #4430
894
-
895
- = 1.0.46 (4th May 2020) =
896
- * Fixed: Few issues fixed with latest version of yoast plugin #4430
897
- * Fixed: Text not displaying in One signal notification #4413
898
- * Fixed: Wrong amphtml in ?amp endpoint in category pages #4393
899
- * Fixed: Open graph tags not loading from the SEO framework #4399
900
- * Fixed: Blank class in archives loop and loop on homepage #4390
901
- * Fixed: Pagination of category module going to top of the page #4401
902
- * Fixed: Fatal error in customizer in trucking theme #4391
903
- * Fixed: Auto Add AMP in Menu option not working in subdomain #4423
904
- * Fixed: Showing entities instead of UTF-8 in footer json #4395
905
- * Fixed: Ninja Tables plugin css was hiding due to class drawer #4428
906
- * Fixed: AMP Option panel improvements #4408
907
-
908
- = 1.0.45 (30th April 2020) =
909
- * Fixed: Updated the code as per yoast latest version to fixed the canonical, title separator, meta tag errors #4415
910
- * Fixed: Content links unclickable with GDPR #4392
911
-
912
- = 1.0.44 (29th April 2020) =
913
- * Fixed: Multiple issues created after the latest update of Yoast (14.0 and above) #4412
914
-
915
- = 1.0.43 (28th April 2020) =
916
- * Improvement: Added option to hide category description #4388
917
- * Improvement: Added option to remove Google index on paginated pages #4372
918
- * Improvement: Added Filter for amp-carousel #4374
919
- * Improvement: Code improvements in Related posts and Facebook instance article #4300 #4386
920
- * Fixed: Fatal error with the latest update of yoast 14.0 #4412
921
- * Fixed: AMP Lightbox is not working #4378
922
- * Fixed: White spacing in the responsive mode on left side #4375
923
- * Fixed: Video docking is not working in AMP. #4352
924
- * Fixed: Shortcodes displaying in meta descrption #4385
925
- * Fixed: Debug Warnings: count(): Parameter must be an array or an object that implements Countable. #4387
926
-
927
- = 1.0.42 (21st April 2020) =
928
- * Improvement: Added Comments module in our AMP page builder #4106
929
- * Improvement: Added CSS icons option #4268
930
- * Improvement: Added Support for Call Rail analytics #4331
931
- * Improvement: Added Pinterest embeded images in AMP #4361
932
- * Improvement: Added Video docking feature in AMP #4352
933
- * Improvement: Added option for one signal notificaion on the pages #4349
934
- * Fixed: Mobile redirection issue on robots.txt page #4369
935
- * Fixed: 404 error when we click on the comment section with Google Sitekit #4360
936
- * Fixed: Fixed width not working in 2 coloum in AMP pagebuilder #4379
937
- * Fixed: Label markup was visible even after set to empty in content module in AMP pagebuilder #4379
938
-
939
- = 1.0.41 (14th April 2020) =
940
- * Improvement: Video docking issue #4352
941
-
942
- = 1.0.40 (14th April 2020) =
943
- * Improvement: Added Filter to change post title tag #4339
944
- * Improvement: Added Rankmath's open external links option feature #4356
945
- * Improvement: Added Themify compatibility #4332
946
- * Improvement: Added AAWP for AMP extension #4337
947
- * Improvement: Added Formidable forms for AMP #4345
948
- * Improvement: Added Reading progress bar for AMP #4364
949
- * Improvement: Added hooks in header for all designs #4359
950
- * Improvement: Added option for one signal notificaion on the pages #4349
951
- * Fixed: Mobile redirection not working in the latest update #4336
952
- * Fixed: AMP option panel not working in Best brokers plugin #4330
953
- * Fixed: AMP option panel not working in custom theme of user #4353
954
- * Fixed: Table not looking good on mobiles #4309
955
- * Fixed: Double quotes in the font-family breaks default Typography #4328
956
- * Fixed: Featured images are getting streched in the amp version #4307
957
- * Fixed: The menu and article links not working after enabling GDPR #4340
958
- * Fixed: Facebook instance article is not working in plain permalink #4354
959
- * Fixed: Video docking is not working in AMP #4352
960
- * Fixed: There is no save button in AMP "Basic setup" #4343
961
- * Fixed: Debug warning #4341
962
-
963
- = 1.0.39 (3rd April 2020) =
964
- * Improvement: Code improvements in related post #4300
965
- * Fixed: Images are streching in the gallary #4334
966
-
967
- = 1.0.38 (1st April 2020) =
968
- * Improvement: Added Title for facebook comments section #3716
969
- * Improvement: Added iZooto support for AMP #4312
970
- * Fixed: Alignment issue in Advertisement Section #4325
971
- * Fixed: Slow Queries on Homepage in D3 #4319
972
- * Fixed: Category module links in AMP pagebuilder doesn't change to ?amp #4314
973
- * Fixed: Debug Warnings #4324 #4321 #4299
974
-
975
- = 1.0.37 (28th March 2020) =
976
- * Improvement: Added filter to change Author name #4238
977
- * Improvement: Added option to show/hide jetpack related post in AMP #4272
978
- * Improvement: Added option to show/hide sassy social share in AMP #4273
979
- * Improvement: Added iZooto Push Notification Option #4286
980
- * Improvement: Code Improvements in #4288 #4300
981
- * Fixed: Fatal Error - Class ‘QM_Dispatchers’ not found. #4322
982
- * Fixed: Header shifting to left in swift 404 page #4316
983
- * Fixed: Fatal error on activation on old php versions #4320
984
- * Fixed: Design breaks in 2 column layout pagebuilder in Design 2 #4313
985
- * Fixed: Hide AMP Bulk Tools option isn't working with WPML #4249
986
- * Fixed: Transparent header background color not working #4315
987
-
988
- = 1.0.36 (26th March 2020) =
989
- * Improvement: Added filter to modify role based access #4303
990
- * Improvement: Added "srcset" on featured images #4257
991
- * Improvement: Added option to resize the author images in author bio #4297
992
- * Fixed: AMP child theme not working after update #4310
993
- * Fixed: amp-fx-collection script was not loading #4275
994
- * Fixed: Minify HTML & Query Monitor not working on some pages in AMP #4301
995
- * Fixed: Related posts doesn't show more than 3-4 #4300
996
- * Fixed: Incorrect alignment of Edit in twenty twenty WP theme #4246
997
- * Fixed: Social Icons are out of alignment in Design 2 #4305
998
-
999
- = 1.0.35 (23th March 2020) =
1000
- * Fixed: Related post images not having alt attribute #4282
1001
- * Fixed: iframes are not working with WP optimize premium #4290
1002
- * Fixed: input type file error #4289
1003
- * Fixed: next and prev alignment issue in design 2 #4211
1004
- * Fixed: 404 PHP File is not getting overried from the child theme #4284
1005
- * Fixed: Error in "Optimize loading of Google font" in SG Optimizer #4287
1006
- * Fixed: amp-vimeo Validation error of invalid value 'ondemand' #4294
1007
- * Fixed: AMP Option panel improvements #4277 #4288
1008
-
1009
- = 1.0.34 (19th March 2020) =
1010
- * Improvement: Matomo (Piwik) analytics improvements #4271 #4280
1011
- * Improvement: Custom page template improvements #4244
1012
- * Improvement: Option to add/remove "nofollow" in the comment button #4266
1013
- * Fixed: Spaces issue fixed in image carousel #4141
1014
- * Fixed: Reusable blocks not working in the Custom AMP Editor #4187
1015
- * Fixed: Comments pagination was not working in amp takeover beta #4251
1016
- * Fixed: lightbox issue fixed #4222
1017
- * Fixed: When AMP Dev mode and Mobile redirection both kept on then the website displays AMP on the mobile device #4276
1018
- * Fixed: debug warnings on Fresh WP installation #4270
1019
- * Fixed: Treeshaking was not working with "Product Review Lite Plugin" #4256
1020
- * Fixed: Tables was not responsive in Mobile view design one #4278
1021
- * Fixed: Have to make compatible with wordpress4.4.2 version #4262
1022
- * Fixed: Click here link not working in mobile view of Subscribe to Comments Reloaded plugin #4225
1023
- * Fixed: Post pagination not working in custom AMP Editor #4255
1024
- * Fixed: Depreciated categories widget #4274
1025
- * Fixed: Weekday removed from parameter 'published at' in the analytice code #4281
1026
-
1027
- = 1.0.33 (11th March 2020) =
1028
- * Fixed: Categories not Hiding in Instant Articles #4254
1029
- * Fixed: Error when activating imagify plugin #4260
1030
- * Fixed: Start attribute not working in ol tags #4243
1031
- * Fixed: Search form not working in template mode #4227 #4224
1032
- * Fixed: Save button was disappearing when theme build on Redux framework #4259
1033
- * Fixed: SVG tag was removing in anchor tag #4252
1034
- * Fixed: Filter added to modify font face URL's #4258
1035
- * Fixed: Elementor CSS not loading on frontpage in ALL in One SEO #4253
1036
- * Fixed: Undefined variable: get_amp_custom_frontpage_id #4265
1037
- * Fixed: Images are not showing in AMP with Neva Child Theme #4261
1038
- * Fixed: AMP Option panel improvements #4245 #4269
1039
-
1040
- = 1.0.32 (6th March 2020) =
1041
- * Fixed: Syntax breaking in advanced google analytics section #4228
1042
- * Fixed: Optimize CSS (Tree shaking) not clearing on post update #4234
1043
- * Fixed: Compatibility with the CIARO theme #4220
1044
- * Fixed: Custom JavaScript are not allowed issue #4233
1045
- * Fixed: Need to remove search option when header type 2 is selected #4214
1046
- * Fixed: CSS of the CTA button in AMP page builder is disturbed in the mobile view #4215
1047
- * Fixed: image broken in light speed cache plugin #4231
1048
- * Fixed: Youtube video is not working in " The issue" Theme #4223
1049
- * Fixed: Removed '/amp' in menu with custom link #4221
1050
- * Fixed: Wrong Yoast Canonical when amp link added #4229
1051
- * Fixed: Call to undefined function session_start() in redirect.php:67 #4236
1052
- * Fixed: Content Sneak Peek issue with below the content ads in Mozilla browser. #4178
1053
- * Fixed: The mandatory attribute 'target' is missing in tag form #4239
1054
- * Fixed: Query Monitor queries should be visible in amp pages too when logged in. #4250
1055
- * Fixed: The input should be cleared When search button is clicked in AMP options Panel#4247
1056
- * Fixed: Multiple debug warnings. #4242
1057
-
1058
- = 1.0.31 (28th February 2020) =
1059
- * Improvement: Added option to hide vukkle comments emoji #4194
1060
- * Improvement: Added alt for images in Slider module of AMP page builder #4193
1061
- * Improvement: Updated sabberworm folder #4142
1062
- * Fixed: Fatal Error fixed with zombify plugin #4184
1063
- * Fixed: Validation error due to Mediavine Plugin #4206
1064
- * Fixed: Instant article bug #4150
1065
- * Fixed: AMP Search Not Working with Betheme #4195
1066
- * Fixed: StackPath CDN not working #4123
1067
- * Fixed: Extra 301 redirect after enabling ?amp #4167
1068
- * Fixed: Table CSS improved #4185
1069
- * Fixed: Debug Warnings #4226
1070
- * Fixed: AMP Option panel improvements #4202 #4219
1071
-
1072
- = 1.0.30 (24th February 2020) =
1073
- * Improvement: Added Autoplay in Image Gallery #3705
1074
- * Fixed: Jetpack lazy loading not working due to our AMPforWP plugin #4183
1075
- * Fixed: Amp comments Bug with update 1.0.28 #4209
1076
- * Fixed: Removed Table styles when AMP Pagebuilder compatibility plugin is active #4185
1077
- * Fixed: Debug warning fixed #4204 #4212
1078
-
1079
- = 1.0.29 (21th February 2020) =
1080
- * Improvement: Created an option for entering URLs to prefetch. #3997
1081
- * Fixed: Admin bar css is not loaded on amp pages #4130
1082
- * Fixed: Optimize amp pages and CSS #3579 #4174
1083
- * Fixed: When the tree shaking is enabled then the CSS of the layouts break #4113
1084
- * Fixed: Extra 301 redirect after enabling ?amp #4167
1085
- * Fixed: Break in layout when AMP takeout and conver to wp is enabled together #4176
1086
- * Fixed: There should be no notices or messages from other third party plugins on the AMP option panel. #4166
1087
- * Fixed: Incorrect time showing on AMP if we select Timezone as UTC-3 #4160
1088
- * Fixed: WPappbox images are not loading on the amp pages #4161
1089
- * Fixed: CSS of CTA button is over-riding while using more than one CTA in AMP pagebuilder. #4173
1090
- * Fixed: Notice Errors - Trying to get property 'title' #4196
1091
- * Fixed: Warning issue on AMP option panel. #4172
1092
- * Fixed: Display the Search button in AMP option panel. #4165
1093
- * Fixed: Warning Errors #4200
1094
- * Fixed: amp-access script is not being appended via Enter HTML in Head #4199
1095
- * Fixed: Issues related to category support on the AMP Pages #4151
1096
- * Fixed: AMP Options panel UI bugs #4180 #4179 #4105
1097
-
1098
- = 1.0.28 (18th February 2020) =
1099
- * Improvement: Scripts added from Options panel should have higher priority in the frontend #4064
1100
-
1101
- = 1.0.27 (16th February 2020) =
1102
- * Fixed: Bugs in Imagify plugin #3908
1103
- * Fixed: GDPR popup not blocking header #4155
1104
- * Fixed: Save button dissappers when clicked on setup settings #4169
1105
- * Fixed: Alignment issue when there is no caption on featured image #4171
1106
- * Fixed: Whitelisted Picture tag #4051
1107
- * Fixed: Show/Hide Slider or Icon module in AMP Pagebuilder is not clickable #4153
1108
- * Fixed: Debug warning when empty item added in Slider module in AMP pagebuilder #4152
1109
- * Fixed: Empty link in facebook share in sticky bar #4154
1110
- * Fixed: AMP Options panel UI bugs #4122 #4162
1111
-
1112
- = 1.0.26 (13th February 2020) =
1113
- * Improvement: import/export option improved #4089
1114
- * Fixed: Added option to show/hide featured image on AMP pagebuilder #4131
1115
- * Fixed: AMP Options panel UI bug #4122
1116
-
1117
- = 1.0.25 (12th February 2020) =
1118
- * Fixed: Title issue #4138
1119
-
1120
- = 1.0.24 (11th February 2020) =
1121
- * Improvement: Added filter to modify the breadcrumb homepage url #4077
1122
- * Fixed: Image alignment on the left issue #4156
1123
- * Fixed: H1 tag not appearing on posts #4121
1124
- * Fixed: "Title on static page front page" option not working #4138
1125
- * Fixed: AMP Menu option was not showing in WP settings #4129
1126
- * Fixed: Blank Events Calendar Months Page when 'Minify' option is enabled #4080
1127
- * Fixed: Removed '@' in Twitter Handle #4135
1128
- * Fixed: Message improved when "Leverage Browser Caching" option is enable without readable or writable permission of htaccess file #4127
1129
- * Fixed: Featured image removed on AMP Pagebuilder pages #4131
1130
-
1131
- = 1.0.23 (7th February 2020) =
1132
- * Fixed: Fatal error in amp theme framework if WordPress directory is modified #4145
1133
- * Fixed: Iframe error due to Jetpack #4125
1134
- * Fixed: Menu transient increased to avoid deadlock error #4133
1135
- * Fixed: Moved "Breadcrumbs From Yoast" to SEO option Panel section. #3600
1136
- * Fixed: Featured Image from the content is not fetching the image when height and width is not present in the image code in Classic editor. #4096
1137
- * Improvement: Sorting option for Pagebuilder slider/gallery #2014
1138
- * Improvement: Option for showing no. of words in the excerpt of Recent Posts and Related Posts #3640
1139
- * Improvement: Link Comments section with comments order #3740
1140
- * Improvement: Default fallback images Added #3719
1141
- * Improvement: subscript<sub> and superscript<sup> support #4137
1142
- * Improvement: Message added if no seo option is selected but seo plugin is active #4124
1143
-
1144
- = 1.0.22 (6th February 2020) =
1145
- * Fixed: Console error - Uncaught TypeError: Cannot read property 'on' of null #4102
1146
- * Fixed: When Insert post ads plugin is enable then AMP settings panel is not showing. #4107
1147
- * Fixed: Search console error fixed on WooCommerce wishlist page #4097
1148
- * Fixed: GTM Added in Basic Setup and code improvements #4108
1149
- * Fixed: The meta tags was not working in Head section #4116
1150
- * Fixed: Upgrade to Pro button was missing in the AMP setting panel #4118
1151
- * Fixed: Upgrade to Pro option was removing in the setting panel when we activate PWA for WP plugin #4117
1152
- * Fixed: FAQ section improved #4119
1153
-
1154
- = 1.0.21 (4th February 2020) =
1155
- * Fixed: Fatal error when AMP theme framework is active #4128
1156
-
1157
- = 1.0.20 (31st January 2020) =
1158
- * Improvement: Filter added to Modify the location of the theme files from plugin older. #4091
1159
- * Improvement: Cache Should auto clear when any plugin is activated/deactivated #4046
1160
- * Improvement: Need to add nofollow feature in cookie notification option #3612
1161
- * Fixed: Pages won't save apostophies in AMP page builder text module. #4074
1162
- * Fixed: Warring in console : [DOM] Found 2 elements with non-unique id #amp-search #3946
1163
-
1164
- = 1.0.19 (29th January 2020) =
1165
- * Improvement: EWWW Image Optimizer plugin Compatibility #3984
1166
- * Fixed: WP Admin toolbar CSS is not loading when user is logged in #4076
1167
- * Fixed: AMP Options panel UI improvements done. #4088
1168
- * Fixed: video is not displaying in AMP when a video is inserted from gutenberg video module #4086
1169
- * Fixed: Performance section all features not working when Ezoic integration plugin is active. #4092
1170
- * Fixed: Playbuzz is not working #4085
1171
- * Fixed: RECENT POSTS label visible if no posts are available #4011
1172
- * Fixed: data-block-on-consent is missing for Vuukle comments when gdpr is enabled #4095
1173
- * Fixed: Remove Purge AMP CDN cache Settings buuton: #4099
1174
- * Fixed: When categories that we exclude from AMP through the plugin configuration present redirection problem along with mobile redirection option #4075
1175
- * Fixed: Alignment issue in GDPR Privacy link. #4101
1176
-
1177
- = 1.0.18 (27th January 2020) =
1178
- * Fixed: Debug warnings with Imagify plugin #3908
1179
-
1180
- = 1.0.17 (27th January 2020) =
1181
- * Improvement: Compatibility with the Imagify plugin #3908
1182
- * Improvement: EWWW Image Optimizer plugin Compatibility #3984
1183
- * Improvement: Accessibility score of Amp Layouts improved in Lighthouse test #4078
1184
- * Fixed: Admin toolbar is not showing on custom amp page #3718
1185
- * Fixed: Bug in Instant article's Single option #3891
1186
- * Fixed: If the user adds the social share link in the users section then we need to show social share icon #3976
1187
- * Fixed: Treeshaking is enabled then " Content sneak to peek " button is showing below the content. #4069
1188
- * Fixed: AMP take over is not working on home page when user have no posts. #4056
1189
-
1190
- = 1.0.16 (24th January 2020) =
1191
- * Improvement: Need to built compatibility with "Mistape" plugin. #3974
1192
- * Improvement: Need to make compatibility with "Transposh WordPress Translation" plugin #3895
1193
- * Fixed: A Table is created trough Gutenberg then CSS of that Table is failing to load in AMP. #3902
1194
- * Fixed: When user search from the AMP site then results page should be in non-AMP. #3977
1195
- * Fixed: Add 'wp-color-picker' as dependency while registering the script #4061
1196
- * Fixed: The "for" attribute is removing in AMP #4054
1197
- * Fixed: Table heading style is not working properly #4050
1198
- * Fixed: Need to change the description of AMP page builder compatibility options when plugin is activated. #3899
1199
- * Fixed: Thumbnail image of homepage should show properly after changing the image size #3882
1200
- * Fixed: Need to remove the default AMP functionality from the User's theme as it is breaking the layout. #4068
1201
- * Fixed: YOAST SEO Analysis is not working properly with AMP Page Builder. #4030
1202
- * Fixed: When AMP is disabled on pages,give an option of hide/unhide AMP on Blog page when in edit mode. #4066
1203
- * Fixed: The tag 'template' requires including the 'amp-mustache' extension JavaScript. #4079
1204
-
1205
- = 1.0.15 (17th January 2020) =
1206
- * Fixed: Sticky Social icons's css not loading correctly on some pages #3980
1207
- * Fixed: Need to add option to hide "AMP version" in view source page(generator). #4000
1208
- * Fixed: Caption of image gallery not displaying #3993
1209
- * Fixed: Need to connect retina image functionality to In-content Related post thumbnails. #4007
1210
- * Fixed: easytoc-icon.png #4041
1211
- * Fixed: AMP links Error. #4016
1212
- * Fixed: Image alignment and Name is not showing AMP #4038
1213
- * Fixed: Need to sanitize amp-mowplayer tag when added in the content. #4044
1214
- * Fixed: Set the priority to high of the icomoon CSS to override every other CSS,in AMP page builder. #4035
1215
- * Fixed: when row Wrapper is set to 100%,static css of max width 90% is getting applied from tablet view mode to below #3999
1216
- * Fixed: Code improvement in Detect Component and add or remove script accordingly #4067
1217
-
1218
- = 1.0.14 (14th January 2020) =
1219
- * Fixed: Warning in accelerated-mobile-pages/includes/options/admin-config.php on line 1250
1220
- * Fixed: Code improvement in Detect Component and add or remove script accordingly #4067
1221
-
1222
- = 1.0.13 (13th January 2020) =
1223
- * Fixed: Warring in console : [DOM] Found 2 elements with non-unique id #amp-search #3946
1224
- * Fixed: New Relic script is getting added in AMP and causing validtion error #4018
1225
- * Fixed: Icons are not loading when creating theme compatibility #3766
1226
- * Fixed: Video doesn't work on AMP when inserted from Siteorigin pagebuilder (Video player widget) #3936
1227
- * Fixed: Minor issues with amp need to fix #3931
1228
- * Fixed: When from amp page builder adding text module then space is not coming in paragraph #3982
1229
- * Fixed: Getting error at home page when push notification option is enabled. #4026
1230
- * Fixed: Please Fix Errors in Google Lighthouse audit in Accessibility (using Swift, Amp Layouts) #3949
1231
- * Fixed: Remove offers from the panel #4027
1232
- * Fixed: Detect Component and add or remove script accordingly #4067
1233
- * Fixed: GTM tags are not working in the updated version 1.0.9 but Google Analytics is working,Also in version 1.0.0 both are working fine #4059
1234
- * Fixed: Matomo (Piwik) Analytics generating errors in Console. #4042
1235
-
1236
- = 1.0.12 (12th January 2020) =
1237
- * Fixed: Detect Component and add or remove script accordingly #4067
1238
-
1239
- = 1.0.11 (11th January 2020) =
1240
- * Fixed: In amp-pixel script adding automatically. #4057
1241
-
1242
- = 1.0.10 (10th January 2020) =
1243
- * Improvement: Need a hook to use it in Woocomerce #4048
1244
- * Fixed: Scripts are not adding properly if user is adding the content through embed #4040
1245
- * Fixed: When Featured Image from The Content is turned on,the image is not displayed when Creating post from Gutenberg. #4022
1246
-
1247
- = 1.0.9 (8th January 2020) =
1248
- * Fixed: Odd behaviour of Optimize CSS (Treeshaking),when turned off resolves the validation errors and when turned on adding unnecessary wp-block CSS. #4036
1249
- * Fixed: After enable the Tree shaking feature the CSS not loading properly #4034
1250
- * Fixed: fallback feature is not working on SVG images #4033
1251
- * Fixed: Need to update the Form Sanitizer to allow only the required from #4010
1252
- * Fixed: 404 error in console with Images having webp extension. #3983
1253
-
1254
- = 1.0.8 (2nd January 2020) =
1255
- * Fixed: Need to add Rankmath's "Nofollow External Links" feature. #3970 (updated the code)
1256
-
1257
- = 1.0.7 (2nd January 2020) =
1258
- * Improvement: Need to add Rankmath's "Nofollow External Links" feature. #3970
1259
- * Improvement: Need to add floating button in extension list #3972
1260
- * Fixed: AMP theme framework GDPR module should be connected to GDPR Compliancy in option panel. #3963
1261
- * Fixed: Breadcrumbs are not properly displaying and working in updated version #3917
1262
- * Fixed: amp-auto-ads script is loading in AMP-pages when Google site kit plugin is enable. #4009
1263
- * Fixed: wp-block CSS is heavily loading even when tree shaking is enabled in core. (Page builder is enabled) #4014
1264
-
1265
- = 1.0.6 (31st December 2019) =
1266
- * Improvement: Allow users to add custom script in amp by using amp theme frame work plugin or without plugin #3865
1267
- * Improvement: Allow users to register scripts in proper way in AMP Theme Framework #3257
1268
- * Improvement: Need to add filter to modify mobile redirection #3987
1269
- * Improvement: Need to update Sabberworm/CSS folder. #4012
1270
- * Improvement: Need to make compatibility with "Transposh WordPress Translation" plugin #3895
1271
- * Fixed: Warning issue with "$amp_emplate->get('metadata')" undefined metadata #3967
1272
- * Fixed: GDPR popup appears once agin after accepting it #3957
1273
- * Fixed: AMP Page apears blank after adding script tag in Head Section of AMP Page Builder #3834
1274
- * Fixed: when user is not an admin and the admin bar is getting displayed as gap on the site #3918
1275
- * Fixed: Option Panel not saving in AMP FOR WP, it is giving 404 error #3768
1276
- * Fixed: Page Builder Latest Posts Category Module #3927
1277
- * Fixed: Error amp-iframe extension .js appears more than once #3810
1278
- * Fixed: Query monitor is not working in our latest version. #4008
1279
- * Fixed: Google Tag manager not firing properly #3826
1280
- * Fixed: Undefined variable block_css #4021
1281
-
1282
- = 1.0.5 (30th December 2019) =
1283
- * Fixed: Menu arrow icon not showing properly in mobile version #3995
1284
- * Fixed: Google Tag manager not firing properly #3826
1285
-
1286
- = 1.0.4 (26th December 2019) =
1287
- * Fixed: When Optimize CSS (beta) option is enabled AMP page is getting blank #3994
1288
-
1289
- = 1.0.3 (23th December 2019) =
1290
- * Improvement: Filter in search form #3948
1291
- * Improvement: Improvement of jetpack social icons #3907
1292
- * Improvement: Need to add a Filter in amp tree shaking for adding custom CSS. #3971
1293
- * Fixed: Icomoon.ttf is preloaded in Design 1 and Design 2. #3945
1294
- * Fixed: Search translate text option is visible in swift but unused #3934
1295
- * Fixed: Category module has minor bugs after the update. #3880
1296
- * Fixed: Improvements required in RTL support in AMP #3938
1297
- * Fixed: Save buttons are not looking good after WP 5.3 update #3985
1298
- * Fixed: Video widget support in AMP #3841
1299
- * Fixed: Time is not working in published date notice #3956
1300
- * Fixed: Recoverable fatal error: Object of class DOM Node List could not be converted to string #3968
1301
- * Fixed: In Amp struture data option if we added any schema then description generated in html format #3937
1302
- * Fixed: Select Taxonomy and Select Category is getting blank in the category module of AMP page builder #3986
1303
- * Fixed: Notice: Undefined offset: 0 in class-amp-post-template.php on line 378 #3992
1304
- * Fixed: Undefined variable: designCss #3961
1305
- * Fixed: Open Graph title is not displaying correctly with SEOPress in AMP. #3966
1306
-
1307
- = 1.0.2 (19th December 2019) =
1308
- * Improvement: Need to add wordpress default Gutenburg editor 'Block' settings Compatibility in AMP #3320
1309
- * Improvement: Need to make compatibility with the Imagify plugin #3908
1310
- * Improvement: Taxonomy support in AMP Page Builder category module #3310
1311
- * Improvement: Add support of fallback images in AMP #3790
1312
- * Improvement: General code improvements part 3 #3941
1313
- * Improvement: Drop down support in Alternative Menu in Mobile view. #2768
1314
- * Fixed: The Alternate Menu does not redirecting to the AMP for the product category in menu items #3915
1315
- * Fixed: Sub-Category Archives on AMP page should be connected to Change internal links to AMP option. #3924
1316
- * Fixed: Debug warning : Undefined index element #3958
1317
- * Fixed: MGID Ads are not loading when the Flexible AMP widget option is enabled in the AMP #3864
1318
- * Fixed: The Close bar is not appearing menu check in mobile iPhone #3964
1319
-
1320
- = 1.0.1 (14th December 2019) =
1321
- * Fixed: Telegram as social profile #3754
1322
- * Fixed: Give default styling for <small> tag. #3879
1323
- * Fixed: When pagination is enabled in Category Module,translation option should be given in Advanced. #3847
1324
- * Fixed: An issue with Code module in AMP page puilder. #3833
1325
- * Fixed: Getting an error while validating page when using Disqus comments #3871
1326
- * Fixed: Content is updated programatically on /amp/ page view, bad revision is created #3822
1327
- * Fixed: Custom Post types and taxonomies option should be only visible when Archives is enabled #3903
1328
- * Fixed: After reloading 'Select Categories to Hide AMP', it shows empty #3898
1329
- * Fixed: In exclude Categories option the "No items of this type were found." message is displaying #3900
1330
- * Fixed: Cannot use a scalar value as an array #3823
1331
- * Fixed: Debug warnings. #3932
1332
- * Fixed: Google Tag manager not firing properly #3826
1333
-
1334
- = 1.0.0 (11th December 2019) =
1335
- * Improvement: Need to clear amp treeshaking css for reset section button. #3916
1336
- * Improvement: Need to add easy table of contents in extension list #3922
1337
- * Fixed: If hide amp hide on post or pages from anywhere then that needs to redirect to 301 #3767
1338
- * Fixed: Need to add filter in "wp_localize_script" #3764
1339
- * Fixed: Need to add preload key requests for font icons #3752
1340
- * Fixed: Advance footer options should not be hidden by default #3652
1341
- * Fixed: Button Rel Attribute #3872
1342
- * Fixed: Need to update the PWA for WP extension from the options panel #3888
1343
- * Fixed: “View AMP” Button Showing CSS on frontend #3890
1344
- * Fixed: Images get streched in new version of the AMP FOR WP Plugin #3914
1345
- * Fixed: Need to remove one signal push notification button in pages. #3874
1346
- * Fixed: when images are placed along with the anchor tag in gallery module of guntenberg editor the image src is getting unknown in AMP #3923
1347
- * Fixed: When RTL is enabled,the menu in header is going to right but the elements in right are not moved to left. #3881
1348
-
1349
- = 0.9.98.22 (9th December 2019) =
1350
- * Improvement: Need to add full short pixel plugin compatibility #3782
1351
- * Fixed: Need to improve UI when "Saved" notification displays. #3856
1352
- * Fixed: Need to show the Attention message when custom AMP editor box checked but there is no content in it #2866
1353
- * Fixed: Issue with AMP page builder tool when images are inserted in slider module. #3780
1354
- * Fixed: Hidden posts in AMP should not show in related posts #3839
1355
- * Fixed: Make header Unsticky not working when Infinite scrolling is turned on. #3831
1356
- * Fixed: The post title appears 2 times: after the parent category and after the child on breadcrumb. #3724
1357
- * Fixed: data-block-on-consent missing in GTM code #3911
1358
- * Fixed: Debug error #3910
1359
- * Fixed: PHP Warnings from redux filesystem #3901
1360
- * Fixed: Debug notice #3913
1361
- * Fixed: Sidebar Widgets Default CSS should load on Woo commerce Sidebar #3912
1362
- * Fixed: Images get streched in new version of the AMP FOR WP Plugin #3914
1363
-
1364
- = 0.9.98.21 (3th December 2019) =
1365
- * Improvement: Fonts support in all three designs one, two and three along with the swift Theme #1914
1366
- * Improvement: Need to create Testimonial slider in AMP Page Builder #2960
1367
- * Improvement: Need to create an optional option for the side menu when people click on the text the links should be dropped. links sub links #3428
1368
- * Improvement: Need to make compatibility with this plugin Stop Generating Image Sizes #3851
1369
- * Improvement: Improve Matemo analytics integration #3757
1370
- * Fixed: Breadcrumb breaks when '/' is present in category name #3769
1371
- * Fixed: Back to top button CSS loading twice in Design 1,2,3. #3835
1372
- * Fixed: Removing trbidi attribute #3687
1373
- * Fixed: Upgrade to AdsforWP button not working properly. #3681
1374
- * Fixed: Tooltip alignment is missing in Advertisement #3625
1375
- * Fixed: Media queries are removing automatically in media queries merging process #3797
1376
- * Fixed: Excerpt on homepage is not working properly. #3866
1377
- * Fixed: Author links are redirecting to AMP even when the Archives is turned off. #3875
1378
- * Fixed: Issue related to image height and width #3857
1379
- * Fixed: Gutenberg Gallery Images are not displayed correctly when any option is selected in WordPress Content Gallery. #3868
1380
- * Fixed: Google Tag manager not firing properly #3826
1381
- * Fixed: After Update AMP option panel design is changing #3877
1382
-
1383
- = 0.9.98.20 (27th November 2019) =
1384
- * Fixed: Menu closer icon is getting overlapped by the header part of firefox web browser #3744
1385
- * Fixed: Instagram TV videos are not rendering into AMP #3812
1386
- * Fixed: Need To move CTA button in header two in sidebar if the website layout is in mobile view #3669
1387
- * Fixed: When the image is added from ThirstyAffiliate image block from Guntenber editor facing validation error #3706
1388
- * Fixed: PHP Warning:DOMDocument::loadHTML(): Empty string supplied as input #3745
1389
- * Fixed: When Convert AMP to WP theme (Beta) option is enabled Back to Top link functionality is not working #3695
1390
- * Fixed: Post date always shows 3 hours ago #3624
1391
- * Fixed: Gutenberg Design Bugs #3645
1392
- * Fixed: Toolbar AMP link bug #3692
1393
- * Fixed: Breadcrumb icommon symbol direction should be changed when RTL is enabled in Swift. #3678
1394
- * Fixed: Extra CSS are loading in swift and AMP Layouts #3414
1395
- * Fixed: Remove Digg and Google plus option form Social Sharing #3709
1396
- * Fixed: When Yoast SEO plugin is activated the same excerpt shows #3708
1397
- * Fixed: Allow people to use captions below thumbnails in gallery #3702
1398
- * Fixed: Design improvements of D2 #3637
1399
- * Fixed: Fatal error: Uncaught Error: Cannot use object of type stdClass as array (after 98.15) #3867
1400
- * Fixed: In amp gallery need to make improvement in arrow #3860
1401
- * Fixed: Performance issues in AMP FOR WP #3732
1402
- * Fixed: Yoast Separator is converting from Hyphen to Dash #3783
1403
- * Fixed: Multiple UX related modifactions #3869
1404
- * Fixed: strpos() debug error after 19 update #3878
1405
-
1406
- = 0.9.98.19 (25th November 2019) =
1407
- * Fixed: image transients should clear automatically #3781
1408
- * Fixed: CTA button in header could be made no follow #3798
1409
- * Fixed: In IOS screen, Menu cross button is not appearing in Swift design #3809
1410
- * Fixed: Comment closed opion need to be removed. #3750
1411
- * Fixed: In template mode Need to show extension setting panel. #3728
1412
- * Fixed: Facebook comment is not changing language when we select another language #3710
1413
- * Fixed: Single Sidebar data is visible in Homepage #3636
1414
- * Fixed: Need to remove width from inline style on amp images #3741
1415
- * Fixed: If permalinks is set as "/index.php/%year%/%monthnum%/%day%/%postname%/" then not working properly with Pagination #3537
1416
- * Fixed: Canonical url is changing in cateogry pages when cateogry name start with amp #3694
1417
- * Fixed: general fixes and improvements part 2 #3621
1418
- * Fixed: Warning: strpos(): Empty needle in /home/statecer/public_html/wp-content/plugins/accelerated-mobile-pages/templates/features.php on line 5788 #3870
1419
-
1420
- = 0.9.98.18 (21th November 2019) =
1421
- * Improvement: Show the number of shares with Sassy Social Share #3588
1422
- * Fixed: Need to improvment in table code #3664
1423
- * Fixed: Change internal links to AMP is not working when custom permalink having the extenison.html #3811
1424
- * Fixed: Width of the recent posts and related posts thumbnail image should be same #3639
1425
- * Fixed: Page should be full width if the page builder is used #3756
1426
- * Fixed: Remove broken link on source code like "<link rel="dns-prefetch" href="https://cdn.ampproject.org">." #3697
1427
- * Fixed: leave a comment added when making pages with pagebuilder #3755
1428
- * Fixed: Need to adding gaping for col 2 in AMP Pagebuilder #3796
1429
- * Fixed: CSS issue. #3785
1430
- * Fixed: Facebook comment is not changing language when we select another language #3710
1431
- * Fixed: Verify button of Google Font API key is not working after update #3858
1432
- * Fixed: Cache is not clearing after clicking clear cache button #3863
1433
-
1434
- = 0.9.98.17 (19th November 2019) =
1435
- * Fixed: Validation error of 'srcset' in 'amp-img' after Latest update of Divi Theme (From version 4.0.2) #3803
1436
- * Fixed: Logo is not resizing when using fixed width #3696
1437
- * Fixed: Fatal Error when "AMP FOR WP" is activated on AMP FOR WP Garage URL #3765
1438
- * Fixed: Images and Videos with Gutenberg does not have proper spacing #3634
1439
- * Fixed: Undefined variable: amp_url #3776
1440
- * Fixed: amp-image-lightbox markup is loading in paginated post even the image is not present #3700
1441
- * Fixed: Search results on/off option in amp #3786
1442
- * Fixed: Internal links are breaking in Persian language #3777
1443
- * Fixed: Use util function to get array component. Fixes #3778 #3842
1444
- * Fixed: Add Hyperlink option to Gallery module images. #3850
1445
- * Fixed: Need to remove WPBakery Page Builder Support Option #3855
1446
-
1447
- = 0.9.98.16 (18th November 2019) =
1448
- * Improvement: Need to make compatibility of Advance setting options of yoast seo into AMP #3684
1449
- * Improvement: Add filter to modify HTML attributes #3685
1450
- * Fixed: Jetpack causing errors after update #3849
1451
- * Fixed: Facebook like button is not showing correctly after last update in design3 #3742
1452
- * Fixed: [URGENT] Vuukle API KEY missing #3792
1453
- * Fixed: Admin tool bar css is not loading #3788
1454
- * Fixed: Hide button always showing on page #3762
1455
- * Fixed: Meta description are not showing properly in genesis #3761
1456
- * Fixed: Non-Responsive tables after version 0.9.98.9 #3746
1457
- * Fixed: Wrong amphtml when static page is selected in reading settings along with ?amp endpoint #3717
1458
- * Fixed: Homepage posts image alignment issue #3691
1459
- * Fixed: Lightbox not working for single images #3683
1460
- * Fixed: Notice: Undefined index: category #3829
1461
- * Fixed: Notice: Undefined variable: category_name #3827
1462
- * Fixed: AMP Dev mode when disabled throwing a fatal error in mobile mode for blog. #3824
1463
- * Fixed: Warning when trying to save the option #3800
1464
-
1465
- = 0.9.98.14 (7th OCTOBER 2019) =
1466
- * Fixed: Value Attribute Stripping out from the forms added in the content. #3689
1467
- * Fixed: Remove AAWP from extension list #3735
1468
- * Fixed: Data is not saving while Importing options from the json file #3667
1469
- * Fixed: Debug warning #3723, #3729, #3730, #3731
1470
-
1471
- = 0.9.98.13 (27th SEPTEMBER 2019) =
1472
- * Improvements: Need to create an option to clear the cache in tree shaking #3680
1473
- * Improvements: Only get the required dashicons for Admin Toolbar #3707
1474
- * Fixed: When enabling Treeshaking it removes the Swift icons TTF #3665
1475
- * Fixed: List numbers are not in position #3704
1476
- * Fixed: Menu Auto closing when # in the url #3633
1477
- * Fixed: Facebook Like script not loading #3633
1478
-
1479
- = 0.9.98.12 (25th SEPTEMBER 2019) =
1480
- * Improvements: User wants Wordpress admin toolbar in the AMP area #3450
1481
- * Improvements: we want the amp menu showing from left or right side both. #3095
1482
- * Improvements: Add feature to increase width for facebook like button and also add feature of data-action="recommend" #3241
1483
- * Improvements: Improvements in Design 1 2 and 3 option panel in Header section #3642
1484
- * Fixed: Update Stops Google Analytics tracking #3690
1485
- * Fixed: Lightbox not working for single images #3683
1486
- * Fixed: Language of Menu not changing when changing website language #3522
1487
- * Fixed: We need to allow people to turn off the social section fully #3613
1488
- * Fixed: Ui Design issues #3616
1489
- * Fixed: Dropcap option should only be enabled on the posts, not from pages. #3614
1490
- * Fixed: Social share position is not working in single design 2#3627
1491
- * Fixed: AMP text module is not working in Widget area #3644
1492
- * Fixed: Social media icons and comments should be below the post content on pages #3647
1493
- * Fixed: Breadcrumbs are breaking after enabling ""Post title on Breadcrumb" option #3648
1494
- * Fixed: line share link is getting added when sharing on telegram#3666
1495
- * Fixed: In social sharing Twitter Handle and Pretty Permalinks for Twitter Share? need to display child option of Twitter#3656
1496
- * Fixed: Extension license dashboard improvements #3654
1497
- * Fixed: Make the chat bubble into a email box for faster input #405
1498
- * Fixed: Option to specify certain taxonomy only in Instant Article Feeds #1489
1499
- * Fixed: Need to remove Legacy Pagebuilder option Safely #3609
1500
- * Fixed: Default heading tag should load if no option is selected in Header Module #3651
1501
- * Fixed: Pretty Permalinks for Twitter Share? option is not working #3662
1502
-
1503
- = 0.9.98.11 (20th SEPTEMBER 2019) =
1504
- * Improvements: Improved AMP Advertisement option panel
1505
- * Fixed: Mobile redirection causing extra redirects from /amp to /amp/ #3660
1506
- * Fixed: The lightbox should not work for the image if any external link is added in its anchor tag. #3599
1507
-
1508
- = 0.9.98.10 (18th SEPTEMBER 2019) =
1509
- * Improvements: Upgrade the analtyics integration with gtag.js #3538
1510
- * Improvements: Need to optimize css classes #3650
1511
- * Fixed: Small sized images are getting stretched in the lightbox. #3602
1512
- * Fixed: Gutenberg Audio Module not working #3597
1513
- * Fixed: Table (thead-th) styling issue after update #3661
1514
- * Fixed: Issue with the post titles in single page (two H2 tags if logo is not inserted) #3641
1515
- * Fixed: search results pages are showing up as 'no index' #3646
1516
- * Fixed: Need to add support of shortcode in category pages #3653
1517
- * Fixed: Custom post description migrates to image description #3606
1518
- * Fixed: AMP for WP conflict with the CDN Enabler plugin #3631
1519
- * Fixed: Warning in Error Log #3655
1520
- * Fixed: Incorrect placeholder "Select the SEO Plugin" in drop-down in AMP option Panel #3663
1521
-
1522
- = 0.9.98.9 (16th SEPTEMBER 2019) =
1523
- * Improvements: Need to implement Tree Shaking feature to remove access css from the AMP pages #2949
1524
- * Improvements: Need to save Post Meta Field Revisions in WordPress #3548
1525
- * Improvements: Add Role based Access to all the options #3480
1526
- * Improvements: Need to improve import/export option. #3364
1527
- * Improvements: Need to make compatibility with amp-connatix-player component #3524
1528
- * Improvements: "Recent Posts below related posts" feature need to implement for the design three #3531
1529
- * Improvements: Need to improve color picker library in AMP FOR WP Plugin #3461
1530
- * Improvements: Recent Posts below Related needs new options #3518
1531
- * Improvements: Excerpt length feature request for related post #2908
1532
- * Improvements: Need to add the option date below the content #3445
1533
- * Improvements: Need to hide time in traditional view option. #3453
1534
- * Improvements: Add feature to go to non AMP page on next and previous links #3253
1535
- * Improvements: Create a filter to Exclude Posts from Related Posts #3582
1536
- * Improvements: Need to add a filter to remove options in sidebar in AMP #3416
1537
- * Improvements: allow option to change the heading tag of Featured module #3560
1538
- * Improvements: AAWP plugin for AMP compatibility in Extension list #3591
1539
- * Fixed: Individual AMP Page (Bulk Edit) "hide by default" option not working #3610
1540
- * Fixed: In Recent Posts below Related need to add which present in below below related post #3596
1541
- * Fixed: Need to shift the Header Background Option and Header Elements option on top in Swift theme #3462
1542
- * Fixed: Need to add 'By Last X Days' option for "In-Content Related Posts" #3219
1543
- * Fixed: Need to add unique class name custom post type #3539
1544
- * Fixed: Need to add Convert AMP to WP theme (Beta) tutorial link in tooltip of this option #3552
1545
- * Fixed: Need to connect with Collapse references by default option of the footnotes plugin. #3586
1546
- * Fixed: Do not generate the AMPhtml for Woocommerce Account Page #3619
1547
- * Fixed: Need to place page builder in custom homepage even amp support is off on pages. #2914
1548
- * Fixed: Need to allow the user to navigate if user is using iframe #3601
1549
- * Fixed: Template mode: Need to changes/fixes #3590
1550
- * Fixed: The lightbox should not work for the image if any external link is added in its anchor tag. #3599
1551
- * Fixed: Improper amphtml on HomePage when WPML is activate #3341
1552
- * Fixed: The GDPR consent not working due to passed as string. #3658
1553
-
1554
- = 0.9.98.8 (7th SEPTEMBER 2019) =
1555
- * Improvements: AMP Option panel in mobile view #2603
1556
- * Improvements: Need to make compatible with yoast seo primary category option #3551
1557
- * Improvements: The "redirect chain" report taking extra steps to process. #3575
1558
- * Improvements: Rank math Titles & Meta compatibility #3592
1559
- * Improvements: Improvement in iframe #3563
1560
- * Improvements: optimize the TEL link to remove validation and provide better UX #3581
1561
- * Fixed: Need to check function exist get_cart_url as it is getting fatal error when only amp woocommere is active. #3584
1562
- * Fixed: Change Internal Links to AMP #3561
1563
- * Fixed: Rare issue with Yoast SEO/Excerpt #3511
1564
- * Fixed: lighthouse issues #3547
1565
- * Fixed: Gallery Captions not working #3536
1566
- * Fixed: Table is not aligning properly in amp version #3549
1567
- * Fixed: Getting Debug error ( cdn_url_main ) #3555
1568
- * Fixed: Delete button gone in page builder in RTL language #3545
1569
- * Fixed: caption design is different when comparing Gutenberg and classic editor #3573
1570
- * Fixed: Image is not aligned properly #3542
1571
- * Fixed: The extension 'amp-wistia-player' was found on this page, but is unused. Please remove this extension. #3587
1572
- * Fixed: No Index issue #2303
1573
- * Fixed: Need to create a basic tutorial for each elements of single in Swift #3499
1574
- * Fixed: Facebook like button is not aligned properly #3589
1575
- * Fixed: h1 was changed to h2 in the custom frontpage title after update #3546
1576
- * Fixed: When using JNews AMP Extender, It makes posts blank #3526
1577
- * Fixed: Infinite scroll script is adding in woocommerce archive pages #3570
1578
- * Fixed: Clicky analytics option getting hidden when GTM is on #3585
1579
- * Fixed: In add on mode when amp is in standard mode frontend is getting blank screen. #3508
1580
- * Fixed: Proper escaping in facebook instant article #3564
1581
- * Fixed: No Icon in Facebook Message when Font Awesome Icon type selected #3572
1582
- * Fixed: yoast breadcrumb making all ul list in capital letters #3540
1583
- * Fixed: Comments should be removed in the out put of Analytics Code #3593
1584
- * Fixed: Related post excerpt is not working with horizontal design #3595
1585
- * Fixed: Issue in Breacrumb if category has a comma #3598
1586
- * Fixed: After last update the cookie bar text shows the html code (a href) instead of creating a link. #3617
1587
-
1588
- = 0.9.98.6 (31st AUGUST 2019) =
1589
- * Improvements: Structured Data improvements #3567
1590
- * Improvements: Addthis share button's postion field in 1,2 and 3 designs #3553
1591
- * Fixed: Rare issue AMP settings are not getting saved showing popup error "There was a problem with your action. Please try again or reload the page." #3494
1592
- * Fixed: Plugin removes Telegram links #3578
1593
- * Fixed: amp-addthis validation error on pages #3580
1594
- * Fixed: Spot.IM Comments not working on all designs #3568
1595
- * Fixed: Incorrect title tags being generated #3565
1596
- * Fixed: Reduce the size of auto inline css. #3115
1597
-
1598
- = 0.9.98.5 (27th AUGUST 2019) =
1599
- * Improvements: Compatibility integrated with CDN enabler #3515
1600
- * Improvements: banner ux section of AMP panel settings improved #3470
1601
- * Improvements: Reduces the size of auto inline css ro avoid validation errors #3115
1602
- * Improvements: Tooltip to show description about "Social Share links to AMP" and "No Follow All Your Social Links" #3456
1603
- * Improvements: Avada pagebuilder compatibility feature integrated ( it will work when 'AMP PageBuilder Compatibility' extension is activate) #3550
1604
- * Improvements: Avia pagebuilder(Enfold) feature integrated ( it will work when 'AMP PageBuilder Compatibility' extension is activate) #3559
1605
- * Improvements: Filters to show or hide option on admin settings for Template-mode #3562
1606
- * Fixed: When AMP Page builder is checked with Empty Content,Container is missing on AMP view #3488
1607
- * Fixed: Validation error when adding featured video with Authentic theme #3535
1608
- * Fixed: User Experience issue with Custom Home Page #2348
1609
- * Fixed: Serach option should be enabled by default when user selected the design-3 #3485
1610
- * Fixed: Logo's resize option should only display when the image is present #3471
1611
- * Fixed: Row module settings popup header is overlapped while scrolling the options in AMP Page Builder #3467
1612
- * Fixed: labeling of the 'Text font' option in 'Row module settings' of AMP Page builder renamed #3468
1613
- * Fixed: When AMP takeover is enabled, the 'visit amp' on admin header should disabled #3502
1614
- * Fixed: Homepage amphtml not getting generated when there are no posts added. #3504
1615
- * Fixed: AMP cache description is getting overlap with the Checkbox description when amp cache extension is activate #3512
1616
- * Fixed: Category module's pagination of AMP Page builder is not working #3509
1617
- * Fixed: There is closing tag of 'a' tag in header-bar.php of design bar, for which there is no opening tag #3479
1618
- * Fixed: Icons not loading When Icon Font Library is selected to Font Awesome from the AMP options #3501
1619
- * Fixed: Shortcode placed with double brackets (i.e., [[shortcode]]) should not execute #3481
1620
- * Fixed: One signal push notification should work properly on AMP if any CDN plugin is used #3340
1621
- * Fixed: Extra options are being displayed after the search is completed in the AMP Options Panel #2874
1622
- * Fixed: In alt attribute's content single quotes should removed #3492
1623
- * Fixed: "amphtml" is not generatiing in sorce code when it comes to search results pages in non AMP #3458
1624
- * Fixed: Woocommerce archives and shop page support should not be dependent on Archives [Category & Tags] option #3558
1625
- * Fixed: noreferrer is getting added automatically, it should have what ever the user passes #3566
1626
-
1627
- = 0.9.98.4 (6th AUGUST 2019) =
1628
- * Improvements: Pagebuilder Compatibility Options in 'AMP By Automattic' Addon Mode Settings #3507
1629
- * Fixed: Design is breaking in swift theme when RTL option is enabled #3527
1630
- * Fixed: Validation error when width and height is empty in the logo #3530
1631
- * Fixed: 'Read more' link in excerpt for category module of AMP page builder #3510
1632
- * Fixed: Mobile redirection causing extra redirects from /amp to /amp/ #3459
1633
- * Fixed: "Recent Posts below Related Posts" option should show only when it is available for the theme #3528
1634
-
1635
- = 0.9.98.3 (2nd AUGUST 2019) =
1636
- * Improvements: OpenGraph Support in AMP #3261
1637
- * Improvements: Compatibility integrated with Cloudflare stream. #3230
1638
- * Improvements: Pagebuilder Compatibility Options in 'AMP By Automattic' Addon Mode Settings #3507
1639
- * Improvements: Some changes in AMP panel setting's defaults #3065
1640
- * Fixed: Search bar is messed up after 3425 and 3000 #3491
1641
- * Fixed: Lightbox effect not working with "Tablepress" when "Link To" option is selected in Attachment display settings #3451
1642
- * Fixed: Fatal error Uncaught Error: Call to undefined function ampforwp_is_non_amp() #3464
1643
- * Fixed: Ol and li design issue in swift theme on RTL mode #3457
1644
- * Fixed: When AMP Page builder is checked with Empty Content, Container is missing on AMP view #3488
1645
- * Fixed: rel=”nofollow” is getting replaced by rel=”noreferrer in links #3483
1646
- * Fixed: In Archives Category & Tags option is disabled, the link should go to non-amp #3486
1647
- * Fixed: Multiple H1 Tag Issues in AMP Version on Home and Category Pages in Design 3 #3466
1648
- * Fixed: Allow href attribute value with associated apps property #3475
1649
- * Fixed: Validation errors in amp category page when HotWP PRO theme is active #3455
1650
- * Fixed: Compatibility issue with WP Offload Media Lite. #3460
1651
- * Fixed: Fatal error Uncaught Error: Call to undefined method RevSliderFunctionsWP::check_for_shortcodes() #3465
1652
- * Fixed: If a title is loading then only its markup should load otherwise not #3495
1653
- * Fixed: In Template mode feature, some fixes #3478
1654
- * Fixed: Meta description option should be enabled by default SEO #3505
1655
- * Fixed: Fatal error Uncaught Error Class 'AMPforWP\AMPVendor\WP_Error' not found #3514
1656
- * Fixed: After the upgrade, AMP Page Builder is not working! #3506
1657
- * Fixed: Page builder content getting blank when we hit save. #3513
1658
- * Fixed: Wp editor not loading when Using Page builder (with Gutenberg) #3517
1659
- * Fixed: Single design 2 in Swift broken in one specific use case #3532
1660
-
1661
- = 0.9.98.2 (25nd July 2019) =
1662
- * Fixed: Menu design issue in Design 3 #3489
1663
- * Fixed: Fatal error when latest version of Smush pro plugin activated #3487
1664
- * Fixed: After Version 0.9.98 update, Background Type gradient options are not showing in Row module of AMP pagebuilder #3490
1665
- * Fixed: Undefined index ampforwp-amp-on-off #3474
1666
- * Fixed: Search bar is not showing in design three after enabling the search option in header option panel #3484
1667
- * Fixed: Content blank if Color Attribute is in Span tag #3497
1668
- * Fixed: Sticky Header has no background color when scrolling. #3498
1669
-
1670
- = 0.9.98.1 (22nd July 2019) =
1671
- * Fixed: Logo and headline comes togeather after .98 update #3472
1672
- * Fixed: Default loading message as '1' in search bar after latest update (.98) #3476
1673
-
1674
- = 0.9.98 (19th July 2019) =
1675
- * Improvements: Option to remove date from Homepage and also in Recent posts #3363
1676
- * Improvements: Option for amp-youtube Embed video attributes in row module of AMP Pagebuilder #3373
1677
- * Improvements: Menu sidebar background and elements color changing option for Design 1, 2 #3402
1678
- * Improvements: MGID Ad support in AMP FOR WP #3431
1679
- * Improvements: Sizes of featured image option for single 1 #3433
1680
- * Improvements: Addthis floating share button feature in amp #3424
1681
- * Improvements: Wistia Plugin Compatibility integrated #3386
1682
- * Improvements: Squirrly SEO Compatibility integrated #3421
1683
- * Improvements: image-slider compatibility added in AMP sanitizer #3422
1684
- * Improvements: Compatability issue with ShortPixel Image Optimizer #3439
1685
- * Improvements: Improve the Search form (Sidebar) design #3425
1686
- * Improvements: AMP footer widget in design three #3411
1687
- * Improvements: Extension list added for AMP Email Extension #3144
1688
- * Improvements: Extension list added for Pinterest for AMP Extension #3195
1689
- * Improvements: Extension list added for Liveblog For AMP Extension #3194
1690
- * Fixed: Close menu button is not showing when a user comes from Google search #3401
1691
- * Fixed: When High-resolution Images option is enabled images link should be generated from higher-order to lower-order in schema markup #3442
1692
- * Fixed: Sticky Social Icons setting should be moved to Social Tab and some changes #3426
1693
- * Fixed: Fall back the header type code in the backend if a user has not selected any header type #3419
1694
- * Fixed: Revolution Slider not working perfectly when a user is inserting video #3311
1695
- * Fixed: Call to action option should be automatically enabled if the user selected header type-2 #3420
1696
- * Fixed: Double quotes on the author area #3441
1697
- * Fixed: Twitter URL is displaying instead of an icon when Zox news theme is active #3409
1698
- * Fixed: Extension code array issue #3438
1699
- * Fixed: Validation error due to amp-facebook-like #3427
1700
- * Fixed: Fatal error cannot redeclare is_amp_endpoint() (previously declared) #3415
1701
- * Fixed: Sticky Social Icons and cookies banner style issue #3452
1702
- * Fixed: Validation error the extension 'amp-next-page' was found on this page, but is unused please remove this extension #3463
1703
- * Fixed: gallery/slider module is not working when Convert AMP to WP theme (Beta) option is enabled #2771
1704
-
1705
- = 0.9.97.65 (16th July 2019) =
1706
- * Fixed: PHP Warning at the top of the site: array_merge(): Expected parameter 1 to be an array #3434
1707
- * Fixed: Disqus comment is not working after version 0.9.97.63 #3446
1708
- * Fixed: Uncaught Error: Call to undefined method WPSEO_Options::get() for Yoast Premium #3447
1709
- * Fixed: Message: when Leverage Browser Caching is not supported #3449
1710
- * Fixed: Added the missing parameter $depth in filter 'nav_menu_item_id' #3454
1711
-
1712
- = 0.9.97.64 (15th July 2019) =
1713
- * Improvements: Performance improvement -- Meta Value Queries #3392
1714
- * Improvements: h1 tag on the archive, search and author pages #3323
1715
- * Improvements: Flipboard as a social sharing option in AMP added #3348
1716
- * Improvements: Comscore new variable for AMP in Analytics #3378
1717
- * Improvements: Option for Leverage Browser Caching in the performance settings #3298
1718
- * Fixed: Auto Add AMP in Menu URL option is not working for the product category #3319
1719
- * Fixed: Horizontal scrolling issue on the homepage #3217
1720
- * Fixed: Vuukle comments Toggle UX bug #3399
1721
- * Fixed: Basic amp components to work in the content #2713
1722
- * Fixed: Unnecessary CSS is loading in single amp product pages and also on cart pages. #3038
1723
- * Fixed: Improper amphtml is getting created in the ngg_tag Url when NextGEN Gallery is used #3381
1724
- * Fixed: Tutorial link for Disqus comments section #3362
1725
- * Fixed: Empty Display property in menu.php #3387
1726
- * Fixed: Images and text does not Zoom in & out with mobile devices in amp version #3233
1727
- * Fixed: Custom CSS code got optimized after 0.9.97.61 update #3410
1728
- * Fixed: Breadcrumbs icons are not connected to icons font family #3418
1729
- * Fixed: In swift Single Design 2 sidebar CSS are not loading in Search page #3430
1730
- * Fixed: Notice to be removed after dismissing it after installing AMP #3053
1731
- * Fixed: Plugins manager showing twice in options panel #3328
1732
- * Fixed: Amp scripts not appending in the head in Search pages when added in sidebar #3404
1733
- * Fixed: Conflict issue with Themify Builder #3376
1734
- * Fixed: Remove the Gap between Header and AMP Pagebuilder module #2534
1735
- * Fixed: Image is not loading when the source of it starting from ../wp-content #3403
1736
- * Fixed: PHP Warning at the top of the site: array_merge(): Expected parameter 1 to be an array #3434
1737
-
1738
- = 0.9.97.63 (9th July 2019) =
1739
- * Improvements: Custom Taxonomy support #3036
1740
- * Improvements: Option to change the Navigation part background color and element color for Design-3 #3034
1741
- * Improvements: Compatibility with the SEO Framework Plugin #2670
1742
- * Improvements: Facebook Messenger Icon in social share icons #2806
1743
- * Improvements: Option to change the Homepage Thumbnail size in design-3 theme #2986
1744
- * Improvements: Changed prefix class of whatsapp to Api #3369
1745
- * Improvements: Colour changing feature in Navigation bar in a design-2 #3059
1746
- * Improvements: Google Lighthouse Audit Score improved #3276
1747
- * Improvements: AMP option panel compatibility with a basix theme #3366
1748
- * Improvements: Template mode code improved #3357
1749
- * Fixed: PHP debug warning #3128
1750
- * Fixed: Proper alignment of description in Design-3 #3385
1751
- * Fixed: 'Modified Date' option not working when Date Format 'Traditional view' is selected #3383
1752
- * Fixed: When Parmalinks in "/index.php/%year%/%monthnum%/%day%/%postname%/" format category not working #3279
1753
- * Fixed: Separator Character's of Rank math plugin is not working on AMP pages #3335
1754
- * Fixed: SVG images not rendering in AMP #3208
1755
- * Fixed: Improvements code in Search form widget #3000
1756
- * Fixed: Dynamically change accordion-mod class name to reduce the styling size #3334
1757
- * Fixed: Social sticky icons to show on top as well as it is getting hidden behind sticky ads #3126
1758
- * Fixed: Font icons not loading in master and beta #3382
1759
- * Fixed: Yoast SEO Data not loading in AMP when 'Glue for Yoast SEO & AMP' plugin is active #3338
1760
- * Fixed: When AMP Comments is disabled, div of comments is loading #3345
1761
- * Fixed: Error 500 PHP 5.3.3 Fallback support #3333
1762
- * Fixed: Debug warnings after recent update #3400
1763
- * Fixed: Video sanitizer not allowing the "id" attribute #3406
1764
- * Fixed: Check if function_exists('get_rocket_option') #3417
1765
-
1766
- = 0.9.97.62 (4th July 2019) =
1767
- * Improvements: Change AddThis controls labels. #3359
1768
- * Fixed: Alternative methods to sanitize(`sanitize_textarea_field`) for users who are using older then 4.7 #3394
1769
- * Fixed: amp-addthis script is loading on WooCommerce product pages. #3393
1770
- * Fixed: Page titles are changing when Rank math plugin active #3358
1771
- * Fixed: Icons added in featured image caption not working properly with font awesome #3288
1772
-
1773
- = 0.9.97.61 (2nd July 2019) =
1774
- * Improvements: AMP option panel for better enhancement #2432
1775
- * Improvements: Lighthouse score improved in all designs #3108
1776
- * Improvements: Option to change featured image size in the AMP panel's single settings [ only in Swift theme] #3339
1777
- * Improvements: Clicky Analytic compatibility integrated #3220
1778
- * Improvements: Some Improvements in image sanitizer #3112
1779
- * Improvements: Gallery Design integrated in Facebook instant article #3143
1780
- * Improvements: Featured Video Plus plugin compatibility integrated #2583
1781
- * Improvements: Performance improvement ! SELECT SQL_CALC_FOUND_ROWS #3336
1782
- * Improvements: 'Featured Image from URL' plugin compatibility integrated #3365
1783
- * Improvements: Template-mode functionality added for group users to work on the main/AMP theme #3252
1784
- * Fixed: Images are blur in beta in design 2 #2541
1785
- * Fixed: SRC set in the Featured Image #1619
1786
- * Fixed: AMP page builder is not showing when the AMPforWP plugin is activated from Network admin panel in Multisite #3322
1787
- * Fixed: AMP Panel options code improved - 2 #3083
1788
- * Fixed: Fatal error with an older version of Wordpress #3094
1789
- * Fixed: Extra option in Analytics section removed #3037
1790
- * Fixed: ?nonamp=1 should redirect to normal url #3269
1791
- * Fixed: Recent comments shows first in ascending order #3325
1792
- * Fixed: Footnotes not working properly #2982
1793
- * Fixed: On twitter share Via twitter handle name is not shown in the tweet beside Url in Design-Swift #3286
1794
- * Fixed: Fatal Error when activate quadmenu plugin #3308
1795
- * Fixed: Default schema generated Page (Migrated from AMPforWP) or post (Migrated from AMPforWP)'s Target Location is showing empty by default #3343
1796
- * Fixed: When auto add amp in menu option is enabled it is rendering the cache version menu for WPML site #3251
1797
- * Fixed: External URL not working with Revolution Slider #3218
1798
- * Fixed: Images are getting distorted in AMP when the lazy loading option is enabled in the WoodMart theme settings #3254
1799
- * Fixed: More variables support in Advanced Google Analytics #3281
1800
- * Fixed: When amp takeover is enabled, /amp is added at the end of category module url #3367
1801
- * Fixed: Auto Add AMP in Menu URL option is is not working for the product category #3319
1802
- * Fixed: Swift Theme has doublequotes in related Post quotes issue #3045
1803
- * Fixed: Wordpress Spanish language does not showing "Design" tab #3342
1804
- * Fixed: Tittle attribute not generates in related posts in all designs #3346
1805
- * Fixed: AMP optin short code is not rendering in AMP from footer widget #3349
1806
- * Fixed: Single post main title should be H1 and sub title should be H2 or H3 in design-1 #3350
1807
- * Fixed: ampforwp_the_content_filter_full function hook changed to work minify option in AMP cache plugin #3355
1808
- * Fixed: AMP is not working due to JCH Optimize Pro plugin #3185
1809
- * Fixed: AMP validation warning when Google Tag Manager Advanced Option is enabled #2660
1810
- * Fixed: PHP Warning implode() Invalid arguments passed when Enfold theme is activate #3307
1811
- * Fixed: Mobile redirection not working properly #3370
1812
- * Fixed: Redirection code improved #3326
1813
- * Fixed: Yoast Description does not output #3374
1814
- * Fixed: Debug errors after 0.9.97.60 #3377
1815
- * Fixed: Code improvements in loadComponents() #3384
1816
- * Fixed: License key is visible in Source code #2528
1817
- * Fixed: Fatal error can't use function return value in write context - 2 #3087
1818
- * Fixed: Code improvements #3388
1819
-
1820
- = 0.9.97.60 (22th June 2019) =
1821
- * Feature: Need to add template-mode #3252
1822
- * Fixed: Options panel loading issue after 0.9.97.59
1823
- * Fixed: Single post main title should be H1 and sub title should be H2 or H3 in design-1 #3350
1824
-
1825
- = 0.9.97.59 (21th June 2019) =
1826
- * Improvements: WP Recipe Maker & WP Recipe Maker PRO Schema compatibility added #3043
1827
- * Improvements: Impreza Theme's lazyLoad Option compatibility integrated #3259
1828
- * Improvements: WordPress Content Gallery integrated with Design - 1,2 & 3 #3255
1829
- * Improvements: amp-recaptcha-input support added in allowed tag sanitizer #3315
1830
- * Improvements: Yoast 11.4 Schema Compatibility #3332
1831
- * Improvements: Google Tag Manager Advanced Option integrated #2660
1832
- * Fixed: Disqus comments are not loading in the multilingual slug #3106
1833
- * Fixed: Incorrect escaping done on author name when Link to Author Pages is enabled along with the Co-Authors plugin activate [ Theme-Swift ] #3162
1834
- * Fixed: AMP Panel options code improved #2517
1835
- * Fixed: License key code improved #2528
1836
- * Fixed: When site url is different from home url #2881
1837
- * Fixed: Related Posts Design is coming in all the single page designs in AMP Layouts #3091
1838
- * Fixed: CM Tooltip Glossary custom post types are not working with /amp #2882
1839
- * Fixed: Variables replacing in Advanced Google Analytics config code don't work #3237
1840
- * Fixed: "Optimize For Viewability" option for Ads improved #3142
1841
- * Fixed: Advertisement section Ads are not working through Google search result #2693
1842
- * Fixed: When AMP takeover and yoast seo is activated,AMP page builder is not working #3292
1843
- * Fixed: link="next" is appearing in the custom front page #3266
1844
- * Fixed: 404 error when custom post type and page having same slug [Bug for the Rare use case] #2374
1845
- * Fixed: Code improved for attribute layout=responsive in amp-img #3248
1846
- * Fixed: Gallery Lightbox feature code improved #3184
1847
- * Fixed: Elementor stops working when AMP Take Over is enabled #3284
1848
- * Fixed: Activating Thrive lead plugin AMP Page builder doesn't work on the custom front page #3312
1849
- * Fixed: To many redirection issue with hidden post in IOS #3287
1850
- * Fixed: Gallery with GIF is not working #3304
1851
- * Fixed: Indexing Issue of Plugin File #3271
1852
- * Fixed: Post/page throwing an error on hiding AMP for that particular post/page if AMP takeover option is enabled. #3329
1853
- * Fixed: Addthis Sharing default option code improved #3327
1854
- * Fixed: When Custom frontpage option is enabled, it's not taking the Polylang static page id #3330
1855
- * Fixed: Webp image format as featured image is not working in the single posts #2996
1856
- * Fixed: Improper amphtml on HomePage when WPML is activate #3341
1857
- * Fixed: Schema not generating after 0.9.97.57 #3344
1858
-
1859
- = 0.9.97.58 (14th June 2019) =
1860
- * Improvements: Option for H1-H6 Heading Font Sizes for all the designs #3035
1861
- * Improvements: New filter to add the classes which have to be excluded in infinity scroll #3297
1862
- * Improvements: Additional options for the Rank Math SEO plugin #3314
1863
- * Improvements: Purge AMP CDN Cache added in Extension List #3324
1864
- * Fixed: After v0.9.97.57 error can't disable featured image #3272
1865
- * Fixed: Amp options panel's section code improved #3205
1866
- * Fixed: Matemo Switch UI issue #3041
1867
- * Fixed: Redux options for translating the field #2460
1868
- * Fixed: Problem with pagination links in AMP #3313
1869
- * Fixed: AMP Page Builder options not working due to Groovy Menu Plugin #3226
1870
- * Fixed: Analytics not working due to Glue for Yoast SEO & AMP plugin #3153
1871
- * Fixed: Yoast Meta Description not being picked up #3290
1872
- * Fixed: ampforwp_new_gallery_images called multiple times resulting Fatal Error #3296
1873
- * Fixed: Error message comes after search in post or page in Swift theme #3309
1874
- * Fixed: Pages redirect to /amp/amp after last update #3270
1875
- * Fixed: Archive and Categoy not working properly with Swift design #3265
1876
- * Fixed: Fatal error when remove author meta name and date on AMP posts/articles in design-2 #3260
1877
- * Fixed: Lightbox for image does not work when link [anchor tag] attached to images #2695
1878
- * Fixed: Webp as featured image is not working in the single posts #2996
1879
- * Fixed: Redirection issue when visiting AMP version after clicking Non-AMP link in Header #2940
1880
- * Fixed: code imporved in the amp_loop_image #3084
1881
- * Fixed: Sidebar breaks the blog page design #3056
1882
- * Fixed: In content related posts in Design-3 images are not showing #3109
1883
- * Fixed: Close Button is not coming in iphone in swift theme #3107
1884
- * Fixed: AMP strings are not translatable #3169
1885
- * Fixed: Option Panel's tooltips code updated #3172
1886
- * Fixed: Table style is not loading in AMP Page #3204
1887
- * Fixed: H1 tag on Logo in design-swift #3231
1888
- * Fixed: Color of button not working properly in design-swift #3216
1889
- * Fixed: PHP Debug warning fixed #3128
1890
-
1891
- = 0.9.97.57 (31st May 2019) =
1892
- * Improvements: Need to add description field in VideoObject Schema type #2846
1893
- * Improvements: Create an option for H1-H6 Heading Font Sizes for all the designs. #3035
1894
- * Improvements: Need to AMP compatible with this plugin HTTP / HTTPS Remover #3123
1895
- * Improvements: Due to Enable image replacement option in optimole plugin images get removed in AMP #3073
1896
- * Improvements: Author name not comes in AMP due to "Simple Author Box" plugin #3145
1897
- * Improvements: Need hyperlink option on the slider module image #2932
1898
- * Improvements: Need another menu for alternative menu which separate from main menu #2916
1899
- * Improvements: Audio Playlist Support #2437
1900
- * Improvements: Separate option to enable/disable Tags support im AMP #3016
1901
- * Fixed: Controls under swift design should display when selected design is AMP theme framework #2939
1902
- * Fixed: AMP Blurb Module shows code on frontend #3228
1903
- * Fixed: Need to Use Ajax to fetch all Categories and tags in Featured Slider in D3 #2590
1904
- * Fixed: copy the content stop working #3193
1905
- * Fixed: mandatory tag 'link rel=canonical' is missing or incorrect on Homepage- when RankMath is active #3250
1906
- * Fixed: Uncaught Error: Call to undefined function ampforwp_get_frontpage_id() #3242
1907
- * Fixed: Liststyle (Circle) added beside Published by in Design3 in 0.9.97.53 #3222
1908
- * Fixed: Version 0.9.97.52 Yoast Meta Information not being picked up #3207
1909
- * Fixed: When navigation menu option is disabled then amp menu checkbox should be removed from menu appearance. #2548
1910
- * Fixed: Needs to re-write function ampforwp_add_custom_rewrite_rules to improve performace #2924
1911
- * Fixed: amp-next-page script of infinity scroll shouldn't load on other custom post type pages #3157
1912
- * Fixed: Archive and Tag pages generating incorrect AMP HTML #3170
1913
- * Fixed: Images are appearing twice #3186
1914
- * Fixed: Debug error on Homepage #3135
1915
- * Fixed: Font JavaScript is loading everywhere in console and breaking things in dashboard #3133
1916
- * Fixed: Rewrite ampforwp_view_nonamp function to make it future proof #2710
1917
- * Fixed: if there's and apostrophe in the post title, it is published as random characters In twitter #2744
1918
-
1919
- = 0.9.97.56 (29th May 2019) =
1920
- * Fixed: #3214 fix was causing conflict with AMP Layouts and content was getting blank
1921
-
1922
- = 0.9.97.55 (28th May 2019) =
1923
- * Improvement: Rank Math compatibility with V1.0.24 #3177
1924
- * Improvement: Related posts and Recent posts on custom posts types #2708
1925
- * Improvement: Appearance Designs for Related Posts #1545
1926
- * Improvement: Integration with EWWW IO and ExactDN. #2805
1927
- * Improvement: rel = "nofollow" to the links of social platforms in menu and footer, in all designs #2999
1928
- * Improvement: Option to display the Post title on Breadcrumb #3019
1929
- * Improvement: Map module in AMP pagebuilder #1629
1930
- * Improvement: Pagination support in category module of AMP pagebuilder #1676
1931
- * Improvement: Time Stamp support in category module of AMP pagebuilder #2648
1932
- * Improvement: Lightbox feature for Slider module of AMP pagebuilder #2646
1933
- * Improvement: Privacy page option in Notice Bar (Cookie Consent) #2347
1934
- * Improvement: SmartMag theme's Featured video Compatibility integrated #2559
1935
- * Improvement: New filter to modify the links of breadcrumbs, comment button and the non-amp version link in footer #2664
1936
- * Improvement: New filter to modify the single featured image #2896
1937
- * Improvement: "AMPforWP PageBuilder" option added in the page builder section #2414
1938
- * Fixed: PHP debug warning #3128
1939
- * Fixed: Fatal error after update 0.9.97.51 #3156
1940
- * Fixed: Unwanted code on username of comment in Design [1, 2 & 3] #3022
1941
- * Fixed: Issues with Content Sneak Peak Feature #2504
1942
- * Fixed: In Feature module of AMP pagebuilder, Bullet points are not aligned correctly #2554
1943
- * Fixed: Image URL replacement on AMP page not correct and aq_resizer not working with cdn images #2659
1944
- * Fixed: 'Twitter' Option and 'Pretty Permalinks for Twitter Share' Option generate the same URL #2662
1945
- * Fixed: Need to align the Radio Button (Show/Hide) in the Arabic language #2818
1946
- * Fixed: In NewsArticle, the ArticleBody and Description are missing from the AMP page #3005
1947
- * Fixed: WP Subtitle Compatibility code updated #3175
1948
- * Fixed: For Menu pages where AMP support is OFF, still getting added due to Auto Add AMP in Menu URL option #2897
1949
- * Fixed: E-commerce section code updated #3012
1950
- * Fixed: Pagebuilder section code updated #3014
1951
- * Fixed: 'Fix AMP Errors' section should not be displayed if he's a premium customer #3027
1952
- * Fixed: Use Ajax to fetch all Categories and tags in Featured Slider in Design-3 #2590
1953
- * Fixed: Debug error after enabling redirection #3174
1954
- * Fixed: The tag 'amp-next-page with inline config' appears more than once in the document #3214
1955
- * Fixed: Correct conditions for PageBuilder and Elementor for Page.php in Swift #3097
1956
- * Fixed: is_amp_endpoint issue - code updated #3055
1957
-
1958
- = 0.9.97.54 (23rd May 2019) =
1959
- * Fixed: HUGE PERFORMANCE Issues #3052
1960
- * Fixed: Performance Issues with queries #2997
1961
- * Fixed: Performance Issues with template_redirect hooks #2773 #2920
1962
- * Fixed: Performance Issues with Design manager #2873
1963
- * Fixed: Performance Issues with ampforwp_exclude_post option #3118
1964
- * Fixed: Performance Issues with AMP Pagebuilder modules and settings which were loading By default #2323
1965
- * Fixed: Performance Issues with Hide AMP Bulk Tools #2549
1966
-
1967
- = 0.9.97.53 (20th May 2019) =
1968
- * Fixed: 500 errors on posts that don't use WP Bakery #3183
1969
- * Fixed: Hyperlink in amp pages including emoji - code improved #2967
1970
- * Fixed: Errors in AMP social Icons #3033
1971
- * Fixed: Code improved to fetch all Categories and tags in Featured Slider [Design -3] #2590
1972
- * Fixed: Fatal error on posts with comments present in latest v0.9.97.52 #3191
1973
- * Fixed: "View Desktop Version" feature is not working in mobile view #3192
1974
- * Fixed: Improved the Extension array code #3206
1975
- * Fixed: Fatal error Uncaught TypeError Argument 1 passed to DOMNode::replaceChild() #3203
1976
-
1977
- = 0.9.97.52 (15th May 2019) =
1978
- * Added: Gutenberg Compatibility integrated #2427
1979
- * Added: Gallery Designs for Gutenberg Gallery #2868
1980
- * Added: Gutenburg column support in AMP #2847
1981
- * Added: Addthis Sharing option UX re-structured #3114
1982
- * Added: Photo Gallery plugin compatibility integrated #1811
1983
- * Added: Revolution Slider plugin compatibility integrated #1464
1984
- * Added: Posts offset option on category module in AMP Page Builder #2647
1985
- * Added: MEWE social network integrated #3020
1986
- * Added: Font Size and Color options for Dropcap #3010
1987
- * Added: Breadcrumbs feature for pages #2788
1988
- * Added: More parameters for ampforwp_get_setting functions #2911
1989
- * Fixed: Conditions for PageBuilder and Elementor for Page.php in Swift #3097
1990
- * Fixed: Code updated of Infinite Scroll when AMP Newspaper Theme is active #3031
1991
- * Fixed: Copy the Content in Custom AMP Editor is not working with Gutenberg #2824
1992
- * Fixed: If GTM gets enabled after Enabling the Analytics, then both codes load in the frontend #3121
1993
- * Fixed: P tag is missing when "copy the content" option is used in custom AMP editor #3122
1994
- * Fixed: When AMP is disabled on Homepagepage ?nonamp=1 redirect to random pages(blog) #2904
1995
- * Fixed: Issue with post title and "end point to ?amp" conflict #2991
1996
- * Fixed: Unspecified Type in Structured data for catgories/tags #3071
1997
- * Fixed: PHP Warning date() expects parameter 2 to be long, string given in #2959
1998
- * Fixed: Disquss comment is not scrollable in IOS device #2970
1999
- * Fixed: Vkontakte Share(social icon) does not open in a new tab #3089
2000
- * Fixed: Condition for requiring a file improved #3080
2001
- * Fixed: amp_content() used instead of AMP_Post_Template object in Design [ 1,2 and 3 ] #2700
2002
- * Fixed: Hyperlink in amp pages including emoji not working #2967
2003
- * Fixed: Unused amp js from amp pages removed #3086
2004
- * Fixed: "WP Forms for AMP" setting link is incorrect #3060
2005
- * Fixed: Navigation & alternate menu css is not loading when directory plus theme is active #2963
2006
- * Fixed: link to non-amp under breadcrumbs when Archives support is off. #2885
2007
- * Fixed: AddThis is causing validation error after Update - code updated #3068
2008
- * Fixed: Content not rendering on AMP with the Enfold theme version 4.5.6 #3124
2009
- * Fixed: Tags are also displaying in category selection in the AMP page builder's category module #3082
2010
- * Fixed: Author name won´t show if you disable author bio in swift theme #3131
2011
- * Fixed: Link to non amp feature not works for thumbnail in design one and two #3004
2012
- * Fixed: Multibyte string links aren't working in AMP Version #2556
2013
- * Fixed: Leave Comment link Not working with ?amp #3093
2014
- * Fixed: When Sticky Header is enabled then Jump link's Title is getting hidden under the header #2915
2015
- * Fixed: Facebook comments not displaying if we add number more than 100 in the number of comments #3032
2016
- * Fixed: Featured image and link shared on twitter issues #3075
2017
- * Fixed: Infinity Scroll Option is not working when ?amp option is enabled in version beta #2475
2018
-
2019
- = 0.9.97.51.2 (10th May 2019) =
2020
- * Fixed: AddThis is causing validation error after Update #3068
2021
-
2022
- = 0.9.97.51.1 (7th May 2019) =
2023
- * Fixed: Can’t use function return value in write context #3155
2024
- * Fixed: Search results not showing for "Select Categories to Hide AMP" option inHide Amp Bulk Tool #3154
2025
-
2026
- = 0.9.97.51 (7th May 2019) =
2027
- * Added: Yoast seo breadcrumbs Support #1473
2028
- * Added: Compatibility with UseAnyFont Plugin #2774
2029
- * Added: Compatibility with Slide Anything plugin. #2891
2030
- * Added: Compatibility with Clyp it iframe embed. #2836
2031
- * Added: Compatibility with Lazy Load of Smush and Smush Pro plugin #2990
2032
- * Fixed: Logo on the top of the menu shade looks strange. #3046
2033
- * Fixed: Fatal error: Class 'AMP_Base_Embed_Handler' not found(Due to mediavine plugin) #3119
2034
- * Fixed: Chartbeat Tag Has Incorrect Variables #3017
2035
- * Fixed: If AMP page builder is enabled then unnecessary CSS is also integrated #2470
2036
- * Fixed: Sidebar Improvement and Option for Pages #2499
2037
- * Fixed: “Featured Image from The Content” option should not override the default Set featured image. #2503
2038
- * Fixed: Widgets going out of alignments in Design 1,2 and 3 #2553
2039
- * Fixed: No message if the search didn't find anything. in Swift #2557
2040
- * Fixed: Header with CTA doesn't have the right options and defaults #2567
2041
- * Fixed: Need to separate categories & tags with ( / or , ) in AMP theme framework single page. #2580
2042
- * Fixed: Indentations are getting removed in lists of ul & ol tags. #2781
2043
- * Fixed: When the custom front page has a custom pagination then the AMP pagination returns 404 #2843
2044
- * Fixed: Text widget img element are overlapping with banner ads (Below the header) in design 3 #2845
2045
- * Fixed: Sidebar option is off, do not show widget area in admin panel #2856
2046
- * Fixed: Update Schema for author image #2919
2047
- * Fixed: Sidebar Styling is not properly appearing in the Blog Page #2938
2048
- * Fixed: 404 issue on custom post type pagination #2937
2049
- * Fixed: Notice errors in design-1 sidebar menu when amp menu is unchecked. #2953
2050
- * Fixed: Bootstrap min overriding modal body style. #2987
2051
- * Fixed: Move infinite scroll settings to a correct place #3007
2052
- * Fixed: Add Extension list for the events calendar for amp #3030
2053
- * Fixed: Add Extension list for table of content #3040
2054
- * Fixed: Strip CSS with i-amphtml- name prefix because its causing validation errors #3009
2055
- * Fixed: Need to add an option to delete the saved layouts in pagebuilder. #2801
2056
- * Fixed: Category module not working with recent posts from Version 0.9.97.45 #3117
2057
- * Fixed: Related posts appearing on the top #3151
2058
- * Fixed: Debug error in installation process #3134
2059
-
2060
- = 0.9.97.50.1 (1st May 2019) =
2061
- * Fixed: Alignment problem when right sidebar is enable in blog page and there is no featured image in the posts #3057
2062
-
2063
- = 0.9.97.50 (29th April 2019) =
2064
- * Added: New Icon of Telegram in all the Designs #2448
2065
- * Added: Swift icon and Font awesome icon option added in Design's global section [Swift theme] #2992
2066
- * Added: Category option added in Design's single section [Swift theme] #2551
2067
- * Added: Yoast author twitter handle compatibility integrated #2133
2068
- * Added: New function ampforwp_get_the_ID() created #2867
2069
- * Fixed: Facebook comment and Like option gives an error when the bbPress plugin is enabled #3006
2070
- * Fixed: When Gutenberg active left sidebar is not visible in page builder modules #2934
2071
- * Fixed: AMP preview functionality showing blank in the preview mode #3029
2072
- * Fixed: Image floats CSS improved in mobile mode #2525
2073
- * Fixed: Related Posts Randomly in Swift theme #2308
2074
- * Fixed: Pricing module content is not center in page builder #2921
2075
- * Fixed: Background image of the page builder is zooming in IOS devices when the parallax effect is enabled #2844
2076
- * Fixed: Footnotes compatibility code updated #2982
2077
- * Fixed: Iframe is not loading when Convert AMP to WP theme (Beta) option is enabled [Swift theme] #2628
2078
- * Fixed: PHP Warning Undefined variable #3103
2079
-
2080
- = 0.9.97.49 (26th April 2019) =
2081
- * Added: Addthis Support integrated #2416
2082
- * Added: A3 Lazy Load compatibility #2872
2083
- * Added: Add support for AMP Linker #2546
2084
- * Fixed: Getting validation Error when using the Ivory Search Plugin #2497
2085
- * Fixed: Featured images or article images not showing in latest version #3063
2086
- * Fixed: Condition improved for author box hook #2608
2087
- * Fixed: After Update all AMP Pages Do Not Load and are Not Validated #3062 [ WP Rocket]
2088
- * Fixed: PHP notice Undefined variable wp #3085
2089
- * Fixed: PHP notice Undefined variable wp_query #2803
2090
- * Fixed: Warning message while on WP customizes #3070
2091
- * Fixed: Tag meta name 'viewport' appear more than once when Zox news theme is activate #2971
2092
- * Fixed: PHP notice errors after activating amp-woocommerce plugin #3054
2093
- * Fixed: Fatal error - can't use function return value in write context #3087
2094
- * Fixed: AMP Frontpage: The mandatory tag ‘link rel=canonical’ is missing or incorrect with Rank Math #3061
2095
- * Fixed: Fatal error - is_amp_endpoint issue #3055
2096
-
2097
- = 0.9.97.48 (23th April 2019) =
2098
- * Added: Meta genertor #2543
2099
- * Added: Bridge Qode SEO Compatibility integrated #2538
2100
- * Added: Lazy Load of Smush and Smush Pro plugin Compatibility integrated #2990
2101
- * Fixed: Validation errors occur when Wordpress Comments Option is enabled #2989
2102
- * Fixed: Home page displays latest posts instead of custom page when enfold theme activate #2943
2103
- * Fixed: API URL conflict with Mobile redirection #2917
2104
- * Fixed: Instant Article fatal error #2968
2105
- * Fixed: Undefined index fb-instant-page-id PHP notice #2570
2106
- * Fixed: All media queries load in single media query only code updated #2711
2107
- * Fixed: Instant Article feed code updated #3018
2108
- * Fixed: Space after the "data:image/png" part of the base64 encoded CSS background image #2974
2109
- * Fixed: GDPR consent is not working on ios #2876
2110
- * Fixed: PHP Errors in latest v0.9.97.46.1 after activation on fresh WP installation #3028
2111
- * Fixed: Issue with moblie redirection with non-amp link #3021
2112
- * Fixed: Cntr class automatically removed after activating elementor plugin in swift theme #3025
2113
- * Fixed: Javascript Console errors after the v0.9.97.47 update #3079
2114
-
2115
- = 0.9.97.47 (19th April 2019) =
2116
- * Added: AMP by Automattic Compatibility integrated #2287
2117
- * Added: Click Mag WP Theme compatibility integrated #2796
2118
- * Added: New filter in contents-module of page builder for raw html #3001
2119
- * Fixed: PHP Warning illegal string offset When AMP layout plugin activate #2951
2120
- * Fixed: CSS is getting breaked in GoodLife theme #2673
2121
- * Fixed: PHP Debug errors in v0.9.97.46 #3011
2122
- * Fixed: Fatal error call to undefined method WPSEO_Options #3008
2123
- * Fixed: Proper escaping in Alexa Analytics #2984
2124
-
2125
- = 0.9.97.46.1 (10th April 2019) =
2126
- * Fixed: Theme framework templates loading multiple times #2977
2127
-
2128
- = 0.9.97.46 (9th April 2019) =
2129
- * Added: WP Subtitle compatibility integrated #2831
2130
- * Added: New filter in page builder for Enable/disabled check #2998
2131
- * Added: Additional Page Builder compatibility added #2643
2132
- * Fixed: The tag 'p' is disallowed & auto added as child of tag 'amp-accordion' #2498
2133
- * Fixed: Histats Not working #2909
2134
- * Fixed: itemprop="image" is being removed from the AMP Pages #2585
2135
- * Fixed: CSS pseudo-element not working when minify option is enabled #2907
2136
- * Fixed: Directories path code improved, if the plugin is installed outside (/wp-content/plugins) #1531
2137
- * Fixed: WP_debug warnings and notices #2958
2138
- * Fixed: More than one canonical issue with Rank Math SEO Plugin #2975
2139
- * Fixed: Background image or color in the 1st row of page builder is applied to all below row #2994
2140
- * Fixed: Rare Distorted image aspect ratio issue with Gutenberg editor #2931
2141
- * Fixed: Font family for Content in Single page code improved #2122
2142
- * Fixed: Fatal Error due to SEO press plugin #3003
2143
- * Fixed: Rare issue with Mobile redirection on Homepage after v0.9.97.32 #2972
2144
- * Fixed: PageSpeed Score Improvement for all Designs #2979
2145
-
2146
- = 0.9.97.45 (4th April 2019) =
2147
- * Added: SeoPress compatibility integrated #1589
2148
- * Added: WP Appbox compatibility integrated #2791
2149
- * Added: Infinite Scroll feature integrated. #2682
2150
- * Added: Facebook like button added in Sticky Social Share #2186
2151
- * Added: Font family for Content in Single page #2122
2152
- * Fixed: Custom post type categories not showing in amp pagebuilder #1993
2153
- * Fixed: Duplicate SiteNavigationElement issue #2952
2154
- * Fixed: AMP Theme Framework Multisite issue #2936
2155
- * Fixed: Custom AMP Editor Content is Not rendering when Elementor is activated #2901
2156
- * Fixed: Title issue on Homepage with Yoast if we select custom front page #2962
2157
-
2158
- = 0.9.97.44.2 (1st April 2019) =
2159
- * Added: Element folder files override in the Design One, Design Two and Design Three for the Child theme #2770
2160
- * Added: High-resolution Images [Additional image guidelines] option added in structure data #2259
2161
- * Fixed: Hide by default option from bulk tools is not working when amp takeover option is enabled #2832
2162
- * Fixed: Space removed while checking in the ampforwp_onesignal_notifications_widget function #2569
2163
- * Fixed: Display on User Avatar option #2942
2164
- * Fixed: Edit page is getting blank when product module is used #2944
2165
- * Fixed: YoastSEO post analysis broke & getting Uncaught TypeError: $ is not a function #2948
2166
- * Fixed: Yoast meta data are not renderring correct content for custom homepage #2928
2167
- * Fixed: Date format in Swift theme homepage/loop #2965
2168
- * Fixed: Published Date Disappear When selecting Horizontal Design in Related Post [swift-theme] #2957
2169
-
2170
- = 0.9.97.44.1 (29th March 2019) =
2171
- * Added: Advertisement AMP panel improved #2724
2172
- * Fixed: Vuukle AMP integration code updated #2600
2173
- * Fixed: Fatal Error with old Plugins manager v1.0 #2976
2174
-
2175
- = 0.9.97.44 (28th March 2019) =
2176
- * Added: Captions feature in AMP page builder #2645
2177
- * Added: Compatibility with the Youtube Oembed Plyr plugin #1505
2178
- * Added: Caption option for gallery/slider module in pagebuilder #2790
2179
- * Added: Like & share feature for every image in instant_articles #2764
2180
- * Added: Genesis option in SEO settings #2386
2181
- * Added: Improved the 'Setup AMP Feature' and 'Welcome to AMP' tabs & Enhance the Support button on AMP panel #2980
2182
- * Fixed: AMP Theme Framework getting conflicted #2782
2183
- * Fixed: Unwanted code for call-now component is being used #2652
2184
- * Fixed: amphtml tag while AMP Takeover option is enabled #2550
2185
- * Fixed: Debug warnings after 0.9.97.15 #2532
2186
- * Fixed: 'Header design' section in "Header" tab removed when design-1,2 and 3 is active & minor improvements #2978
2187
-
2188
- = 0.9.97.43 (12th March 2019) =
2189
- * Fixed: Fallback for Redux classes #2377
2190
- * Fixed: Search widget CSS for Design-2 #1400
2191
- * Fixed: Navigation Menu CSS for Swift theme #2593
2192
-
2193
- = 0.9.97.42 (11th March 2019) =
2194
- * Fixed: Incompatibility with AMP Plugin Manager
2195
-
2196
- = 0.9.97.41 (11th March 2019) =
2197
- * Added: Color picker for Footer Area #2320
2198
- * Added: Compatibility with WP User Avatar plugin to show the gravatar #2772
2199
- * Fixed: Options Panel not showing, says "You are not allowed to access this page" #2377
2200
- * Fixed: faster-image libraries not being able to determine dimensions #2692
2201
- * Fixed: Changes in endpoint to ?amp, Re-direct " /amp " to " ?amp " #2480
2202
- * Fixed: Font style getting change on Custom Front page #2594
2203
- * Fixed: When the user is directed to the AMP version of the page it changes the URL slighltly (swaps out characters) #2913
2204
-
2205
- = 0.9.97.40 (9th March 2019) =
2206
- * Added: Smooth scrolling for anchors links and jumping links within a page #2062
2207
- * Added: Option to Enable/Disable Merriweather font in Design-1
2208
- * Fixed: External links are getting skipped #2862
2209
- * Fixed: Social Share “LINE” does not show up in swift theme #2641
2210
- * Fixed: Checkbox from menu listings in AMP theme framework #2618
2211
- * Fixed: PHP Warning undefined index fb-instant-page #2610
2212
- * Fixed: Instagram Posts not rendering in AMP #2629
2213
- * Fixed: Instant articles Image issue #2929
2214
- * Fixed: Default height & width values for amp-img when values are not set #2925
2215
-
2216
- = 0.9.97.39 (5th March 2019) =
2217
- * Added: Compatibility with the Author Simple Box Plugin #2268
2218
- * Added: Compatibility when short codes are added in AMP widgets #2552
2219
- * Added: Compatibility with the footnotes plugin #2447
2220
- * Added: ID Support on the AMP PageBuilder #2474
2221
- * Added: embedly oembed support in wordpress #1160
2222
- * Fixed: Dynamic Classes break issue in AMP PageBuilder #2515
2223
- * Fixed: Debug Errors #2627
2224
- * Fixed: Custom Front page is breaking in 0.9.97.16 #2589
2225
- * Fixed: Date Archive not working with Swift Design #2514
2226
- * Fixed: Background video and countdown timer is not showing in divi pagebuilder from core > 0.9.97.19 #2727
2227
- * Fixed: Issue with pagebuilder when yoast plugin is active. #2933
2228
-
2229
- = 0.9.97.38 (28th February 2019) =
2230
- * Added: The Subtitle in the Facebook Instant Artical(FBIA) using of the Jannah Theme #2746
2231
- * Fixed: Space missing in categories list for breadcrumb [Design-3] #2817
2232
- * Fixed: Issue with Post Pagination ( Single ) #2624
2233
- * Fixed: No match for the query in amp search then it's renderring to non-amp template when amp-takeover is enabled #2681
2234
- * Fixed: Full excerpt length in single posts [swift] #2712
2235
- * Fixed: Undefined variable warning in class-amp-img-sanitizer.php #2848
2236
-
2237
- = 0.9.97.37 (23th February 2019) =
2238
- * Added: Static page template in AMP #2614 + #2900
2239
- * Fixed: Font size and other values are properly sanitizing #2898
2240
- * Fixed: Failed to parse script tag contents #2884
2241
- * Fixed: PHP Notices after the v0.9.97.32 #2879
2242
- * Fixed: oembed wordpress post renders as a full post in AMP #2003
2243
- * Fixed: Gallery/Slider of AMP pagebuilder not working
2244
- * Fixed: class are repeating number of times when image (icon) added in .svg format #2893
2245
- * Fixed: Debug warnings with WPML #2899
2246
- * Fixed: Issue with yoast content reading while amp pagebuilder image module selected #2910
2247
-
2248
- = 0.9.97.36 (19th February 2019) =
2249
- * Added: Mobile and tablets Detects separately for 'Mobile Redirection' option #2436
2250
- * Added: Scrolling bar for swift theme in chrome browser #2593
2251
- * Added: CSS condition when element markup is visible #2753
2252
- * Fixed: Pre tags not rendering properly on pages #2823
2253
- * Fixed: Logo resize should only apply when Resize setting is enable #2544
2254
- * Fixed: When /?amp is enabled "Visit AMP" is redirecting to dashboard #2363
2255
- * Fixed: ampforwp_wc_shortcode_title is loading globally #2756
2256
- * Fixed: Extra CSS is causing validation error of 50kb #2592
2257
- * Fixed: PHP warning issue in latest version of php #2895
2258
- * Fixed: Yoast analysis is giving false readings for the SEO When AMPforWP Pagebuilder is enabled #2435
2259
-
2260
- = 0.9.97.35 (16th February 2019) =
2261
- * Added: Levelup Compatability #2718
2262
- * Added: "Align Justify" Option in Page builder's text module #2665
2263
- * Added: Default value for Swift Color Scheme #2793
2264
- * Fixed: ampforwp prefix in the analytics function #2886 #2890
2265
- * Fixed: "Below the Footer" ads option showing above and below the footer #2778
2266
- * Fixed: Debug error undefined index comments #2887
2267
-
2268
- = 0.9.97.34 (14th February 2019) =
2269
- * Fixed: Backward Compatibility for Yoast and All in One SEO options #2894
2270
-
2271
- = 0.9.97.33 (13th February 2019) =
2272
- * Fixed: Style sanitizer code updated #2387
2273
- * Fixed: UTM Parameters when Mobile Redirection is enabled #2854
2274
- * Fixed: ?nonamp=1 is not working properly #1947 & #2537
2275
- * Fixed: All media queries load in single media query only #2711
2276
- * Fixed: 'Hide AMP option' is not working when AMP take over is enabled #2880
2277
- * Fixed: Swift Hover Color Changes #2751
2278
- * Fixed: Google Font is not getting saved #2839
2279
- * Fixed: Sidebar CSS condition code fixed #2757
2280
- * Fixed: Performance improvement for ampforwp_stylesheet_file_insertion #2873
2281
-
2282
- = 0.9.97.32 (8th February 2019) =
2283
- * Added: Rank Math SEO compatibility integrated #2701 & #2736
2284
- * Added: New filter "ampforwp_modify_thumb_url_array" to modify the thumbnail #2739
2285
- * Fixed: 'Call Button Color' option not working - code updated #2820
2286
- * Fixed: Validation error when uploading YouTube video in Comments #2827
2287
- * Fixed: When Mobile Redirection option is enabled then, fr (language symbol) is removed from the URL. #2721
2288
- * Fixed: Category Module from Page Builder not displaying #2870
2289
- * Fixed: The homepage displays the title of the first post in All in one SEO #2865
2290
- * Fixed: Title mismatch in some posts with Yoast #2871
2291
-
2292
- = 0.9.97.31 (4th February 2019) =
2293
- * Added: Subtitles plugin Compatibility #2853
2294
- * Added: Created an option for Id's for all the modules and column in AMP Page builder #2730
2295
- * Fixed: All the Images are Adding AMP at the End of their URL #2391
2296
- * Fixed: When nextpage pagination is added, URL in is rendering /2?amp=1 #2767 #2766
2297
- * Fixed: Comments Issues #2755
2298
- * Fixed: The gutenberg button doesn't work in amp #2707
2299
- * Fixed: Button Module color is not getting changed #2745
2300
- * Fixed: Issue with amp menu converting & ASCII code to X #2855
2301
- * Fixed: 'Call Button Color' option not working #2820
2302
- * Fixed: Error: The attribute 'alt' may not appear in tag 'a' #2837
2303
- * Fixed: Captions are not working in Gallery #2576
2304
-
2305
- = 0.9.97.30 (2nd February 2019) =
2306
- * Fixed: Wrong title on the archive pages #2864
2307
- * Fixed: data-loading-strategy attribute is double quoted #2863
2308
-
2309
- = 0.9.97.29 (31st January 2019) =
2310
- * Fixed: Validation error due to Search Widget #2858
2311
- * Fixed: Issue after upgrading analytics code #2859
2312
- * Fixed: amp-animation error in amp theme framework and tech blogging amp theme #2819
2313
- * Fixed: Blog title is displaying on Homepage when static front page is selected in All in one SEO & Yoast - code updated #2816
2314
- * Fixed: Search Console Crawl Errors ?nonamp=1/ is listed in Access denied #2760
2315
-
2316
- = 0.9.97.28 (29th January 2019) =
2317
- * Added: Lightbox feature for Carousel #2731
2318
- * Added: Specific filters to modify the analytics code #2653
2319
- * Fixed: Homepage Blog CSS is loading on the custom frontpage in swift theme #2754
2320
- * Fixed: Reset all & Reset section issue for redux framework #2722
2321
- * Fixed: Transable redux fields for other plugins like wpml #2737
2322
- * Fixed: Proper condition for Ads css #2758
2323
- * Fixed: Jetpack stats pixel inserted twice since Jetpack v6.9 #2812
2324
- * Fixed: AMP pagebuilder full width for posts #2765
2325
- * Fixed: Undefined “non-content” in blacklist-sanitizer #2842
2326
- * Fixed: Blog title is displaying on Homepage when static front page is selected in All in one SEO & Yoast #2816
2327
-
2328
- = 0.9.97.27 (23rd January 2019) =
2329
- * Added: ampforwp_is_amp_endpoint_takeover filter added
2330
- * Fixed: The attribute 'action' may not appear in tag 'FORM [method=POST]' #2835
2331
- * Fixed: Image size smaller than recommended size Warning in Search console #2838
2332
-
2333
- = 0.9.97.26 (21st January 2019) =
2334
- * Added: Improve the Extension array code #2822
2335
- * Fixed: WP_Widget_Text conflict after v0.9.97.24 #2821
2336
-
2337
- = 0.9.97.25 (17th January 2019) =
2338
- * Added: Help message for background video of column setting of Page Builder #2716
2339
- * Added: Review option in plugins page #2715
2340
- * Added: Excerpt length option in Category module of Page Builder #2733
2341
- * Added: Font Performance with font-display #2743
2342
- * Added: Custom template for front-page & home-page #2714
2343
- * Fixed: AMP Footer sidebar is not working in master #2800
2344
- * Fixed: <i> tag not working in Title #2804
2345
- * Fixed: alt attribute of <img> tag is not working when the image is inside the <a> tag #2617
2346
- * Fixed: Remove the unnecessary code for '404 error' text in amp translation panel #2738
2347
- * Fixed: Subtitle issue using with Jannah theme #2732
2348
- * Fixed: Proper names given for AMP Widgets #2797
2349
- * Fixed: Notice: Undefined index: hide-amp-tags-bulk-option2 and Undefined variable: inline_related_posts in features.php on line 4698 & 5546 #2795
2350
- * Fixed: Quality of 'featured image slider' in Design3 #2779
2351
- * Fixed: Embed Twits with twitter links #2798
2352
- * Fixed: /amp in the telephone link when 'Change Internal Links to AMP' option enabled #2742
2353
- * Fixed: Position of social sharing buttons 'above content' on pages #2809
2354
- * Fixed: lang attribute in HTML tag #2808
2355
- * Fixed: In footer, 'View non-AMP pages' is repeated twice when 'back to top link' option is enabled #2807
2356
-
2357
- = 0.9.97.24 (9th January 2019) =
2358
- * Added: Compatibility with new and all default WP widgets #1400
2359
- * Fixed: Performance issue #2762
2360
- * Fixed: Need to add amp endpoint filter #2761
2361
- * Fixed: When Hide AMP Option is enabled in PageEditor with Convert AMP to WP theme (Beta) enabled it's providing output as AMP Page #2735
2362
- * Fixed: Whenever an image inserted, has width="100%" and height="100%", its giving Validation error. #2748
2363
- * Fixed: Custom post type is showing a blank page in the swift theme #2512
2364
- * Fixed: Whenever Responsive AD is enabled then the AD should load on the screen without any effect to the normal mode AD in D1,2,3, and Swift #2531
2365
- * Fixed: When Convert AMP to WP theme (Beta) is enabled GDPR popup isn't closing #2763
2366
- * Fixed: If twitter embed code is added then other blockquotes tag are not working #2750
2367
- * Fixed: Custom post type is showing a blank page in the swift theme #2512
2368
- * Fixed: Conflict with the Schema and Structure data plugin #2777
2369
- * Fixed: In the swift theme the Sticky social icons overlaps #2601
2370
- * Fixed: " Top " Button functionality to be improved. #2529
2371
- * Fixed: Drop down icon appearing twice #2785
2372
- * Fixed: Custom front page Meta description and content are not rendering for ALL in SEO plugin. #2702
2373
- * Fixed: Hover color is not appearing properly #2787
2374
-
2375
- = 0.9.97.23 (18th December 2018) =
2376
- * Fixed: Sub menu items and arrows are not functioning in publisher theme. #2672
2377
- * Fixed: Fatal error when Polylang(Core) is activated. #2657
2378
- * Fixed: Improve coding in amp-page-builder.php #2725
2379
- * Fixed: Escaping not done properly #2723
2380
- * Fixed: Serialization problem with AMP settings data. #2717
2381
- * Fixed: Whenever Convert AMP to WP theme (Beta) option is enabled Logo Image is being stretched. #2726
2382
-
2383
- = 0.9.97.22 (6th December 2018) =
2384
- * Added: Total Plus theme compatibility #2511
2385
- * Added: Allow SVG format Logo in AMP #2431
2386
- * Fixed: Vuukle AMP integration #2600
2387
- * Fixed: "Change Internal Links to AMP" not working properly for anchor tags (internal links) #2562
2388
- * Fixed: Secondary menu color is not outputting the value in latest update #2680
2389
- * Fixed: The instagram embed code is not working in facebook instant article in the AMP. #2523
2390
- * Fixed: FTP Link being generated in Non-AMP but not in AMP #2477
2391
- * Fixed: Videos aren't rendering whenever Convert AMP to WP theme (Beta) is enabled #2501
2392
- * Fixed: More debug errors #2513
2393
- * Fixed: Comments closed not looking good in Swift theme #2542
2394
- * Fixed: Excerpt Option is not Working. #2509
2395
- * Fixed: Image of Design 3 and Swift are same in Installation wizard #2540
2396
- * Fixed: AMP renders with ?q after the /amp #2361
2397
- * Fixed: Tables overflow in swift theme when adding the tables to the site [TEST + ALT solution] #2392
2398
- * Fixed: Unable Access the Wp-admin page when Amp takeover option is Enabled. #2476
2399
- * Fixed: Latest post title is displaying in the AMP homepage instead of site title #2419
2400
- * Fixed: AMP menu is not working when Jetpack Mobile theme option is enabled #2584
2401
- * Fixed: Link to Non-AMP page in Footer points to 404 #2586
2402
- * Fixed: Debug warnings in error logs #2367
2403
- * Fixed: The AMP for WP plugin(Version 0.9.97.20) bug are notice-error :undefine index and Unused code. #2687
2404
- * Fixed: Improvements in AMP page builder code #2471
2405
- * Fixed: Table class is getting removed in AMP pages. #2699
2406
- * Fixed: Pagination is not working when AMP Takeover is enabled #2686
2407
- * Fixed: The featured slider is not displaying properly images using the Firefox browser with the design 3 theme. #2677
2408
- * Fixed: Icons for AMP Stories and Shortcode Ultimate #2598
2409
- * Fixed: Images are stretched whenever Convert AMP to WP theme (Beta) Option is enabled. #2694
2410
- * Fixed: Vertical words in table on mobile #2606
2411
- * Fixed: PageBulider getting following notices in old module #2305
2412
- * Fixed: Export option of page builder is not working in latest version #2709
2413
- * Fixed: Remove the span tag in all 404.php files of the 4 designs #2704
2414
- * Fixed: Wrong escaping done for default value for Google Analytics #2697
2415
- * Fixed: Re-modification of single settings option panel when newspaper theme activated #2706
2416
-
2417
- = 0.9.97.21 (21st November 2018) =
2418
- * Fixed: Sanitation of user contents before save #2679
2419
- * Fixed: Menu is Not working in Minimal Blogging theme (0.9.97.20) #2667
2420
- * Fixed: Author bio not showing proper link #2674
2421
- * Fixed: HTML not being rendered on cookie consent notifications #2671
2422
- * Fixed: Telephone link not working
2423
-
2424
- = 0.9.97.20 (29th October 2018) =
2425
- * Fixed: Plugin Vulnerability #2650
2426
-
2427
- = 0.9.97.19 (4th October 2018) =
2428
- * Fixed: Tables overflow not working in swift theme #2392
2429
- * Fixed: Null check added to fix null reference exception #2526
2430
- * Fixed: Minor Bug related with menu #2612
2431
-
2432
- = 0.9.97.18 (29th September 2018) =
2433
- * Fixed: Minor Bug related with menu
2434
-
2435
- = 0.9.97.17 (28th September 2018) =
2436
- * Added: Featured Slider "Tag" support #954
2437
- * Added: Marfeel plugin is blocking Internal pages of AMP and rendering 503 error #2423
2438
- * Fixed: Dropdown Menu arrows not working properly in Swift #2148
2439
- * Fixed: Wrong implementation of load_plugin_textdomain function #2408
2440
- * Fixed: Page Float to right and showing menu content when page scroll horizontally in iPhone device #2434
2441
- * Fixed: Internal Link Option is not Working in beta #2443
2442
- * Fixed: Missing conditional tag for get_the_tags() causing "Invalid argument supplied for foreach()" error #2456
2443
- * Fixed: Need to make a space in meta information and published date is not getting translated #2411
2444
- * Fixed: Meta og:title and description tag are Not completely Reflecting #2454
2445
- * Fixed: Images are not aligned center when published with Gutenberg Editor #2462
2446
- * Fixed: Anchor Tag is not working because there is a space in between link #2465
2447
- * Fixed: Fix social shares icons #2467
2448
- * Fixed: Debug errors in beta #2472
2449
- * Fixed: homepage is getting blank when "Convert To WP" is enable only for posts #2493
2450
- * Fixed: wrong amphtml URL generating for WPML #2573
2451
-
2452
- = 0.9.97.16 (19th September 2018) =
2453
- * Added: 3 Types of Gallery designs #1968
2454
- * Added: New Section to show 'change log' on Welcome Page #1753
2455
- * Added: Allow HTML in footer section of translation panel in design 3 #1950
2456
- * Added: Need to make the compatibility with The Voux theme #2263
2457
- * Fixed: Special character "|" breaking the url in the twitter share #2264
2458
- * Added: Read more button for post on blog page #2273
2459
- * Fixed: Category Labels are Clickable on Swift Homepage even Archive support is off #2279
2460
- * Fixed: Above Loop and Below Loop Sidebar Widget area is not connected with Swift theme #2280
2461
- * Fixed: Aq_Resize.process() errors for images hosted on CDN #2285
2462
- * Fixed: Convert to WP Option is displayed in Swift Theme, but not in Design 3. #2291
2463
- * Fixed: Need to have only one text-domain in the string of the plugin #2292
2464
- * Fixed: Bug in Facebook comments. #2300
2465
- * Added: Beta Testing link in the Options panel #2302
2466
- * Added: "X" button in the menu of D3 #2294
2467
- * Fixed: AMP Take over is applying even on product when this option is enabled only for posts. #2304
2468
- * Fixed: The Option Facebook App ID not necessary in the social icons of AMP panel when using Swift #2384
2469
- * Fixed: Embeds not working in Archive Description #2402
2470
- * Fixed: Spurious spaces in Footers #2521
2471
- * Fixed: Additional spaces Pagination div on article posts #2522
2472
-
2473
- = 0.9.97.15 (13th September 2018) =
2474
- * Fixed: Pagination is not working on date archive #2289
2475
- * Added: Options to show Social Icons in different places in Swift #1722
2476
- * Fixed: Localization string for "% days ago" not working for non-Latin languages #1491
2477
- * Added: Social Share by Supsystic Compatibility #1509
2478
- * Fixed: Duplicate h1 tags in Design One #1522
2479
- * Added: 3 Appearance option for Related Posts in Swift theme #1545
2480
- * Fixed: RTL not working with Footer properly #1655
2481
- * Fixed: Proper implementation of the property of all in one SEO pro to avoid fatal error #2500
2482
- * Fixed: Notice: Undefined index: extension in thirdparty-compatibility.php on line 401 - 406 #2496
2483
- * Fixed: Wrong url in Non-Amp Version link on blog posts page and category archives #2424
2484
- * Fixed: The Consent.php path is getting index in Webmaster tool #2518
2485
- * Added: Option to add custom things in Instant Articles #1089
2486
- * Added: Show/hide Instant Article on specific posts #1297
2487
- * Added: Facebook Instant Articles (FBIA) Crawler Ingestion (ia:markup_url) tag #1474
2488
- * Added: Facebook Instant Articles Meta Tag #1486
2489
- * Added: Related posts for instant articles #1634
2490
- * Added: Option to remove Author info from Instant Articles #1483
2491
- * Added: Facebook Instant Articles in each Catagory #1524
2492
- * Added: Custom Facebook Instant Articles Ad option #1475
2493
- * Fixed: Pagination not working after changing the pagination base #1485
2494
- * Added: Breadcrumb with tag #1305
2495
- * Fixed: Enabled WordPress Comments by default #1501
2496
-
2497
- = 0.9.97.14 (4th September 2018) =
2498
- * Added: Adobe Analytics Support #887
2499
- * Fixed: Same Icons loading for some extensions #2172
2500
- * Fixed: Removed extra spacing from "Back to top" text #2349
2501
- * Fixed: Retina featured images support for Homepage and archive loop images #2334
2502
- * Fixed: When WooCommerce Product Slider is Installed, the Picture of Icons are not loading #2325
2503
- * Added: Customizr Theme Lazy Loading compatibility #2322
2504
- * Fixed: "Save Module" button of AMP page Builder not displaying in OSX and in Safari #1943
2505
- * Fixed: Sort Related Posts Randomly Not Working in Swift theme #2308
2506
- * Added: Need to create a tutorial of How to Enter your Audience Network Placement ID of advertisement in the Instant Article #1723
2507
- * Fixed: Retina Images option Improvement-II #2296
2508
- * Fixed: Disable the look or check of redux framework #2293
2509
- * Fixed: With Redux core plugin, AMP option panel design not loading #2258
2510
- * Fixed: Issues with pagination #2253
2511
- * Added: Thrive Architect Compatible #1575
2512
- * Fixed: Notice Undefined variable categories_array #2486
2513
- * Fixed: Need to add upscale parameter in-line related posts #2488
2514
- * Fixed: Getting the warnings in error log due to global variable, not present #2395
2515
- * Fixed: Google Analytic issue while setting up Run Installation wizard #2491
2516
- * Added: Read more button AKA Content Sneak Peek feature for post #2246
2517
- * Added: Showing related items/post in after nth paragraph #2246
2518
-
2519
- = 0.9.97.13 (28th August 2018) =
2520
- * Fixed: Fatal error in `ampforwp_related_post_loop_query()`
2521
-
2522
- = 0.9.97.12 (27th August 2018) =
2523
- * Fixed: Quote runs only in block post not on pages #2399
2524
- * Added: Create a Sidebar option that can be used as global Sidebar #2388
2525
- * Fixed: words are breaking and not readable #2441
2526
- * Fixed: Text is breaking into next line while there is no space between the text in custom AMP Editor #2270
2527
- * Fixed: IP Anonymization #2421
2528
- * Added: Setka Editor Compatibility #2468
2529
- * Fixed: In swift theme, when user ads the ad Above the Related Posts (Single Post); the content doesn't display #2311 and #2318
2530
- * Added: Toggle controls are now accessible #1691
2531
- * Added: Global Sidebar is now Connected with AMP Pagebuilder #2371
2532
- * Fixed: #amp-user-notification1 Styling was loading even when disabled from option panel in swift #2400
2533
- * Fixed: Remove the empty `@media{}` css generated by Pagebuilder #2473
2534
- * Fixed: Blank Lines in HTML Source code #2445
2535
- * Fixed: Optimize AMP pages on Google Lighthouse #2082
2536
- * Fixed: RSS Feed is not working when AMP Takeover is enabled #2309
2537
-
2538
- = 0.9.97.11 (21th August 2018) =
2539
- * Minor Update
2540
-
2541
- = 0.9.97.10 (18th August 2018) =
2542
- * Fixed: Homepage build with AMP PageBuilder is displaying only when the checkbox of the Custom AMP editor is enabled #2350
2543
- * Added: Created a new function to get the settings instead of calling it directly from global $redux_builder_amp everytime. `ampforwp_get_setting` created #2177
2544
- * Fixed: Comments and share not loading on pages only in swift #2401
2545
- * Fixed: Back to Top link not working in Swift Design #2404
2546
- * Added: Ads Below the Author Area in Swift theme #2455
2547
- * Fixed: AMP should remove spaces from GTM ID automatically #2413
2548
- * Fixed: Some Posts are not displaying in Blog page even when AMP is enabled from Post settings #2375
2549
- * Fixed: Wrong AMPHTML when using static page as blog using custom-code/pagebuilder from reading settings #2396
2550
- * Added: Add paginations meta tags #2343
2551
- * Fixed: Updated the code of AMP renders with ?q after the /amp #2361
2552
- * Added: Add support for Relevanssi search #2307
2553
- * Added: Show index/noindex label when enabling the options in SEO Settings #2290
2554
- * Added: Add AMP consent in AMP Theme Framework #2440
2555
- * Added: Created a component called `AMP-geo` so anyone can use it in thier AMP theme #2440
2556
-
2557
- = 0.9.97.9 (1st August 2018) =
2558
- * Minor Improvements
2559
-
2560
- = 0.9.97.8 (24th July 2018) =
2561
- * Fixed: AMP renders with ?q after the /amp #2361
2562
- * Fixed: iThemes Sync can not connect to the site. #2380
2563
- * Fixed: H1 to H6 styling is not reflecting in the Swift theme #2383
2564
- * Fixed: Underline on Links function is not working. #2372
2565
- * Fixed: WordPress Admin Color Scheme not applying #2390
2566
- * Fixed: Breadcrumbs are not disabling when the sidebar template is selected #2376
2567
- * Fixed: All the Images are Adding AMP at the End of their URL. #2391
2568
-
2569
- = 0.9.97.7 (18th July 2018) =
2570
- * Fixed: PageBuilder not loading on frontpage #2360
2571
- * Fixed: 500 error on somepages due to open wp_query by other plugins
2572
- * Fixed: License key reupdating #2261
2573
- * Fixed: AMP renders with ?q after the /amp #2361
2574
-
2575
- = 0.9.97.6 (14th July 2018) =
2576
- * Fixed: Error and Warning on Structured Data for Logo. #2360
2577
- * Fixed: Category Bulk tool breaking meta boxes #2335
2578
-
2579
- = 0.9.97.5 (11th July 2018) =
2580
- * Fixed: Title disappearing in Design 1,2,3 when legacy pagebuilder is enabled #2341
2581
- * Fixed: ld+json getting a broken when special characters are added in the image. #2346
2582
- * Fixed: Hide by Category Breaking post metabox #2330
2583
- * Fixed: Hiding excerpt when global $redux_builder_amp is empty #2330
2584
- * Fixed: When Google Tag Manager is enabled, only Google Analytics should get disabled but not other analytics. #2340
2585
-
2586
- = 0.9.97.4 (09th July 2018) =
2587
- * Fixed: Huge Performance upgrade in the way fetching the logo url #2317
2588
- * Fixed: Fatal Error due to unable to modify values in Structured Data Object #2327
2589
- * Fixed: Seperate option for Featured Image in pages in Swift theme #2328
2590
- * Fixed: `<p>` tags disabling where not wanted #2330
2591
- * Fixed: Fatal error in contact form module while ninja form or gravity form plugins are not activated #2310
2592
- * Fixed: Woo Commerce Category page not working properly #2333
2593
- * Fixed: Few issues related to amp-facebook-comments #2300
2594
- * Fixed: Limit number of Tags and Category to 500 in Hide AMP-Bulk tools #2336
2595
-
2596
- = 0.9.97 (27th June 2018) =
2597
- * For more details check out [the blog post](https://ampforwp.com/0-9-97-released-strengthening-of-foundation-89th-update/)
2598
- * Fixed: Extraposition attribute left in CSS Design #2 #2119
2599
- * Fixed: Non-AMP header link not working #2109
2600
- * Added: Create an Ad Above the Post Content #2155
2601
- * Fixed: "AGO" text was not translatable #2158
2602
- * Added: Filter created `ampforwp_header_url` to modify logo url #2141
2603
- * Fixed: Removing the text "amp" in footer view non-amp-link #2158
2604
- * Added: Compatibility WP user Avatar plugin added #2011
2605
- * Fixed: Design 2 - meta info producing a block of empty HTML #1969 #1954
2606
- * Added: Pocket and Hatena Bookmark social share buttons Added #1652
2607
- * Fixed: External Links are appended with "amp" at the end of the url in content. #2174
2608
- * Fixed: Some Issues Found in Design #3 #2130
2609
- * Fixed: ScoopVersion: 1.4 By boostdevelopers theme displaying the error only in the category #1683
2610
- * Fixed: Page featured Image is not displaying in the Swift theme #2136
2611
- * Fixed: Dropcap breaking the youtube embed code #2157
2612
- * Fixed: Bulk hide by default option is requires Permalinks to be saved #2145
2613
- * Fixed: Fully compatibility with muffin page builder #2180
2614
- * Fixed: Incontent Related Post Issues #2078
2615
- * Fixed: Search page should not have AMP version of the page and not in search result #2191
2616
- * Added: Control added to modify Retina Images resolutions #2099
2617
- * Added: Created an option to duplicate a page builder element #1986
2618
- * Added: Image Caption is not displaying below the Image in design 1,2,3 #2101
2619
- * Fixed: Post pagination not working properly in D1, D2 and D3 #2168 #2243
2620
- * Fixed: Auto re-save permalink if the options in reading setting page get changed #2190
2621
- * Fixed: Leave a comment not looking good in Swift theme #2150
2622
- * Added: Social icons for pages. #2162
2623
- * Added: Create an option to pull canonical from Yoast #2118
2624
- * Added: Full Support for All in one SEO #1720
2625
- * Fixed: Single with sidebar CSS should only load if that layout type is selected #2091
2626
- * Fixed: Required Filed is not working in the Repeater in Page builder #2217
2627
- * Fixed: alt in `<div>` causing validation errors. #2093
2628
- * Added: Drop Down Menu Support in Swift Header Menu #2095
2629
- * Added: Parallax Setting Added in PageBuilder #2095
2630
- * Added: Multiple Layout Settings added in Feature Module in Page Builder #2095
2631
- * Added: Add the option changing the sliding speed of slider in "Slider module" of AMP Page Builder #2218
2632
- * Added: Created an option Related Post link in non amp #2201
2633
- * Fixed: Removed Jannah LazyLoad on AMP Mode #2224
2634
- * Fixed: Custom post types with custom taxonomy not working in AMP #2209
2635
- * Fixed: frontpage and homepage not working properly AMP take over #2153 #2277
2636
- * Added: Button field created in Feature module #2068
2637
- * Added: Excerpt should also work on homepage and categories page #2176
2638
- * Fixed: Options panel breaks in when RTL in WP Dashboard #2176
2639
- * Fixed: Featured image from Custom fields in page builder Category module #2237
2640
- * Added: Forms Module Support added in PageBuilder #2221
2641
- * Fixed: Paginated AMP URL on the category are opening to 404-page #2233
2642
- * Fixed: Ads not displaying properly in RTL #2227 #2138
2643
- * Fixed: single quotation (') in text module breaking AMP page builder #1940
2644
- * Added: Filter created to modify `ampforwp_loop_image_update` image arguments in components of AMP theme framework #2057
2645
- * Added: Option to change the locale of Facebook comments #2127
2646
- * Added: Search option in options panel #2088
2647
- * Fixed: Accordion not working when the user enters some data in Description with HTML Tags #2088 #2097
2648
- * Fixed: Internal links now working with ?amp=1 #2204
2649
- * Fixed: UTM Parameters not working properly with AMP #2223
2650
- * Fixed: Multiple Slider module of AMP Page builder not working #2090
2651
- * Fixed: Hide AMP by categories option should hide by default in the backend of that specific post #2112
2652
- * Added: IP Anonymization in Google analytics #2135
2653
- * Fixed: Improvement in the styling of AMP option panel #2102
2654
- * Added: Added new fonts control for Content in Single page #2122
2655
- * Fixed: Legacy page builder button styling is not loading properly #2036
2656
- * Added: Filter added so we can disable Comments on specific pages `ampforwp_comments_visibility` #2170
2657
- * Fixed: Improvement in Excerpt on small screen option #2034
2658
- * Added: Comments on Pages #2229
2659
- * Fixed: Pagination not working for some websites #2241
2660
- * Fixed: "Menu" option in Footer connected with Swift #2146
2661
- * Added: Wistia Support #1875
2662
- * Added: Add option in page builder to give the specific name to all modules #2251
2663
- * Added: Compatibility with Muffin Builder #2137
2664
- * Fixed: AMPforWP Option panel styles are overriding other theme's options panel if both use Redux Framework #2121
2665
- * Fixed: AMPforWP Option panel styles are overriding other theme's options panel if both use Redux Framework #2121
2666
- * Added: Render all the AMP Components added in Post Editor #2216 #2228
2667
- * Fixed: "Gap" Module of ThemeCo breaking the AMP pages #2220
2668
- * Added: Search widget compatibility #2143
2669
- * Added: Advertisement Module created in AMP Pagebuilder #2131
2670
- * Fixed: Performance issue with the function `ampforwp_get_comments_gravatar` #2234
2671
- * Fixed: Empty the amp pages, when the Clearfy HTML compress is enabled #2110
2672
- * Fixed: The attribute 'value' appearing in tag 'a' throwing the validation error #2262
2673
- * Fixed: Versioning of Styles and Scripts of redux-core #2126
2674
- * Added: Related Posts based on X days #2132
2675
- * Fixed: Warning in custom-sanitizer.php #2173
2676
- * Added: vuukle comment support #2075
2677
- * Fixed: Facebook Comment should not appear on the Checkout page, Add to cart page, or shop page #2170
2678
- * Added: SpotIM comment support #2075
2679
- * Added: Additional Controls added in Design3 Featured slider #2222
2680
- * Fixed: Username in AMP Option panel color was too light #2266
2681
- * Added: Settings created to modify H1 to H6 #2059
2682
- * Fixed: AMP_QUERY_VAR debug issue #2265
2683
- * Added: Custom page template in AMP #1923
2684
- * Fixed: Comments Button is not displaying in Design #3 #2163
2685
- * Added: Ability to add Forms Shortcodes in footer Widgets #2226
2686
- * Added: Option to add rel="nofollow" in AMP page builder button module #2239
2687
- * Added: Background video option in amp page builder #2195
2688
- * Fixed: Drop Down Menu Support in Swift Header Menu #2095
2689
- * Fixed: Yoast Description not getting added in AMP #2159
2690
- * Fixed: Improvement in styling of AMP option panel #2102
2691
- * Fixed: Hide AMP Bulk Tools Improvements #1867
2692
- * Added: Compatibility with the Relevanssi Plugin #1503
2693
-
2694
- = 0.9.96 (2nd June 2018) =
2695
- * Added: Fully GDPR Compliance
2696
- * Fixed: GTM not working
2697
-
2698
- = 0.9.86.1 (8th May 2018) =
2699
- * A bug causing validation issues has been resolved.
2700
-
2701
- = 0.9.86 (3rd May 2018) =
2702
- * For more detials check out [this blog post](https://ampforwp.com/0-9-86-released-getting-ready-for-future-87th-update/)
2703
- * Added: GDPR Compliancy #2040
2704
- * Added: Muffin Page Builder Compatibility #1455 #1893
2705
- * Added: Thrive leads compatibility #2067
2706
- * Fixed: Load structured markup json in Footer to improve performance #1945
2707
- * Added: Font Size and Font Family Controls added in Content Presentation Module #1962
2708
- * Added: Font Weight Control added in Text Module in PageBuilder #1962
2709
- * Added: Other necessary controls added in Content Presentation Module #1962
2710
- * Added: New Design called "Design 4" added in Content Presentation Module. #1962
2711
- * Fixed: License Activation process connected with AMP extensions #1981
2712
- * Added: Icon Selector control added in Button module in AMP Page Builder #1962
2713
- * Added: Filter called `ampforwp_get_comments_gravatar` to modify Author Avatar Images #1949
2714
- * Fixed: Validation error fixed by removing json+ld values to remove CDATA #1977
2715
- * Added: Icon Adjustment Option is added in the Button Module #1962
2716
- * Fixed: Debug Warnings fixed #1976
2717
- * Fixed: If AMP support on post and page is disabled then mobile redirection was not working #1979
2718
- * Fixed: Responsive element added in Image Module #1962
2719
- * Fixed: Custom Post and Custom Taxonomies Archives not working in AMP #1957
2720
- * Fixed: AMP take over is on and AMP support on the home page is disabled it was redirecting to some other pages #1994
2721
- * Fixed: Design 1 and Design 2 shouldn't show 'social' tab #1996
2722
- * Added: AMP WordPress Theme notice
2723
- * Added: Rewrite Rules Added for WooCommerece #1957
2724
- * Fixed: AMP Takeover blog search results giving blank page #1990
2725
- * Fixed: Swift pagination markup is present even the page has no pagination #2000
2726
- * Fixed: Pagination breaking on second page on Archives when Blog page is not set #1998
2727
- * Fixed: Added proper Google API jump link #1966
2728
- * Fixed: Advance Index and no-index controls did not had description #1978
2729
- * Added: Filter added `amp_blacklisted_tags` in blacklist-sanitizer file
2730
- * Added: Hyperlink for image module added #1989
2731
- * Added: `ampforwp_get_frontpage_id` a common fucntion created to get post id for AMP frontpage #2025
2732
- * Fixed: Comments controls were not working properly #1987
2733
- * Fixed: Fatal Error after updating the plugin from 0.9.73 to 0.9.83 version #2017
2734
- * Fixed: Filter created `ampforwp_modify_rel_url` to modify rel canonical URL #2012
2735
- * Fixed: Remove structured data json if removed from AMP options panel
2736
- * Fixed: amp widget appearing twice in design one #2008
2737
- * Fixed: Gif in content + Lightbox feature throws validation issue. #2032
2738
- * Added: New Features in the Page builder Modules #2029
2739
- * Fixed: License Key was not working properly #2026
2740
- * Fixed: Instagram comment view is getting cut off in Swift Theme #2002
2741
- * Added: Icon module support added in Desgin 1, 2 & 3 #1997
2742
- * Fixed: if GD or ImageMagick library is not present in the server then send the original image #2037 #2038
2743
- * Fixed: Swift theme homepage (Non-AMP) image resizing issues in Mobile version #1992
2744
- * Fixed: Header Element not working in Swift theme #1967
2745
- * Fixed: Stop Loading of Latest post scripts on Homepage and Frontpage #2041
2746
- * Added: Filter created `ampforwp_non_amp_links()` so users can have all the internal links non-amp #1973
2747
- * Fixed: Sanitize the archive description in loop component #1974
2748
- * Fixed: Double AMPHTML when FBIA Plugin is active #2043
2749
- * Fixed: Image Div is loading even if the image is not present in Swift #2033
2750
- * Fixed: Custom AMP editor is visible on pages (post type) even if the Page Support is off from amp options panel #2047
2751
- * Fixed: When 'Structure Data for WP' plugin active, Schema type in Structure section should hide #2049
2752
- * Fixed: Bugs in Video Module in AMP pagebuilder #2048
2753
- * Added: Autoplay feature added in Video Module #2048
2754
- * Fixed: Throwing error when Product Structured Data is selected #1975
2755
- * Fixed: Advanced CSS is not loading because the files are with hosting path #2046
2756
- * Fixed: Double Quotes breaking the html #2004
2757
- * Removed: Blog option is removed from AMP Options panel and it is connected with Pages option Under Reading Settings #2027
2758
- * Fixed: amphtml should not be created for 404 pages #2018
2759
- * Added: 404 Template added, useful for AMP Takeover #2042
2760
- * Fixed: Genesis meta titles are lost and not rendering correctly #2050
2761
- * Fixed: Search blank on AMP Takeover #1990
2762
- * Fixed: Remove Unused js files from Paginated Post Pages #2001
2763
- * Fixed: Extra Space adding in H1 and other SEO tags #2054
2764
- * Fixed: Undefined Index when called from robot #1960
2765
- * Fixed: amp facebook comment Js not loading to the custom front page of the swift theme. #2053
2766
- * Fixed: Tags label is not working properly when RTL Support on #1719
2767
- * Fixed: View Non-AMP Version In the footer link has an error #2066
2768
- * Fixed: Squirrly SEO is Adding the Javascript code in AMP #1696
2769
- * Fixed: Translation option issue when using POT file method #1941
2770
- * Fixed: amp-facebook-like extension is missing on Custom Frontpage #2061
2771
- * Fixed: GTM option repositioned #2056
2772
- * Fixed: Menu is appearing on left side instead of Right side when RTL support is ON for Design3 #1928
2773
- * Fixed: Sidebar Bugs #1972
2774
- * Added: Table Styling in Swift #1961
2775
- * Fixed: Genesis index, follow options not being rendered #2071
2776
- * Added: Filter created `ampforwp_robots_meta` to modify robots meta information #2071
2777
- * Fixed: PHP Notices #2065
2778
- * Added: Add a new hook `ampforwp_after_amp_menu` after the menu in all designs #2072
2779
- * Added: New Look to Options panel #1823
2780
- * Added: Retina Image Support added #1846
2781
- * Fixed: Pagebuilder hrefs were stripped in hebrew language #2089
2782
- * Fixed: Warning Fixed #2083
2783
- * Fixed: Gallery module images not loading in Firefox #1980
2784
- * Fixed: Pagebuilder Improvement #2024
2785
-
2786
- = 0.9.85.5 (21st April 2018) =
2787
- * Added: Filter added to modify frontpage post id `ampforwp_modify_frontpage_id`
2788
- * Added: Filter added to modify amp template directory `ampforwp_template_locate` #1982
2789
- * Other minor bugs fixed
2790
-
2791
- = 0.9.85.3 (12th April 2018) =
2792
- * Added: Custom Post type Archive Page support #1995
2793
- * Fixed: AMP TakeOver redirection issues #1994
2794
- * Fixed: Debug errors #1976
2795
- * Fixed: Social Profile pages were hidden for Design 1 to 3 #1996
2796
- * Fixed: Structured Data insertion was adding CData causing validation error #1999
2797
-
2798
- = 0.9.85.2 =
2799
- * Minor Bugs fixed
2800
-
2801
- = 0.9.85.1 =
2802
- * Minor Bugs fixed
2803
-
2804
- = 0.9.85 (3rd April 2018) =
2805
- * For more detials check out [this blog post](https://ampforwp.com/0-9-85-released-stability-update-86th-update/)
2806
- * Fixed: Fatal error: Allowed memory size on FrontPage #1865
2807
- * Fixed: Proper Parameters for Pinterest Sharing #1853
2808
- * Added: Extra settings added in Button Module
2809
- * Added: Extra settings added in Text Module
2810
- * Fixed: Proper Parameters for Pinterest Sharing
2811
- * Fixed: Unwanted fields are removed form the Repeater in Button module
2812
- * Added: Enable/disable option added Related Posts #1829
2813
- * Fixed: Legacy PageBuilder option Repositioned #1851
2814
- * Fixed: Display the img tag only if source is present #1869
2815
- * Fixed: Huge design improvements in Swift theme #1818
2816
- * Added: Hook for Between Related Post is Added #1874
2817
- * Added: Blurb module text size and background color added
2818
- * Fixed: Comments Pagination issues #1816
2819
- * Added: Counter Module added
2820
- * Fixed: Date 48 years ago #1864 #1876
2821
- * Added: Ability to pass post id in amp_content() #1872
2822
- * Fixed: Changed the way images we fetched in WooWidget #1847
2823
- * Fixed: Changed the position of layout in Pagebuilder #1873
2824
- * Added: Pricing Module
2825
- * Fixed: Changed the position of layout in Pagebuilder #1873
2826
- * Fixed: amp_aq_resizer was not able to process the outside url #1881
2827
- * Fixed: Advanced Google Analytics improvements #1630 #1860
2828
- * Added: Field Added For ON & OFF in Page builder #1870
2829
- * Fixed: Two paginations in search pages in Swift theme #1855
2830
- * Fixed: Extra Div if categories not available #1856
2831
- * Fixed: removed debuged tags #1870
2832
- * Fixed: Published date connected with AMP options Panel #1888
2833
- * Added: Featured Image option in Swift #1889
2834
- * Added: Separate Blog settings #1887
2835
- * Fixed: single post ads should not load on pages #1896
2836
- * Fixed: Ads should not load on FrontPage if PageBuilder is enabled #1885
2837
- * Fixed: Background Image Support for the Columns #1871
2838
- * Added: Blockquotes design for Swift #1894
2839
- * Added: Co-Authors Plus compatibility #1895
2840
- * Added: pagebuilder for custom post types #1884
2841
- * Added: Border option is connected to options panel #1818
2842
- * Added: Responsive AD unit support #1852
2843
- * Added: Sub category arrow symbol is added in Swift theme #1818
2844
- * Added: Search text color is connected to options panel #1818
2845
- * Fixed: Removed notice when no posttype selected #1884
2846
- * Added: Ability to overwrite page template the WordPress way like front-page.php and page-{id}.php #1902
2847
- * Added: Ability to overwrite author page template the WordPress way like author.php and author author-name.php #1902
2848
- * Added: Lightbox Support for the images #1892
2849
- * Fixed: No mobile redirection when Dev mode is enabled #1907
2850
- * Added: Option to hide Author name in Swift #1890
2851
- * Fixed: Script facebook-comments should not load for Frontpage #1897
2852
- * Added: amp-facebook comments for AMP2WP #1911
2853
- * Added: Alt tag in all modules #1898
2854
- * Added: Sanitizers in Footer and sidebar widget in Swift #1835
2855
- * Added: Dropcap support #1900
2856
- * Added: Proper styling for iframes and videos in Swift theme #1909
2857
- * Fixed: Non-AMP link fixed for AMP Takeover #1916
2858
- * Fixed: Swift connected with Breadcrumb option #1915
2859
- * Added: Uninstall option created to completely remove AMPforWP data #1903
2860
- * Fixed: Recipe Structured Data requires name attribute #1917
2861
- * Fixed: No amphtml when It is hidden from Categories #1919
2862
- * Fixed: Content is breaking when Inline Related Post option is enabled #1912
2863
- * Fixed: Proper redirection setup for AMP Takeover #1913
2864
- * Added: Social media profiles added in menu #1901
2865
- * Fixed: No Ads should display on Frontpage or Posts if Pagebuilder is enabled #1885
2866
- * Added: #1899 Proper conditions for amp-analytics script
2867
- * Fixed: Turn off option not working by default fixed #1537
2868
- * Fixed: BreadCrumbs Should not load when PageBuilder is enabled #1925
2869
- * Fixed: Removed unwanted elements loading while pagebuilder is enabled #1929
2870
- * Fixed: amp-web-push should not load on Homepage and Blog #1930
2871
- * Added: SmartMag theme Compatibility #1905
2872
- * Fixed: Template overriding not working in child theme #1920
2873
- * Fixed: Horizontal scrolling in Swift #1844
2874
- * Fixed: Home page title should not be visible in AMP takeover #1921
2875
- * Added: Carousel Module Added #1937
2876
- * Fixed: Comments pagination not working #1816
2877
- * Fixed: Comments pagination not working #1816
2878
- * Added: Glue html css compatibility #1932
2879
- * Added: Data Caption Support on AMP Instagram Embed #1938
2880
- * Added: Ability to pass {author_name} and {author_id} added in Advance Analytics #1936
2881
- * Fixed: Scrollbar in Header area in Swift in firefox #1818
2882
- * Added: Disqus iframe height adjustment option #1935
2883
- * Fixed: Options panel conflict fixed with Mobius theme #1942
2884
- * Fixed: Problem with Button in Mobile view in Swift #1926
2885
- * Fixed: Removed canvas tag in AMP version causing validation errors #1880
2886
- * Fixed: Getting Conflict with Facebook Button by BestWebSoft #1740
2887
- * Added: Option to enter the "ID" on CTA button module #1931
2888
- * Added: Option for open same window in CTA module of page builder #1866
2889
- * Fixed: Logo fetch causing Huge performance issue #1679
2890
- * Fixed: Blurb module's default values were not set #1952
2891
- * Fixed: Allow script with application/ld+json #1958
2892
-
2893
- = 0.9.84 (14th March 2018) =
2894
- * Added: Polylang Frontpage compatibility added #1779
2895
- * Fixed: Proper link for Linkedin added #1820
2896
- * Fixed: Incorrect function name was Added #1827
2897
- * Fixed: Thumbnail resizing issue in Swift #1828
2898
- * Fixed: Thumbnail issue in Loops of Design 3 #1714
2899
- * Fixed: Hide post builder for Swift #1824
2900
- * Fixed: To avoid warnings when there are no pages in WordPress #1810
2901
- * Fixed: Condition for the Thumbnail for Swift #1733
2902
- * Fixed: Proper Styling for footer for Swift #1733
2903
- * Fixed: Line height issue and CSS editor not working in Swift #1821
2904
- * Fixed: Renamed aq_resize to ampfrowp_aq_resize to avoid conflicts #1838
2905
- * Fixed: Add the prefix to avoid conflicts #1817
2906
- * Fixed: Added Custom format option in amp_date #1845
2907
- * Fixed: Removed amp-img tag where blank SRC in Page builder #1843
2908
- * Fixed: Pagebuilder modal max-height removed so it will become full width #1843
2909
- * Added: An option for select target type in Button Module #1822
2910
- * Fixed: Remove AMP category widget if swift is enabled #1790
2911
- * Fixed: Filter added change mode type #1833
2912
- * Added: Rewrite rule for .html blog page #1775
2913
- * Fixed: Filter added change mode type #1833
2914
- * Fixed: Swift Footer Widget Sanitizer Added #1800
2915
- * Fixed: No OneSignal widget when PageBuilder is enabled #1840
2916
- * Fixed: span tag added around the pagination text #1834
2917
- * Added: Page specific option to add script/html and styles in page builder #1831
2918
- * Fixed: noindex,nofollow in AMP when Dev mode is enabled #1839
2919
- * Added: Jarida theme compatibility added #1842
2920
- * Fixed: noindex,nofollow in AMP when Dev mode is enabled #1839
2921
- * Fixed: Replace value attribute only from html tags. Otherwise it is removing value from * shortcodes which is breaking the whole page. #1738
2922
- * Added: Underline option for content links added #1808
2923
- * Added: Page specific option to add RTL in page builder #1858
2924
- * Added: Converts AMP ads to normal so ads show when takeover is enabled in Normal Mode #1724
2925
- * Added: Converts AMP Analytics to normal so Analytics works when takeover is enabled in Normal Mode #1724
2926
- * Fixed: Phone icon proper alignment in Design3 #1730
2927
- * Added: ADS for WP activation box in Extensions tab
2928
- * Added: New design field added #1861
2929
-
2930
- = 0.9.83.1 (8th March 2018) =
2931
- * Fixed: Pagebuilder contents not shows on custom home page #1794
2932
- * Added: Header hook added `ampforwp_advance_header_layout_options`
2933
- * Fixed: Load admin files only in admin pages #1799
2934
- * Fixed: Conflict with WP bakery pagebuilder #1783
2935
- * Fixed: Slide in Menu break in RTL mode #1825
2936
- * Fixed: Validation issue in loops due to empty attributes #1795
2937
- * Fixed: Featrued Image connected Properly with Swift theme #1733
2938
- * Fixed: Changed the disqus.php to disqus.html to pass authentication #1788
2939
- * Added: CSS styling for Loop on shop page #1803
2940
- * Fixed: Facebook comments not work in swift #1789
2941
- * Fixed: Style AMP Category module in Footer swift #1790
2942
- * Fixed: Load aq_resizer only in AMP #1805
2943
- * Fixed: Proper markup for Pinterest in Design3 and Swift #1793
2944
- * Fixed: Proper url for vk
2945
-
2946
- = 0.9.83 (03rd March 2018) =
2947
- * Added: Ability to add amp-carousel and amp-selector directly into WYSIWYG Editor #1588
2948
- * Fixed: Debug error caused by Playbuzz Sanitizer #1674
2949
- * Added: Show default gravatar for comments #1758
2950
- * Fixed: Implement Swift Thumbnail Regeneration in all the designs #1709
2951
- * Fixed: To avoid debug error in swift
2952
- * Fixed: Translation improved for some strings #1678
2953
- * Fixed: Stop AMP takeover for Feed pages #1767
2954
- * Fixed: Menu issues In Design 1 & Design 2 after changing from AMP-Sidebar #1565
2955
- * Fixed: AMP Options panel Not Working After Update (0.9.82.1) version #1761
2956
- * Fixed: Move the label to the top [UX improvement] #1746
2957
- * Fixed: Error with Vue #1745
2958
- * Added: Video Module added in AMP Page Builder #1750
2959
- * Fixed: Sidebar menu is not scrollable swift theme #1769
2960
- * Fixed: View Non-AMP should be usertrailingslashit #1772
2961
- * Fixed: Proper structured data for Blogpage #1660
2962
- * Fixed: Legacy Page Builder not working after the update #1773
2963
- * Fixed: Content blank when only image in content #1778
2964
- * Fixed: Comment ID display issue fixed #1758
2965
- * Fixed: PHP Warning: A non-numeric value encountered in components/logo/logo.php on line 52 #1764
2966
- * Fixed: Yummly support added in Swift #1708
2967
- * Fixed: Demo Link updated #1781
2968
- * Fixed: CSS is not loading in Swift Theme #1780
2969
- * Added: Ability to add Advertisement or Sponsored label under ads #1710
2970
- * Fixed: Featured images distortion in related posts #1684
2971
- * Fixed: Implement Swift Thumbnail Regeneration in all the designs #1709
2972
- * Fixed: noarchive instead of nofollow in Archive pages #1693
2973
- * Fixed: Internal links of tags are showing “/amp” after changing the end point to “?amp” in design 2 #1752
2974
- * Fixed: line height is added for the logo in Swift design
2975
- * Added: Class for Custom Frontpage #1787
2976
- * Fixed: Recent post enable disable for Swift theme #1784
2977
- * Fixed: Connect Show/Hide AMP option with AMP takeover#1786
2978
- * Fixed: Added sanitizer to footer Widget #1756
2979
-
2980
- = 0.9.82.1 (18th February 2018) =
2981
- * Selector code reverted due to it's effect on carousel
2982
-
2983
- = 0.9.82 (18th February 2018) =
2984
- * View more details on https://ampforwp.com/0-9-82-released-stability-update-82nd-update/
2985
- * Logo Resizing calculation by Pixels and resizing bug solved.
2986
- * Update Notification in the Admin panel will only appear in the AMP options panel. So it will not annoy you anymore.
2987
- * Glue underline is applying for some reason
2988
- * Fatal error after 0.9.81 fixed
2989
- * Facebook comments loading twice on swift
2990
- * PHP Notice: Undefined variable: post_author_name
2991
- * Pagebuilder fix in version 0.9.81 Compatibility with Yoast and other plugins #1749
2992
- * Home loop modifier option added. Allows you to exclude the categories from the loop or include the Custom Post type in the homepage loop.
2993
- * amphtml Conflict with Instant Article for Facebook resolved
2994
- * /amp folder in the theme is applying changes in plugin, which causing a bug, but it’s been fixed
2995
- * Backward Compatibility for AMP Preview
2996
- * SEO Section Improvements
2997
- * Wrong comments count on AMP pages
2998
- * AMP Allow selector in the The Content. You can add tabs and AMP components directly into the loop.
2999
- * If we turn off the Homepage Support then Blog is turned off as well, solved.
3000
- * Post Pagination have two options like “Number of pages” and Previous & Next.
3001
- * Removed the dot from the one Signal Service worker URL if the subdomain isn’t added (Causes Validation issues.)
3002
- * Extra Space due to empty divs in Design 3
3003
- * Remove alt from a tag in the AMP version caused many validation issues.
3004
-
3005
-
3006
- = 0.9.81 (15th February 2018) =
3007
- * Edge case fatal error on features.php fixed
3008
- * Admin dashboard messup CSS fix #1731
3009
- * Custom CSS Output added in Swift
3010
-
3011
- = 0.9.80 (15th February 2018) =
3012
- * View More details on the [blog post](https://ampforwp.com/introducing-swift/)
3013
- * AMP Page Builder 3.0: The AMP Page Builder is a lightweight and much stable than ever and works flawlessly! [Read More](https://ampforwp.com/tutorials/article/amp-page-builder-installation/)
3014
- * Swift: The New Default Theme, which you can select from the design section of the Page builder.
3015
- * A way to create a Child Theme for AMP [read more](https://ampforwp.com/tutorials/article/child-theme-amp/)
3016
- * Make AMP & Non-AMP Same: We have an amazing new option called AMP to WP which will generate the WordPress version of the AMP design which will be viewed on the canonical version of the website.
3017
- * AMP Takeover: You can deliver a fully AMP compatible website with this option. It will basically take over the non-amp version and deliver an AMP version to your desktop and mobile users, on WordPress & AMP version. That’s why it was called AMP Takeover
3018
- * Logo Resizing made easy
3019
- * Typography Options
3020
- * 3 Headers design in swift theme
3021
- * Error while sharing the image on Pinterest #1699
3022
- * Homepage support was not working ( when page support is off ) #1695
3023
- * Custom Permalinks rewrite issue solved #1689
3024
- * Custom post type was appearing two types #1688
3025
- * Theia Post Slider plugin incompatibility with post pagination fixed #1677
3026
- * Link to the categories in loop of Design 3 #1632
3027
- * amphtml was not working when plain permalink selected along with static page as homepage #1614
3028
- * AFS Analytics Integration added #1605
3029
- * Removed the blank spaces from analytics id field to deliver a good UX. #1599
3030
- * ?amp endpoint feature added #1561
3031
- * Ability to remove the excerpt and image from related post #1510
3032
- * Thumbnails on-the-fly generation added for better control over the design.
3033
-
3034
-
3035
- = 0.9.74 (23rd January 2018) =
3036
- * View More details on the [blog post](https://ampforwp.com/0-9-74-released-stability-update-79th-update/)
3037
- * Fixed: Push Notifications button alligned in center #1500
3038
- * Added: Meta robots tag support from Yoast #1563
3039
- * Added: Option to Disable wptexturize/smart-quotes Support #1458
3040
- * Fixed: Changed the label id to avoid conflict with Advanced AMP Ads #1591
3041
- * Fixed: esc_attr causing validation issues with single and double quotes #1616
3042
- * Fixed: Image stretching problem resolved when "Featured Image from the content" was set #1580 #1582
3043
- * Added: Create Template by Custom taxonomy name like product-jeans.php in AMP Theme FrameWork #1594
3044
- * Added: Custom Post type support added in the Core #1612
3045
- * Fixed: custom-amp-content.php cleaned with PHPCS #1497
3046
- * Added: Basic Product(WooCommerce) support added #992 #1276 for full WooCommerce Support please check this [Extension](https://ampforwp.com/woocommerce/#utm_source=readme-log&utm_medium=0.9.74-readme&utm_campaign=AMP%20Plugin)
3047
- * Added: Proper fallback support added if the current active AMP theme is not available #1624
3048
- * Fixed: Resolved debug errors #1622
3049
- * Added: All in One SEO compatibility #1557
3050
- * Fixed: Load AMP Styling only on AMP pages #1441
3051
- * Added: 7 New Social Media Integrations added (Reddit, Tumblr, Telegram, Digg, StumbleUpon, Wechat, Viber) #1265
3052
- * Fixed: itemprop="url" was adding in non-amp #1626
3053
- * Fixed: SiteOrigin Pagebuilder compatibility with Custom Frontpage #1592 #1593
3054
- * Added: MediaAce lazy load compatibility of Bibmer Theme #1472
3055
- * Fixed: Content Links plugin was causing validation errors #1569
3056
- * Added: Filter added called get_content_from_dom to modify the output in AMP function #1462
3057
- * Added: amp_breadcrumb component added in AMP Theme Framework #1636
3058
- * Fixed: Sidebar Styling and proper sanitizer updated
3059
- * Added: amp_author_meta component added in AMP Theme Framework #1641
3060
- * Fixed: amp_post_pagination component improvement in AMP Theme Framework
3061
- * Added: Ability to add link classes in amp_post_pagination in AMP Theme Framework
3062
- * Fixed: amp_author_meta image code improvement in AMP Theme Framework
3063
-
3064
- = 0.9.73 (15th January 2018) =
3065
- * View More details on the [blog post](https://ampforwp.com/0-9-73-released-stability-update-78th-update/)
3066
- * Added: Instagram Sanitizer added to process Instagram Embeds inside the BlockQuotes #1581
3067
- * Added: Option Created to Enable/Disable rel="nofollow" for View Non-AMP link #1572
3068
- * Fixed: Custom AMP Content was not working with Elementor Pagbuilder #1495
3069
- * Fixed: ampforwp_is_front_page() is not working in the newspaper theme #1583
3070
- * Added: Allow people to use multiple Analytics on AMP #1124
3071
- * Fixed: 'https' error with PlayBuzz Embeds #1481
3072
- * Added: Option to show last modified date instead of Published date #1496
3073
- * Fixed: Add proper permission for ampforwptourinstaller page
3074
- * Fixed: Debug warnings #1586 and #1459
3075
- * Fixed: A lot of Security Fixes has been done #1497
3076
- * Fixed: Removed lot of unused code #1497
3077
- * Added: AMP skip for checkout page #1443
3078
- * Added: Show the list of Child pages at the end in Parent Page with on/off #1551
3079
- * Fixed: Properly strip shortcodes fom Structured data description #1512
3080
-
3081
- = 0.9.72 (6th January 2018, Happy New Year) =
3082
- * View More details on https://ampforwp.com/0-9-72-released-stability-update-77th-update
3083
- * Related Posts Image stretching in Design 3 AMP theme Framework #1482
3084
- * RTL option must be integrated into AMP theme Framework #1562
3085
- * `DOMDocument::loadHTML():` Attribute itemprop redefined warning fixed #1539
3086
- * Created an option to add Author bio article in Facebook Instant Article #1521
3087
- * Options to add push notification button above and below the content #1571
3088
- * Copy the Content button for Custom Post types #1532
3089
- * Alexa Metrics Compatibility added #1536
3090
- * Logo styling added with amp_logo. So styling can work with AMP Theme Framework. #1520
3091
- * Content parsing login improved, so it will not through any warnings if the content has only 1 paragraph. #1523
3092
- * Debug Warnings removed #1564
3093
- * Caption in the Gallery creating validation errors Fixed. #1549
3094
- * Tables Link color should be as same as the link of the body #1559
3095
- * Separate options for In-Content related posts #1546
3096
- * WebPage Schema Type added in Structured Data options #1558
3097
- * Fatal Error fixed with `mb_detect_encoding()` after enabling the minify option #1494
3098
- * Content blank or fatal errors due to itemscope and itemtype, fixed. #1570
3099
- * Performance improved. Due to `_transient__redux_activation_redirect` transient. #1526
3100
-
3101
- = 0.9.71 (1st December 2017) =
3102
- * Design 2 Post Titles issue fixed
3103
- * Instant Articles validation issue fixed.
3104
-
3105
- = 0.9.70 (30th November 2017) =
3106
- * View More details on https://ampforwp.com/0-9-70-released-stability-update-76th-update/
3107
- * Image alt tags are empty which caused issues. #1154 (thanks to @liagua)
3108
- * ALT and IMG tags are in one line #1442
3109
- * Updated the permalink for post view in admin area #1318
3110
- * aria-current causing validation issues #1427
3111
- * Aligning Captions in the Bottom in Gallery #1428
3112
- * Logo’s height & width should dynamically come from the logo. This was a great UX improvement in my opinion. The logo would good regardless of the kind of image you upload. #1429
3113
- * After 0.9.69.1 update Call to undefined function mb_convert_encoding #1447
3114
- * Featured image options now also reflect the structured data #1430
3115
- * Blur & Stretching issues of Design 3 thumbnails are now fixed. They’re crisp and clear than ever! #1227
3116
- * Related posts are showing on single even when turned off #1434
3117
- * Show Related posts CSS only when it is selected #1356
3118
- * Author image now displays on author pages #1426
3119
- * Category base removal in AMP from url option is only working on the first page #1418
3120
- * Bug fixed: PHP Warning DOMDocument Empty string supplied as input #1449
3121
- * Video support added in Instant Articles #1300
3122
- * Read more tag in Instant articles issue fixed #1415
3123
- * Amp carousel issues fixed #1446 #1456
3124
- * Compatibilty with Envira Gallery Lazy Loading #1432
3125
- * Inline Related Posts in AMP Theme Framework #1457
3126
- * Different number of in-content related post and related posts at the footer #1448
3127
- * FooGallery update broke all the AMP compatibility, but we fixed it from our side so that user’s gallery work perfectly #1424
3128
- * WPBakery Page Builder Conflict solved #1419
3129
- * Goodlife theme Lazy Load compatibility added #1416
3130
- * AMP-Facebook-Like Was found but unused Validation Error fixed. #1463
3131
- * Playbuzz not displaying if added with https: #1466
3132
- * Options Panel labels renamed for better understanding.
3133
-
3134
-
3135
- = 0.9.69 (20th November 2017) =
3136
- * View More details on https://ampforwp.com/0-9-69-released-stability-update-75th-update/
3137
- * One Signal Push Notifications bug fixed! #1404
3138
- * AMP theme framework Related posts extended so that it can be used as a loop format #1406
3139
- * Facebook like Button improvements #1405
3140
- * Add layout responsive tag to image module in page builder #1373
3141
- * Strip the shortcodes from Structure data area #1389
3142
- * Test HTTP API Call From admin panel by redux #1391
3143
- * Meta description tag in normal site Unicode character is different from AMP site unicode character. #1369
3144
- * Updated the check for ampforwp_is_amp_endpoint this should fix the issue #1372
3145
- * Updated the URL for design 3 so it can work with plain permalink #1318
3146
- * Updated the option Featured Image from The Content #1367
3147
- * If “Featured Image From The Content is enabled and Duplicate Featured Image” is disable it will remove all the duplicate images from the content. #1375
3148
- * Date Format under Homepage improvements #1408
3149
- * Warnings due to inline related posts in Homepage #1413
3150
- * Plain Permalinks Support improved. #1318
3151
- * Allow Homepage title of Bread Crumbs feature to be changed from Translation Panel #1414
3152
- * Debug Errors in AMP Theme Framework #1403
3153
- * Unnecessary loading of Merriweather fixed, it will only load in the Design 1.
3154
- * Enter Phone Number is not Appearing when switch to Call now button #1425
3155
- * Need excerpt below the title, above the meta #1399
3156
- * Remove the Separator piple symbol from the footer when “Back to Top link” is off #1417
3157
- * Display Child or subcategories on Category pages. #1385
3158
- * Add Caption in the Gallery Image feature conflicting with Gallery widget #1407
3159
- * Youtube Shortcode embed with &rel=0 support #1378
3160
- * Filter for Excerpt custom text in the AMP options #1411
3161
- * WPML Multilingual CMS plugin flags compatibility #1270
3162
- * Compatibility with Tasty Recipes plugin and other page builders with amp page builder #1431
3163
-
3164
-
3165
- = 0.9.68 (12th November 2017) =
3166
- * View More details on https://ampforwp.com/0-9-68-released-stability-update-74th-update/
3167
- * ADs are Optimize For Viewability, meaning it will try to load faster than the original AMP AD loading strategy.
3168
- * Content was disappearing issue was resolved #1392
3169
- * Featured Image from The Content option is connected to related post #1339
3170
- * Fix amp-web-push helper iframe configuration URL #1387
3171
- * Facebook Like button added to AMP #1327
3172
- * WPML support for AMP Improvement #1285
3173
- * Debug Errors fixed #1366
3174
- * Setting ad density for Facebook Instant Articles ads #1287
3175
- * Showing the number of comments in Single #1341
3176
- * Styling added to the sitewide ads and made sure that they are in the center. #1343
3177
- * One Signal buttons Translation added #1383
3178
- * Article type added to Structured data #1344 #1354
3179
- * The issue with the amp-carousel when RTL was enabled #1358
3180
- * amp-carousel with images of different sizes #1358
3181
- * a bug where Img is getting converted to amp-img if there's no height or width. which causing validation issue and image is not visible fixed.
3182
- * Instant Article should have a default value for number of posts, it was causing the memory issue with alot of posts #1390
3183
- * Notice if a post has no author data #1338
3184
- * Added a new redux extension select field in redux framework #1349
3185
- * Issues with galleries as well as gallery captions #1363
3186
- * Added a hook for adding anything in between the loops #1396
3187
- * Hide meta boxes as per the user level types #1340
3188
- * A Switch between the Date formats #1384
3189
- * Fix: Jannah theme lazy load issue #1362
3190
- * Issues with galleries as well as gallery captions #1363
3191
- * Create Dynamic url of amp according to the permalink structure #1318
3192
- * Minor code performance improvement.
3193
- * Archive titles in Design 3 frontend issue
3194
-
3195
- = 0.9.67.0 (6th November 2017) =
3196
- * View more details on https://ampforwp.com/one-signal-push-notifications-for-amp/
3197
- * OneSignal Push Notifications integrated #807
3198
- * Vimeo embed support added
3199
- * SoundCloud embed support added
3200
- * Pinterest embed support added
3201
- * PlayBuzz embed support added
3202
- * DailyMotion embed support added
3203
- * Fix: Handle issues with data uri images in CSS #1033
3204
- * Fix attribute when adding AMP Mustache lib #1033
3205
- * Fix: Output CSS for feature image #1033
3206
- * An option added for users who don't want to receive update notifications #1342
3207
- * Structured data nav improvement
3208
- * Sitenavigationelement has been implemented correctly for footer menu. #1345
3209
- * Style sanitization for Menu Items #1359
3210
- * Polylang flags support for menu  #1360
3211
- * Mobile Redirection issues fixed #1173
3212
- * Jetpack fatal error fixed #1355
3213
- * AMP Page Builder requires a button to be clicked, so the scripts are not running on the runtime making it easy on the edit screen page and avoid the possible script conflict.
3214
- * Needs proper CTA Bar's styling. #1361
3215
- * Debug errors on archive pages #1353
3216
- * Preview shall only be loaded on click rather than in background #1331
3217
- * ampforwp_is_home() function code improved
3218
- * making sure scripts and styling is properly adding when sanitizing the sidebar #868
3219
- * All the backend css and js should be versioned, so it's not cached. #1335
3220
-
3221
- = 0.9.66.1 (30th October 2017) =
3222
- * Fatal error if has version less than WP 4.8 fixed
3223
- * More Minor Validation errors fixed
3224
- * Odnoklassniki sharing button is not working #1337
3225
-
3226
- = 0.9.66.0 (29th October 2017) =
3227
- * View more details on https://ampforwp.com/0-9-66-released-bug-squashing-oct-2017-72nd-update/
3228
- * Design 3 & Design 1 are optimised with 90+ Google PageSpeed Score on Mobile and 95+ in desktop performance #1273
3229
- * Featured Image from the content for blog and homepage #1295
3230
- * Category Module for AMP Page builder added #888
3231
- * Don't load unused CSS selectors. All the CSS is conditionally loading, to decrease the number of CSS loaded per page and increased in performance #1292
3232
- * Twitter Video embed code support added in AMP #1307
3233
- * Video Posting Structured data #1293
3234
- * Navigation menus are now Schema compatible for better Structured data integration #1229
3235
- * Yoast checking conditions for Structured Data Improved #1293
3236
- * Added "back to Top" in design 3 #959
3237
- * Proper blog check and author for custom frontpage #1260 (Made some changes to check the blog properly and also added the author details for Custom Frontpage)
3238
- * AMP not working on password-protected pages #1192
3239
- * Debug errors reported by the user #1284 and few more we found internally
3240
- * Inline Style Sanitizer for Comments to avoid any validation issues #1193
3241
- * Next/Previous links removed from pages #1268 props @Frenchomatic
3242
- * WPML Multilingual CMS plugin flags compatibility added #1270
3243
- * Image sanitizer added for the Sidebar #1270
3244
- * Added AMP Components the correct way. Added amp-gist, amp-social-share. #336
3245
- * amp-video script added - Which decreases the non-critical validation issues #991
3246
- * Arrows in Design 3 pagination #1000
3247
- * Author page links in Single #1282
3248
- * Added previous open state of option panel and show again when search clean #1238
3249
- * Odnoklassniki Social Sharing Support for AMP (with target blank for better bounce rate) #1230
3250
- * GIF or animated images resize problem fixed #1281
3251
- * In Design1, Header Background & Link Color have same option #1249
3252
- * FB Pixel for AMP added #1231
3253
- * Structured Data Type option for AMPed Custom Post types only #1259
3254
- * Attribute ‘readability in the tag ‘div’ removed - this decreases the validation issues #1306
3255
- * AMP Theme Framework Improvements: loop, author, related_post, Add Author support #1311
3256
- * Commentator's Avatar in the comments section #1132
3257
- * Remove 'Welcome to AMP' from Dashboard sub-menu and moved to the options area to decrease the annoyance and increase the user happiness #902
3258
- * Option to Sort the Random Order of Related Posts to increase the audience engagement (Default is 'ID', on enabling the option it will change to 'rand') #1250
3259
- *  View AMP on Admin Bar for the respected page/post If enable. #1236
3260
- * google maps iframe link to larger map #1099
3261
- * Comments now jumping due to the slash at the end #1309
3262
- * Page Builder causes Incompatibility with the Divi theme (We restructured the Text Module for Page builder for better compatibility and UX) #1162
3263
- * Inline Style Sanitizer for Comments added. Less Critical Validation issues and Better Presentation #1193
3264
- * WPML amp-html error fixed #1285
3265
- * Radio button not working for Show View more Button" #1018
3266
- * Added registered handle for tinymcePointer localize data #1301
3267
- * Date in the Design 2 should not be hidden in mobile version #1315
3268
- * Page builder not working on homepage(Selected as front page) #1316
3269
- * Instant articles number of posts option #1271 (Removed some unused code as well, it will rendered all posts if none is enter in the options)
3270
- * Auto flush on save for FBIA to improve the UX.
3271
- * Plain Permalinks Support improved. #1318
3272
- * Tables support added to FB Instant Articles #1266
3273
- * Demo link added in the Theme selector option #1248
3274
- * Remove invalid attributes from multiple tags which reduces critical validation errors and validates pages.
3275
- * AMP makes a problem in archive page label, when it is active in non-amp version #1304
3276
- * placeholder-icon.png is 404 fixed #1310
3277
- * Category & Tags switches for Single added. #1055
3278
- * Copy Content (Custom AMP Editor) Option Not showing with Page Builder of SiteOrigin issue fixed #1280
3279
- * Improving UX with: when AMP support is off for a specific post type then all the AMP related metaboxes should be removed #1289
3280
- * Options Panel Options rearranged, labels rewritten, descriptions repositioned for better User interaction [commit]
3281
-
3282
- = 0.9.65.2 (25th October 2017) =
3283
- * TypeWatch is not a function #1299
3284
- * Error with BackupBuddy fixed #1303
3285
-
3286
- = 0.9.65.1 (24th October 2017) =
3287
- * AMP Minifcation Issues fixed
3288
-
3289
- = 0.9.65 (22nd October 2017) =
3290
- * View more details on https://ampforwp.com/new/
3291
- * Favicon for AMP #1039
3292
- * AMP Minification option added with Performance Tab in Options #1286
3293
- * Post support is turned off then Meta box should also be removed #1253
3294
- * Excerpt Length feature in Design two and Three #1122
3295
- * Test Contact form plugins and their settings in the options panel #1121
3296
- * Mobile preview in Edit Screen #1082
3297
- * Search feature for Options Panel #1238
3298
- * WordPress Social Share Buttons Validation Issues #1272
3299
- * itemtype attribute is striping in the ul tag #1210
3300
- * Debug Error in Breadcrumb 0.9.64 #1267
3301
- * Disable AMP linking at Wordpress Search Page #969
3302
- * Featured Image is missing #1071
3303
- * Removed ampforwp_plugin_activation_notice #1034
3304
- * Add VK (Vkontakte) Sharing Button #1187
3305
- * Grab the first image instead of post thumbnail for featured image #1189
3306
- * AMP theme framework core changes #1274
3307
- * Grab the first image instead of post thumbnail for featured image #1189
3308
- * Create a Switch on Top of Page Builder #1279
3309
- * Inline Related Posts added that helps you with improving bounce rate #1078
3310
- * Caption Support in Image Gallery Carousel #1172 #1136
3311
- * Instant Articles feed shows sticky posts on top #945
3312
- * Added search check, to fix debug notice
3313
- * Option to hide date from Design 1 & Design 3 Homepage Loop #1264
3314
- * UI labels improvements in the Options panel
3315
- * Sorting out design #2 static front page #1175
3316
-
3317
- = 0.9.64 (15th October 2017) =
3318
- * View more details on https://ampforwp.com/new/
3319
- * Structured Data Type option added. You can now change the structured data format for Posts, Pages and Custom post types #323
3320
- * When comments plugin activate, Comments section should remove. #1093
3321
- * Notification causes a validation error. #1147
3322
- * CSS !important need sanitization #1225 - This will help us to validate tens of thousands of pages.
3323
- * Strange spaces when using Sassy Social Share #1185
3324
- * Remote CDN use? Let's host it? #549
3325
- * Typo fix for Linkedin Profile Page URL section #905 [Thanks to Prayag @pra85]
3326
- * Replace fastimage with fasterimage for PHP 5.4+ #1191
3327
- * Debug Errors Post 0.9.63 #1219
3328
- * Ad5 code injected twice #1116
3329
- * Homepage Support must be Off when we turn Off Homepage Support. #738
3330
- * Add custom class in post pagination for styling #1100
3331
- * Removed the Lazy Loading issue of Schema Theme #1170
3332
- * H1 tag for archive titles (Commit) #1155
3333
- * Alt tag for the Logo #1155
3334
- * Design 3 Menu RTL issue fixed #1106
3335
- * Ability to add dynamic classes in body tag #1237
3336
- * Warnings fixed on 404 page #1243
3337
- * Properly structured data for Homepage, Custom Frontpage and Blog #1155 #1242
3338
- * Option added to Enable/Disable categories and Tags links from Single #1155
3339
- * Fatal error after 0.9.63 fixed #1220
3340
- * Debug Error due to vendor AMP #1213
3341
- * PHP warning on line 147 after 0.9.63 #1241
3342
-
3343
- = 0.9.63 (8th October 2017) =
3344
- * View more details on https://ampforwp.com/new/
3345
- * Category and Tag Base Remover as core features #1079
3346
- * Hide AMP on Posts option added #935
3347
- * Installation Setup Screen Added for new users
3348
- * Validation for the session in PHP #1158. PR by Bryan Contreras @bryan3561
3349
- * All the amp pages should work perfect with Plain Permalink settings #488
3350
- * WYSIWYG TinyMCE editor added for the Text Module in AMP Page Builder #1205
3351
- * WPML Static Front Page Support for title and description with Yoast. #1143
3352
- * Row Settings area added for AMP Page Builder #1148
3353
- * xlink attribute causes Validation Issues #1149
3354
- * Posts with no images on Archive pages are squeezed to 65% #1058
3355
- * Body Class to target specific pages #1123
3356
- * Option to enable/disable Breadcrumb #1129
3357
- * Debug errors due to Breadcrumbs fixed #1109 #1130 #966
3358
- * Visit AMP option added below the View Site in Dashboard. #1076
3359
- * Many Debug errors fixed #1109
3360
- * Textarea for body tag which will help people add AMP Auto Ads #1064
3361
- * Structured data improvements #1048 #1044 #1085 #1118
3362
- * Twitter share URL based on users choice, you can allow people to share pretty links and short links. #1097
3363
- * Author Avatar removed code fixed which has been displayed in the div "amp-wp-meta amp-wp-byline". #1087
3364
- * Only one figure element is allowed in the article header FB Instant Articles #1127 & #1157
3365
- * Image alt tags are empty and cause issues fixed. #1154
3366
- * Button to copy the content into Custom AMP Editor #783
3367
- * Rename AMP loop widget areas or add proper descriptions #1045
3368
- * Trailing slash issue #1095
3369
- * Related Posts by Post type featured added #1141
3370
- * Ultimate Social Media Icons plugin causes validation issues fixed #1135
3371
- * Adding proper path for functions.php, it was causing strange fatal errors and irregular white screen of death fixed  #1144
3372
- * A smooth way to migrate from other AMP plugins to AMPforWP #1051
3373
- * Alert added on AMP by Automattic installation. #1180
3374
- * Insertion of strange spaces around H1 titles #1069
3375
- * AMP Page Builder and HTTPS #1164
3376
- * You can display comments from more than one vendor such as displaying WP & FB Comments #1150
3377
- * Rename AMP loop widget areas or add proper descriptions #1045
3378
- * FrontPage featured image with srcset #1063
3379
- * An option for Showing featured image from custom field #1098
3380
- * Added the Custom Front Page Title From Yoast SEO #1163
3381
- * Commenting breaks SSI directives causes to display error #1179
3382
- * rel canonical appears more than once in search pages #1195
3383
- * Dev mode in AMP #1083
3384
- * Social Sticky Icons Improvements #1061
3385
- * Grand-Child support added in Design #1152
3386
- * amp-accordion non-critical error in Design 3 & CSS improvements fixed #1152
3387
- * Incorrect @id for mainentity #1080
3388
- * Hide AMP by specific Categories tweaked for performance. Thanks to Joshua Eichorn @jeichorn CTO at Page.ly #1133 - Huge Thanks!
3389
- * amp-auto-ads for sites with RTL support ON #1176
3390
- * Redirected the Google forms to our contact page so that we can take each and every query and answer every person. #1201
3391
- * ui-state-highlight class was conflicting with ACF date picker fixed #1199
3392
- * Responsify WP Lazy loading causes blank image (Compatibility) #1131
3393
- * amp-carousel scripts loading on the second page fixed in Design 3
3394
- * Show Design screenshot while selection of design #1209
3395
- * Switches Redesigned for better UX #1211
3396
- * Welcome Page UX Improved #1214
3397
-
3398
- = 0.9.62 (25th September 2017) =
3399
- * View more details on https://ampforwp.com/new/
3400
- * INTRODUCING Page Builder 2.0 for AMP! [Learn More & Watch the Video](https://ampforwp.com/tutorials/article/amp-page-builder-installation/)
3401
- * Documentation & Help links improved
3402
- * Post type specific classes for targetting
3403
- * Design name restored in Options panel (It was recently renamed to Appearance)
3404
- * Minor Bug fixes as well
3405
-
3406
- = 0.9.61 (10th September 2017) =
3407
- * View more details on https://ampforwp.com/options-restructured/
3408
- * Options Panel Restructured Options were dividing into two parts: Settings and Appearance.
3409
- * AMP Theme Framework Core Support Added. You can now create themes of your own in just minutes.
3410
- * WPML Static Front Page Support #1111
3411
- * Notification message disables when CF7 & gravity form is activated. #1107
3412
- * Space after On in Design 3 #1114
3413
-
3414
- = 0.9.60 (4th September 2017) =
3415
- * View more details on https://ampforwp.com/0-9-60-released-improved-redirection-66th-update/
3416
- * Class added to View non-amp anchor tag
3417
- * Params added properly to get rid of a warning #1077
3418
- * rel=attachment noopener generating validation errors #1090
3419
- * Breadcrumbs Support Added #701
3420
- * Enable / Disable button added for Navigation Menu #735
3421
- * Move the ad code for Instant Article down after the article #964
3422
- * Add analytics code of FB instant articles properly #1096
3423
- * datetime Tag not stripping properly #1043
3424
- * Mobile redirection on custom post types #1028 #1052
3425
- * Mobile Redirection causing extra redirect #879 #933
3426
- * Proper mobile redirection on Homepage #1052
3427
- * View non-amp on blog will redirect to blog
3428
- * Blog will redirect to blog irrespective of AMP Homepage option #871
3429
- * Dont redirect if archive support is disabled #1052
3430
- * non-amp category pages should redirect to non-amp pages if turned off from Hide AMP #999
3431
- * Disable amp for forum plugin (wpforo) #592
3432
-
3433
- = 0.9.59 (23th August 2017) =
3434
- * Design 3 Images were not aligned properly. Fixed. #1040
3435
- * Caption in the design 3 improved
3436
- * Jetpack File not loading throwing fatal error #1038
3437
- * If the mobile redirection is ON and the category is excluded to display the AMP then it should redirect properly
3438
- * Custom Editor Compatibility issue with SiteOrigin PageBuilder fixed #997
3439
- * Native Twitter Embed support
3440
- * Added a hook after the body tag: ampforwp_body_beginning (commit)
3441
- * GTM in AMP Improved #958
3442
- * WP User Avatar compatibility Added #975
3443
- * Alt tag on frontpage featured image added #1050
3444
- * Blurred Images on the frontpage fixed #1050
3445
- * Need to escape alt tag #1049
3446
- * Debug errors & PHP warnings were fixed #859 #811 #830 #810
3447
- * Proper rel canonicals for inner pages #1047
3448
- * Added Video sanitizer for comments #1053
3449
- * When activating the AMP plugin, display a notification in the popup. #1036
3450
- * Video Sanitizer added for Comments
3451
-
3452
- = 0.9.58.1 (9th August 2017) =
3453
- * Jetpack conflict issue solved #1038
3454
- * Genesis SEO Support added #1013
3455
- * Fixed Wrong SEO title issue #1013 and #836
3456
- * Design 3 Carousel script loading method improved #990
3457
-
3458
- = 0.9.58 (9th August 2017) =
3459
- * View more details on https://ampforwp.com/new/
3460
- * Genesis SEO for AMP support added
3461
- * AMP 0.4.2 Vendor Bundled for making it crash proof
3462
- * Archive desc only on 1st page #1029
3463
- * Ads are not working after 0.9.6 #1030
3464
- * Fixed the Post 0.9.57 Update Bugs #1025
3465
- * All Images are aligned on left side in design 3 #1031
3466
- * Custom frontpage title issue in Design 3 fixed
3467
-
3468
- = 0.9.57 (5th August 2017) =
3469
- * See the Full changelog https://ampforwp.com/0-9-57-released-compatibility-issue-fixed-62nd-update/
3470
-
3471
- = 0.9.56 (31st July 2017) =
3472
- * View more details on https://ampforwp.com/page-break-in-amp/
3473
- * Page Break / NextPage (Pagination) Support Added #834 #857 (Improvement)
3474
- * Show/Hide AMP for Categories of Posts or All posts #872 (Improvement)
3475
- * Adding analytics capabilities to Instant Articles #978
3476
- * JetPack Plugin Conflict Solved #971
3477
- * Social sharing code improved. amp-social-share js is getting added for line and WhatsApp social share #981
3478
- * Code improvement for rel canonicals(home and archive)
3479
- * Perfect SEO URL + Yoast SEO Compatibility #982
3480
- * Some styling for tags to show up properly
3481
- * Undefined index notices #960
3482
- * Non-amp category pages should redirect to non-amp pages if turned off from Hiding AMP #999
3483
- * Page builder text and button module issues #972
3484
- * Documentation links updated in the Options panel
3485
-
3486
- = 0.9.55 (13th July 2017) =
3487
- * View more details on https://ampforwp.com/0-9-55-released-improvement-update-61st-update/
3488
- * Disqus Comments show up even when disabled per post #931
3489
- * Unnecessary: Adding the Markup for AMP Woocommerce latest Products #929
3490
- * H3 inside OL in Related-Posts.php #930
3491
- * Advertisement Options in Instant Articles #943
3492
- * Incompatible with bootstrap plugin #525
3493
- * Error in tag and category links #934
3494
- * Pagebuilder Button module link had issues #951
3495
- * Unnecessary: Adding the Markup for AMP Woocommerce latest Products #929
3496
- * WPtouch Pro Compatibility Issues #927
3497
- * Better scripts compatibility in Single of post types #757
3498
- * Instant Articles Error: "The HTML element does not contain any text" #949
3499
- * added a filter in all the dates so a user can change the date format and modify #962
3500
- * Design3 Menu Arrows are clickable along with the links #952
3501
-
3502
-
3503
- = 0.9.54.2 (4th July 2017) =
3504
- * Minor bug post 0.9.54 bug fixed
3505
-
3506
- = 0.9.54 (4th July 2017) =
3507
- * View more details on https://ampforwp.com/new/
3508
- * Facebook Instant Articles Support #862
3509
- * Exclude Some Pages from Mobile Redirection #914
3510
- * After 0.9.53 update amp-social-share js missing (critical issue) #924
3511
- * Hooks added in Header (above and below)
3512
- * View non AMP[Code improvement] #928
3513
- * Pages are not supposed to show meta like this, especially Categories #894
3514
- * Monarch plugin having design issues #925
3515
- * Show AMP Hide AMP Check Box Fixes #794
3516
-
3517
- = 0.9.53 (19th June 2017) =
3518
- * View more details on https://ampforwp.com/stability-validation-issues-59th-update/
3519
- * Compatibility Issue with Rocket Lazy Load plugin #907
3520
- * Link color issue with UX of Color Pickers in Design 3 #731
3521
- * amp-analytics js appears more than once when Google tag manager is used #885
3522
- * SEO by SQUIRRLY is adding analytics twice #678
3523
- * Fatal error when WPSEO is activated #900
3524
- * Design 3 Sticky header should have an option #625
3525
- * Search form was enhanced, it can now be used on the websites without https certificate. That will certainly fix a lot of validation issues. #912
3526
- * Yandex Metrika support in AMP #585
3527
- * Histats Analytics Support #880
3528
- * Chartbeat Analytics Support #882
3529
- * Do not strip Rel from anchor tags #790
3530
- * Design close Resulting Blank Screen in AMP Site #642
3531
- * Logo size is not applying #817
3532
- * AMP Publisher logo guidelines #162
3533
- * Remove amp-social-share extension .js from Custom Frontpage #899
3534
- * Add compatibility with Sassy Social Share #679
3535
- * Remove Disallowed ‘like’ tag from Facebook Like button by Ultimate Facebook plugin
3536
-
3537
- = 0.9.51.1 (12th June 2017) =
3538
- * Redirection issue after 0.9.51 Update.
3539
- * Improved compatibility with plugins.
3540
-
3541
- = 0.9.51 (8th June 2017) =
3542
- * View more details on https://ampforwp.com/page-builder-released-in-amp/
3543
- * Page Builder Support added ( See Tutorial at https://ampforwp.com/tutorials/page-builder/ )
3544
- * Comments are not showing properly when words are long #861
3545
- * Remove amp-social-share extension .js from Pages #853
3546
- * The tag ‘amp-sidebar extension .js script’ appears more than once in the document #828
3547
- * Remove Advertisement tab #839
3548
- * Compatibility with Slide-in Plugin by WPMU dev #866
3549
- * Mobile redirection issue with bbpress #867
3550
- * All the data must be properly sanitize in the sidebar #849
3551
- * AMP html should not be added on the second page of comments
3552
- * Author pages support #456
3553
- * URLs in comments should be clickable(links) #869
3554
- * Featured image should be centered in desktop mode #870
3555
- * Added More Hooks #721 (Documentation on this coming soon!)
3556
- * Page 2 goes to the wrong URL #865
3557
- * Proper Title and meta for homepage and posts #850
3558
- * Gist Support added #608 – Just add a shortcode and enjoy Devs (Ex: amp-gist id="b9bb35bc68df68259af94430f012425f )
3559
- * /blog/amp pagination not working #875
3560
- * separate the Text and Date format in design 2 #876
3561
- * Comments show in AMP w/o breaks between paragraphs #873
3562
- * If no featured image below hooks are not working #877
3563
- * Change meta name Viewport and its value #878
3564
- * Bolt icon in option #474
3565
- * Code restructuring and code quality improvements.
3566
- * Create a seperate function for comment code in frontpage.php #682
3567
- * Remove all the duplicate code from frontpage.php of all the designs and use hooks to add the code instead of static code #889
3568
- * Few Debug errors removed.
3569
-
3570
- = 0.9.50 (24 May 2017) =
3571
- * View more details on https://ampforwp.com/facebook-comments-in-amp/
3572
- * Design 3 Social Icons issue #832
3573
- * View non AMP leads to /?nonamp=1 #814
3574
- * Youtube shortcode compatibility improved #557
3575
- * welcome.php should be shown only if user is “administrator” #696
3576
- * Facebook comments support added in AMP #825
3577
- * WP Like Button Compatibility #841
3578
- * Custom Taxonomy Support added with Custom Post Type Extension.
3579
- * Front page comments not found as expected #837
3580
- * Fixed xml:lang tag issue #848
3581
- * Sanitize Iframe in the archive description Fixed #845
3582
- * Compatibility with Newspaper Theme by TagDiv #842 and #796
3583
- * Some debug problems (blog page, style.php) #838
3584
- * Featured Image hooks added
3585
- * Twitter is misspelled #854
3586
- * The core concept of the AMP Content builder has been built.
3587
-
3588
-
3589
- = 0.9.49 (12 May 2017) =
3590
- * View more details on https://ampforwp.com/0-9-49-released-small-important-bugs-fixed-56th-update/
3591
- * Option added to display the excerpt in Single #806
3592
- * Ability to add new invalid tags to filter out from AMP pages #809
3593
- * In frontpage, comment button is pointing to wrong URL #812
3594
- * Call now button and search is overlapping in Design-1 #784
3595
- * Sticky Social Icons should be off if the CTA notification bar is on #788
3596
- * Author bio in Design 1 and 2 #732
3597
- * Styling in Taxonomy description causing validation issues #798
3598
- * Twitter share(handle, url positions fixed) #815
3599
- * Tables responsiveness in ALL Designs #726
3600
- * Output all the categories and tags with their own ID’s in the div classes #750
3601
- * Social Share Icons Overlap with Leave A Comment in Design 3 #716
3602
- * Effective Measure Support on AMP #297
3603
- * Custom AMP editor on pages should only be shown when page support is ON #756
3604
- * AMP on website.com/blog without need of separate installation #775
3605
- * GTranslate Compatible #819
3606
- * Images and amp-anim styling added #725
3607
- * Filter to make the title in a post to a link #727
3608
- * Author Bio and Social Share button must not come in Pages #770
3609
- * StatCounter is now compatible with AMP #361
3610
- * Line Social media support #500
3611
- * Footer menus for Design 1 & Design 2 #623
3612
- * Strip out src=”about:blank” When Gravity Forms used #804
3613
- * Add Compatibility with Crazy Lazy load plugin #751
3614
- * Meta Titles and Description issues fixed with Yoast, All in one SEO and The SEO Framework #813
3615
- * Double quotes in the Excerpt of the meta description is making AMP Invalidated #818
3616
- * Missing featured image on static front page #824
3617
- * Fatal error while activation: see the video 0.9.49 Beta #827
3618
- * Review this code in archive.php in all 3 designs. #826
3619
-
3620
-
3621
- = 0.9.48 (28 April 2017) =
3622
- * View more details on: https://ampforwp.com/0-9-48-released-step-towards-multilingual-support-55th-update/
3623
- * The default translation method of WordPress added. (Option in Translation panel to switch between * Translation panel and POT file #540)
3624
- * A new Advertisement slot added above the related posts in the Single. It not only gives better options for people to display ads but this ad slot is also very handy if you are using ad companies like Taboola and RevContent.
3625
- * Another Advertisement slot added below the post title in the Single post.
3626
- * Fatal error: require_once report-bugs.php #747 fixed
3627
- * Add / for codes in Meta Description #766 fixed
3628
- * Controls re-adjusted & Renamed title of yoast description control in Options panel
3629
- * Design-3 Slider URL redirecting to non-AMP page #758
3630
- * Added new sanitizer For HTML to AMP-HTML conversion
3631
- * Sanitized Archive descriptions so that it would convert to AMP
3632
- * Comments sanitized with new sanitizer so that HTML tags automatically become AMP compatible.
3633
- * 301 redirects on non-pretty internal links #767
3634
- * Create a filter to modify the value of rel="amphtml" #778
3635
- * Max-width added for images in comments
3636
- * If in WooCommerce ?amp endpoint set then update href.
3637
- * Undefined Variable (Debug) #733 and many other debug issues were fixed
3638
- * Show last updated Post instead of published date #575
3639
- * WooCommerce Widget added to display latest products on homepage. #763
3640
- * add amp_post_template_above_footer hook global in all the designs #779
3641
- * Excerpt on top of the content in Single #665
3642
- * Subscribe box has been improved for the UX needs #712
3643
- * Notice warnings since 0.4.2 update #740
3644
- * AMP Comments Form Integration with the extension
3645
- * Filter added on the loop in Homepage of the Design 3 so that it can be modified with an external plugin.
3646
- * 404 on paged home page #781
3647
- * Twitter handle should be at the end of the tweet not in the beginning #787
3648
- * Wrong Rel Canonical for AMP Custom Frontpage #799
3649
- * Merged a pull request #761 that will improve the title and description output that is much more stable and flexible for future enhancement and use. It was contributed by Sybre Waaijer - Thanks mate for the contribution, we (our team and users) really appreciate your hard work done on this code.
3650
- * Extension page user experienced improved.
3651
- * Removed old Youtube installation video and replaced with new one.
3652
-
3653
- = 0.9.47.2 (12 April 2017) =
3654
- * Design-3 Slider URL redirecting to non-AMP page #758
3655
- * Ads showing in comments #768
3656
-
3657
- = 0.9.47.1 (11 April 2017) =
3658
- * Meta description option improved in SEO section #766
3659
- * Fatal error: require_once report-bugs.php #747
3660
-
3661
- = 0.9.47 (10 April 2017) =
3662
- * View more details at https://ampforwp.com/0-9-47-released-54th-update/
3663
- * Meta saving method updated for customAMP content editor checkbox was causing some conflict.
3664
- * Wrong Yoast title and structured data in Custom Frontpage fixed
3665
- * CSS minification all 3 designs
3666
- * Polylang flags in menu was causing validation issue, is now resolved
3667
- * WPML flags in menu was causing validation issue, is now resolved
3668
- * Standardized function created for content sanitization.
3669
- * Archive description now displays AMP compatible markup
3670
- * Comments markup sanitized for AMP
3671
- * Design 3 images not aligned properly, fixed
3672
- * Images are aligned to center in Design 1.
3673
- * carousel ending with //amp instead of /amp fixed #753
3674
- * Title of the Post along with Post link when shared in twitter #683
3675
- * Ads were cutting in half in RTL, fixed
3676
- * Add / at the end of AMP links with in the AMP pages (Internal links) #668
3677
- * Rendering the wrong URLs in front page if paged #742
3678
- * Option to turn off AMP on all pages, so people can turn on only for specific pages #746
3679
- * Need Meta Description on amp pages #741
3680
- * Woocommerce Loop shortcode updated
3681
- * Call Now Button added in header #563
3682
- * Post images are not centered in Design 3 #695
3683
- * UX of GTM settings done, since users were getting confused #700
3684
- * Front page amphtml fixed for paginated pages
3685
-
3686
- = 0.9.45.6 (31 March 2017) =
3687
- * Installation Process from welcome page was not working after WP Plugin DIR API change was fixed.
3688
- * WP Rocket Minifcation and Concatenation was not working, its fixed now.
3689
- * WP Rocket was tested properly to make sure everything is working fine.
3690
-
3691
- = 0.9.45.5 (25 March 2017) =
3692
- * WP rocket conflict solved
3693
- * Cannot set property ‘innerHTML’ of null issue fixed
3694
-
3695
- = 0.9.45.3 (21 March 2017) =
3696
- * Post 0.9.45 bugs fixed and released as an urgent update.
3697
-
3698
- = 0.9.45.1 (19 March 2017) =
3699
- * Post 0.9.45 bugs fixed and released as an urgent update.
3700
-
3701
- = 0.9.45 (18 March 2017) =
3702
- * View more details at https://ampforwp.com/0-9-45-released-compatibility-rtl-53rd-update/
3703
- * W3Total cache compatibility added
3704
- * RTL Support added for Right-to-Left language websites.
3705
- * Comments Pagination feature added
3706
- * WP-Rocket Compatibility added
3707
- * WPML Compatibility added
3708
- * Quantcast analytics support added
3709
- * ComScore support added
3710
- * Custom Yoast title support added #685
3711
- * WooCommerce Shortcode: Allows you to display WooCommerce Products. [amp-woocommerce num=6] will display the 6 products from WooCommerce. [amp-woocommerce num=6 link=noamp] will display 6 products but they will go to non-amp website, if you want to link to AMP version of the page then use [amp-woocommerce num=6 link=amp]
3712
- * Admin area UX improvements
3713
- * Adding notifications script in the correct way
3714
- * Comments now display on frontpage as well.
3715
- * Re-positioned non-amp Header link control to the right section.
3716
- * ?nonamp=1 only displays when the Mobile redirection is on
3717
- * Properly adding iFrame js.
3718
- * Custom Post type incompatibility fixed
3719
- * Widgets added to the Custom Frontpage.
3720
- * Stripping shortcodes from excerpts.
3721
- * Custom content on static frontpage had over riding issue #687
3722
- * Option added for controlling number of comments
3723
- * Welcome page should be shown only if user is “administrator” #696
3724
- * Digg Digg social share compatibility #694
3725
- * Removed unnecessary lines from Design 3
3726
- * Sanitized Archive Description to amp Compatible #659
3727
- * Author box now displays HTML properly #645
3728
- * Date added Design-3 in meta #583
3729
- * Options link was removed from wp-admin tool bar after a feedback from a user.
3730
- * Footer sub menus layout compatibility.
3731
-
3732
-
3733
- = 0.9.44 (5 March 2017) =
3734
- * View more details at https://ampforwp.com/user-experience-52nd-update/
3735
- * Added Welcome Screen for better User experience. [Enhancement]
3736
- * Undefined Index debug error resolved [Bug fix]
3737
- * All in one SEO Support support tested [3rd party compatibility]
3738
- * Frontpage title in Design 3 is out of the container #644 [Bug fix]
3739
- * Default Table markup in AMP #643 [Enhancement]
3740
- * AMP carousel is not working on Frontpage #641 [Bug fix]
3741
- * Social share .js was getting added even when it was not required #638 [Bug fix]
3742
- * Search Feature added for Design 1 & Design 2 [Major Improvement]
3743
- * Accordion script loading issue in Design 3 #634 [Bug fix]
3744
- * ?nonamp=1 links should be nofollow #622 [Bug fix]
3745
- * Same Header and Color Scheme are making header elements invisible #629 [Enhancement]
3746
- * In Search AMP rel canonical was different #631 [Bug fix]
3747
- * Non-AMP link in Design 3 was not working when mobile redirection was enabled #632 [Bug fix]
3748
- * Search form text strings are now added in the translation panel #607 [Bug fix]
3749
- * Load AMP-ads conditionally only if ads are available #609 [Bug fix]
3750
- * Added compatibility with Custom post type extension. Option to hide/show AMP on all custom post types #587 [Bug fix]
3751
- * Report a Bug & Request feature links added [Enhancement]
3752
- * If there was no menu set in Design 3 then all pages were getting displayed. #613 [Bug fix]
3753
- * The tag Font is disallowed #616 [Validation Improved]
3754
- * index/noindex separately added for Tags and also for Categories #606 [Enhancement]
3755
- * Use of undefined constant AMP_QUERY_VAR #596 [Bug fixed]
3756
- * Logo is not centered in Design 3 #586 [Bug fixed]
3757
- * Remove defer, a very rare type of defer was getting added #589 [Validation Improved]
3758
- * Disqus comments iframe had scrolling issues #566 [Bug fixed]
3759
- * Left side blank gap in the RTL in design 2 #541 [Bug fixed]
3760
- * Inline Styles not working correctly in Custom AMP Editor #533 [Bug fixed]
3761
- * Re-save permalinks issues. Flushing rewrites with options saved. #511 [Improvement]
3762
- * Code review and cleaning of the customizer #404 [Code Cleaning]
3763
- * Google Search iframe had some header alignment issues in Design 3. #624 - Thank you Leo Osa @leoosa for the contribution! [Bug fixed]
3764
- * AMP Frontpage + Override AMP Content = Blank page #604 [Bug fixed]
3765
- * Widget area added on the homepage with an 'AMP Category Blocks' widget. It means you can display multiple category blocks the homepage. This allows you to display complex layouts, even on AMP. [Major Improvement]
3766
- * Auto-append /amp at the end of internal links in Menu with an option in the Menu section of the options panel #531 [Major Improvement]
3767
- Reformatting and Minifying of stylesheet [Code Cleaning]
3768
- * Created a new section for Homepage and moved some controls from other areas to the home section for the better user experience. [User Experience]
3769
- * Override Homepage Thumbnail size option added. It will give you more control over your thumbnails. [Major Improvement]
3770
- * New color picker added to change the color of the header elements in the Design 3 to give you better control over the design. [Enhancement]
3771
- * Extra amp-carousel script loading is now fixed. [Bug fixed]
3772
- * Crafting of layout code in design 2 and design 3, especially with social icons area. [Code Cleaning]
3773
- * Design of search form was not clickable in iOS devices #621 [Bug fixed]
3774
- * Disqus iframe was loading even when there was no disqus name was added in the option. We found that many users might be enabling it without knowing the output and then they seem to forget, which was causing them validation warnings. [Bug fixed]
3775
-
3776
- = 0.9.43.6 =
3777
- * View more details at https://ampforwp.com/stability-sprint-3-51st-update/
3778
- * Typo in the is_home() function fixed
3779
- * Option to hide/show AMP on all custom post types #587
3780
- * False detection by Windows defender tool fixed
3781
- * Conditional tags were not compatible with Advanced AMP ads which were causing some conflicts but is now fixed.
3782
-
3783
- = 0.9.43.5 =
3784
- * View more details at https://ampforwp.com/stability-sprint-2-50th-update/
3785
- * Fixed shortcodes issue in related posts #543
3786
- * Iframe Scripts Added properly
3787
- * Proper conditions added for the social section of Design 3
3788
- * Featured Image issue stretched in Design 2 & 3
3789
- * Removed extra global $redux_builder_amp;
3790
- * Custom Logo Dimensions option added #479
3791
- * Index & NoIndex options added for SEO section. #558
3792
- * Added URL for rewrite flushing rules in Options
3793
- * Option to enable and disable the Author area in Design 3#577
3794
- * Rel Nofollow added in credit link
3795
- * debug issue solved: fn_offset not defined
3796
- * debug issue solved: global $post not declared
3797
- * The word 'ago' is now translatable in design 3
3798
- * The word 'read next' is translatable now
3799
- * Tablepress compatibility added #392
3800
- * Secure API server is now serving through Google Cloud Manager.
3801
- * Thrive Content builder was displaying twice when the Custom AMP content was on. It was a complex issue which has been solved now.
3802
- * amp-ad extension.js script was loading if the Ads are not enabled. #598
3803
- * Social Share Extension Included on Homepage even if we didn't have social icons #599
3804
- * Installation UX improvement #593
3805
- * Removed duplicate global variable
3806
- * Proper OG tags added #588
3807
- * Proper instructions added for Custom AMP content #471
3808
-
3809
-
3810
- = 0.9.43.1 =
3811
- * View more details at https://ampforwp.com/0-9-43-1-released-stability-sprint-1-49th-update/
3812
- * Emoji in comments leads to AMP errors
3813
- * Design 1 showing time on archives
3814
- * Added some space between the archive label.
3815
- * Lazy loading plugins compatibility #544
3816
- * Custom header and footer areas
3817
- * Sticky posts now come on top #564
3818
- * Footer non-amplink added in design 3 #562
3819
- * HTML Paragraph tag is shown in the title in category! #518
3820
-
3821
- = 0.9.42 =
3822
- * View more details at https://ampforwp.com/design-three-update/
3823
- * Design 3 was released Video Overview along with new options and features. View the video overview at: https://www.youtube.com/watch?v=ub1pwskt3Rc [Major Feature]
3824
- * Ticket #517 Added Upload field into Redux core [3rd party Compatiblity]
3825
- * Ticket#529 Controls for archive titles added [Improvement]
3826
- * Ticket #548 Jetpack photon code removed
3827
-
3828
- = 0.9.41 =
3829
- * View more details at https://ampforwp.com/disqus-comments-in-amp/
3830
- * Disqus Comments in AMP Support Added [New Feature] - This feature can be enabled from Dashboard > AMP Options > Disqus Comments
3831
- * AMP WooCommerce supported tag was missing after the last update. [Bug fix]
3832
- * Homepage & Related Posts was displaying private and protected posts, which is now fixed [Bug fix]
3833
- * Next previous links added in Design 1 [Enhancement]
3834
- * Invalid Post Time displaying in the homepage of Design 1 [Bug fix]
3835
- * Twitter share now includes the twitter handle of the author with setting in options [Enhancement]
3836
- * Emoji in comments leads to AMP errors was fixed [Bug fix]
3837
- * Date are now displayed on archives in Design 1 [Enhancement]
3838
- * When RTL enabled logo merges with nav bar was fixed [Bug fix]
3839
- * Jetpack Photon compatibility added [3rd Party Compatibility]
3840
-
3841
- = 0.9.40 =
3842
- * View more details at https://ampforwp.com/0-9-40-released-biggest-stability-update/
3843
- * Proper endpoints added [Improvement]
3844
- * Flush Rewrites properly [Improvement]
3845
- * REL Canonical properly getting added. [Improvement]
3846
- * Proper Frontpage Canonical added [Improvement]
3847
- * Added Base name support for categories and tags [Improvement]
3848
- * Redirection of excluded post solved. [Bug fix]
3849
- * Archives properly redirecting to the right URL [Bug fix]
3850
- * Homepage redirection solved [Bug fix]
3851
- * Plusone tag is stripped properly. [Validation Issue fixed]
3852
- * Archives are now clickable. [Improvements]
3853
- * WP_Query filter added for better customizability of Homepage loop. [Better Customizations]
3854
- * Social share boost plugin compatibility. [3rd party Customizations]
3855
- * Removed H1 from the frontpage even if it is not available. [Improvement]
3856
- * H3 instead of H1 for Site title. So there is only one H1 per page. [SEO Improvement]
3857
-
3858
- = 0.9.38 =
3859
- * View full details at https://ampforwp.com/google-tag-manager-for-amp/
3860
- * Google Tag manager included [New feature]
3861
- * Iframe max-width added [Improvement]
3862
- * Paginated pages have different titles now. [Bug fix]
3863
-
3864
- = 0.9.37 =
3865
- * View full details at https://ampforwp.com/category-tags-archive-support-added/
3866
- * Debug issues solved [Bug fix]
3867
- * Remove Extra styling added by other Themes/ Plugins [3rd party themes and plugin Support]
3868
- * Category, Tags & Archive Support with titles added [Enchancement]
3869
- * Archive Title support added [Enchancement]
3870
- * There were some issues with attachments [Bug fix]
3871
- * removed ? from amp url's [Improvement]
3872
- * Mobile redirection for Archives added and 404 redirections removed for archives [Improvement]
3873
- * View non-amp version now properly redirects to the normal version. #415 [Bug fix]
3874
- * Added an option to turn off AMP support for Homepage. [Enchancement]
3875
- * Too many redirects issue on homepage is fixed #435 [Improvement]
3876
- * Spell check and G tags are removed for thrive & Spell check compatibility [Better Validation]
3877
- * If image is not available in gravatar fixed, it was throwing an error #365 #327 [Improvement]
3878
- * Comment anchor link changed for simplecomment button files in both designs [Improvement]
3879
- * Redirection Loop issue fixed [Bug fix]
3880
- * Shortcodes were visible in excerpt, it's fixed now. [Improvement]
3881
- * Defer onload by other plugins was causing issues #431 [Better Validation & 3rd party support]
3882
- * Improved Sessions [Improvement]
3883
- * Advnaced Settings panel was created for better user experience. [Improvement]
3884
- * Spell check tag was causing validation issues. [Better Validation & 3rd party support]
3885
- * RTL issue fixed #454 [Bug fixed]
3886
-
3887
- = 0.9.36 =
3888
- * Full details at https://ampforwp.com/0-9-36-released-stability-update-43rd-update/
3889
- * Redux Core Update. Better compatibility with the Salient theme and Themeforest themes & plugins using redux framework in their core, which makes the plugin much stable. [Huge Improvements]
3890
- * Hide advertisement section if advance ads plugin is active. [Better User experience]
3891
- * Ultimate Social Media PLUS Plugin Compatibility (Link) [3rd Party plugin Compatibility & Better Validation]
3892
- * Launch Post Builder button added. One of the important feature called ‘Post Builder’, that is drag and drop post builder was somewhere hidden in the customizer, so positioned it for better visibility from users. [Better UX]
3893
-
3894
- = 0.9.35 =
3895
- * Full details at https://ampforwp.com/page-builder-realtime-preview-3rd-party-plugins-compatibility/
3896
- * Customizer page builder (Design Manager) was not showing real-time preview, we have fixed this issue properly [Bug fix]
3897
- * Attachment page was having the wrong endpoint. [Bug fix]
3898
- * Fb:like div has href, showfaces, send and action tag, which was against validation [Validation Improvement]
3899
- * A plugin (Spam Protection by CleanTalk, no Captcha Anti-Spam) was forcefully adding script into the AMP version. [3rd party Compatibility]
3900
- * Lang attributes were added [Enhancement]
3901
- * The tag like was disallowed in the AMP [Validation Improvement]
3902
- * We did some more testing with Visual Composer & AMP [3rd party Compatibility]
3903
- * AMP on Pages option was not working in some cases. [Bug fix]
3904
- * Disable comment button when comments were disabled. This was fixed by @lofesa and was sent as a pull request. Thank you Lofesa!
3905
- * g:plusone tag was not getting removed properly. [Validation Improvement]
3906
- * Thrive headline optimizer was having issues in AMP version. [Validation Improvement]
3907
- * Structured Data Image width issue solved [Enhancement]
3908
- * BJ Lazy Load was having issues, we have added a fix which will make this plugin compatible with the AMP. [3rd party Compatibility & Validation Improvement]
3909
- * imageanchor=”1″ was getting added by some 3rd party plugin, this was fixed.[Validation Improvement]
3910
-
3911
- = 0.9.34 =
3912
- * Newspaper theme by Tagdiv was having issues, we have fixed this one.
3913
-
3914
- = 0.9.33 [15th Jan 2017] =
3915
- * Full details at https://ampforwp.com/debug-errors-shortcodes/
3916
- * Mobile was not working with Newspaper theme by Tagdiv [Bugfix]
3917
- * Debug errors fixed, Code is now much cleaner.
3918
- * New rewrite rules for homepage pagination. It had some paginated URLs with wrong amphtml tag.
3919
- * Extra analytics file was loading. Better compatibility with Yoast & Monster analytics.
3920
- * Properly removes AMP if turned off from Post panel
3921
- * z-index position improved on Sticky Social bar
3922
- * Better compatibility with shortcodes.
3923
- * Divi Standard Layouts Compatibility
3924
- * Properly Hide AMP posts if excluded. #367
3925
- * Mobile redirection was causing loop issues which are now fixed.
3926
- * Some plugins were loading in core AMP js file, which was causing the issues, which is now fixed. [Better Validation]
3927
- * onclick was getting added in the links on AMP version. Issue fixed. [Better Validation]
3928
- * thrive_headline tag was getting added in the Title tag which was causing validation issues. Fixed. [Better Validation]
3929
- * Some interactive plugins were using place, state, city and imap tags which are now fixed. [Better Validation]
3930
-
3931
- = 0.9.32 [7th Jan 2017] =
3932
- * Full details at https://ampforwp.com/first-wave-of-polishing-in-2017/
3933
- * Rel=canonical issue fixed: AMP URL redirect to the normal URL #293 & #332.
3934
- * Paginated pages on homepage redirect to homepage URL #335
3935
- * Title of the page should be displayed on the FrontPage #358
3936
- * Thrive Builder AMP Validation Compatibility, so it will be validated properly in AMP.
3937
- * Twitter Sharing improved so it gets the data properly #341
3938
- * Option to change the number of Related Posts #290
3939
- * Validation errors due to rel="canonical" was missing on some pages
3940
- * Comment button displays even if the comments are not available
3941
- * Threaded comments were duplicating, so that issue is solved and added proper CSS for it.
3942
- * Minor issue with Jetpack Comments fixed.
3943
- * Missing amp-social-share.js on front page fixed #372
3944
- * Minor improvements to Title and description tags.
3945
- * Analytics Script was loading twice when Glue was active.
3946
- * Page specific class added for better customization compatibility #377
3947
- * Inline Style support added Fixed #356
3948
- * Bugs fixed in Email notification pointer
3949
-
3950
- = 0.9.31 [2nd Jan 2017] =
3951
- * Proper Details at https://ampforwp.com/amp-0-9-31-released-installation-user-experience/
3952
- * Proper Condition added for the scripts to load in Frontpage.php
3953
- * Rel canonical properly added for front pages
3954
- * 404 and Archive page Mobile redirection code refined
3955
- * User Experience Improvement: Installation process was improved
3956
-
3957
- = 0.9.3 [31st December 2016] =
3958
- * Proper Details at https://ampforwp.com/custom-amp-content-editor/
3959
- * Custom AMP Editor - Which allows you to override your Content that you had written in Post or page, so you can add the different content just for AMP.
3960
- * FrontPage had some validation issues. [Bug fix]
3961
- * Related posts in Design 1 we're redirecting to 404 fixed [Bug fix]
3962
-
3963
- = 0.9.2.2 [27th December 2016] =
3964
- * Proper Details at https://ampforwp.com/polishing-user-experience-improvements/
3965
- * Made the Options panel user-friendly
3966
- * Social Share on frontpage issue fixed.
3967
- * Readme.txt made user-friendly.
3968
- * Archive option removed and some UI improvements
3969
- * Single was not displaying the Title
3970
- * 'Type is not allowed' [Validation issue fixed]
3971
- * noshade tag Validation issue fixed
3972
-
3973
- = 0.9.2.1 [24th December 2016] =
3974
- * Proper Details at https://ampforwp.com/step-towards-fixing-amp-validation-errors/
3975
- * Disabled the Tags and Categories support for AMP for better validation until we find a better solution.
3976
- * Mobile redirection bug fixed, It was continuously redirecting to the same page [Bug fix]
3977
- * trailingslashit added to make sure we have proper url for Mobile redirection [Bug fix]
3978
- * In content AD overlapping the content issue fixed
3979
-
3980
- = 0.9.2 [23th December 2016] =
3981
- * Proper Details at https://ampforwp.com/mobile-redirection/
3982
- * AMP Mobile Redirection Feature added. It can be turned on from Dashboard > General and then Mobile Redirection. [New Feature]
3983
- * Archive title and description added [Improvement]
3984
- * Improved the Speed of the AMP version #321 [Improvement]
3985
- * Anchor link was not closing fixed #328 [Bug Fix]
3986
- * Typo in Trailingslashit function which resulted in some issues in the Homepage version [Bug Fix]
3987
-
3988
- = 0.9.1.2 [20th December 2016] =
3989
- * Proper Details at https://ampforwp.com/new/
3990
- * DoubleClick Support
3991
- * Custom Post Type Support
3992
- * Ratings Support
3993
- * Comments Gaping fix
3994
- * Custom Excerpt code
3995
- * Better Compatibility with Yoast SEO plugin
3996
- * AMP Validation error in Design 1 Fixed
3997
- * Proper Homepage title & Description with Yoast SEO plugin issue fixed
3998
- * Design -1 Excerpt too big for mobile devices, Fixed
3999
- * Advertisement support on Design 1
4000
- * Link to Tags & Categories were having some issues.
4001
- * AMP looking bad on big devices
4002
- * AMP validation Improvement: Lightbox plugins compatibility
4003
- * Huge Progress in AMP Validation Errors: Strip unwanted codes and tags from wp_footer for better compatibility with Plugins
4004
- * Page Performance: Removed default Google font loading
4005
- * Page Performance: DNS Prefetch tag added for faster DNS Handshake
4006
-
4007
- = 0.9.1 [16th December 2016] =
4008
- * Proper Details at https://ampforwp.com/new/
4009
- * PHP7 Compatibility
4010
- * Pagination URLs (Prev & Next) was going to 404 ( #244 | #251 )
4011
- * Custom CSS not working in Design one (#249)
4012
- * Enhanced the translation panel by adding Textarea from Redux, which means that we're able to allow HTML in footer like before (#260)
4013
- * How to remove “Powered by WordPress” from Design-1 of AMP ( #264 )
4014
- * Non-amp Homepage support added (#267)
4015
- * using get_avatar() (#259)
4016
- * Validation issue fixed: The attribute 'rel' may not appear in tag 'div' (#268)
4017
- * Validation Issue fixed: Script Tag removed from the content.
4018
- * Featured image in Design 1 in single #261
4019
- * After Fresh installation - a save is required Fixed
4020
- * Excerpt length controlled
4021
- * Design One has thumbnails on the Homepage
4022
- * Non-AMP link goes to the wrong page, issue fixed.
4023
- * Archive pages were broken, fixed.
4024
- * Option to Enable & Disable the Next/Previous links in Single
4025
- * WhatsApp sharing not working, issue fixed.
4026
- * Category Taxonomy has extra ':' in the word.
4027
- * The word 'Ago' is now translatable.
4028
- * Yoast SEO with AMP compatibility issue fixed.
4029
- * Several Minor Polishing in the code
4030
- * Footer Ad gets covered by Sticky Social Icons (#269)
4031
- * Smaller image size when “image caption” is used in Design-2 (#263)
4032
- * Footer ad with Sticky Social bar issue fix
4033
- * Checked with WordPress 4.7
4034
- * Ad #1 was messing up with the title, issue fixed.
4035
- * Compatibility improved with AMP WooCommerce.
4036
-
4037
- = 0.9 =
4038
- * Proper Details at https://ampforwp.com/amp-pagebuilder/
4039
- * Drag & Drop Page builder Added: You can easily modify the look of the AMP page using this feature
4040
- * 100% Yoast Compatible , Now no need to have additionally Glue Installed
4041
- * 100% completed Translation panel, Now absolutely anything on page is translated
4042
- * Added Option to turn on/off Page Support
4043
- * Styling for Tags was Corrected
4044
- * Made changes to these sections to reflect in the new Design manager : Related Posts, Footer
4045
- * Default Image alignment styling added
4046
- * Added Option to turn on/off Page Support
4047
- * Related Posts Now use Custom Excerpt if it Exists
4048
- * Now AMP pages wont have Validation errors because of 'rel' attribute in 'div' Tag or 'onclick' attribute in 'a' Tag
4049
- * <pre> Tag styling issue fixed for AMP pages
4050
- * Frontpage (Homepage) Compatibility with AMP which means better validation of front page.
4051
- * WooCommerce Support Added https://wordpress.org/plugins/amp-woocommerce/ (for E-Commerce)
4052
- * 2 New Designs added
4053
- * SEO Panel Added
4054
-
4055
- = 0.8.8 =
4056
- * Proper Details at https://ampforwp.com/amp-0-8-8-released-translation-panel/
4057
- * Translation Panel added. You can now easily translate the AMP version from the backend without any complications.
4058
- * Badge Tag was throwing Validation error
4059
- * Plusone tag validation error was fixed
4060
- * Time tag was validation error was fixed
4061
- * User experience for Mobile devices was improved
4062
- * Meta info was messing up in smaller devices, it was fixed as well.
4063
- * Internal AMP linking added for Categories and Tags
4064
- * Future errors for AMP ads was fixed
4065
- * Blockquote styling added
4066
- * “Please Activate parent Plugin settings” added for better User Experience.
4067
- * Related Post Ux improvement
4068
- * Plugin version added in Footer source code for better debugging
4069
- * Added Support for Default WordPress Image alignment
4070
- * New action hooks added in index page
4071
- * Featured Image Size options added
4072
-
4073
- = 0.8.7 =
4074
- * Proper Details at https://ampforwp.com/amp-0-8-7/
4075
- * added option to enable/disable AMP on Archive pages (Ticket #188)
4076
- * Solved 404 on Related Posts (Ticket #178 )
4077
- * Related posts by either categories or Tags(Ticket #179)
4078
- * added a link to menu Section from the AMP Options page(Ticket #190)
4079
- * Added Support for Piwik Analytics(Ticket #163)
4080
- * Added Support for Segment.com Analytics(Ticket #50)
4081
- * Added a switch for hiding Non-Amp page link from Footer.( Ticket #189)
4082
- * Added an Option that strips Users URL from Comments Section(Ticket #180)
4083
- * Fixed stripping <date> tags from the content , Since it was preventing validation – amp-img issues fixed
4084
- * UX Improved for every section of AMP Options page
4085
- * Added Settings button on plugin page
4086
- * Related posts switch added
4087
- * Removed carousel.js
4088
-
4089
-
4090
- = 0.8.6.1 =
4091
- * Date Tag fix
4092
- * Few validation issues after 0.8.6 were fixed (Frontpage amp-img strip issue fixed)
4093
-
4094
- = 0.8.6 =
4095
- * Proper Details at https://ampforwp.com/amp-0-8-6-released-related-posts-comments/
4096
- * Related Posts
4097
- * Post Comments
4098
- * WhatsApp sharing button Your visitors can now easily share the content over the whatsapp.
4099
- * Validation issue fixed by All In One Schema.org Rich Snippets plugin
4100
- * Removed Google Fonts loading for Performance
4101
- * New relic Support
4102
- * Class added to ‘View Non-AMP Version’ text
4103
- * Archives Structured Data issue fixed
4104
- * Some instances img tags converted into amp-img automatically.
4105
-
4106
-
4107
- = 0.8.5.3 =
4108
- * Canonical issue fixed for Post
4109
-
4110
- = 0.8.5.2 =
4111
- * Canonical issue fixed for FrontPage
4112
-
4113
- = 0.8.5.1 =
4114
- * Proper Details at https://ampforwp.com/new/
4115
- * Validation issue fixed: 'Value' tag
4116
- * Validation issue fixed: The attribute 'contenteditable' may not appear in tag 'a'.
4117
- * Validation issue fixed: Table markup
4118
- * Validation issue fixed: nowrap and misc tags
4119
- * New Relic Support
4120
- * Tags on off option
4121
- * Canonical and correct AMP html Redirect issues Solved
4122
- * NextGEN Gallery Validation Support Added
4123
-
4124
- = 0.8.5 =
4125
- * Proper Details at https://ampforwp.com/the-0-4-compatibility/
4126
- * AMP 0.4 Compatibility Check
4127
- * Even better Structured Data Validation, Once in for all!
4128
- * Structured Data Options to eliminate Validation errors
4129
- * AMP Page Exclude option
4130
-
4131
- = 0.8.4 =
4132
- * Proper Details at https://ampforwp.com/blog/structured-data-validation/
4133
- * Structured Data Validation
4134
- * Navigation Text Change
4135
- * Inline Style Validation
4136
- * Form Validation
4137
- * Frontpage shows the amphtml rel twice fixed
4138
- * Facebook Sharing not working
4139
-
4140
- = 0.8.3 =
4141
- * Prefix added in the Content filter
4142
- * Extra space after quote in Ads
4143
-
4144
- = 0.8.2 =
4145
- * Proper Details at https://ampforwp.com/blog/the-custom-frontpage/
4146
- * Custom AMP FrontPage
4147
- * Featured Image
4148
- * New Mobile Friendly Advertisement sizes
4149
- * Single Post Pagination Option
4150
- * RTL Support
4151
- * Notifications
4152
- * Gaping if the Meta was turned off.
4153
- * Analytics was not fetching the user id properly.
4154
- * Page was not using the post template along with the AD support.
4155
- * AMP Endpoint support for Paged when the front page is active.
4156
- * UI improvement of Admin panel
4157
- * Few Validation issues fixed
4158
-
4159
- = 0.8.1 =
4160
- * Warning: Cannot modify header information error fixed
4161
- * Validation issue fixed. KK Star Plugin compatible.
4162
- * Gaping in the smaller screens fixed
4163
-
4164
- = 0.8 =
4165
- * Proper Details at https://ampforwp.com/blog/the-change/
4166
- * Plugin was re-written from scratch and is now built on top of default AMP plugin by Automattic but giving you the same features of the original plugin.
4167
- * 99.5% Validation issues were fixed.
4168
- * Page builder & Shortcodes Compatibility Support Added
4169
- * Conflict with JSON API
4170
- * Carousel support for Gallery
4171
- * Better Image stretching and resizing
4172
- * Youtube Video Embed Support
4173
- * Vine Embed Support
4174
- * Twitter oembed Support
4175
- * Instagram Embed Support
4176
- * Facebook Video Embed Support
4177
- * Better Future Compatibility
4178
-
4179
- = 0.7.7 =
4180
- * Proper Details at https://ampforwp.com/blog/amp-0-7-7/
4181
- * Big Validation Error fix Update
4182
- * Disable AMP support on specific Pages and Posts
4183
- * Option to disable the Post meta from the Single
4184
- * Footer Credits and Copyright Text Option
4185
- * New options for Social Sharing Bar in Single
4186
- * Jetpack Social & Related Sharing Issue fixed
4187
- * Gaping in footer if the Sticky bar is enabled
4188
- * Text domain added on few strings
4189
-
4190
- = 0.7.6 =
4191
- * Google Adsense Support Added with AMP-Ad
4192
- * Wrong Homepage rel amphtml bug fixed
4193
-
4194
- = 0.7.5 =
4195
- * Google Analytics Support Added
4196
- * Logo Support Added. If the logo is disabled, then the Title should be activated.
4197
- * Color Scheme Feature Added
4198
- * User friendly Options Panel Added
4199
- * iFrame support Added
4200
- * Few Minor Bugs Fixed
4201
-
4202
- = 0.7.1 =
4203
- * Bug #24 (Github) fixed
4204
- * Strip Style tags for faster & better validation
4205
- * Bug #21 (Github) fixed
4206
-
4207
- = 0.7 =
4208
- * Canonical Improved
4209
- * Navigation Validation bug fixed
4210
- * Two more validation bugs fixed ('role' and 'tabindex' attribute)
4211
- * Featured image automatically hides if it is not present
4212
- * Validation issues in the images of the post's the_content
4213
-
4214
- = 0.6 =
4215
- * Improved Navigation Menu
4216
- * Search Console errors fixed
4217
- * Social Sharing option
4218
- * Pages support
4219
- * Force redirection for mobile users removed and many other bug fixes
4220
-
4221
- = 0.5 =
4222
- * Added AMP Markup for Google Structured data. This will fix the issues in Webmaster tools.
4223
-
4224
- = 0.4 =
4225
- * Support of Custom menu added for AMP enabled sites
4226
-
4227
- = 0.3 =
4228
- * Support of amp-img added in single posts
4229
- * minor css bug fixed
4230
-
4231
- = 0.2.5 =
4232
- * Minor bugs fixed
4233
- * ?mobile & ?nomobile is now ?amp & ?noamp
4234
-
4235
- = 0.2 =
4236
- * White Screen of death issue fixed
4237
- * Plugin URI updated
4238
-
4239
- = 0.1 =
4240
- * Initial version
 
 
 
 
 
 
1
+ == Changelog ==
2
+
3
+ = 1.0.77.54 (21st November 2022) =
4
+ * Fixed: Tested compatibility with wp 6.1 #5331
5
+ * Fixed: Removed deprecated warning in php 8.1.10 #5333
6
+ * Fixed: Resolved STN video Ads due to the outdated tag issue #5334
7
+ * New : BFCM internal offer #5336
8
+
9
+ = 1.0.77.53 (25th October 2022) =
10
+ * Fixed: Backslash in custom css error #5329
11
+ * Fixed: If we enable the Responsive ad option then no need to show size option. #5302
12
+ * Fixed: TikTok embed video is not working in AMP #5325
13
+ * Fixed: lightbox for Youtube feature is not working properly #5327
14
+
15
+ = 1.0.77.52 (14th October 2022) =
16
+ * Fixed: Duplicate canonical URL when AIOSEO Pro is active. #5320
17
+ * Fixed: Youtube embedded videos via elementor is not displaying in the AMP version #5322
18
+ * Fixed: Slide Anything image src not loading properly. #5315
19
+ * Fixed: PHP Warning Attempt to read property "post_type" on null #5323
20
+ * Fixed: While adding the multiple Webstories on the website page, the image is not showing of the web stories the AMP Pages. #5301
21
+ * Fixed: Author names are not shown in AMP when the Co-Authors Plus plugin is activated #5319
22
+
23
+ = 1.0.77.51 (9th September 2022) =
24
+ * Fixed: Infinite scroll doesn't work with custom post type. #5309
25
+ * Fixed: Need to make it compatible with the Co-Authors Plus plugin #5313
26
+ * Fixed: Slide Anything image src not loading properly. #5315
27
+
28
+ = 1.0.77.50 (24th August 2022) =
29
+ * Fixed: "Back to Top link" option adds amp-animation & amp-position-observer script without its usage on page #5305
30
+ * Fixed: AMPforWP is creating "/amp" as an endpoint in Addon mode. #5303
31
+ * Improvements: Strange Exclamation mark . #5304
32
+
33
+ = 1.0.77.49 (22nd August 2022) =
34
+ * Fixed: There is a compatibility issue with the latest version of the All in One SEO Plugin. #5306
35
+
36
+ = 1.0.77.48 (11th August 2022) =
37
+ * Improvements: Added Super Related Posts plugin compatibility #5298
38
+ * Improvements: Added Inline Related Post plugin compatibility #5296
39
+ * Fixed: Fatal error while activating official AMP. #5300
40
+ * Fixed: Spotify Embed not working after 1.0.77.46 version #5294
41
+ * Fixed: AMP Pagebuilder not loading with All in One SEO latest update #5299
42
+
43
+ = 1.0.77.47 (5th July 2022) =
44
+ * Fixed: AMP validation error when youtube video is embeded with query parameters #5292
45
+ * Fixed: Instagram embeds not working when added with blockquote tags #5289
46
+
47
+ = 1.0.77.46 (28th June 2022) =
48
+ * Fixed: Reduced the execution of JS in youtube embeds #5287
49
+ * Fixed: Instagram embeds not working when added with iframe #5289
50
+ * Fixed: Subchild menu items does not expand with UberMenu plugin
51
+ * Fixed: Incorrect default value in TPD #5286
52
+ * Fixed: Debug Warnings - Undefined array-key: row #5283
53
+
54
+ = 1.0.77.45 (13th June 2022) =
55
+ * Fixed: Conflict issue with WPML #5274
56
+ * Fixed: Page builder modal is getting hidden below the header of the post/page editor. #5279
57
+ * Fixed: FAQ Schema For Pages And Posts compatibility #5278
58
+ * Fixed: Debug Warnings - Trying to access array offset on value of type null #5277
59
+ * Fixed: fatal error #5280
60
+
61
+ = 1.0.77.44 (2nd June 2022) =
62
+ * Improvements: Added Marfeel analytics compatibility in AMP #5266
63
+ * Improvements: Added WP Table Builder compatibility in AMP #5270
64
+ * Improvements: Updated the email id in feedback form #5273
65
+ * Fixed: Instagram reels not working in AMP #5269
66
+ * Fixed: Preload Funtionality not working when Image is added #5260
67
+ * Fixed: AMP dashicons CSS overwrites the WP default dashicons #5265
68
+ * Fixed: Tel protocols not working in the AMP #5268
69
+ * Fixed: CTA links saving without '=' character #5267
70
+
71
+ = 1.0.77.43 (10th May 2022) =
72
+ * Updated: TPD feature updated #5257
73
+ * Fixed: Resolved the issue of Image Gallery Carousel in AMP does not change the gallery view in posts/pages #5259
74
+
75
+ = 1.0.77.42 (16th April 2022) =
76
+ * Improvements: Added REHub Comparison charts, tables Compatibility #5250
77
+ * Fixed: Debug Warnings - Undefined index: amp-license #5251
78
+
79
+ = 1.0.77.41 (12th April 2022) =
80
+ * Improvements: Added Compatibility with GenerateBlocks plugin #5248
81
+ * Improvements: Added Web Safe Fonts in Google Fonts List #5242
82
+ * Improvements: AMP Option panel improvements #5239
83
+ * Fixed: White space in footer element between the posts of infinite scroll #5238
84
+ * Fixed: Invalid JSON error in console when using Plausible analytics #5142
85
+
86
+ = 1.0.77.40 (6th April 2022) =
87
+ * Fixed: The Publisher Desk CDN URL added instead of Heroku link #5237
88
+ * Fixed: AMP Option panel improvements #5240
89
+
90
+ = 1.0.77.39 (5th April 2022) =
91
+ * Improvements: Added New Guidelines in GDPR #5225
92
+ * Improvements: Added AT internet analytics support #5233
93
+ * Improvements: UI improved of feedback form #5223
94
+ * Fixed: Header and footer showing twice in new infine scroll #5238
95
+ * Fixed: AMP option panel not working with Tour Booking Manager plugin #5236
96
+ * Fixed: Font style not loading correctly on first page load #5224
97
+ * Fixed: The hamburger icon is not clickable when Font Icon Library is selected as CSS Icons #5243
98
+ * Fixed: Duplicate li tags removed #5241
99
+ * Fixed: Warning compatibility PHP 8.0 #5245
100
+
101
+ = 1.0.77.38 (7th March 2022) =
102
+ * Improvements: Added The Publisher Desk Support #5213
103
+ * Fixed: Displaying a blank white screen when embed URLs are used #5193
104
+
105
+ 1.0.77.37.1 (4TH March 2022)
106
+ * Improvements: Added new infinite scrolling experience #4791
107
+ * Fixed: The links in embed URLs are not clickable #5193
108
+
109
+ = 1.0.77.37 (2nd March 2022) =
110
+ * Improvements: Added feedback form with auto email system #5223
111
+ * Improvements: Added new infinite scrolling experience #4791
112
+ * Improvements: Added An option to add lang_ and privacyMode values in Quantcast #5206
113
+ * Improvements: Added FireWork compatibility #5210
114
+ * Fixed: AMP autocomplete tag is not working #5217
115
+ * Fixed: Autoplay functionality not working in video module #5219
116
+ * Fixed: Fonts loading twice in Global font family #5220
117
+ * Fixed: Unable to connect to Matomo analytics #5221
118
+
119
+ = 1.0.77.36 (18th February 2022) =
120
+ * Fixed: If the server-side cache is aggressive then the pagination URL with ?amp=1 is redirecting to non-AMP #5208
121
+ * Fixed: Errror getting in featured-image.php, on line 77 #5207
122
+ * Fixed: Need to keep the mobile redirection filter outside of any condition #5216
123
+
124
+ = 1.0.77.35 (21th January 2022) =
125
+ * Fixed: Embed URLs not working with Amp takeover active #5193
126
+ * Fixed: Need to change Google Fonts display to optional #5191
127
+ * Fixed: Need to make compatibility of amp analytics in infinite scroll #5194
128
+ * Fixed: Current year is not showing in design 1,2,3 #5190
129
+ * Fixed: VKontakte social media not working in social media profile links #5196
130
+ * Fixed: PHP Notice: tag_rewrite_rules is deprecated #5197
131
+
132
+ = 1.0.77.34 (11th January 2022) =
133
+ * Fixed: External stylesheet Errors using Vinkmag theme #5189
134
+ * Fixed: AMP Takeover functionality is not working on the blog posts #5188
135
+ * Fixed: Replace webvitalsdev to Microwork #5183
136
+ * Fixed: Wrong Notice for first time installation #5184
137
+
138
+ = 1.0.77.33 (15th December 2021) =
139
+ * Fixed: Code improvements in AMP options panel #5179
140
+ * Fixed: Stylesheet errors when using Qoxag theme #5177
141
+
142
+ = 1.0.77.32 (11th December 2021) =
143
+ * Fixed: Code improvements in AMP pagebuilder #5179
144
+
145
+ = 1.0.77.31 (7th December 2021) =
146
+ * Fixed: Uncaught ValueError - DOMDocument::loadHTML() Error #5174
147
+ * Fixed: PHP Notice: Undefined index: rgba #5175
148
+ * Fixed: Optional added for font display in google fonts #5176
149
+
150
+ = 1.0.77.30 (25th November 2021) =
151
+ * Improvements: Added Filter to modify title in AMP #5170
152
+ * Fixed: Whitelisted amp-render tag #5171
153
+ * Fixed: Featured image not appearing in loop with Offload Media Lite #5153
154
+ * Fixed: Infinite scroll showing posts from different categories also when same category is selected #5168
155
+ * Fixed: Webp images not appearing in preload with WEBP express plugin #5165
156
+ * Fixed: pagination 404 issue with infinite scroll #5167
157
+
158
+ = 1.0.77.29 (28TH October 2021) =
159
+ Improvements: Search results opens directly in Google search in AMP #5161
160
+ Fixed: Undefined variable - pathExploded debug notice #5160
161
+ Fixed: ID has been getting removed from the amp-img tag #5163
162
+
163
+ = 1.0.77.28 (28TH October 2021) =
164
+ Improvements: License code improved #5151
165
+ Fixed: Default Gravatar not appearing with FV Gravatar Cache #5149
166
+ Fixed: Featured image not appearing with Offload Media Lite #5153
167
+ Fixed: Function name updated in the seo framework #5155
168
+ Fixed: Lifetime license key is showing as expired in admin panel #5156
169
+ Fixed: Video is not loading when created by slider revolution with divi #5159
170
+
171
+ = 1.0.77.27 (21TH October 2021) =
172
+ Improvements: Added AdPushup Support in AMP #5144
173
+
174
+ = 1.0.77.26 (20TH October 2021) =
175
+ Improvements: Added FV Gravatar Cache Compatibility in AMP #5149
176
+ Fixed: Images not loading when destination structure is document root in WebP Express #5150
177
+
178
+ = 1.0.77.25 (1st October 2021) =
179
+ * Improvements: Added Plausible analytics compatible in AMP #5142
180
+ * Fixed: The amp-minute-media-player tag is getting stripped from the content #5146
181
+ * Fixed: Author profile images not loading from Ultimate Member plugin #5141
182
+ * Fixed: AMP Page builder content not rendering with Muffin builder #5147
183
+ * Fixed: Debug log Errors #5145
184
+
185
+ = 1.0.77.24 (23rd September 2021) =
186
+ * Improvements: Added Filter to disable AMP for all categories except one #5139
187
+ * Improvements: Added Ninja Form in the description of contact form module #5138
188
+ * Fixed: Basic/Advance popup shows everytime when visiting option panel #5143
189
+ * Fixed: Renewal link redirecting to 404 from options panel #5140
190
+ * Fixed: Incorrect URL while using Matomo analytics #5136
191
+ * Fixed: Validation error in the alt tag with Transposh plugin #5135
192
+ * Fixed: Some design issues on one specific users #5134
193
+ * Fixed: Debug Warnings - Use of undefined constant AUTH_KEY and SECURE_AUTH_KEY #5035
194
+
195
+ = 1.0.77.23 (16th September 2021) =
196
+ * Improvements: Added Top Mail Ru analytics support in amp #5130
197
+ * Improvements: Added an option to move sponsorship label above the ad
198
+ * Improvements: Updated the facebook instant articles to 50 when limit is not set #5131
199
+
200
+ = 1.0.77.22 (6th September 2021) =
201
+ * Fixed: Validation error with rankmath's "open external links in new tab" option #5129
202
+
203
+ = 1.0.77.21 (6th September 2021) =
204
+ * Fixed: Images not displaying in AMP with Lazy loading of Zeen theme #5126
205
+ * Fixed: Missing rel noopener attribute in links #5125
206
+ * Fixed: Incorrect canonical for Homepage if WordPress installation is another folder #5122
207
+ * Fixed: No data hero attribute on featured image of default image #5121
208
+ * Fixed: Debug log errors #5124
209
+
210
+ = 1.0.77.20 (24th August 2021) =
211
+ * Fixed: Validation errors when Jetpack boost plugin is active #5120
212
+ * Fixed: Display Warning Icon more clearly if setup is not completed #5119
213
+ * Fixed: Image loading issues while using Webp express #5118
214
+
215
+ = 1.0.77.19 (13th August 2021) =
216
+ * Fixed: Disable AMP on desktop not working with ?amp #5113
217
+ * Fixed: Can't use function return value error when activating plugin #5115
218
+ * Fixed: Button icon showing white When installing schema internally #5111
219
+
220
+ = 1.0.77.18 (5th August 2021) =
221
+ * Improvements: Added License Key information in AMP panel #5110
222
+
223
+ = 1.0.77.17 (3rd August 2021) =
224
+ * Improvements: Added dotmetrics analytics support in amp #5107
225
+ * Improvements: Added support to preserve query string with ?amp #5103
226
+
227
+ = 1.0.77.16 (29th July 2021) =
228
+ * Improvements: Added Filter to remove last-modified header in amp #5101
229
+ * Fixed: Webp images are not converting with Webp Express plugin #5108
230
+ * Fixed: Validation error - The tag 'lite-youtube' is disallowed #5102
231
+ * Fixed: Yoast custom breadcrumbs title not working after update #5100
232
+
233
+ = 1.0.77.15 (27th July 2021) =
234
+ * Improvements: Added Yoast custom breadcrumbs title support #5100
235
+ * Fixed: Author name only showing for the first post on homepage #5099
236
+ * Fixed: Youtube videos does not appear on the AMP page with the Video Yoast plugin
237
+ * Fixed: The parent tag of tag ‘picture’ must be noscript validation error #5097
238
+
239
+ = 1.0.77.14 (20th July 2021) =
240
+ * Fixed: AMP page not showing with query string from 1.0.66 version #5096
241
+ * Fixed: Related posts title and excerpt not appearing properly #5095
242
+ * Fixed: Debug warnigs with WP Foro plugin #5094
243
+
244
+ = 1.0.77.13 (16th July 2021) =
245
+ * Fixed: FooGallery plugin not working with AMP #5090
246
+ * Fixed: Console error when Back to Top link option is enabled #5091
247
+ * Fixed: Exclude Categories is not working #5088
248
+ * Fixed: Long word post title not breaking in mobile view #5092
249
+
250
+ = 1.0.77.12 (12th July 2021) =
251
+ * Fixed: Exclude categories loop not working #5088
252
+ * Fixed: Endpoint '?amp' not working with plain permalink #5087
253
+
254
+ = 1.0.77.11 (6th July 2021) =
255
+ * Improvements: Improved readme.txt for newer features #5080
256
+ * Fixed: SVG images are loading with a bigger size in the AMP version #5084
257
+ * Fixed: Removed the percentage symbol beside AMP icon in dashboard #5082
258
+ * Fixed: Gallery thumbnail image improved #5003
259
+
260
+ = 1.0.77.10 (5th July 2021) =
261
+ * Improvements: Unused CSS and Scripts are removed in AMP Optimizer (SSR) #5070
262
+ * Improvements: Added data-hero attribute in AMP logo #5083
263
+ * Fixed: Webp images not appearing with Litespeed cache #5081
264
+
265
+ = 1.0.77.9 (29th June 2021) =
266
+ * Added: AMP widget for adding amp code #5064
267
+ * Added: Filter to modify the WP Rocket CDN URL #5076
268
+ * Fixed: Meta description of Rank Math SEO plugin not showing on amp #5071
269
+ * Fixed: Slide Anything Plugin slider content is not showing #5073
270
+ * Fixed: When Convert AMP to WP theme Option is enabled, it breaks the Design #5074
271
+ * Fixed: Remove preload if Featured Image option is off in AMP options panel #5077
272
+ * Fixed: Icons are not loading when visiting first time or after clearing cache #5060
273
+
274
+ = 1.0.77.8 (23rd June 2021) =
275
+ * Added: Webp images support with LiteSpeed Cache plugin #5051
276
+ * Added: Primary category compatibility of all SEO plugins #5049
277
+ * Added: Notice if license key isn't added in AMP pro extension manager #5068
278
+ * Fixed: Instagram embeds are not loading on the Facebook instance Article #5066
279
+ * Fixed: WP rocket cache not working with ?amp query string #5063
280
+ * Fixed: Debug error appearing in the non-amp #5059
281
+ * Fixed: Code improvements for options panel #5057
282
+ * Fixed: Disqus comments not showing on mobile when adding ads #5055
283
+ * Fixed: Proper preload added if WebP Express is active #4357
284
+ * Fixed: The slashes (\) are no longer appear in the custom CSS #5035
285
+
286
+ = 1.0.77.7 (21st June 2021) =
287
+ * Added: AMP Optimizer (SSR) Support #5034
288
+
289
+ = 1.0.77.6 (12th June 2021) =
290
+ * Fixed: Custom JavaScript is not allowed error when analytics added by All in one SEO #5062
291
+
292
+ = 1.0.77.5 (10th June 2021) =
293
+ * Fixed: Some issues found while refresh the individual extension from the Extension section #5056
294
+ * Fixed: Referenced AMP URL is self-canonical AMP when AMP takeover is enabled #5053
295
+ * Fixed: Remove AMP blocks from options panel for CWV #5052
296
+ * Fixed: Incorrect link in the Breadcrumb #5050
297
+ * Fixed: Blank taxonomy in option panel #5037
298
+ * Fixed: Featured image not working for specific usecase in amp #5058
299
+
300
+ = 1.0.77.4 (1st June 2021) =
301
+ * Improvements: Added dynamic copyright code so that year changes automatically #5019
302
+ * Improvements: Added Smart Sticky Header Extension #5001
303
+ * Fixed: View Non-amp version link redirecting to 404 using custom permalink #5039
304
+ * Fixed: Headline error in schema when adding more than 110 characters in title #5033
305
+ * Fixed: Aq_resize.process() error in error logs #5041
306
+ * Fixed: Google Fonts are not getting saved while using Safari #4978
307
+ * Fixed: The tag 'animatetransform' is disallowed validation error #5043
308
+ * Fixed: Debug Warning Function get_magic_quotes_gpc() is deprecated #5035
309
+ * Fixed: Debug Warning Trying to get property 'ID' of non-object #5046
310
+
311
+ = 1.0.77.3 (27th May 2021) =
312
+ * Improvements: Added Compatibility with WebP Express plugin #4357
313
+ * Improvements: Added an option to allow users to upload and use local fonts on AMP #4264
314
+ * Improvements: Added Muffin builder Pagebuilder Support in AMP Pagebuilder Extension #5015
315
+ * Fixed: Fatal error when both Sassy Social Share and Optimize CSS are enabled #5032
316
+ * Fixed: Issues with Megashop theme #5010
317
+ * Fixed: Images not sanitized when added using Muffin Pagebuilder #5013
318
+ * Fixed: Hide featured images on a single post if this is older than certain date #5018
319
+ * Fixed: Getting AMP validation Error in Add Widget After Content plugin #5027
320
+ * Fixed: Query Monitor not working on AMP pages #5025
321
+ * Fixed: Full-size image is always preloaded for the featured image in Swift theme #5038
322
+
323
+ = 1.0.77.2 (20th May 2021) =
324
+ * Fixed: Some issues with style on normal version after update #3844
325
+
326
+ = 1.0.77.1 (19th May 2021) =
327
+ * Improvements: Added a filter from which user can control Mobile redirection #4488
328
+ * Improvements: Implemented the Mobile redirection functionality using Javascript method #3844
329
+ * Improvements: Added preload to get featured image on AMP #5020
330
+ * Fixed: Debug Warning in templates/features.php #5014
331
+ * Fixed: Validation error in image lightbox for gallery #5021
332
+ * Fixed: Fatal error on AMP pages after updating WP User Avatar plugin #5029
333
+
334
+ = 1.0.77 (17th May 2021) =
335
+ * Fixed: Related posts doesn't show more than 3-4 #4300
336
+
337
+ = 1.0.76.17 (7th May 2021) =
338
+ * Improvements: Added Beaver builder Pagebuilder Support in AMP Pagebuilder Extension #5009
339
+ * Fixed: Title on Static Front Page is not displaying #5007
340
+ * Fixed: The attribute 'height' in tag 'amp-img' is set to the invalid value. #5005
341
+ * Fixed: ?amp doesn’t removing from view non-amp text #5006
342
+ * Fixed: Errors in Schema Pro FAQ #4956
343
+ * Fixed: PHP Warning error when enable Breadcrumbs option #5008
344
+
345
+ = 1.0.76.16 (4th May 2021) =
346
+ * Fixed: Incorrent height in anchor.fm audio embed from the Pennews Theme #4576
347
+ * Fixed: Slide Anything Plugin text slider not working in AMP #4999
348
+ * Fixed: Backend button translation #4717
349
+ * Fixed: Alignment issue with Gutenberg image block #4997
350
+ * Fixed: Undefined variable $q / Attempt to read property max_num_pages on null #5004
351
+
352
+ = 1.0.76.15 (28th April 2021) =
353
+ * Improvements: Added an option to add one signal notification on the desktop #4377
354
+ * Improvements: Added an option to set Target for CTA button in swift theme #4995
355
+ * Improvements: Added an option to install PWA from options panel #4529
356
+ * Improvements: Added HappyForms Compatibility Extension #5001
357
+ * Fixed: Width in percentage not working for the audio from the Pennews Theme #4576
358
+ * Fixed: Need to allow two attributes in input tag #4998
359
+
360
+ = 1.0.76.14 (23rd April 2021) =
361
+ * Improvements: Added an option to add Schema Pro FAQ in AMP #4956
362
+ * Improvements: Added support for the audio from the Pennews Theme #4576
363
+ * Improvements: Added Getty Images embed Compatibility #4188
364
+ * Improvements: Added an option to move the search bar top and bottom. #4748
365
+ * Improvements: Added an option for autoplay in slider module of AMP pagebuilder #3859
366
+ * Improvements: Added an option to remove Site navigation element schema #4583
367
+ * Improvements: Added related posts after the last post for infinity scroll posts in AMP layout #4652
368
+ * Fixed: Call to undefined method MCI_Footnotes_Convert error #4993
369
+ * Fixed: Search bar close icon is hidden behind the admin navigation bar #4991
370
+ * Fixed: AMP menu automatically scrolls down to bottom in Design three #4967
371
+ * Fixed: Single post content not showing when using AMP on subdomain #4996
372
+
373
+ = 1.0.76.13 (19th April 2021) =
374
+ * Improvements: Added an option to preserve original permalinks in mobile redirection #4207
375
+ * Improvements: Added an option to add moderation tool for the Facebook comments #4485
376
+ * Improvements: Added an option to make buttons side by side in the mobile with AMP pagebuilder #4472
377
+ * Improvements: Added an option to add UTM souce parameters in URLs to both related & incontent related posts #4237
378
+ * Improvements: Added Quantcast CMP (consent management platform) support in AMP 4951
379
+ * Fixed: Alt tag not appearing in sticky social sharing icons #4984
380
+ * Fixed: Debug Warning in edit tag page when using PHP8 #4990
381
+
382
+ = 1.0.76.12 (14th April 2021) =
383
+ * Fixed: Fatal error occuring with the recent update Version 1.0.76.11 #4986
384
+
385
+ = 1.0.76.11 (14th April 2021) =
386
+ * Improvements: Added an option to select same categories in infinite scroll #4017
387
+ * Improvements: Added an option to select same tags in infinite scroll #4939
388
+ * Improvements: Added the filter to change breadcrumbs name #4979
389
+ * Fixed: Muffin pagebuilder not working in AMP #4983
390
+ * Fixed: PHP 8 debug errors #4981
391
+ * Fixed: AMP menu automatically scrolls down to bottom in Design three #4967
392
+ * Fixed: Deprecated Filters Detected Warning in All in one SEO plugin #4980
393
+
394
+ = 1.0.76.10 (9th April 2021) =
395
+ * Improvements: Added the Compatibility with the Schema Pro FAQ #4956
396
+ * Improvements: Added the feature to track each author contribution to the website pageview #4952
397
+ * Improvements: Added an option to show published date and time below the title #4976
398
+ * Improvements: Added an option to automatic redirect AMP to non-amp when access through desktop #4975
399
+ * Improvements: Added the Compatibility for Add Widget After Content plugin #4949
400
+ * Improvements: Added Forminator for AMP Extension #4965
401
+ * Fixed: Search Close Button is hidden for the Google Cached AMP Pages #4977
402
+ * Fixed: Image is not showing when the post is shared on social network #4971
403
+
404
+ = 1.0.76.9 (2nd April 2021) =
405
+ * Fixed: Facebook videos embedding not working #4973
406
+ * Fixed: The incorrect excerpt for the custom front page if user is using the Divi #4972
407
+ * Fixed: When Yoast SEO Multilingual is activated canonical getting addition http #4970
408
+ * Fixed: Close button not visible in the menu for the Google Cached AMP Pages #4969
409
+ * Fixed: Sassy social share icons are not displaying on AMP #4945
410
+ * Fixed: The AMP For WP option panel not saving due to redux plugin #4963
411
+ * Fixed: Docking functionality is not working for the amp-video type in mobile view #4961
412
+ * Fixed: Cannot change the title for in-content related post #4959
413
+ * Fixed: Upgrade for Free' button in structured data settings is not working #4960
414
+ * Fixed: Beginner and advance mode popup not closing #4974
415
+
416
+ = 1.0.76.8 (22nd March 2021) =
417
+ * Fixed: Srcset attribute not appearing on images with AMP page builder #4954
418
+ * Fixed: Option added to disable structured data in AMP #4953
419
+ * Fixed: Debug Warning with PHP 8.02 and WordPress 5.6.2 #4946
420
+ * Fixed: Background Video loop not working with AMP page builder #4948
421
+ * Fixed: Mobile redirection not working for the front page when pages are disabled #4942
422
+ * Fixed: Captions are not working on Slideshow Module by Jetpack Plugin #4950
423
+
424
+ = 1.0.76.7 (15th March 2021) =
425
+ * Fixed: WP_Scripts Debug Warnings when WordPress updated to v5.7 #4958
426
+
427
+ = 1.0.76.6 (12th March 2021) =
428
+ * Improvements: Added an option to show the author details after the title on mobile #4858
429
+ * Fixed: Images not appearing with WP stateless Google cloud storage plugin #4575
430
+ * Fixed: Category module doesnot have "/" at the end of the URL #4932
431
+ * Fixed: Proper commenting added for hooks #3368
432
+ * Fixed: Sticky social share bar icon colliding with polylang plugin #4935
433
+ * Fixed: AMP Page Builder is breaking with contact form module #4937
434
+ * Fixed: Truepush notification not working in AMP #4936
435
+
436
+ = 1.0.76.5 (20th February 2021) =
437
+ * Improvements: Added UX Builder compatibility #4933
438
+ * Fixed: Second paginated post not working #4892
439
+ * Fixed: Jetpack hosted videos not working on AMP #4931
440
+ * Fixed: AMP Pagebuilder module getting narrowed with All in One SEO plugin #4930
441
+
442
+ = 1.0.76.4 (19th February 2021) =
443
+ * Fixed: AMP front page not working after update #4892
444
+
445
+ = 1.0.76.3 (19th February 2021) =
446
+ * Improvement: Added the Smart Mag Theme review schema #4898
447
+ * Improvement: Added disable right click for copy protection #4877
448
+ * Improvement: Added an option to hide the title on pages #4929
449
+ * Fixed: AMP Browser caching policy #4876
450
+ * Fixed: p tags getting stripped with Change Pagination Links to /amp option #4892
451
+ * Fixed: Missing URL for attribute error for SVG images #4911
452
+ * Fixed: Debug warnings #4924
453
+
454
+ = 1.0.76.2 (17th February 2021) =
455
+ * Fixed: Removed The SEO Checklist Banner #4912
456
+
457
+ = 1.0.76.1 (16th February 2021) =
458
+ * Fixed: Fatal conflict with Yoast Premium #4926
459
+ * Fixed: Wrong Yoast breadcrumb links for the posts having multiple categories #4923
460
+ * Fixed: Fatal error on bbpress profile page #4922
461
+ * Fixed: Comments not showing on AMP front page #4921
462
+
463
+ = 1.0.76 (9th February 2021) =
464
+ * Improvement: The SEO Checklist Banner #4912
465
+ * Fixed: Telegram icon not visible in menu #4919
466
+ * Fixed: Validation error in amp-img with transposh plugin #4918
467
+ * Fixed: Fatal error when FIFU plugin is activate #4920
468
+ * Fixed: AMP admin option panel is showing blank on user end #4914
469
+ * Fixed: Tag base remove in AMP not working after 1.0.60 #4908
470
+ * Fixed: data-playlist gets removed automatically in amp-brid-player #4906
471
+ * Fixed: View Non-Amp Version link does not link to proper canonical url #4901
472
+ * Fixed: Srcset not loading in category module of AMP page builder #4900
473
+ * Fixed: Debug warnings #4917
474
+
475
+ = 1.0.75 (23rd January 2021) =
476
+ * Fixed: Imgur embed code not working in AMP #4899
477
+ * Fixed: Srcset not loading in category module of AMP page builder #4900
478
+ * Fixed: Advertising section displaying blank when AdsforWP plugin is active #4889
479
+ * Fixed: AMP Page Builder not working on the pages and posts except the homepage #4890
480
+ * Fixed: Swift 2nd header menu aligned towards right with polylang plugin #4893
481
+ * Fixed: Post Pagination not working after 1.0.69 version #4902
482
+ * Fixed: Debug warnings #4896
483
+
484
+ = 1.0.74 (30th December 2020) =
485
+ * Improvement: Added Oxygen Pagebuilder Compatibility for AMP Pagebuilder Extension #4868
486
+ * Improvement: Added disable right click option on AMP for copy protection #4877
487
+ * Fixed: Validation Errors when WP Daddy Builder Pro is active #4879
488
+ * Fixed: The yoast meta title is not reflecting in AMP with Smartmag theme #4885
489
+
490
+ = 1.0.73 (23rd December 2020) =
491
+ * Fixed: Javascript issues after update to WordPress 5.6 #4867
492
+ * Fixed: '-' symbol is not appearing on post title #4866
493
+ * Fixed: GDPR strings are not getting translated in WPML #4874
494
+ * Fixed: AMP Browser caching policy updated #4876
495
+ * Fixed: Validation Errors when WP Daddy Builder Pro is active #4879
496
+ * Fixed: Vuukle comments box appearing twice in AMP #4878
497
+ * Fixed: Validation error when 'area' tag is added in post content #4882
498
+ * Fixed: Validation error "Custom JS is not allowed" with ALL in one SEO pro #4883
499
+
500
+ = 1.0.72 (17th December 2020) =
501
+ * Improvement: Added i2Pros and cons plugin compatibility #4837
502
+ * Improvement: Added WP-PageNavi plugin compatibility #4831
503
+ * Improvement: Added Categories Images plugin compatibility #3973
504
+ * Improvement: Added webp images on the homepage and Archives with Imagify plugin #4725
505
+ * Improvement: Added Recipe Compatibility for AMP Extension #4868
506
+ * Fixed: Amp option panel breaks when AECC Global Theme is activated. #4863
507
+ * Fixed: Facebook page embed fails #4871
508
+ * Fixed: Referenced AMP URL is self-canonical AMP while using All in One Seo #4873
509
+
510
+ = 1.0.71.2 (12th December 2020) =
511
+ * Fixed: Incorrect AMPHTML on homepage with ?amp #4865
512
+
513
+ = 1.0.71.1 (10th December 2020) =
514
+ * Fixed: Validation error in author bio alt attribute #4864
515
+
516
+ = 1.0.71 (10th December 2020) =
517
+ * Fixed: AMP Page builder accordion not working in 1.0.70 #4862
518
+ * Fixed: Category name in the dropdown not redirecting and AMP Sidebar alignment #4861
519
+ * Fixed: AMP Sidebar Menu Remains Open After Browser Back in Firefox and Safari #4840
520
+ * Fixed: amp-auto-ads was found on this page, but is unused error #4851
521
+ * Fixed: Amp option panel breaks in Product Filter For WooCommerce Product Plugin #4853
522
+ * Fixed: ID attribute added inside the analytics section #4852
523
+ * Fixed: Updated Facebook Messanger Icon #4859
524
+ * Fixed: Heading elements added in blurb module of AMP page builder #4856
525
+ * Fixed: Special characters are showing for post titles after sharing tweets #4850
526
+
527
+ = 1.0.70 (7th December 2020) =
528
+ * Improvement: Added filter to modify author bio description #4849
529
+ * Improvement: Added LGDP (Brazil's GDPR) #4854
530
+ * Fixed: Ads are displaying even GDPR popup is rejected #4843
531
+ * Fixed: Role Based Access not working for SEO manager role in Yoast #4830
532
+ * Fixed: Homepage url not redirecting to non-amp url with AMP takeover and ?amp #4826
533
+ * Fixed: The amphtml not generating with the Hide By Default option in AMP Takeover #4824
534
+ * Fixed: Undefined variable: allscripts #4846
535
+ * Fixed: Breadcrumb bug in amp homepage #4827
536
+ * Fixed: When the minify option is disabled then the WhatsApp share link has a space #4848
537
+ * Fixed: Validation error when using web stories plugin #4847
538
+ * Fixed: The background color of feature module of layout2 is not getting applied #4835
539
+ * Fixed: Canonical and meta description errors in All in one SEO PRO #4829
540
+ * Fixed: Avatar image doesn't have alt attribute #4836
541
+ * Fixed: AMP posts are redirecting to the 404 page when post id is added in permalink #4842
542
+ * Fixed: The amphtml not generating on the custom taxonomy and the custom post types #4841
543
+
544
+ = 1.0.69.2 (27th November 2020) =
545
+ * Fixed: Improvements in offer banner #4833
546
+
547
+ = 1.0.69.1 (25th November 2020) =
548
+ * Fixed: amp-story-player was found on this page, but is unused. #4839
549
+
550
+ = 1.0.69 (25th November 2020) =
551
+ * Fixed: Wrong tooltip link in the infinite scroll #4823
552
+ * Fixed: Images are not showing in the AMP due to SG Optimizer lazy load #4815
553
+ * Fixed: Embeds not working in AMP Takeover mode #4819
554
+ * Fixed: AMPHTML appearing in archive page of Google web stories #4820
555
+ * Fixed: AMP option panel page is blank with ECPay Payment for WooCommerce plugin #4816
556
+ * Fixed: 404 errors on pagination urls #4373
557
+ * Fixed: Blank lines not appearing between paragraphs #4818
558
+ * Fixed: amp-story-player preload is being added when not using #4828
559
+
560
+ = 1.0.68.1 (10th November 2020) =
561
+ * Fixed: Missing amphtml on product pages #4822
562
+ * Fixed: Debug warnings #4821
563
+
564
+ = 1.0.68 (9th November 2020) =
565
+ * Fixed: Validation error occurs when input type image is added #4785
566
+ * Fixed: Featured images are not showing when "Enable lazy load images" option is enabled in the "DEUS" Theme #4710
567
+ * Fixed: AMP Push Notification - Dropdown issue #4812
568
+ * Fixed: Italic style caption of gallery #4806
569
+ * Fixed: The canonical links are not generating for the coupon store when YOAST Plugin is active with AMPFORWP #4811
570
+ * Fixed: Content not displayed in AMP post/pages with plain permalink #4814
571
+ * Fixed: Tables created with 2 columns displaying 1 extra column on mobile view #4765
572
+ * Fixed: Content appearing in excerpt on single post #4798
573
+ * Fixed: Code improvment for amp pagebuilder's category-module #4660
574
+
575
+ = 1.0.67 (4th November 2020) =
576
+ * Improvement: Optimize Pagespeed score by implimenting AMP video lightbox #4531
577
+ * Improvement: Added Paid Memberships PRO for AMP Extension #4737
578
+ * Improvement: Added help section for the users in Options panel #4683
579
+ * Improvement: Added code improvement in Tag base remover and category base remover #4664
580
+ * Improvement: Added UberMenu 3 Compatiblity #4732
581
+ * Improvement: Added filter to overwrite the scripts #4642
582
+ * Fixed: Style amp-custom unterminated comment Error on AMP #4792
583
+ * Fixed: Proper styling of Header right side icons in Design 2 #3935
584
+ * Fixed: Revolution Slider not working in AMP #4669
585
+ * Fixed: Additional characters at the end of footer text in Design Two #4805
586
+ * Fixed: Related thumbnail image title is getting break and leading to the validation error #4804
587
+
588
+ = 1.0.66.3 (29th October 2020) =
589
+ * Fixed: Content not visible in AMP Takeover #4744
590
+
591
+ = 1.0.66.2 (28th October 2020) =
592
+ * Fixed: Content not visible after 1.0.66 update #4744
593
+
594
+ = 1.0.66.1 (26th October 2020) =
595
+ * Fixed: Validation error due to amp-web-push AMP component script #4796
596
+ * Fixed: Validation error due to amp-fx-flying-carpet AMP component script #4794
597
+
598
+ = 1.0.66 (24th October 2020) =
599
+ * Improvement: Added filter to modify GDPR popup output #4778
600
+ * Improvement: Added Polylang string transaltion support #4784
601
+ * Improvement: Added IO Technologies company analytics tracking code. #4753
602
+ * Improvement: Added Ultimate Membership Pro Compatibility for AMP Extension #4790
603
+ * Improvement: Code improvements #4744
604
+ * Fixed: Validation error when the "OMGF | Host Google Fonts Locally" plugin is active #4775
605
+ * Fixed: Margin top added in the twitter embed through the Gutenberg editor #4750
606
+ * Fixed: Truepush push notification not working in AMP #4644
607
+ * Fixed: Wrong amphtml on category and tags when ?amp is selected #4780
608
+ * Fixed: Missing the amp-bind script tag #4776
609
+ * Fixed: Two H1 tags appears in AMP #4786
610
+ * Fixed: Debug warnings #4767
611
+ * Fixed: Fallback images removed when Convert AMP to WP theme is enabled #4773
612
+
613
+ = 1.0.65.2 (17th October 2020) =
614
+ * Fixed: Menu not appearing in AMP #4657
615
+ * Fixed: Wrong amphtml on homepage when ?amp is selected #4780
616
+
617
+ = 1.0.65.1 (16th October 2020) =
618
+ * Fixed: Jquery issue fixed due to Easy select option for category module #4672
619
+
620
+ = 1.0.65 (15th October 2020) =
621
+ * Added: Integrated Truepush in push notification section #4644
622
+ * Added: Easy select option for category module #4672
623
+ * Added: Option to change the image size for the related posts thumbnail #4534
624
+ * Added: Option to change the image size of the first image in Swift theme #4476
625
+ * Added: AMP compatibility with Web stories by Google #4667
626
+ * Fixed: Validation error in the in-content related post #4729
627
+ * Fixed: Image elements do not have alt attributes #4757
628
+ * Fixed: When genesis theme is activated getting SEO error notice #4758
629
+ * Fixed: Removed third party plugins notices on the AMP option panel #4730
630
+ * Fixed: Instant articles not working when Site directory or Installation directory is different #4690
631
+ * Fixed: Clicking on the menu gets # at the end of the URL in design 2 #4722
632
+ * Fixed: Need to add tag for disqus comments #4692
633
+ * Fixed: Optimize menu caching code #4657
634
+ * Fixed: View non amp version is not working in mobile due to conflict with Redis Cache and WP Rocket #4614
635
+ * Fixed: Social share Buttons do not have an accessible name using Design One #4764
636
+ * Fixed: In the Contact form module, wp form options are not getting selected #4761
637
+ * Fixed: Uncaught Error: Call to undefined function ampforwp_is_home() main file #4782
638
+
639
+ = 1.0.64.1 (5th October 2020) =
640
+ * Fixed: Images are not appearing in AMP with Shortpixel plugin #4738
641
+
642
+ = 1.0.64 (5th October 2020) =
643
+ * Fixed: Comments module of AMP pagebuilder is rendering only admin comments not the others #4745
644
+ * Fixed: Shortpixel is not generating WebP in AMP #4738
645
+ * Fixed: SEO option appearing in wordpress tool bar even No SEO plugin is active #4698
646
+ * Fixed: Auto add amp in menu url functionality is not working in tags #4734
647
+ * Fixed: The internal link for the the author page is generating in the AMP if the archive page support is disabled #4746
648
+ * Fixed: Scroll to top button not visible in Design 2 #4693
649
+ * Fixed: Notice: Undefined index: Cpage #4728
650
+ * Fixed: GDPR banner is off-centered, the 'X 'is out of the screen #4724
651
+ * Fixed: Wrong AMP html when the AMP takeover and ?amp is enabled #4731
652
+ * Fixed: Addon mode forcefully redirecting to reader mode not others #4742
653
+ * Fixed: Images not appearing with Image Photo Gallery Final Tiles Grid plugin #4675
654
+ * Fixed: In Design three, when click on the menu, the page gets pushed to the right side #4736
655
+ * Fixed: FAQ icon button is a too big in amp page. #4747
656
+ * Fixed: Added meta name="referrer" content="no-referrer-when-downgrade" #4715
657
+ * Fixed: In admin tool bar, (+) icon loading small and also author image invisible #4700
658
+ * Fixed: Issue with menu background when user add internal page navigation menu-items. #4630
659
+ * Fixed: Anchor tag getting stripped when Site Kit by Google is active. #4699
660
+ * Fixed: Merriweather font option in Design 1 does not work. #4726
661
+ * Fixed: If the user is adding the HTML code in the background video module then code is showing as output #4755
662
+ * Fixed: AMP 404 template is applying on non amp page #4723
663
+ * Fixed: In-Content Related Post appearing inside the blockquote when "After 50% of content" option is selected #4743
664
+ * Fixed: If the sticky ads is active then the sticky social share link tab is hiding behind the ads #4749
665
+
666
+ = 1.0.63 (26th September 2020) =
667
+ * Improvement: Added Reddit embeds support #4406
668
+ * Improvement: Added multi select for post type in loop field #4365
669
+ * Improvement: Added custom classes in Body tag in AMP in all Designs #4594
670
+ * Improvement: Added filter for GDPR on-off #4471
671
+ * Improvement: Added admin notice when wrong seo plugin is selected #4678
672
+ * Improvement: Added TikTok embed support #4504
673
+ * Improvement: Added related post on/off in YouTube #4503
674
+ * Improvement: Added Nofollow Link button on pricing tabs in AMP Page Builder #4505
675
+ * Improvement: Improved Lighthouse Audits #4654
676
+ * Improvement: Added filter for AMP front page function #4634
677
+ * Fixed: Facebook Instant Articles (FBIA) Crawler Ingestion not working #4463
678
+ * Fixed: Incontent related post not aligned if the post does not have featured image #4691
679
+ * Fixed: Incontent path passed to load_plugin_textdomain function #4694
680
+ * Fixed: Incorrect Styling for header area #4703
681
+ * Fixed: Breadcrumb links are not generating the "amp/" #4708
682
+ * Fixed: Google Analytics is not firing when GTM is enabled #4707
683
+ * Fixed: Featured Image doesn’t appear on single post #4711
684
+ * Fixed: Code improvements for options panel #4622 #4532 #4407 #4090
685
+ * Fixed: Advanced section showing blank randomly #4741
686
+
687
+ = 1.0.62.2 (21st August 2020) =
688
+ * Fixed: Gutenberg gallery block caption appearing at the end of the content #4716
689
+ * Fixed: Validation error - accordion section must have 2 child tags #4208
690
+
691
+ = 1.0.62.1 (17th August 2020) =
692
+ * Improvement: Removed unwanted javascript from AMP pages #4689
693
+ * Fixed: Call to undefined function fifu_amp_url() #4688
694
+ * Fixed: jQuery.fn.live() is deprecated warnings #4706
695
+
696
+ = 1.0.62 (15th August 2020) =
697
+ * Improvement: Added Yoast Local SEO plugin compatibility #4170
698
+ * Improvement: Added option for changing the tags for the accordion module in AMP Page Builder #4208
699
+ * Improvement: Added option for showing primary category of Yoast #4495
700
+ * Improvement: Added condition for adding infinite scroll in AMP Woocommerce #4673
701
+ * Improvement: Added excerpt option in in-content related posts #3981
702
+ * Fixed: AMP not working on the Homepage with WP Ultimate recipe plugin #4538
703
+ * Fixed: CSS overiding issue for the list and accourdion modules in AMP Page Builder #4674
704
+ * Fixed: Alignment issue on homepage in design one #4676
705
+ * Fixed: Debug Errors #4671
706
+
707
+ = 1.0.61.2 (5th August 2020) =
708
+ * Fixed: Removed Helpscout Beacon from Options Panel #4682
709
+
710
+ = 1.0.61.1 (4th August 2020) =
711
+ * Fixed: The right and left arrows are converting into the special characters in AMP #4668
712
+
713
+ = 1.0.61 (3rd August 2020) =
714
+ * Improvement: Added Open By Default option in accordion module of AMP Page Builder #4597
715
+ * Fixed: Wrong preview link is generating for the AMP pages and posts #4670
716
+ * Fixed: Code improved in category base and tag base remover #4664
717
+ * Fixed: Wrong breadcrumb links are generating in the AMP #4666
718
+ * Fixed: Optimize gallery code to enhance performance and improve the page load time #4656
719
+ * Fixed: Homepage URL has /amp at the end even after enabling AMP Takeover #4662
720
+ * Fixed: Background color not appearing in table when created with Tiny MCE advanced plugin #4627
721
+ * Fixed: Header right side icons styling improved in Design 3 #3935
722
+ * Fixed: The right and left arrows are converting into the special characters in AMP #4668
723
+ * Fixed: Removed Shorthand versions of PHP from the code #4659
724
+ * Fixed: Wrong width and height in logo for SVG images #4650
725
+
726
+ = 1.0.60 (27th July 2020) =
727
+ * Improvement: Added below the related post hook #4653
728
+ * Fixed: Validation errors caused by Autoptimize for logged in users #4586
729
+ * Fixed: Styling issues with Reactions plugin by Vicomi #4637
730
+ * Fixed: If category name has special characters AMP Pagebuilder was not working #4610
731
+ * Fixed: autoplay attribute not working in the amp-vimeo tag #4648
732
+ * Fixed: incorrect width and height of logo in AMP #4650
733
+ * Fixed: Styling issues with AdsforWP section #4658
734
+ * Fixed: Code improvements for options panel #4647
735
+ * Fixed: Recent post appearing on pages as well in design 3 #4651
736
+
737
+ = 1.0.59 (23rd July 2020) =
738
+ * Improvement: Added noreferrer noopener attributes on social links #4509
739
+ * Improvement: Added webmaster tools meta tags when AMP takeover is enabled #4602
740
+ * Improvement: Added Conversion Goals Tracking for AMP Extension #4647 #4655
741
+ * Improvement: Added a filter to turn on/off the Aqua_resizer #4641
742
+ * Improvement: Added a filter to add/remove fields in Google Analytics #4646
743
+ * Fixed: noindex issue on homepage using Yoast #4609
744
+ * Fixed: Pagination not working in AMP with Magplus theme #4611
745
+ * Fixed: If category name has special characters AMP Pagebuilder was not working #4610
746
+ * Fixed: Letter-spacing issue in Swift Theme if RTL is enabled #4598
747
+ * Fixed: URL with square brackets [ ] causing issue in galleries AMP #4635
748
+ * Fixed: Google Analytics trigger functionality not working #4645
749
+ * Fixed: Validation error when css icons and sticky header is selected #4640
750
+ * Fixed: If Extension manager was active it was showing incorrect message #4613
751
+ * Fixed: Debug warnings #4626 #4639
752
+
753
+ = 1.0.58.5 (15th July 2020) =
754
+ * Fixed: Duplicate title tag on non-amp #4631
755
+ * Fixed: Database deadlocks error #4618
756
+
757
+ = 1.0.58.4 (13th July 2020) =
758
+ * Fixed: Website getting blank after 1.0.58 update
759
+
760
+ = 1.0.58.3 (9th July 2020) =
761
+ * Fixed: Class 'AMPforWP\AMPVendor\WP_Error' not found error in the latest update of Jetpack #4624
762
+
763
+ = 1.0.58.2 (9th July 2020) =
764
+ * Fixed: Category pages are not working properly #4579
765
+
766
+ = 1.0.58.1 (9th July 2020) =
767
+ * Fixed: Validation error of target attribute appearing in span tag #4620
768
+ * Fixed: Menu is hidden behind the content in iOS devices #4601
769
+
770
+ = 1.0.58 (7th July 2020) =
771
+ * Improvement: Added before and after comment hooks #4537
772
+ * Fixed: WPRocket CDN is not working properly with the amp pages #4342
773
+ * Fixed: Two galleries not working with Photo gallery plugin #4421
774
+ * Fixed: Arrows not getting aligned in Breadcrumbs in Arabic with Swift theme #4593
775
+ * Fixed: Customize font size not applying in the post title #4592
776
+ * Fixed: Validation errors when adding 2 columns in AMP pagebuilder #4383
777
+ * Fixed: Category pages are not working properly #4579
778
+ * Fixed: Autoptimize is causing validation for logged in users #4586
779
+ * Fixed: Changed gtag type in googleanalytics #4585
780
+ * Fixed: Changed the sub-title tag to h2 with subtitles and jannah theme #4599
781
+ * Fixed: The entire post content appearing in the excerpt #4603
782
+ * Fixed: Updated the condition for amp ninja activation extension #4606
783
+
784
+ = 1.0.57 (3rd July 2020) =
785
+ * Fixed: Issue with external link with Rank Math #4584
786
+ * Fixed: Incorrect yoast title with TagDiv's themes #4595
787
+
788
+ = 1.0.56 (1st July 2020) =
789
+ * Fixed: When gdpr option is enabled the site is becoming unclickable in browser Safari on IOS and MacOS #4542
790
+
791
+ = 1.0.55 (30th June 2020) =
792
+ * Improvement: Added option to change the Google theme color #4514
793
+ * Improvement: Added TravelTour Theme compatibility #4540
794
+ * Fixed: Whitelisted <details> and <summary> tags in AMP #4577
795
+ * Fixed: amp-embed doesn't include the amp-ad script #4580
796
+ * Fixed: Lightbox for images not working in specific scenario #4570
797
+ * Fixed: Fatal error on one of the urls. #4438
798
+ * Fixed: First priority added to load amp markup when marfeelpress and amp is active #4560
799
+ * Fixed: Retina image breaking the layout for Design 2 in homepage #4558
800
+ * Fixed: The duplicate text showing after the anchor link #4584
801
+ * Fixed: Debug warning #4508
802
+
803
+ = 1.0.54.1 (26th June 2020) =
804
+ * Fixed: The duplicate text showing after the anchor link #4584
805
+
806
+ = 1.0.54 (25th June 2020) =
807
+ * Fixed: Odnoklassniki sharing not working properly #4525
808
+ * Fixed: Post title is not appearing when a post is shared through Whatsapp #4513
809
+ * Fixed: Even after activating amp page builder compatibility we are getting this message this feature requires Page Builder For AMP extension. #4530
810
+ * Fixed: RedGIFs embeds break site #4422
811
+ * Fixed: Show notice when user is enabling option "sort related item randomly". #4535
812
+ * Fixed: The mandatory tag 'link rel=canonical' is missing or incorrect due to Yoast SEO premium plugin #4569
813
+ * Fixed: AMP homepage has a wrong canonical link. #4564
814
+ * Fixed: Yoast not working in rare scenario #4562
815
+ * Fixed: Meta title not pulled from YOAST in version 1.0.53.2 #4574
816
+ * Fixed: yoast breadcrumb links not redirecting to amp pages. #4566
817
+ * Fixed: Need to make comatibility with the wordpress embed block in guntenburg editor #4506
818
+ * Fixed: Custom Javascript added with orbital theme and it is showing a validation error on the AMP Pages #4539
819
+ * Fixed: robots.txt file is not generating when AMP takeover beta option is enabled. #4541
820
+ * Fixed: Need to add compatibility of the "Brightcove Video Connect" plugin. #4517
821
+ * Fixed: Debug Warning #4568
822
+ * Fixed: Comments are not displaying on Homepage (only in swift theme) #4571
823
+ * Fixed: The button CSS not appearing in the AMP added with the Gutenberg button module #4572
824
+
825
+ = 1.0.53.2 (21st June 2020) =
826
+ * Fixed: Minor Bug
827
+
828
+ = 1.0.53 (19th June 2020) =
829
+ * Improvement: Need to implement YOAST breadcrumb for the category and the tags pages #4493
830
+ * Improvement: Added new set of hooks in all designs #4550
831
+ * Improvement: Added PostViews for AMP Extension #4549
832
+ * Improvement: Created an extra argument to pass for amp_author_box function so author links can be controlled #4466
833
+ * Fixed: Meta description tag is missing in AMP, when custom home page is selected. #4521
834
+ * Fixed: The attribute 'src' in tag 'amp-form extension .js script' is set to the invalid value'. #4515
835
+ * Fixed: The tag 'link rel=canonical' appears more than once in the document due to Yoast SEO premium plugin. #4511
836
+ * Fixed: Getting warnings due to Yoast SEO plugin. #4510
837
+ * Fixed: Issue with Image block of Gutenberg #4507
838
+ * Fixed: Gallery images(Gutenberg editor) are stretched when the Optimize CSS option is enabled. #4502
839
+ * Fixed: If category label has backslash in the name breadcrumbs break #4500
840
+ * Fixed: Vertical scroll Issue in iOS devices when the 'menu overlay' is positioned in right. #4461
841
+ * Fixed: WPRocket CDN is not working properly with the amp pages. #4342
842
+ * Fixed: When gdpr option is enabled the site is becoming unclickable in browser Safari on IOS and MacOS #4542
843
+ * Fixed: Unused HTML was showing in Video Module #4524
844
+ * Fixed: Getting validation error as "The attribute '"_blank"' may not appear in tag 'a' with RankMath #4527
845
+ * Fixed: Anchor tag is stripping in AMP with Sitekit By Google plugin is active #4552
846
+ * Fixed: Date styling not looking good in Design 3 archive pages #4557
847
+ * Fixed: Debug warning #4555
848
+
849
+ = 1.0.52 (27th May 2020) =
850
+ * Fixed: Reverted the CDN code of WP Rocket plugin which was causing the malformed url issue #4342
851
+
852
+ = 1.0.51 (27th May 2020) =
853
+ * Improvement: Added option to show instant article post according to updated date #4389
854
+ * Improvement: Added Transposh for AMP Extension #4481
855
+ * Fixed: Malformed url issue with WPRocket CDN #4342
856
+ * Fixed: Call to undefined method WPSEO_Options::get() #4494
857
+ * Fixed: Meta description is not working on homepage with yoast #4486
858
+ * Fixed: Home Page Meta Description Not Showing in Rankmath SEO #4491
859
+ * Fixed: DNS prefetch is disappearing after saving in safari #4470
860
+ * Fixed: Robots txt is not working when AMP takeover is enabled #4475
861
+ * Fixed: Canonical tag is missing when yoast is activated #4490
862
+ * Fixed: Custom taxonomy archive not working LSVR Knowledge Base #4478
863
+ * Fixed: Debug Notice trying to access array offset on value of type bool #4469
864
+
865
+ = 1.0.50 (20th May 2020) =
866
+ * Improvement: Added option to display the GDPR bar at top or bottom #4409
867
+ * Improvement: Added option to enable/disable the AMP from the categories or product or any custom taxonomy #4326
868
+ * Improvement: Added Hooks in Instant Article #4417
869
+ * Improvement: Added Polls for AMP Extension #4451
870
+ * Fixed: View Non-AMP link in the footer does not redirect to Non-AMP #3884
871
+ * Fixed: Banner notice not looking good in reading settings #4414
872
+ * Fixed: Lightbox for images appearing even after disabling #4442
873
+ * Fixed: Last modified date showing wrong in header #4456
874
+ * Fixed: WPRocket CDN is not working properly in the AMP pages #4342
875
+ * Fixed: Lighthouse issues #4443
876
+ * Fixed: Thumbnail images in category module not showing in RTL #4459
877
+ * Fixed: Blank screen when alt added in images with short pixel plugin #4452
878
+ * Fixed: invalid value defer onload with The Business News theme #4465
879
+ * Fixed: Text links are not working in mobile #4462
880
+ * Fixed: PHP Notice Undefined variable thumb_alt #4460
881
+
882
+ = 1.0.49 (11th May 2020) =
883
+ * Fixed: Background color of the row is not working in the AMP Page Builder #4398
884
+
885
+ = 1.0.48 (9th May 2020) =
886
+ * Fixed: Title not showing with Yoast in some scenarios #4434
887
+ * Fixed: Canonical not showing with Yoast when AMP takeover is enabled #4434
888
+ * Fixed: Lightbox for images appearing even after disabling #4442
889
+ * Fixed: Menu and internal links are not working through Google CDN #4429
890
+ * Fixed: GDPR privacy text appearing on the top of the homepage #4435
891
+ * Fixed: Modules are not displaying in background video in pagebuilder #4398
892
+ * Fixed: Showing too many redirect in WPML with mobile redirection #4444
893
+ * Fixed: Detecting the Mobile redirection config to avoid manual tasks #4382
894
+ * Fixed: Pagination of category module not jumping on 1st & last links #4401
895
+ * Fixed: Notice added when category based is removed from Yoast #4437
896
+ * Fixed: Debug notices on the AMP pages #4440
897
+
898
+ = 1.0.47 (5th May 2020) =
899
+ * Fixed: Few issues fixed with latest version of yoast plugin #4430
900
+
901
+ = 1.0.46 (4th May 2020) =
902
+ * Fixed: Few issues fixed with latest version of yoast plugin #4430
903
+ * Fixed: Text not displaying in One signal notification #4413
904
+ * Fixed: Wrong amphtml in ?amp endpoint in category pages #4393
905
+ * Fixed: Open graph tags not loading from the SEO framework #4399
906
+ * Fixed: Blank class in archives loop and loop on homepage #4390
907
+ * Fixed: Pagination of category module going to top of the page #4401
908
+ * Fixed: Fatal error in customizer in trucking theme #4391
909
+ * Fixed: Auto Add AMP in Menu option not working in subdomain #4423
910
+ * Fixed: Showing entities instead of UTF-8 in footer json #4395
911
+ * Fixed: Ninja Tables plugin css was hiding due to class drawer #4428
912
+ * Fixed: AMP Option panel improvements #4408
913
+
914
+ = 1.0.45 (30th April 2020) =
915
+ * Fixed: Updated the code as per yoast latest version to fixed the canonical, title separator, meta tag errors #4415
916
+ * Fixed: Content links unclickable with GDPR #4392
917
+
918
+ = 1.0.44 (29th April 2020) =
919
+ * Fixed: Multiple issues created after the latest update of Yoast (14.0 and above) #4412
920
+
921
+ = 1.0.43 (28th April 2020) =
922
+ * Improvement: Added option to hide category description #4388
923
+ * Improvement: Added option to remove Google index on paginated pages #4372
924
+ * Improvement: Added Filter for amp-carousel #4374
925
+ * Improvement: Code improvements in Related posts and Facebook instance article #4300 #4386
926
+ * Fixed: Fatal error with the latest update of yoast 14.0 #4412
927
+ * Fixed: AMP Lightbox is not working #4378
928
+ * Fixed: White spacing in the responsive mode on left side #4375
929
+ * Fixed: Video docking is not working in AMP. #4352
930
+ * Fixed: Shortcodes displaying in meta descrption #4385
931
+ * Fixed: Debug Warnings: count(): Parameter must be an array or an object that implements Countable. #4387
932
+
933
+ = 1.0.42 (21st April 2020) =
934
+ * Improvement: Added Comments module in our AMP page builder #4106
935
+ * Improvement: Added CSS icons option #4268
936
+ * Improvement: Added Support for Call Rail analytics #4331
937
+ * Improvement: Added Pinterest embeded images in AMP #4361
938
+ * Improvement: Added Video docking feature in AMP #4352
939
+ * Improvement: Added option for one signal notificaion on the pages #4349
940
+ * Fixed: Mobile redirection issue on robots.txt page #4369
941
+ * Fixed: 404 error when we click on the comment section with Google Sitekit #4360
942
+ * Fixed: Fixed width not working in 2 coloum in AMP pagebuilder #4379
943
+ * Fixed: Label markup was visible even after set to empty in content module in AMP pagebuilder #4379
944
+
945
+ = 1.0.41 (14th April 2020) =
946
+ * Improvement: Video docking issue #4352
947
+
948
+ = 1.0.40 (14th April 2020) =
949
+ * Improvement: Added Filter to change post title tag #4339
950
+ * Improvement: Added Rankmath's open external links option feature #4356
951
+ * Improvement: Added Themify compatibility #4332
952
+ * Improvement: Added AAWP for AMP extension #4337
953
+ * Improvement: Added Formidable forms for AMP #4345
954
+ * Improvement: Added Reading progress bar for AMP #4364
955
+ * Improvement: Added hooks in header for all designs #4359
956
+ * Improvement: Added option for one signal notificaion on the pages #4349
957
+ * Fixed: Mobile redirection not working in the latest update #4336
958
+ * Fixed: AMP option panel not working in Best brokers plugin #4330
959
+ * Fixed: AMP option panel not working in custom theme of user #4353
960
+ * Fixed: Table not looking good on mobiles #4309
961
+ * Fixed: Double quotes in the font-family breaks default Typography #4328
962
+ * Fixed: Featured images are getting streched in the amp version #4307
963
+ * Fixed: The menu and article links not working after enabling GDPR #4340
964
+ * Fixed: Facebook instance article is not working in plain permalink #4354
965
+ * Fixed: Video docking is not working in AMP #4352
966
+ * Fixed: There is no save button in AMP "Basic setup" #4343
967
+ * Fixed: Debug warning #4341
968
+
969
+ = 1.0.39 (3rd April 2020) =
970
+ * Improvement: Code improvements in related post #4300
971
+ * Fixed: Images are streching in the gallary #4334
972
+
973
+ = 1.0.38 (1st April 2020) =
974
+ * Improvement: Added Title for facebook comments section #3716
975
+ * Improvement: Added iZooto support for AMP #4312
976
+ * Fixed: Alignment issue in Advertisement Section #4325
977
+ * Fixed: Slow Queries on Homepage in D3 #4319
978
+ * Fixed: Category module links in AMP pagebuilder doesn't change to ?amp #4314
979
+ * Fixed: Debug Warnings #4324 #4321 #4299
980
+
981
+ = 1.0.37 (28th March 2020) =
982
+ * Improvement: Added filter to change Author name #4238
983
+ * Improvement: Added option to show/hide jetpack related post in AMP #4272
984
+ * Improvement: Added option to show/hide sassy social share in AMP #4273
985
+ * Improvement: Added iZooto Push Notification Option #4286
986
+ * Improvement: Code Improvements in #4288 #4300
987
+ * Fixed: Fatal Error - Class ‘QM_Dispatchers’ not found. #4322
988
+ * Fixed: Header shifting to left in swift 404 page #4316
989
+ * Fixed: Fatal error on activation on old php versions #4320
990
+ * Fixed: Design breaks in 2 column layout pagebuilder in Design 2 #4313
991
+ * Fixed: Hide AMP Bulk Tools option isn't working with WPML #4249
992
+ * Fixed: Transparent header background color not working #4315
993
+
994
+ = 1.0.36 (26th March 2020) =
995
+ * Improvement: Added filter to modify role based access #4303
996
+ * Improvement: Added "srcset" on featured images #4257
997
+ * Improvement: Added option to resize the author images in author bio #4297
998
+ * Fixed: AMP child theme not working after update #4310
999
+ * Fixed: amp-fx-collection script was not loading #4275
1000
+ * Fixed: Minify HTML & Query Monitor not working on some pages in AMP #4301
1001
+ * Fixed: Related posts doesn't show more than 3-4 #4300
1002
+ * Fixed: Incorrect alignment of Edit in twenty twenty WP theme #4246
1003
+ * Fixed: Social Icons are out of alignment in Design 2 #4305
1004
+
1005
+ = 1.0.35 (23th March 2020) =
1006
+ * Fixed: Related post images not having alt attribute #4282
1007
+ * Fixed: iframes are not working with WP optimize premium #4290
1008
+ * Fixed: input type file error #4289
1009
+ * Fixed: next and prev alignment issue in design 2 #4211
1010
+ * Fixed: 404 PHP File is not getting overried from the child theme #4284
1011
+ * Fixed: Error in "Optimize loading of Google font" in SG Optimizer #4287
1012
+ * Fixed: amp-vimeo Validation error of invalid value 'ondemand' #4294
1013
+ * Fixed: AMP Option panel improvements #4277 #4288
1014
+
1015
+ = 1.0.34 (19th March 2020) =
1016
+ * Improvement: Matomo (Piwik) analytics improvements #4271 #4280
1017
+ * Improvement: Custom page template improvements #4244
1018
+ * Improvement: Option to add/remove "nofollow" in the comment button #4266
1019
+ * Fixed: Spaces issue fixed in image carousel #4141
1020
+ * Fixed: Reusable blocks not working in the Custom AMP Editor #4187
1021
+ * Fixed: Comments pagination was not working in amp takeover beta #4251
1022
+ * Fixed: lightbox issue fixed #4222
1023
+ * Fixed: When AMP Dev mode and Mobile redirection both kept on then the website displays AMP on the mobile device #4276
1024
+ * Fixed: debug warnings on Fresh WP installation #4270
1025
+ * Fixed: Treeshaking was not working with "Product Review Lite Plugin" #4256
1026
+ * Fixed: Tables was not responsive in Mobile view design one #4278
1027
+ * Fixed: Have to make compatible with wordpress4.4.2 version #4262
1028
+ * Fixed: Click here link not working in mobile view of Subscribe to Comments Reloaded plugin #4225
1029
+ * Fixed: Post pagination not working in custom AMP Editor #4255
1030
+ * Fixed: Depreciated categories widget #4274
1031
+ * Fixed: Weekday removed from parameter 'published at' in the analytice code #4281
1032
+
1033
+ = 1.0.33 (11th March 2020) =
1034
+ * Fixed: Categories not Hiding in Instant Articles #4254
1035
+ * Fixed: Error when activating imagify plugin #4260
1036
+ * Fixed: Start attribute not working in ol tags #4243
1037
+ * Fixed: Search form not working in template mode #4227 #4224
1038
+ * Fixed: Save button was disappearing when theme build on Redux framework #4259
1039
+ * Fixed: SVG tag was removing in anchor tag #4252
1040
+ * Fixed: Filter added to modify font face URL's #4258
1041
+ * Fixed: Elementor CSS not loading on frontpage in ALL in One SEO #4253
1042
+ * Fixed: Undefined variable: get_amp_custom_frontpage_id #4265
1043
+ * Fixed: Images are not showing in AMP with Neva Child Theme #4261
1044
+ * Fixed: AMP Option panel improvements #4245 #4269
1045
+
1046
+ = 1.0.32 (6th March 2020) =
1047
+ * Fixed: Syntax breaking in advanced google analytics section #4228
1048
+ * Fixed: Optimize CSS (Tree shaking) not clearing on post update #4234
1049
+ * Fixed: Compatibility with the CIARO theme #4220
1050
+ * Fixed: Custom JavaScript are not allowed issue #4233
1051
+ * Fixed: Need to remove search option when header type 2 is selected #4214
1052
+ * Fixed: CSS of the CTA button in AMP page builder is disturbed in the mobile view #4215
1053
+ * Fixed: image broken in light speed cache plugin #4231
1054
+ * Fixed: Youtube video is not working in " The issue" Theme #4223
1055
+ * Fixed: Removed '/amp' in menu with custom link #4221
1056
+ * Fixed: Wrong Yoast Canonical when amp link added #4229
1057
+ * Fixed: Call to undefined function session_start() in redirect.php:67 #4236
1058
+ * Fixed: Content Sneak Peek issue with below the content ads in Mozilla browser. #4178
1059
+ * Fixed: The mandatory attribute 'target' is missing in tag form #4239
1060
+ * Fixed: Query Monitor queries should be visible in amp pages too when logged in. #4250
1061
+ * Fixed: The input should be cleared When search button is clicked in AMP options Panel#4247
1062
+ * Fixed: Multiple debug warnings. #4242
1063
+
1064
+ = 1.0.31 (28th February 2020) =
1065
+ * Improvement: Added option to hide vukkle comments emoji #4194
1066
+ * Improvement: Added alt for images in Slider module of AMP page builder #4193
1067
+ * Improvement: Updated sabberworm folder #4142
1068
+ * Fixed: Fatal Error fixed with zombify plugin #4184
1069
+ * Fixed: Validation error due to Mediavine Plugin #4206
1070
+ * Fixed: Instant article bug #4150
1071
+ * Fixed: AMP Search Not Working with Betheme #4195
1072
+ * Fixed: StackPath CDN not working #4123
1073
+ * Fixed: Extra 301 redirect after enabling ?amp #4167
1074
+ * Fixed: Table CSS improved #4185
1075
+ * Fixed: Debug Warnings #4226
1076
+ * Fixed: AMP Option panel improvements #4202 #4219
1077
+
1078
+ = 1.0.30 (24th February 2020) =
1079
+ * Improvement: Added Autoplay in Image Gallery #3705
1080
+ * Fixed: Jetpack lazy loading not working due to our AMPforWP plugin #4183
1081
+ * Fixed: Amp comments Bug with update 1.0.28 #4209
1082
+ * Fixed: Removed Table styles when AMP Pagebuilder compatibility plugin is active #4185
1083
+ * Fixed: Debug warning fixed #4204 #4212
1084
+
1085
+ = 1.0.29 (21th February 2020) =
1086
+ * Improvement: Created an option for entering URLs to prefetch. #3997
1087
+ * Fixed: Admin bar css is not loaded on amp pages #4130
1088
+ * Fixed: Optimize amp pages and CSS #3579 #4174
1089
+ * Fixed: When the tree shaking is enabled then the CSS of the layouts break #4113
1090
+ * Fixed: Extra 301 redirect after enabling ?amp #4167
1091
+ * Fixed: Break in layout when AMP takeout and conver to wp is enabled together #4176
1092
+ * Fixed: There should be no notices or messages from other third party plugins on the AMP option panel. #4166
1093
+ * Fixed: Incorrect time showing on AMP if we select Timezone as UTC-3 #4160
1094
+ * Fixed: WPappbox images are not loading on the amp pages #4161
1095
+ * Fixed: CSS of CTA button is over-riding while using more than one CTA in AMP pagebuilder. #4173
1096
+ * Fixed: Notice Errors - Trying to get property 'title' #4196
1097
+ * Fixed: Warning issue on AMP option panel. #4172
1098
+ * Fixed: Display the Search button in AMP option panel. #4165
1099
+ * Fixed: Warning Errors #4200
1100
+ * Fixed: amp-access script is not being appended via Enter HTML in Head #4199
1101
+ * Fixed: Issues related to category support on the AMP Pages #4151
1102
+ * Fixed: AMP Options panel UI bugs #4180 #4179 #4105
1103
+
1104
+ = 1.0.28 (18th February 2020) =
1105
+ * Improvement: Scripts added from Options panel should have higher priority in the frontend #4064
1106
+
1107
+ = 1.0.27 (16th February 2020) =
1108
+ * Fixed: Bugs in Imagify plugin #3908
1109
+ * Fixed: GDPR popup not blocking header #4155
1110
+ * Fixed: Save button dissappers when clicked on setup settings #4169
1111
+ * Fixed: Alignment issue when there is no caption on featured image #4171
1112
+ * Fixed: Whitelisted Picture tag #4051
1113
+ * Fixed: Show/Hide Slider or Icon module in AMP Pagebuilder is not clickable #4153
1114
+ * Fixed: Debug warning when empty item added in Slider module in AMP pagebuilder #4152
1115
+ * Fixed: Empty link in facebook share in sticky bar #4154
1116
+ * Fixed: AMP Options panel UI bugs #4122 #4162
1117
+
1118
+ = 1.0.26 (13th February 2020) =
1119
+ * Improvement: import/export option improved #4089
1120
+ * Fixed: Added option to show/hide featured image on AMP pagebuilder #4131
1121
+ * Fixed: AMP Options panel UI bug #4122
1122
+
1123
+ = 1.0.25 (12th February 2020) =
1124
+ * Fixed: Title issue #4138
1125
+
1126
+ = 1.0.24 (11th February 2020) =
1127
+ * Improvement: Added filter to modify the breadcrumb homepage url #4077
1128
+ * Fixed: Image alignment on the left issue #4156
1129
+ * Fixed: H1 tag not appearing on posts #4121
1130
+ * Fixed: "Title on static page front page" option not working #4138
1131
+ * Fixed: AMP Menu option was not showing in WP settings #4129
1132
+ * Fixed: Blank Events Calendar Months Page when 'Minify' option is enabled #4080
1133
+ * Fixed: Removed '@' in Twitter Handle #4135
1134
+ * Fixed: Message improved when "Leverage Browser Caching" option is enable without readable or writable permission of htaccess file #4127
1135
+ * Fixed: Featured image removed on AMP Pagebuilder pages #4131
1136
+
1137
+ = 1.0.23 (7th February 2020) =
1138
+ * Fixed: Fatal error in amp theme framework if WordPress directory is modified #4145
1139
+ * Fixed: Iframe error due to Jetpack #4125
1140
+ * Fixed: Menu transient increased to avoid deadlock error #4133
1141
+ * Fixed: Moved "Breadcrumbs From Yoast" to SEO option Panel section. #3600
1142
+ * Fixed: Featured Image from the content is not fetching the image when height and width is not present in the image code in Classic editor. #4096
1143
+ * Improvement: Sorting option for Pagebuilder slider/gallery #2014
1144
+ * Improvement: Option for showing no. of words in the excerpt of Recent Posts and Related Posts #3640
1145
+ * Improvement: Link Comments section with comments order #3740
1146
+ * Improvement: Default fallback images Added #3719
1147
+ * Improvement: subscript<sub> and superscript<sup> support #4137
1148
+ * Improvement: Message added if no seo option is selected but seo plugin is active #4124
1149
+
1150
+ = 1.0.22 (6th February 2020) =
1151
+ * Fixed: Console error - Uncaught TypeError: Cannot read property 'on' of null #4102
1152
+ * Fixed: When Insert post ads plugin is enable then AMP settings panel is not showing. #4107
1153
+ * Fixed: Search console error fixed on WooCommerce wishlist page #4097
1154
+ * Fixed: GTM Added in Basic Setup and code improvements #4108
1155
+ * Fixed: The meta tags was not working in Head section #4116
1156
+ * Fixed: Upgrade to Pro button was missing in the AMP setting panel #4118
1157
+ * Fixed: Upgrade to Pro option was removing in the setting panel when we activate PWA for WP plugin #4117
1158
+ * Fixed: FAQ section improved #4119
1159
+
1160
+ = 1.0.21 (4th February 2020) =
1161
+ * Fixed: Fatal error when AMP theme framework is active #4128
1162
+
1163
+ = 1.0.20 (31st January 2020) =
1164
+ * Improvement: Filter added to Modify the location of the theme files from plugin older. #4091
1165
+ * Improvement: Cache Should auto clear when any plugin is activated/deactivated #4046
1166
+ * Improvement: Need to add nofollow feature in cookie notification option #3612
1167
+ * Fixed: Pages won't save apostophies in AMP page builder text module. #4074
1168
+ * Fixed: Warring in console : [DOM] Found 2 elements with non-unique id #amp-search #3946
1169
+
1170
+ = 1.0.19 (29th January 2020) =
1171
+ * Improvement: EWWW Image Optimizer plugin Compatibility #3984
1172
+ * Fixed: WP Admin toolbar CSS is not loading when user is logged in #4076
1173
+ * Fixed: AMP Options panel UI improvements done. #4088
1174
+ * Fixed: video is not displaying in AMP when a video is inserted from gutenberg video module #4086
1175
+ * Fixed: Performance section all features not working when Ezoic integration plugin is active. #4092
1176
+ * Fixed: Playbuzz is not working #4085
1177
+ * Fixed: RECENT POSTS label visible if no posts are available #4011
1178
+ * Fixed: data-block-on-consent is missing for Vuukle comments when gdpr is enabled #4095
1179
+ * Fixed: Remove Purge AMP CDN cache Settings buuton: #4099
1180
+ * Fixed: When categories that we exclude from AMP through the plugin configuration present redirection problem along with mobile redirection option #4075
1181
+ * Fixed: Alignment issue in GDPR Privacy link. #4101
1182
+
1183
+ = 1.0.18 (27th January 2020) =
1184
+ * Fixed: Debug warnings with Imagify plugin #3908
1185
+
1186
+ = 1.0.17 (27th January 2020) =
1187
+ * Improvement: Compatibility with the Imagify plugin #3908
1188
+ * Improvement: EWWW Image Optimizer plugin Compatibility #3984
1189
+ * Improvement: Accessibility score of Amp Layouts improved in Lighthouse test #4078
1190
+ * Fixed: Admin toolbar is not showing on custom amp page #3718
1191
+ * Fixed: Bug in Instant article's Single option #3891
1192
+ * Fixed: If the user adds the social share link in the users section then we need to show social share icon #3976
1193
+ * Fixed: Treeshaking is enabled then " Content sneak to peek " button is showing below the content. #4069
1194
+ * Fixed: AMP take over is not working on home page when user have no posts. #4056
1195
+
1196
+ = 1.0.16 (24th January 2020) =
1197
+ * Improvement: Need to built compatibility with "Mistape" plugin. #3974
1198
+ * Improvement: Need to make compatibility with "Transposh WordPress Translation" plugin #3895
1199
+ * Fixed: A Table is created trough Gutenberg then CSS of that Table is failing to load in AMP. #3902
1200
+ * Fixed: When user search from the AMP site then results page should be in non-AMP. #3977
1201
+ * Fixed: Add 'wp-color-picker' as dependency while registering the script #4061
1202
+ * Fixed: The "for" attribute is removing in AMP #4054
1203
+ * Fixed: Table heading style is not working properly #4050
1204
+ * Fixed: Need to change the description of AMP page builder compatibility options when plugin is activated. #3899
1205
+ * Fixed: Thumbnail image of homepage should show properly after changing the image size #3882
1206
+ * Fixed: Need to remove the default AMP functionality from the User's theme as it is breaking the layout. #4068
1207
+ * Fixed: YOAST SEO Analysis is not working properly with AMP Page Builder. #4030
1208
+ * Fixed: When AMP is disabled on pages,give an option of hide/unhide AMP on Blog page when in edit mode. #4066
1209
+ * Fixed: The tag 'template' requires including the 'amp-mustache' extension JavaScript. #4079
1210
+
1211
+ = 1.0.15 (17th January 2020) =
1212
+ * Fixed: Sticky Social icons's css not loading correctly on some pages #3980
1213
+ * Fixed: Need to add option to hide "AMP version" in view source page(generator). #4000
1214
+ * Fixed: Caption of image gallery not displaying #3993
1215
+ * Fixed: Need to connect retina image functionality to In-content Related post thumbnails. #4007
1216
+ * Fixed: easytoc-icon.png #4041
1217
+ * Fixed: AMP links Error. #4016
1218
+ * Fixed: Image alignment and Name is not showing AMP #4038
1219
+ * Fixed: Need to sanitize amp-mowplayer tag when added in the content. #4044
1220
+ * Fixed: Set the priority to high of the icomoon CSS to override every other CSS,in AMP page builder. #4035
1221
+ * Fixed: when row Wrapper is set to 100%,static css of max width 90% is getting applied from tablet view mode to below #3999
1222
+ * Fixed: Code improvement in Detect Component and add or remove script accordingly #4067
1223
+
1224
+ = 1.0.14 (14th January 2020) =
1225
+ * Fixed: Warning in accelerated-mobile-pages/includes/options/admin-config.php on line 1250
1226
+ * Fixed: Code improvement in Detect Component and add or remove script accordingly #4067
1227
+
1228
+ = 1.0.13 (13th January 2020) =
1229
+ * Fixed: Warring in console : [DOM] Found 2 elements with non-unique id #amp-search #3946
1230
+ * Fixed: New Relic script is getting added in AMP and causing validtion error #4018
1231
+ * Fixed: Icons are not loading when creating theme compatibility #3766
1232
+ * Fixed: Video doesn't work on AMP when inserted from Siteorigin pagebuilder (Video player widget) #3936
1233
+ * Fixed: Minor issues with amp need to fix #3931
1234
+ * Fixed: When from amp page builder adding text module then space is not coming in paragraph #3982
1235
+ * Fixed: Getting error at home page when push notification option is enabled. #4026
1236
+ * Fixed: Please Fix Errors in Google Lighthouse audit in Accessibility (using Swift, Amp Layouts) #3949
1237
+ * Fixed: Remove offers from the panel #4027
1238
+ * Fixed: Detect Component and add or remove script accordingly #4067
1239
+ * Fixed: GTM tags are not working in the updated version 1.0.9 but Google Analytics is working,Also in version 1.0.0 both are working fine #4059
1240
+ * Fixed: Matomo (Piwik) Analytics generating errors in Console. #4042
1241
+
1242
+ = 1.0.12 (12th January 2020) =
1243
+ * Fixed: Detect Component and add or remove script accordingly #4067
1244
+
1245
+ = 1.0.11 (11th January 2020) =
1246
+ * Fixed: In amp-pixel script adding automatically. #4057
1247
+
1248
+ = 1.0.10 (10th January 2020) =
1249
+ * Improvement: Need a hook to use it in Woocomerce #4048
1250
+ * Fixed: Scripts are not adding properly if user is adding the content through embed #4040
1251
+ * Fixed: When Featured Image from The Content is turned on,the image is not displayed when Creating post from Gutenberg. #4022
1252
+
1253
+ = 1.0.9 (8th January 2020) =
1254
+ * Fixed: Odd behaviour of Optimize CSS (Treeshaking),when turned off resolves the validation errors and when turned on adding unnecessary wp-block CSS. #4036
1255
+ * Fixed: After enable the Tree shaking feature the CSS not loading properly #4034
1256
+ * Fixed: fallback feature is not working on SVG images #4033
1257
+ * Fixed: Need to update the Form Sanitizer to allow only the required from #4010
1258
+ * Fixed: 404 error in console with Images having webp extension. #3983
1259
+
1260
+ = 1.0.8 (2nd January 2020) =
1261
+ * Fixed: Need to add Rankmath's "Nofollow External Links" feature. #3970 (updated the code)
1262
+
1263
+ = 1.0.7 (2nd January 2020) =
1264
+ * Improvement: Need to add Rankmath's "Nofollow External Links" feature. #3970
1265
+ * Improvement: Need to add floating button in extension list #3972
1266
+ * Fixed: AMP theme framework GDPR module should be connected to GDPR Compliancy in option panel. #3963
1267
+ * Fixed: Breadcrumbs are not properly displaying and working in updated version #3917
1268
+ * Fixed: amp-auto-ads script is loading in AMP-pages when Google site kit plugin is enable. #4009
1269
+ * Fixed: wp-block CSS is heavily loading even when tree shaking is enabled in core. (Page builder is enabled) #4014
1270
+
1271
+ = 1.0.6 (31st December 2019) =
1272
+ * Improvement: Allow users to add custom script in amp by using amp theme frame work plugin or without plugin #3865
1273
+ * Improvement: Allow users to register scripts in proper way in AMP Theme Framework #3257
1274
+ * Improvement: Need to add filter to modify mobile redirection #3987
1275
+ * Improvement: Need to update Sabberworm/CSS folder. #4012
1276
+ * Improvement: Need to make compatibility with "Transposh WordPress Translation" plugin #3895
1277
+ * Fixed: Warning issue with "$amp_emplate->get('metadata')" undefined metadata #3967
1278
+ * Fixed: GDPR popup appears once agin after accepting it #3957
1279
+ * Fixed: AMP Page apears blank after adding script tag in Head Section of AMP Page Builder #3834
1280
+ * Fixed: when user is not an admin and the admin bar is getting displayed as gap on the site #3918
1281
+ * Fixed: Option Panel not saving in AMP FOR WP, it is giving 404 error #3768
1282
+ * Fixed: Page Builder Latest Posts Category Module #3927
1283
+ * Fixed: Error amp-iframe extension .js appears more than once #3810
1284
+ * Fixed: Query monitor is not working in our latest version. #4008
1285
+ * Fixed: Google Tag manager not firing properly #3826
1286
+ * Fixed: Undefined variable block_css #4021
1287
+
1288
+ = 1.0.5 (30th December 2019) =
1289
+ * Fixed: Menu arrow icon not showing properly in mobile version #3995
1290
+ * Fixed: Google Tag manager not firing properly #3826
1291
+
1292
+ = 1.0.4 (26th December 2019) =
1293
+ * Fixed: When Optimize CSS (beta) option is enabled AMP page is getting blank #3994
1294
+
1295
+ = 1.0.3 (23th December 2019) =
1296
+ * Improvement: Filter in search form #3948
1297
+ * Improvement: Improvement of jetpack social icons #3907
1298
+ * Improvement: Need to add a Filter in amp tree shaking for adding custom CSS. #3971
1299
+ * Fixed: Icomoon.ttf is preloaded in Design 1 and Design 2. #3945
1300
+ * Fixed: Search translate text option is visible in swift but unused #3934
1301
+ * Fixed: Category module has minor bugs after the update. #3880
1302
+ * Fixed: Improvements required in RTL support in AMP #3938
1303
+ * Fixed: Save buttons are not looking good after WP 5.3 update #3985
1304
+ * Fixed: Video widget support in AMP #3841
1305
+ * Fixed: Time is not working in published date notice #3956
1306
+ * Fixed: Recoverable fatal error: Object of class DOM Node List could not be converted to string #3968
1307
+ * Fixed: In Amp struture data option if we added any schema then description generated in html format #3937
1308
+ * Fixed: Select Taxonomy and Select Category is getting blank in the category module of AMP page builder #3986
1309
+ * Fixed: Notice: Undefined offset: 0 in class-amp-post-template.php on line 378 #3992
1310
+ * Fixed: Undefined variable: designCss #3961
1311
+ * Fixed: Open Graph title is not displaying correctly with SEOPress in AMP. #3966
1312
+
1313
+ = 1.0.2 (19th December 2019) =
1314
+ * Improvement: Need to add wordpress default Gutenburg editor 'Block' settings Compatibility in AMP #3320
1315
+ * Improvement: Need to make compatibility with the Imagify plugin #3908
1316
+ * Improvement: Taxonomy support in AMP Page Builder category module #3310
1317
+ * Improvement: Add support of fallback images in AMP #3790
1318
+ * Improvement: General code improvements part 3 #3941
1319
+ * Improvement: Drop down support in Alternative Menu in Mobile view. #2768
1320
+ * Fixed: The Alternate Menu does not redirecting to the AMP for the product category in menu items #3915
1321
+ * Fixed: Sub-Category Archives on AMP page should be connected to Change internal links to AMP option. #3924
1322
+ * Fixed: Debug warning : Undefined index element #3958
1323
+ * Fixed: MGID Ads are not loading when the Flexible AMP widget option is enabled in the AMP #3864
1324
+ * Fixed: The Close bar is not appearing menu check in mobile iPhone #3964
1325
+
1326
+ = 1.0.1 (14th December 2019) =
1327
+ * Fixed: Telegram as social profile #3754
1328
+ * Fixed: Give default styling for <small> tag. #3879
1329
+ * Fixed: When pagination is enabled in Category Module,translation option should be given in Advanced. #3847
1330
+ * Fixed: An issue with Code module in AMP page puilder. #3833
1331
+ * Fixed: Getting an error while validating page when using Disqus comments #3871
1332
+ * Fixed: Content is updated programatically on /amp/ page view, bad revision is created #3822
1333
+ * Fixed: Custom Post types and taxonomies option should be only visible when Archives is enabled #3903
1334
+ * Fixed: After reloading 'Select Categories to Hide AMP', it shows empty #3898
1335
+ * Fixed: In exclude Categories option the "No items of this type were found." message is displaying #3900
1336
+ * Fixed: Cannot use a scalar value as an array #3823
1337
+ * Fixed: Debug warnings. #3932
1338
+ * Fixed: Google Tag manager not firing properly #3826
1339
+
1340
+ = 1.0.0 (11th December 2019) =
1341
+ * Improvement: Need to clear amp treeshaking css for reset section button. #3916
1342
+ * Improvement: Need to add easy table of contents in extension list #3922
1343
+ * Fixed: If hide amp hide on post or pages from anywhere then that needs to redirect to 301 #3767
1344
+ * Fixed: Need to add filter in "wp_localize_script" #3764
1345
+ * Fixed: Need to add preload key requests for font icons #3752
1346
+ * Fixed: Advance footer options should not be hidden by default #3652
1347
+ * Fixed: Button Rel Attribute #3872
1348
+ * Fixed: Need to update the PWA for WP extension from the options panel #3888
1349
+ * Fixed: “View AMP” Button Showing CSS on frontend #3890
1350
+ * Fixed: Images get streched in new version of the AMP FOR WP Plugin #3914
1351
+ * Fixed: Need to remove one signal push notification button in pages. #3874
1352
+ * Fixed: when images are placed along with the anchor tag in gallery module of guntenberg editor the image src is getting unknown in AMP #3923
1353
+ * Fixed: When RTL is enabled,the menu in header is going to right but the elements in right are not moved to left. #3881
1354
+
1355
+ = 0.9.98.22 (9th December 2019) =
1356
+ * Improvement: Need to add full short pixel plugin compatibility #3782
1357
+ * Fixed: Need to improve UI when "Saved" notification displays. #3856
1358
+ * Fixed: Need to show the Attention message when custom AMP editor box checked but there is no content in it #2866
1359
+ * Fixed: Issue with AMP page builder tool when images are inserted in slider module. #3780
1360
+ * Fixed: Hidden posts in AMP should not show in related posts #3839
1361
+ * Fixed: Make header Unsticky not working when Infinite scrolling is turned on. #3831
1362
+ * Fixed: The post title appears 2 times: after the parent category and after the child on breadcrumb. #3724
1363
+ * Fixed: data-block-on-consent missing in GTM code #3911
1364
+ * Fixed: Debug error #3910
1365
+ * Fixed: PHP Warnings from redux filesystem #3901
1366
+ * Fixed: Debug notice #3913
1367
+ * Fixed: Sidebar Widgets Default CSS should load on Woo commerce Sidebar #3912
1368
+ * Fixed: Images get streched in new version of the AMP FOR WP Plugin #3914
1369
+
1370
+ = 0.9.98.21 (3th December 2019) =
1371
+ * Improvement: Fonts support in all three designs one, two and three along with the swift Theme #1914
1372
+ * Improvement: Need to create Testimonial slider in AMP Page Builder #2960
1373
+ * Improvement: Need to create an optional option for the side menu when people click on the text the links should be dropped. links sub links #3428
1374
+ * Improvement: Need to make compatibility with this plugin Stop Generating Image Sizes #3851
1375
+ * Improvement: Improve Matemo analytics integration #3757
1376
+ * Fixed: Breadcrumb breaks when '/' is present in category name #3769
1377
+ * Fixed: Back to top button CSS loading twice in Design 1,2,3. #3835
1378
+ * Fixed: Removing trbidi attribute #3687
1379
+ * Fixed: Upgrade to AdsforWP button not working properly. #3681
1380
+ * Fixed: Tooltip alignment is missing in Advertisement #3625
1381
+ * Fixed: Media queries are removing automatically in media queries merging process #3797
1382
+ * Fixed: Excerpt on homepage is not working properly. #3866
1383
+ * Fixed: Author links are redirecting to AMP even when the Archives is turned off. #3875
1384
+ * Fixed: Issue related to image height and width #3857
1385
+ * Fixed: Gutenberg Gallery Images are not displayed correctly when any option is selected in WordPress Content Gallery. #3868
1386
+ * Fixed: Google Tag manager not firing properly #3826
1387
+ * Fixed: After Update AMP option panel design is changing #3877
1388
+
1389
+ = 0.9.98.20 (27th November 2019) =
1390
+ * Fixed: Menu closer icon is getting overlapped by the header part of firefox web browser #3744
1391
+ * Fixed: Instagram TV videos are not rendering into AMP #3812
1392
+ * Fixed: Need To move CTA button in header two in sidebar if the website layout is in mobile view #3669
1393
+ * Fixed: When the image is added from ThirstyAffiliate image block from Guntenber editor facing validation error #3706
1394
+ * Fixed: PHP Warning:DOMDocument::loadHTML(): Empty string supplied as input #3745
1395
+ * Fixed: When Convert AMP to WP theme (Beta) option is enabled Back to Top link functionality is not working #3695
1396
+ * Fixed: Post date always shows 3 hours ago #3624
1397
+ * Fixed: Gutenberg Design Bugs #3645
1398
+ * Fixed: Toolbar AMP link bug #3692
1399
+ * Fixed: Breadcrumb icommon symbol direction should be changed when RTL is enabled in Swift. #3678
1400
+ * Fixed: Extra CSS are loading in swift and AMP Layouts #3414
1401
+ * Fixed: Remove Digg and Google plus option form Social Sharing #3709
1402
+ * Fixed: When Yoast SEO plugin is activated the same excerpt shows #3708
1403
+ * Fixed: Allow people to use captions below thumbnails in gallery #3702
1404
+ * Fixed: Design improvements of D2 #3637
1405
+ * Fixed: Fatal error: Uncaught Error: Cannot use object of type stdClass as array (after 98.15) #3867
1406
+ * Fixed: In amp gallery need to make improvement in arrow #3860
1407
+ * Fixed: Performance issues in AMP FOR WP #3732
1408
+ * Fixed: Yoast Separator is converting from Hyphen to Dash #3783
1409
+ * Fixed: Multiple UX related modifactions #3869
1410
+ * Fixed: strpos() debug error after 19 update #3878
1411
+
1412
+ = 0.9.98.19 (25th November 2019) =
1413
+ * Fixed: image transients should clear automatically #3781
1414
+ * Fixed: CTA button in header could be made no follow #3798
1415
+ * Fixed: In IOS screen, Menu cross button is not appearing in Swift design #3809
1416
+ * Fixed: Comment closed opion need to be removed. #3750
1417
+ * Fixed: In template mode Need to show extension setting panel. #3728
1418
+ * Fixed: Facebook comment is not changing language when we select another language #3710
1419
+ * Fixed: Single Sidebar data is visible in Homepage #3636
1420
+ * Fixed: Need to remove width from inline style on amp images #3741
1421
+ * Fixed: If permalinks is set as "/index.php/%year%/%monthnum%/%day%/%postname%/" then not working properly with Pagination #3537
1422
+ * Fixed: Canonical url is changing in cateogry pages when cateogry name start with amp #3694
1423
+ * Fixed: general fixes and improvements part 2 #3621
1424
+ * Fixed: Warning: strpos(): Empty needle in /home/statecer/public_html/wp-content/plugins/accelerated-mobile-pages/templates/features.php on line 5788 #3870
1425
+
1426
+ = 0.9.98.18 (21th November 2019) =
1427
+ * Improvement: Show the number of shares with Sassy Social Share #3588
1428
+ * Fixed: Need to improvment in table code #3664
1429
+ * Fixed: Change internal links to AMP is not working when custom permalink having the extenison.html #3811
1430
+ * Fixed: Width of the recent posts and related posts thumbnail image should be same #3639
1431
+ * Fixed: Page should be full width if the page builder is used #3756
1432
+ * Fixed: Remove broken link on source code like "<link rel="dns-prefetch" href="https://cdn.ampproject.org">." #3697
1433
+ * Fixed: leave a comment added when making pages with pagebuilder #3755
1434
+ * Fixed: Need to adding gaping for col 2 in AMP Pagebuilder #3796
1435
+ * Fixed: CSS issue. #3785
1436
+ * Fixed: Facebook comment is not changing language when we select another language #3710
1437
+ * Fixed: Verify button of Google Font API key is not working after update #3858
1438
+ * Fixed: Cache is not clearing after clicking clear cache button #3863
1439
+
1440
+ = 0.9.98.17 (19th November 2019) =
1441
+ * Fixed: Validation error of 'srcset' in 'amp-img' after Latest update of Divi Theme (From version 4.0.2) #3803
1442
+ * Fixed: Logo is not resizing when using fixed width #3696
1443
+ * Fixed: Fatal Error when "AMP FOR WP" is activated on AMP FOR WP Garage URL #3765
1444
+ * Fixed: Images and Videos with Gutenberg does not have proper spacing #3634
1445
+ * Fixed: Undefined variable: amp_url #3776
1446
+ * Fixed: amp-image-lightbox markup is loading in paginated post even the image is not present #3700
1447
+ * Fixed: Search results on/off option in amp #3786
1448
+ * Fixed: Internal links are breaking in Persian language #3777
1449
+ * Fixed: Use util function to get array component. Fixes #3778 #3842
1450
+ * Fixed: Add Hyperlink option to Gallery module images. #3850
1451
+ * Fixed: Need to remove WPBakery Page Builder Support Option #3855
1452
+
1453
+ = 0.9.98.16 (18th November 2019) =
1454
+ * Improvement: Need to make compatibility of Advance setting options of yoast seo into AMP #3684
1455
+ * Improvement: Add filter to modify HTML attributes #3685
1456
+ * Fixed: Jetpack causing errors after update #3849
1457
+ * Fixed: Facebook like button is not showing correctly after last update in design3 #3742
1458
+ * Fixed: [URGENT] Vuukle API KEY missing #3792
1459
+ * Fixed: Admin tool bar css is not loading #3788
1460
+ * Fixed: Hide button always showing on page #3762
1461
+ * Fixed: Meta description are not showing properly in genesis #3761
1462
+ * Fixed: Non-Responsive tables after version 0.9.98.9 #3746
1463
+ * Fixed: Wrong amphtml when static page is selected in reading settings along with ?amp endpoint #3717
1464
+ * Fixed: Homepage posts image alignment issue #3691
1465
+ * Fixed: Lightbox not working for single images #3683
1466
+ * Fixed: Notice: Undefined index: category #3829
1467
+ * Fixed: Notice: Undefined variable: category_name #3827
1468
+ * Fixed: AMP Dev mode when disabled throwing a fatal error in mobile mode for blog. #3824
1469
+ * Fixed: Warning when trying to save the option #3800
1470
+
1471
+ = 0.9.98.14 (7th OCTOBER 2019) =
1472
+ * Fixed: Value Attribute Stripping out from the forms added in the content. #3689
1473
+ * Fixed: Remove AAWP from extension list #3735
1474
+ * Fixed: Data is not saving while Importing options from the json file #3667
1475
+ * Fixed: Debug warning #3723, #3729, #3730, #3731
1476
+
1477
+ = 0.9.98.13 (27th SEPTEMBER 2019) =
1478
+ * Improvements: Need to create an option to clear the cache in tree shaking #3680
1479
+ * Improvements: Only get the required dashicons for Admin Toolbar #3707
1480
+ * Fixed: When enabling Treeshaking it removes the Swift icons TTF #3665
1481
+ * Fixed: List numbers are not in position #3704
1482
+ * Fixed: Menu Auto closing when # in the url #3633
1483
+ * Fixed: Facebook Like script not loading #3633
1484
+
1485
+ = 0.9.98.12 (25th SEPTEMBER 2019) =
1486
+ * Improvements: User wants Wordpress admin toolbar in the AMP area #3450
1487
+ * Improvements: we want the amp menu showing from left or right side both. #3095
1488
+ * Improvements: Add feature to increase width for facebook like button and also add feature of data-action="recommend" #3241
1489
+ * Improvements: Improvements in Design 1 2 and 3 option panel in Header section #3642
1490
+ * Fixed: Update Stops Google Analytics tracking #3690
1491
+ * Fixed: Lightbox not working for single images #3683
1492
+ * Fixed: Language of Menu not changing when changing website language #3522
1493
+ * Fixed: We need to allow people to turn off the social section fully #3613
1494
+ * Fixed: Ui Design issues #3616
1495
+ * Fixed: Dropcap option should only be enabled on the posts, not from pages. #3614
1496
+ * Fixed: Social share position is not working in single design 2#3627
1497
+ * Fixed: AMP text module is not working in Widget area #3644
1498
+ * Fixed: Social media icons and comments should be below the post content on pages #3647
1499
+ * Fixed: Breadcrumbs are breaking after enabling ""Post title on Breadcrumb" option #3648
1500
+ * Fixed: line share link is getting added when sharing on telegram#3666
1501
+ * Fixed: In social sharing Twitter Handle and Pretty Permalinks for Twitter Share? need to display child option of Twitter#3656
1502
+ * Fixed: Extension license dashboard improvements #3654
1503
+ * Fixed: Make the chat bubble into a email box for faster input #405
1504
+ * Fixed: Option to specify certain taxonomy only in Instant Article Feeds #1489
1505
+ * Fixed: Need to remove Legacy Pagebuilder option Safely #3609
1506
+ * Fixed: Default heading tag should load if no option is selected in Header Module #3651
1507
+ * Fixed: Pretty Permalinks for Twitter Share? option is not working #3662
1508
+
1509
+ = 0.9.98.11 (20th SEPTEMBER 2019) =
1510
+ * Improvements: Improved AMP Advertisement option panel
1511
+ * Fixed: Mobile redirection causing extra redirects from /amp to /amp/ #3660
1512
+ * Fixed: The lightbox should not work for the image if any external link is added in its anchor tag. #3599
1513
+
1514
+ = 0.9.98.10 (18th SEPTEMBER 2019) =
1515
+ * Improvements: Upgrade the analtyics integration with gtag.js #3538
1516
+ * Improvements: Need to optimize css classes #3650
1517
+ * Fixed: Small sized images are getting stretched in the lightbox. #3602
1518
+ * Fixed: Gutenberg Audio Module not working #3597
1519
+ * Fixed: Table (thead-th) styling issue after update #3661
1520
+ * Fixed: Issue with the post titles in single page (two H2 tags if logo is not inserted) #3641
1521
+ * Fixed: search results pages are showing up as 'no index' #3646
1522
+ * Fixed: Need to add support of shortcode in category pages #3653
1523
+ * Fixed: Custom post description migrates to image description #3606
1524
+ * Fixed: AMP for WP conflict with the CDN Enabler plugin #3631
1525
+ * Fixed: Warning in Error Log #3655
1526
+ * Fixed: Incorrect placeholder "Select the SEO Plugin" in drop-down in AMP option Panel #3663
1527
+
1528
+ = 0.9.98.9 (16th SEPTEMBER 2019) =
1529
+ * Improvements: Need to implement Tree Shaking feature to remove access css from the AMP pages #2949
1530
+ * Improvements: Need to save Post Meta Field Revisions in WordPress #3548
1531
+ * Improvements: Add Role based Access to all the options #3480
1532
+ * Improvements: Need to improve import/export option. #3364
1533
+ * Improvements: Need to make compatibility with amp-connatix-player component #3524
1534
+ * Improvements: "Recent Posts below related posts" feature need to implement for the design three #3531
1535
+ * Improvements: Need to improve color picker library in AMP FOR WP Plugin #3461
1536
+ * Improvements: Recent Posts below Related needs new options #3518
1537
+ * Improvements: Excerpt length feature request for related post #2908
1538
+ * Improvements: Need to add the option date below the content #3445
1539
+ * Improvements: Need to hide time in traditional view option. #3453
1540
+ * Improvements: Add feature to go to non AMP page on next and previous links #3253
1541
+ * Improvements: Create a filter to Exclude Posts from Related Posts #3582
1542
+ * Improvements: Need to add a filter to remove options in sidebar in AMP #3416
1543
+ * Improvements: allow option to change the heading tag of Featured module #3560
1544
+ * Improvements: AAWP plugin for AMP compatibility in Extension list #3591
1545
+ * Fixed: Individual AMP Page (Bulk Edit) "hide by default" option not working #3610
1546
+ * Fixed: In Recent Posts below Related need to add which present in below below related post #3596
1547
+ * Fixed: Need to shift the Header Background Option and Header Elements option on top in Swift theme #3462
1548
+ * Fixed: Need to add 'By Last X Days' option for "In-Content Related Posts" #3219
1549
+ * Fixed: Need to add unique class name custom post type #3539
1550
+ * Fixed: Need to add Convert AMP to WP theme (Beta) tutorial link in tooltip of this option #3552
1551
+ * Fixed: Need to connect with Collapse references by default option of the footnotes plugin. #3586
1552
+ * Fixed: Do not generate the AMPhtml for Woocommerce Account Page #3619
1553
+ * Fixed: Need to place page builder in custom homepage even amp support is off on pages. #2914
1554
+ * Fixed: Need to allow the user to navigate if user is using iframe #3601
1555
+ * Fixed: Template mode: Need to changes/fixes #3590
1556
+ * Fixed: The lightbox should not work for the image if any external link is added in its anchor tag. #3599
1557
+ * Fixed: Improper amphtml on HomePage when WPML is activate #3341
1558
+ * Fixed: The GDPR consent not working due to passed as string. #3658
1559
+
1560
+ = 0.9.98.8 (7th SEPTEMBER 2019) =
1561
+ * Improvements: AMP Option panel in mobile view #2603
1562
+ * Improvements: Need to make compatible with yoast seo primary category option #3551
1563
+ * Improvements: The "redirect chain" report taking extra steps to process. #3575
1564
+ * Improvements: Rank math Titles & Meta compatibility #3592
1565
+ * Improvements: Improvement in iframe #3563
1566
+ * Improvements: optimize the TEL link to remove validation and provide better UX #3581
1567
+ * Fixed: Need to check function exist get_cart_url as it is getting fatal error when only amp woocommere is active. #3584
1568
+ * Fixed: Change Internal Links to AMP #3561
1569
+ * Fixed: Rare issue with Yoast SEO/Excerpt #3511
1570
+ * Fixed: lighthouse issues #3547
1571
+ * Fixed: Gallery Captions not working #3536
1572
+ * Fixed: Table is not aligning properly in amp version #3549
1573
+ * Fixed: Getting Debug error ( cdn_url_main ) #3555
1574
+ * Fixed: Delete button gone in page builder in RTL language #3545
1575
+ * Fixed: caption design is different when comparing Gutenberg and classic editor #3573
1576
+ * Fixed: Image is not aligned properly #3542
1577
+ * Fixed: The extension 'amp-wistia-player' was found on this page, but is unused. Please remove this extension. #3587
1578
+ * Fixed: No Index issue #2303
1579
+ * Fixed: Need to create a basic tutorial for each elements of single in Swift #3499
1580
+ * Fixed: Facebook like button is not aligned properly #3589
1581
+ * Fixed: h1 was changed to h2 in the custom frontpage title after update #3546
1582
+ * Fixed: When using JNews AMP Extender, It makes posts blank #3526
1583
+ * Fixed: Infinite scroll script is adding in woocommerce archive pages #3570
1584
+ * Fixed: Clicky analytics option getting hidden when GTM is on #3585
1585
+ * Fixed: In add on mode when amp is in standard mode frontend is getting blank screen. #3508
1586
+ * Fixed: Proper escaping in facebook instant article #3564
1587
+ * Fixed: No Icon in Facebook Message when Font Awesome Icon type selected #3572
1588
+ * Fixed: yoast breadcrumb making all ul list in capital letters #3540
1589
+ * Fixed: Comments should be removed in the out put of Analytics Code #3593
1590
+ * Fixed: Related post excerpt is not working with horizontal design #3595
1591
+ * Fixed: Issue in Breacrumb if category has a comma #3598
1592
+ * Fixed: After last update the cookie bar text shows the html code (a href) instead of creating a link. #3617
1593
+
1594
+ = 0.9.98.6 (31st AUGUST 2019) =
1595
+ * Improvements: Structured Data improvements #3567
1596
+ * Improvements: Addthis share button's postion field in 1,2 and 3 designs #3553
1597
+ * Fixed: Rare issue AMP settings are not getting saved showing popup error "There was a problem with your action. Please try again or reload the page." #3494
1598
+ * Fixed: Plugin removes Telegram links #3578
1599
+ * Fixed: amp-addthis validation error on pages #3580
1600
+ * Fixed: Spot.IM Comments not working on all designs #3568
1601
+ * Fixed: Incorrect title tags being generated #3565
1602
+ * Fixed: Reduce the size of auto inline css. #3115
1603
+
1604
+ = 0.9.98.5 (27th AUGUST 2019) =
1605
+ * Improvements: Compatibility integrated with CDN enabler #3515
1606
+ * Improvements: banner ux section of AMP panel settings improved #3470
1607
+ * Improvements: Reduces the size of auto inline css ro avoid validation errors #3115
1608
+ * Improvements: Tooltip to show description about "Social Share links to AMP" and "No Follow All Your Social Links" #3456
1609
+ * Improvements: Avada pagebuilder compatibility feature integrated ( it will work when 'AMP PageBuilder Compatibility' extension is activate) #3550
1610
+ * Improvements: Avia pagebuilder(Enfold) feature integrated ( it will work when 'AMP PageBuilder Compatibility' extension is activate) #3559
1611
+ * Improvements: Filters to show or hide option on admin settings for Template-mode #3562
1612
+ * Fixed: When AMP Page builder is checked with Empty Content,Container is missing on AMP view #3488
1613
+ * Fixed: Validation error when adding featured video with Authentic theme #3535
1614
+ * Fixed: User Experience issue with Custom Home Page #2348
1615
+ * Fixed: Serach option should be enabled by default when user selected the design-3 #3485
1616
+ * Fixed: Logo's resize option should only display when the image is present #3471
1617
+ * Fixed: Row module settings popup header is overlapped while scrolling the options in AMP Page Builder #3467
1618
+ * Fixed: labeling of the 'Text font' option in 'Row module settings' of AMP Page builder renamed #3468
1619
+ * Fixed: When AMP takeover is enabled, the 'visit amp' on admin header should disabled #3502
1620
+ * Fixed: Homepage amphtml not getting generated when there are no posts added. #3504
1621
+ * Fixed: AMP cache description is getting overlap with the Checkbox description when amp cache extension is activate #3512
1622
+ * Fixed: Category module's pagination of AMP Page builder is not working #3509
1623
+ * Fixed: There is closing tag of 'a' tag in header-bar.php of design bar, for which there is no opening tag #3479
1624
+ * Fixed: Icons not loading When Icon Font Library is selected to Font Awesome from the AMP options #3501
1625
+ * Fixed: Shortcode placed with double brackets (i.e., [[shortcode]]) should not execute #3481
1626
+ * Fixed: One signal push notification should work properly on AMP if any CDN plugin is used #3340
1627
+ * Fixed: Extra options are being displayed after the search is completed in the AMP Options Panel #2874
1628
+ * Fixed: In alt attribute's content single quotes should removed #3492
1629
+ * Fixed: "amphtml" is not generatiing in sorce code when it comes to search results pages in non AMP #3458
1630
+ * Fixed: Woocommerce archives and shop page support should not be dependent on Archives [Category & Tags] option #3558
1631
+ * Fixed: noreferrer is getting added automatically, it should have what ever the user passes #3566
1632
+
1633
+ = 0.9.98.4 (6th AUGUST 2019) =
1634
+ * Improvements: Pagebuilder Compatibility Options in 'AMP By Automattic' Addon Mode Settings #3507
1635
+ * Fixed: Design is breaking in swift theme when RTL option is enabled #3527
1636
+ * Fixed: Validation error when width and height is empty in the logo #3530
1637
+ * Fixed: 'Read more' link in excerpt for category module of AMP page builder #3510
1638
+ * Fixed: Mobile redirection causing extra redirects from /amp to /amp/ #3459
1639
+ * Fixed: "Recent Posts below Related Posts" option should show only when it is available for the theme #3528
1640
+
1641
+ = 0.9.98.3 (2nd AUGUST 2019) =
1642
+ * Improvements: OpenGraph Support in AMP #3261
1643
+ * Improvements: Compatibility integrated with Cloudflare stream. #3230
1644
+ * Improvements: Pagebuilder Compatibility Options in 'AMP By Automattic' Addon Mode Settings #3507
1645
+ * Improvements: Some changes in AMP panel setting's defaults #3065
1646
+ * Fixed: Search bar is messed up after 3425 and 3000 #3491
1647
+ * Fixed: Lightbox effect not working with "Tablepress" when "Link To" option is selected in Attachment display settings #3451
1648
+ * Fixed: Fatal error Uncaught Error: Call to undefined function ampforwp_is_non_amp() #3464
1649
+ * Fixed: Ol and li design issue in swift theme on RTL mode #3457
1650
+ * Fixed: When AMP Page builder is checked with Empty Content, Container is missing on AMP view #3488
1651
+ * Fixed: rel=”nofollow” is getting replaced by rel=”noreferrer in links #3483
1652
+ * Fixed: In Archives Category & Tags option is disabled, the link should go to non-amp #3486
1653
+ * Fixed: Multiple H1 Tag Issues in AMP Version on Home and Category Pages in Design 3 #3466
1654
+ * Fixed: Allow href attribute value with associated apps property #3475
1655
+ * Fixed: Validation errors in amp category page when HotWP PRO theme is active #3455
1656
+ * Fixed: Compatibility issue with WP Offload Media Lite. #3460
1657
+ * Fixed: Fatal error Uncaught Error: Call to undefined method RevSliderFunctionsWP::check_for_shortcodes() #3465
1658
+ * Fixed: If a title is loading then only its markup should load otherwise not #3495
1659
+ * Fixed: In Template mode feature, some fixes #3478
1660
+ * Fixed: Meta description option should be enabled by default SEO #3505
1661
+ * Fixed: Fatal error Uncaught Error Class 'AMPforWP\AMPVendor\WP_Error' not found #3514
1662
+ * Fixed: After the upgrade, AMP Page Builder is not working! #3506
1663
+ * Fixed: Page builder content getting blank when we hit save. #3513
1664
+ * Fixed: Wp editor not loading when Using Page builder (with Gutenberg) #3517
1665
+ * Fixed: Single design 2 in Swift broken in one specific use case #3532
1666
+
1667
+ = 0.9.98.2 (25nd July 2019) =
1668
+ * Fixed: Menu design issue in Design 3 #3489
1669
+ * Fixed: Fatal error when latest version of Smush pro plugin activated #3487
1670
+ * Fixed: After Version 0.9.98 update, Background Type gradient options are not showing in Row module of AMP pagebuilder #3490
1671
+ * Fixed: Undefined index ampforwp-amp-on-off #3474
1672
+ * Fixed: Search bar is not showing in design three after enabling the search option in header option panel #3484
1673
+ * Fixed: Content blank if Color Attribute is in Span tag #3497
1674
+ * Fixed: Sticky Header has no background color when scrolling. #3498
1675
+
1676
+ = 0.9.98.1 (22nd July 2019) =
1677
+ * Fixed: Logo and headline comes togeather after .98 update #3472
1678
+ * Fixed: Default loading message as '1' in search bar after latest update (.98) #3476
1679
+
1680
+ = 0.9.98 (19th July 2019) =
1681
+ * Improvements: Option to remove date from Homepage and also in Recent posts #3363
1682
+ * Improvements: Option for amp-youtube Embed video attributes in row module of AMP Pagebuilder #3373
1683
+ * Improvements: Menu sidebar background and elements color changing option for Design 1, 2 #3402
1684
+ * Improvements: MGID Ad support in AMP FOR WP #3431
1685
+ * Improvements: Sizes of featured image option for single 1 #3433
1686
+ * Improvements: Addthis floating share button feature in amp #3424
1687
+ * Improvements: Wistia Plugin Compatibility integrated #3386
1688
+ * Improvements: Squirrly SEO Compatibility integrated #3421
1689
+ * Improvements: image-slider compatibility added in AMP sanitizer #3422
1690
+ * Improvements: Compatability issue with ShortPixel Image Optimizer #3439
1691
+ * Improvements: Improve the Search form (Sidebar) design #3425
1692
+ * Improvements: AMP footer widget in design three #3411
1693
+ * Improvements: Extension list added for AMP Email Extension #3144
1694
+ * Improvements: Extension list added for Pinterest for AMP Extension #3195
1695
+ * Improvements: Extension list added for Liveblog For AMP Extension #3194
1696
+ * Fixed: Close menu button is not showing when a user comes from Google search #3401
1697
+ * Fixed: When High-resolution Images option is enabled images link should be generated from higher-order to lower-order in schema markup #3442
1698
+ * Fixed: Sticky Social Icons setting should be moved to Social Tab and some changes #3426
1699
+ * Fixed: Fall back the header type code in the backend if a user has not selected any header type #3419
1700
+ * Fixed: Revolution Slider not working perfectly when a user is inserting video #3311
1701
+ * Fixed: Call to action option should be automatically enabled if the user selected header type-2 #3420
1702
+ * Fixed: Double quotes on the author area #3441
1703
+ * Fixed: Twitter URL is displaying instead of an icon when Zox news theme is active #3409
1704
+ * Fixed: Extension code array issue #3438
1705
+ * Fixed: Validation error due to amp-facebook-like #3427
1706
+ * Fixed: Fatal error cannot redeclare is_amp_endpoint() (previously declared) #3415
1707
+ * Fixed: Sticky Social Icons and cookies banner style issue #3452
1708
+ * Fixed: Validation error the extension 'amp-next-page' was found on this page, but is unused please remove this extension #3463
1709
+ * Fixed: gallery/slider module is not working when Convert AMP to WP theme (Beta) option is enabled #2771
1710
+
1711
+ = 0.9.97.65 (16th July 2019) =
1712
+ * Fixed: PHP Warning at the top of the site: array_merge(): Expected parameter 1 to be an array #3434
1713
+ * Fixed: Disqus comment is not working after version 0.9.97.63 #3446
1714
+ * Fixed: Uncaught Error: Call to undefined method WPSEO_Options::get() for Yoast Premium #3447
1715
+ * Fixed: Message: when Leverage Browser Caching is not supported #3449
1716
+ * Fixed: Added the missing parameter $depth in filter 'nav_menu_item_id' #3454
1717
+
1718
+ = 0.9.97.64 (15th July 2019) =
1719
+ * Improvements: Performance improvement -- Meta Value Queries #3392
1720
+ * Improvements: h1 tag on the archive, search and author pages #3323
1721
+ * Improvements: Flipboard as a social sharing option in AMP added #3348
1722
+ * Improvements: Comscore new variable for AMP in Analytics #3378
1723
+ * Improvements: Option for Leverage Browser Caching in the performance settings #3298
1724
+ * Fixed: Auto Add AMP in Menu URL option is not working for the product category #3319
1725
+ * Fixed: Horizontal scrolling issue on the homepage #3217
1726
+ * Fixed: Vuukle comments Toggle UX bug #3399
1727
+ * Fixed: Basic amp components to work in the content #2713
1728
+ * Fixed: Unnecessary CSS is loading in single amp product pages and also on cart pages. #3038
1729
+ * Fixed: Improper amphtml is getting created in the ngg_tag Url when NextGEN Gallery is used #3381
1730
+ * Fixed: Tutorial link for Disqus comments section #3362
1731
+ * Fixed: Empty Display property in menu.php #3387
1732
+ * Fixed: Images and text does not Zoom in & out with mobile devices in amp version #3233
1733
+ * Fixed: Custom CSS code got optimized after 0.9.97.61 update #3410
1734
+ * Fixed: Breadcrumbs icons are not connected to icons font family #3418
1735
+ * Fixed: In swift Single Design 2 sidebar CSS are not loading in Search page #3430
1736
+ * Fixed: Notice to be removed after dismissing it after installing AMP #3053
1737
+ * Fixed: Plugins manager showing twice in options panel #3328
1738
+ * Fixed: Amp scripts not appending in the head in Search pages when added in sidebar #3404
1739
+ * Fixed: Conflict issue with Themify Builder #3376
1740
+ * Fixed: Remove the Gap between Header and AMP Pagebuilder module #2534
1741
+ * Fixed: Image is not loading when the source of it starting from ../wp-content #3403
1742
+ * Fixed: PHP Warning at the top of the site: array_merge(): Expected parameter 1 to be an array #3434
1743
+
1744
+ = 0.9.97.63 (9th July 2019) =
1745
+ * Improvements: Custom Taxonomy support #3036
1746
+ * Improvements: Option to change the Navigation part background color and element color for Design-3 #3034
1747
+ * Improvements: Compatibility with the SEO Framework Plugin #2670
1748
+ * Improvements: Facebook Messenger Icon in social share icons #2806
1749
+ * Improvements: Option to change the Homepage Thumbnail size in design-3 theme #2986
1750
+ * Improvements: Changed prefix class of whatsapp to Api #3369
1751
+ * Improvements: Colour changing feature in Navigation bar in a design-2 #3059
1752
+ * Improvements: Google Lighthouse Audit Score improved #3276
1753
+ * Improvements: AMP option panel compatibility with a basix theme #3366
1754
+ * Improvements: Template mode code improved #3357
1755
+ * Fixed: PHP debug warning #3128
1756
+ * Fixed: Proper alignment of description in Design-3 #3385
1757
+ * Fixed: 'Modified Date' option not working when Date Format 'Traditional view' is selected #3383
1758
+ * Fixed: When Parmalinks in "/index.php/%year%/%monthnum%/%day%/%postname%/" format category not working #3279
1759
+ * Fixed: Separator Character's of Rank math plugin is not working on AMP pages #3335
1760
+ * Fixed: SVG images not rendering in AMP #3208
1761
+ * Fixed: Improvements code in Search form widget #3000
1762
+ * Fixed: Dynamically change accordion-mod class name to reduce the styling size #3334
1763
+ * Fixed: Social sticky icons to show on top as well as it is getting hidden behind sticky ads #3126
1764
+ * Fixed: Font icons not loading in master and beta #3382
1765
+ * Fixed: Yoast SEO Data not loading in AMP when 'Glue for Yoast SEO & AMP' plugin is active #3338
1766
+ * Fixed: When AMP Comments is disabled, div of comments is loading #3345
1767
+ * Fixed: Error 500 PHP 5.3.3 Fallback support #3333
1768
+ * Fixed: Debug warnings after recent update #3400
1769
+ * Fixed: Video sanitizer not allowing the "id" attribute #3406
1770
+ * Fixed: Check if function_exists('get_rocket_option') #3417
1771
+
1772
+ = 0.9.97.62 (4th July 2019) =
1773
+ * Improvements: Change AddThis controls labels. #3359
1774
+ * Fixed: Alternative methods to sanitize(`sanitize_textarea_field`) for users who are using older then 4.7 #3394
1775
+ * Fixed: amp-addthis script is loading on WooCommerce product pages. #3393
1776
+ * Fixed: Page titles are changing when Rank math plugin active #3358
1777
+ * Fixed: Icons added in featured image caption not working properly with font awesome #3288
1778
+
1779
+ = 0.9.97.61 (2nd July 2019) =
1780
+ * Improvements: AMP option panel for better enhancement #2432
1781
+ * Improvements: Lighthouse score improved in all designs #3108
1782
+ * Improvements: Option to change featured image size in the AMP panel's single settings [ only in Swift theme] #3339
1783
+ * Improvements: Clicky Analytic compatibility integrated #3220
1784
+ * Improvements: Some Improvements in image sanitizer #3112
1785
+ * Improvements: Gallery Design integrated in Facebook instant article #3143
1786
+ * Improvements: Featured Video Plus plugin compatibility integrated #2583
1787
+ * Improvements: Performance improvement ! SELECT SQL_CALC_FOUND_ROWS #3336
1788
+ * Improvements: 'Featured Image from URL' plugin compatibility integrated #3365
1789
+ * Improvements: Template-mode functionality added for group users to work on the main/AMP theme #3252
1790
+ * Fixed: Images are blur in beta in design 2 #2541
1791
+ * Fixed: SRC set in the Featured Image #1619
1792
+ * Fixed: AMP page builder is not showing when the AMPforWP plugin is activated from Network admin panel in Multisite #3322
1793
+ * Fixed: AMP Panel options code improved - 2 #3083
1794
+ * Fixed: Fatal error with an older version of Wordpress #3094
1795
+ * Fixed: Extra option in Analytics section removed #3037
1796
+ * Fixed: ?nonamp=1 should redirect to normal url #3269
1797
+ * Fixed: Recent comments shows first in ascending order #3325
1798
+ * Fixed: Footnotes not working properly #2982
1799
+ * Fixed: On twitter share Via twitter handle name is not shown in the tweet beside Url in Design-Swift #3286
1800
+ * Fixed: Fatal Error when activate quadmenu plugin #3308
1801
+ * Fixed: Default schema generated Page (Migrated from AMPforWP) or post (Migrated from AMPforWP)'s Target Location is showing empty by default #3343
1802
+ * Fixed: When auto add amp in menu option is enabled it is rendering the cache version menu for WPML site #3251
1803
+ * Fixed: External URL not working with Revolution Slider #3218
1804
+ * Fixed: Images are getting distorted in AMP when the lazy loading option is enabled in the WoodMart theme settings #3254
1805
+ * Fixed: More variables support in Advanced Google Analytics #3281
1806
+ * Fixed: When amp takeover is enabled, /amp is added at the end of category module url #3367
1807
+ * Fixed: Auto Add AMP in Menu URL option is is not working for the product category #3319
1808
+ * Fixed: Swift Theme has doublequotes in related Post quotes issue #3045
1809
+ * Fixed: Wordpress Spanish language does not showing "Design" tab #3342
1810
+ * Fixed: Tittle attribute not generates in related posts in all designs #3346
1811
+ * Fixed: AMP optin short code is not rendering in AMP from footer widget #3349
1812
+ * Fixed: Single post main title should be H1 and sub title should be H2 or H3 in design-1 #3350
1813
+ * Fixed: ampforwp_the_content_filter_full function hook changed to work minify option in AMP cache plugin #3355
1814
+ * Fixed: AMP is not working due to JCH Optimize Pro plugin #3185
1815
+ * Fixed: AMP validation warning when Google Tag Manager Advanced Option is enabled #2660
1816
+ * Fixed: PHP Warning implode() Invalid arguments passed when Enfold theme is activate #3307
1817
+ * Fixed: Mobile redirection not working properly #3370
1818
+ * Fixed: Redirection code improved #3326
1819
+ * Fixed: Yoast Description does not output #3374
1820
+ * Fixed: Debug errors after 0.9.97.60 #3377
1821
+ * Fixed: Code improvements in loadComponents() #3384
1822
+ * Fixed: License key is visible in Source code #2528
1823
+ * Fixed: Fatal error can't use function return value in write context - 2 #3087
1824
+ * Fixed: Code improvements #3388
1825
+
1826
+ = 0.9.97.60 (22th June 2019) =
1827
+ * Feature: Need to add template-mode #3252
1828
+ * Fixed: Options panel loading issue after 0.9.97.59
1829
+ * Fixed: Single post main title should be H1 and sub title should be H2 or H3 in design-1 #3350
1830
+
1831
+ = 0.9.97.59 (21th June 2019) =
1832
+ * Improvements: WP Recipe Maker & WP Recipe Maker PRO Schema compatibility added #3043
1833
+ * Improvements: Impreza Theme's lazyLoad Option compatibility integrated #3259
1834
+ * Improvements: WordPress Content Gallery integrated with Design - 1,2 & 3 #3255
1835
+ * Improvements: amp-recaptcha-input support added in allowed tag sanitizer #3315
1836
+ * Improvements: Yoast 11.4 Schema Compatibility #3332
1837
+ * Improvements: Google Tag Manager Advanced Option integrated #2660
1838
+ * Fixed: Disqus comments are not loading in the multilingual slug #3106
1839
+ * Fixed: Incorrect escaping done on author name when Link to Author Pages is enabled along with the Co-Authors plugin activate [ Theme-Swift ] #3162
1840
+ * Fixed: AMP Panel options code improved #2517
1841
+ * Fixed: License key code improved #2528
1842
+ * Fixed: When site url is different from home url #2881
1843
+ * Fixed: Related Posts Design is coming in all the single page designs in AMP Layouts #3091
1844
+ * Fixed: CM Tooltip Glossary custom post types are not working with /amp #2882
1845
+ * Fixed: Variables replacing in Advanced Google Analytics config code don't work #3237
1846
+ * Fixed: "Optimize For Viewability" option for Ads improved #3142
1847
+ * Fixed: Advertisement section Ads are not working through Google search result #2693
1848
+ * Fixed: When AMP takeover and yoast seo is activated,AMP page builder is not working #3292
1849
+ * Fixed: link="next" is appearing in the custom front page #3266
1850
+ * Fixed: 404 error when custom post type and page having same slug [Bug for the Rare use case] #2374
1851
+ * Fixed: Code improved for attribute layout=responsive in amp-img #3248
1852
+ * Fixed: Gallery Lightbox feature code improved #3184
1853
+ * Fixed: Elementor stops working when AMP Take Over is enabled #3284
1854
+ * Fixed: Activating Thrive lead plugin AMP Page builder doesn't work on the custom front page #3312
1855
+ * Fixed: To many redirection issue with hidden post in IOS #3287
1856
+ * Fixed: Gallery with GIF is not working #3304
1857
+ * Fixed: Indexing Issue of Plugin File #3271
1858
+ * Fixed: Post/page throwing an error on hiding AMP for that particular post/page if AMP takeover option is enabled. #3329
1859
+ * Fixed: Addthis Sharing default option code improved #3327
1860
+ * Fixed: When Custom frontpage option is enabled, it's not taking the Polylang static page id #3330
1861
+ * Fixed: Webp image format as featured image is not working in the single posts #2996
1862
+ * Fixed: Improper amphtml on HomePage when WPML is activate #3341
1863
+ * Fixed: Schema not generating after 0.9.97.57 #3344
1864
+
1865
+ = 0.9.97.58 (14th June 2019) =
1866
+ * Improvements: Option for H1-H6 Heading Font Sizes for all the designs #3035
1867
+ * Improvements: New filter to add the classes which have to be excluded in infinity scroll #3297
1868
+ * Improvements: Additional options for the Rank Math SEO plugin #3314
1869
+ * Improvements: Purge AMP CDN Cache added in Extension List #3324
1870
+ * Fixed: After v0.9.97.57 error can't disable featured image #3272
1871
+ * Fixed: Amp options panel's section code improved #3205
1872
+ * Fixed: Matemo Switch UI issue #3041
1873
+ * Fixed: Redux options for translating the field #2460
1874
+ * Fixed: Problem with pagination links in AMP #3313
1875
+ * Fixed: AMP Page Builder options not working due to Groovy Menu Plugin #3226
1876
+ * Fixed: Analytics not working due to Glue for Yoast SEO & AMP plugin #3153
1877
+ * Fixed: Yoast Meta Description not being picked up #3290
1878
+ * Fixed: ampforwp_new_gallery_images called multiple times resulting Fatal Error #3296
1879
+ * Fixed: Error message comes after search in post or page in Swift theme #3309
1880
+ * Fixed: Pages redirect to /amp/amp after last update #3270
1881
+ * Fixed: Archive and Categoy not working properly with Swift design #3265
1882
+ * Fixed: Fatal error when remove author meta name and date on AMP posts/articles in design-2 #3260
1883
+ * Fixed: Lightbox for image does not work when link [anchor tag] attached to images #2695
1884
+ * Fixed: Webp as featured image is not working in the single posts #2996
1885
+ * Fixed: Redirection issue when visiting AMP version after clicking Non-AMP link in Header #2940
1886
+ * Fixed: code imporved in the amp_loop_image #3084
1887
+ * Fixed: Sidebar breaks the blog page design #3056
1888
+ * Fixed: In content related posts in Design-3 images are not showing #3109
1889
+ * Fixed: Close Button is not coming in iphone in swift theme #3107
1890
+ * Fixed: AMP strings are not translatable #3169
1891
+ * Fixed: Option Panel's tooltips code updated #3172
1892
+ * Fixed: Table style is not loading in AMP Page #3204
1893
+ * Fixed: H1 tag on Logo in design-swift #3231
1894
+ * Fixed: Color of button not working properly in design-swift #3216
1895
+ * Fixed: PHP Debug warning fixed #3128
1896
+
1897
+ = 0.9.97.57 (31st May 2019) =
1898
+ * Improvements: Need to add description field in VideoObject Schema type #2846
1899
+ * Improvements: Create an option for H1-H6 Heading Font Sizes for all the designs. #3035
1900
+ * Improvements: Need to AMP compatible with this plugin HTTP / HTTPS Remover #3123
1901
+ * Improvements: Due to Enable image replacement option in optimole plugin images get removed in AMP #3073
1902
+ * Improvements: Author name not comes in AMP due to "Simple Author Box" plugin #3145
1903
+ * Improvements: Need hyperlink option on the slider module image #2932
1904
+ * Improvements: Need another menu for alternative menu which separate from main menu #2916
1905
+ * Improvements: Audio Playlist Support #2437
1906
+ * Improvements: Separate option to enable/disable Tags support im AMP #3016
1907
+ * Fixed: Controls under swift design should display when selected design is AMP theme framework #2939
1908
+ * Fixed: AMP Blurb Module shows code on frontend #3228
1909
+ * Fixed: Need to Use Ajax to fetch all Categories and tags in Featured Slider in D3 #2590
1910
+ * Fixed: copy the content stop working #3193
1911
+ * Fixed: mandatory tag 'link rel=canonical' is missing or incorrect on Homepage- when RankMath is active #3250
1912
+ * Fixed: Uncaught Error: Call to undefined function ampforwp_get_frontpage_id() #3242
1913
+ * Fixed: Liststyle (Circle) added beside Published by in Design3 in 0.9.97.53 #3222
1914
+ * Fixed: Version 0.9.97.52 Yoast Meta Information not being picked up #3207
1915
+ * Fixed: When navigation menu option is disabled then amp menu checkbox should be removed from menu appearance. #2548
1916
+ * Fixed: Needs to re-write function ampforwp_add_custom_rewrite_rules to improve performace #2924
1917
+ * Fixed: amp-next-page script of infinity scroll shouldn't load on other custom post type pages #3157
1918
+ * Fixed: Archive and Tag pages generating incorrect AMP HTML #3170
1919
+ * Fixed: Images are appearing twice #3186
1920
+ * Fixed: Debug error on Homepage #3135
1921
+ * Fixed: Font JavaScript is loading everywhere in console and breaking things in dashboard #3133
1922
+ * Fixed: Rewrite ampforwp_view_nonamp function to make it future proof #2710
1923
+ * Fixed: if there's and apostrophe in the post title, it is published as random characters In twitter #2744
1924
+
1925
+ = 0.9.97.56 (29th May 2019) =
1926
+ * Fixed: #3214 fix was causing conflict with AMP Layouts and content was getting blank
1927
+
1928
+ = 0.9.97.55 (28th May 2019) =
1929
+ * Improvement: Rank Math compatibility with V1.0.24 #3177
1930
+ * Improvement: Related posts and Recent posts on custom posts types #2708
1931
+ * Improvement: Appearance Designs for Related Posts #1545
1932
+ * Improvement: Integration with EWWW IO and ExactDN. #2805
1933
+ * Improvement: rel = "nofollow" to the links of social platforms in menu and footer, in all designs #2999
1934
+ * Improvement: Option to display the Post title on Breadcrumb #3019
1935
+ * Improvement: Map module in AMP pagebuilder #1629
1936
+ * Improvement: Pagination support in category module of AMP pagebuilder #1676
1937
+ * Improvement: Time Stamp support in category module of AMP pagebuilder #2648
1938
+ * Improvement: Lightbox feature for Slider module of AMP pagebuilder #2646
1939
+ * Improvement: Privacy page option in Notice Bar (Cookie Consent) #2347
1940
+ * Improvement: SmartMag theme's Featured video Compatibility integrated #2559
1941
+ * Improvement: New filter to modify the links of breadcrumbs, comment button and the non-amp version link in footer #2664
1942
+ * Improvement: New filter to modify the single featured image #2896
1943
+ * Improvement: "AMPforWP PageBuilder" option added in the page builder section #2414
1944
+ * Fixed: PHP debug warning #3128
1945
+ * Fixed: Fatal error after update 0.9.97.51 #3156
1946
+ * Fixed: Unwanted code on username of comment in Design [1, 2 & 3] #3022
1947
+ * Fixed: Issues with Content Sneak Peak Feature #2504
1948
+ * Fixed: In Feature module of AMP pagebuilder, Bullet points are not aligned correctly #2554
1949
+ * Fixed: Image URL replacement on AMP page not correct and aq_resizer not working with cdn images #2659
1950
+ * Fixed: 'Twitter' Option and 'Pretty Permalinks for Twitter Share' Option generate the same URL #2662
1951
+ * Fixed: Need to align the Radio Button (Show/Hide) in the Arabic language #2818
1952
+ * Fixed: In NewsArticle, the ArticleBody and Description are missing from the AMP page #3005
1953
+ * Fixed: WP Subtitle Compatibility code updated #3175
1954
+ * Fixed: For Menu pages where AMP support is OFF, still getting added due to Auto Add AMP in Menu URL option #2897
1955
+ * Fixed: E-commerce section code updated #3012
1956
+ * Fixed: Pagebuilder section code updated #3014
1957
+ * Fixed: 'Fix AMP Errors' section should not be displayed if he's a premium customer #3027
1958
+ * Fixed: Use Ajax to fetch all Categories and tags in Featured Slider in Design-3 #2590
1959
+ * Fixed: Debug error after enabling redirection #3174
1960
+ * Fixed: The tag 'amp-next-page with inline config' appears more than once in the document #3214
1961
+ * Fixed: Correct conditions for PageBuilder and Elementor for Page.php in Swift #3097
1962
+ * Fixed: is_amp_endpoint issue - code updated #3055
1963
+
1964
+ = 0.9.97.54 (23rd May 2019) =
1965
+ * Fixed: HUGE PERFORMANCE Issues #3052
1966
+ * Fixed: Performance Issues with queries #2997
1967
+ * Fixed: Performance Issues with template_redirect hooks #2773 #2920
1968
+ * Fixed: Performance Issues with Design manager #2873
1969
+ * Fixed: Performance Issues with ampforwp_exclude_post option #3118
1970
+ * Fixed: Performance Issues with AMP Pagebuilder modules and settings which were loading By default #2323
1971
+ * Fixed: Performance Issues with Hide AMP Bulk Tools #2549
1972
+
1973
+ = 0.9.97.53 (20th May 2019) =
1974
+ * Fixed: 500 errors on posts that don't use WP Bakery #3183
1975
+ * Fixed: Hyperlink in amp pages including emoji - code improved #2967
1976
+ * Fixed: Errors in AMP social Icons #3033
1977
+ * Fixed: Code improved to fetch all Categories and tags in Featured Slider [Design -3] #2590
1978
+ * Fixed: Fatal error on posts with comments present in latest v0.9.97.52 #3191
1979
+ * Fixed: "View Desktop Version" feature is not working in mobile view #3192
1980
+ * Fixed: Improved the Extension array code #3206
1981
+ * Fixed: Fatal error Uncaught TypeError Argument 1 passed to DOMNode::replaceChild() #3203
1982
+
1983
+ = 0.9.97.52 (15th May 2019) =
1984
+ * Added: Gutenberg Compatibility integrated #2427
1985
+ * Added: Gallery Designs for Gutenberg Gallery #2868
1986
+ * Added: Gutenburg column support in AMP #2847
1987
+ * Added: Addthis Sharing option UX re-structured #3114
1988
+ * Added: Photo Gallery plugin compatibility integrated #1811
1989
+ * Added: Revolution Slider plugin compatibility integrated #1464
1990
+ * Added: Posts offset option on category module in AMP Page Builder #2647
1991
+ * Added: MEWE social network integrated #3020
1992
+ * Added: Font Size and Color options for Dropcap #3010
1993
+ * Added: Breadcrumbs feature for pages #2788
1994
+ * Added: More parameters for ampforwp_get_setting functions #2911
1995
+ * Fixed: Conditions for PageBuilder and Elementor for Page.php in Swift #3097
1996
+ * Fixed: Code updated of Infinite Scroll when AMP Newspaper Theme is active #3031
1997
+ * Fixed: Copy the Content in Custom AMP Editor is not working with Gutenberg #2824
1998
+ * Fixed: If GTM gets enabled after Enabling the Analytics, then both codes load in the frontend #3121
1999
+ * Fixed: P tag is missing when "copy the content" option is used in custom AMP editor #3122
2000
+ * Fixed: When AMP is disabled on Homepagepage ?nonamp=1 redirect to random pages(blog) #2904
2001
+ * Fixed: Issue with post title and "end point to ?amp" conflict #2991
2002
+ * Fixed: Unspecified Type in Structured data for catgories/tags #3071
2003
+ * Fixed: PHP Warning date() expects parameter 2 to be long, string given in #2959
2004
+ * Fixed: Disquss comment is not scrollable in IOS device #2970
2005
+ * Fixed: Vkontakte Share(social icon) does not open in a new tab #3089
2006
+ * Fixed: Condition for requiring a file improved #3080
2007
+ * Fixed: amp_content() used instead of AMP_Post_Template object in Design [ 1,2 and 3 ] #2700
2008
+ * Fixed: Hyperlink in amp pages including emoji not working #2967
2009
+ * Fixed: Unused amp js from amp pages removed #3086
2010
+ * Fixed: "WP Forms for AMP" setting link is incorrect #3060
2011
+ * Fixed: Navigation & alternate menu css is not loading when directory plus theme is active #2963
2012
+ * Fixed: link to non-amp under breadcrumbs when Archives support is off. #2885
2013
+ * Fixed: AddThis is causing validation error after Update - code updated #3068
2014
+ * Fixed: Content not rendering on AMP with the Enfold theme version 4.5.6 #3124
2015
+ * Fixed: Tags are also displaying in category selection in the AMP page builder's category module #3082
2016
+ * Fixed: Author name won´t show if you disable author bio in swift theme #3131
2017
+ * Fixed: Link to non amp feature not works for thumbnail in design one and two #3004
2018
+ * Fixed: Multibyte string links aren't working in AMP Version #2556
2019
+ * Fixed: Leave Comment link Not working with ?amp #3093
2020
+ * Fixed: When Sticky Header is enabled then Jump link's Title is getting hidden under the header #2915
2021
+ * Fixed: Facebook comments not displaying if we add number more than 100 in the number of comments #3032
2022
+ * Fixed: Featured image and link shared on twitter issues #3075
2023
+ * Fixed: Infinity Scroll Option is not working when ?amp option is enabled in version beta #2475
2024
+
2025
+ = 0.9.97.51.2 (10th May 2019) =
2026
+ * Fixed: AddThis is causing validation error after Update #3068
2027
+
2028
+ = 0.9.97.51.1 (7th May 2019) =
2029
+ * Fixed: Can’t use function return value in write context #3155
2030
+ * Fixed: Search results not showing for "Select Categories to Hide AMP" option inHide Amp Bulk Tool #3154
2031
+
2032
+ = 0.9.97.51 (7th May 2019) =
2033
+ * Added: Yoast seo breadcrumbs Support #1473
2034
+ * Added: Compatibility with UseAnyFont Plugin #2774
2035
+ * Added: Compatibility with Slide Anything plugin. #2891
2036
+ * Added: Compatibility with Clyp it iframe embed. #2836
2037
+ * Added: Compatibility with Lazy Load of Smush and Smush Pro plugin #2990
2038
+ * Fixed: Logo on the top of the menu shade looks strange. #3046
2039
+ * Fixed: Fatal error: Class 'AMP_Base_Embed_Handler' not found(Due to mediavine plugin) #3119
2040
+ * Fixed: Chartbeat Tag Has Incorrect Variables #3017
2041
+ * Fixed: If AMP page builder is enabled then unnecessary CSS is also integrated #2470
2042
+ * Fixed: Sidebar Improvement and Option for Pages #2499
2043
+ * Fixed: “Featured Image from The Content” option should not override the default Set featured image. #2503
2044
+ * Fixed: Widgets going out of alignments in Design 1,2 and 3 #2553
2045
+ * Fixed: No message if the search didn't find anything. in Swift #2557
2046
+ * Fixed: Header with CTA doesn't have the right options and defaults #2567
2047
+ * Fixed: Need to separate categories & tags with ( / or , ) in AMP theme framework single page. #2580
2048
+ * Fixed: Indentations are getting removed in lists of ul & ol tags. #2781
2049
+ * Fixed: When the custom front page has a custom pagination then the AMP pagination returns 404 #2843
2050
+ * Fixed: Text widget img element are overlapping with banner ads (Below the header) in design 3 #2845
2051
+ * Fixed: Sidebar option is off, do not show widget area in admin panel #2856
2052
+ * Fixed: Update Schema for author image #2919
2053
+ * Fixed: Sidebar Styling is not properly appearing in the Blog Page #2938
2054
+ * Fixed: 404 issue on custom post type pagination #2937
2055
+ * Fixed: Notice errors in design-1 sidebar menu when amp menu is unchecked. #2953
2056
+ * Fixed: Bootstrap min overriding modal body style. #2987
2057
+ * Fixed: Move infinite scroll settings to a correct place #3007
2058
+ * Fixed: Add Extension list for the events calendar for amp #3030
2059
+ * Fixed: Add Extension list for table of content #3040
2060
+ * Fixed: Strip CSS with i-amphtml- name prefix because its causing validation errors #3009
2061
+ * Fixed: Need to add an option to delete the saved layouts in pagebuilder. #2801
2062
+ * Fixed: Category module not working with recent posts from Version 0.9.97.45 #3117
2063
+ * Fixed: Related posts appearing on the top #3151
2064
+ * Fixed: Debug error in installation process #3134
2065
+
2066
+ = 0.9.97.50.1 (1st May 2019) =
2067
+ * Fixed: Alignment problem when right sidebar is enable in blog page and there is no featured image in the posts #3057
2068
+
2069
+ = 0.9.97.50 (29th April 2019) =
2070
+ * Added: New Icon of Telegram in all the Designs #2448
2071
+ * Added: Swift icon and Font awesome icon option added in Design's global section [Swift theme] #2992
2072
+ * Added: Category option added in Design's single section [Swift theme] #2551
2073
+ * Added: Yoast author twitter handle compatibility integrated #2133
2074
+ * Added: New function ampforwp_get_the_ID() created #2867
2075
+ * Fixed: Facebook comment and Like option gives an error when the bbPress plugin is enabled #3006
2076
+ * Fixed: When Gutenberg active left sidebar is not visible in page builder modules #2934
2077
+ * Fixed: AMP preview functionality showing blank in the preview mode #3029
2078
+ * Fixed: Image floats CSS improved in mobile mode #2525
2079
+ * Fixed: Related Posts Randomly in Swift theme #2308
2080
+ * Fixed: Pricing module content is not center in page builder #2921
2081
+ * Fixed: Background image of the page builder is zooming in IOS devices when the parallax effect is enabled #2844
2082
+ * Fixed: Footnotes compatibility code updated #2982
2083
+ * Fixed: Iframe is not loading when Convert AMP to WP theme (Beta) option is enabled [Swift theme] #2628
2084
+ * Fixed: PHP Warning Undefined variable #3103
2085
+
2086
+ = 0.9.97.49 (26th April 2019) =
2087
+ * Added: Addthis Support integrated #2416
2088
+ * Added: A3 Lazy Load compatibility #2872
2089
+ * Added: Add support for AMP Linker #2546
2090
+ * Fixed: Getting validation Error when using the Ivory Search Plugin #2497
2091
+ * Fixed: Featured images or article images not showing in latest version #3063
2092
+ * Fixed: Condition improved for author box hook #2608
2093
+ * Fixed: After Update all AMP Pages Do Not Load and are Not Validated #3062 [ WP Rocket]
2094
+ * Fixed: PHP notice Undefined variable wp #3085
2095
+ * Fixed: PHP notice Undefined variable wp_query #2803
2096
+ * Fixed: Warning message while on WP customizes #3070
2097
+ * Fixed: Tag meta name 'viewport' appear more than once when Zox news theme is activate #2971
2098
+ * Fixed: PHP notice errors after activating amp-woocommerce plugin #3054
2099
+ * Fixed: Fatal error - can't use function return value in write context #3087
2100
+ * Fixed: AMP Frontpage: The mandatory tag ‘link rel=canonical’ is missing or incorrect with Rank Math #3061
2101
+ * Fixed: Fatal error - is_amp_endpoint issue #3055
2102
+
2103
+ = 0.9.97.48 (23th April 2019) =
2104
+ * Added: Meta genertor #2543
2105
+ * Added: Bridge Qode SEO Compatibility integrated #2538
2106
+ * Added: Lazy Load of Smush and Smush Pro plugin Compatibility integrated #2990
2107
+ * Fixed: Validation errors occur when Wordpress Comments Option is enabled #2989
2108
+ * Fixed: Home page displays latest posts instead of custom page when enfold theme activate #2943
2109
+ * Fixed: API URL conflict with Mobile redirection #2917
2110
+ * Fixed: Instant Article fatal error #2968
2111
+ * Fixed: Undefined index fb-instant-page-id PHP notice #2570
2112
+ * Fixed: All media queries load in single media query only code updated #2711
2113
+ * Fixed: Instant Article feed code updated #3018
2114
+ * Fixed: Space after the "data:image/png" part of the base64 encoded CSS background image #2974
2115
+ * Fixed: GDPR consent is not working on ios #2876
2116
+ * Fixed: PHP Errors in latest v0.9.97.46.1 after activation on fresh WP installation #3028
2117
+ * Fixed: Issue with moblie redirection with non-amp link #3021
2118
+ * Fixed: Cntr class automatically removed after activating elementor plugin in swift theme #3025
2119
+ * Fixed: Javascript Console errors after the v0.9.97.47 update #3079
2120
+
2121
+ = 0.9.97.47 (19th April 2019) =
2122
+ * Added: AMP by Automattic Compatibility integrated #2287
2123
+ * Added: Click Mag WP Theme compatibility integrated #2796
2124
+ * Added: New filter in contents-module of page builder for raw html #3001
2125
+ * Fixed: PHP Warning illegal string offset When AMP layout plugin activate #2951
2126
+ * Fixed: CSS is getting breaked in GoodLife theme #2673
2127
+ * Fixed: PHP Debug errors in v0.9.97.46 #3011
2128
+ * Fixed: Fatal error call to undefined method WPSEO_Options #3008
2129
+ * Fixed: Proper escaping in Alexa Analytics #2984
2130
+
2131
+ = 0.9.97.46.1 (10th April 2019) =
2132
+ * Fixed: Theme framework templates loading multiple times #2977
2133
+
2134
+ = 0.9.97.46 (9th April 2019) =
2135
+ * Added: WP Subtitle compatibility integrated #2831
2136
+ * Added: New filter in page builder for Enable/disabled check #2998
2137
+ * Added: Additional Page Builder compatibility added #2643
2138
+ * Fixed: The tag 'p' is disallowed & auto added as child of tag 'amp-accordion' #2498
2139
+ * Fixed: Histats Not working #2909
2140
+ * Fixed: itemprop="image" is being removed from the AMP Pages #2585
2141
+ * Fixed: CSS pseudo-element not working when minify option is enabled #2907
2142
+ * Fixed: Directories path code improved, if the plugin is installed outside (/wp-content/plugins) #1531
2143
+ * Fixed: WP_debug warnings and notices #2958
2144
+ * Fixed: More than one canonical issue with Rank Math SEO Plugin #2975
2145
+ * Fixed: Background image or color in the 1st row of page builder is applied to all below row #2994
2146
+ * Fixed: Rare Distorted image aspect ratio issue with Gutenberg editor #2931
2147
+ * Fixed: Font family for Content in Single page code improved #2122
2148
+ * Fixed: Fatal Error due to SEO press plugin #3003
2149
+ * Fixed: Rare issue with Mobile redirection on Homepage after v0.9.97.32 #2972
2150
+ * Fixed: PageSpeed Score Improvement for all Designs #2979
2151
+
2152
+ = 0.9.97.45 (4th April 2019) =
2153
+ * Added: SeoPress compatibility integrated #1589
2154
+ * Added: WP Appbox compatibility integrated #2791
2155
+ * Added: Infinite Scroll feature integrated. #2682
2156
+ * Added: Facebook like button added in Sticky Social Share #2186
2157
+ * Added: Font family for Content in Single page #2122
2158
+ * Fixed: Custom post type categories not showing in amp pagebuilder #1993
2159
+ * Fixed: Duplicate SiteNavigationElement issue #2952
2160
+ * Fixed: AMP Theme Framework Multisite issue #2936
2161
+ * Fixed: Custom AMP Editor Content is Not rendering when Elementor is activated #2901
2162
+ * Fixed: Title issue on Homepage with Yoast if we select custom front page #2962
2163
+
2164
+ = 0.9.97.44.2 (1st April 2019) =
2165
+ * Added: Element folder files override in the Design One, Design Two and Design Three for the Child theme #2770
2166
+ * Added: High-resolution Images [Additional image guidelines] option added in structure data #2259
2167
+ * Fixed: Hide by default option from bulk tools is not working when amp takeover option is enabled #2832
2168
+ * Fixed: Space removed while checking in the ampforwp_onesignal_notifications_widget function #2569
2169
+ * Fixed: Display on User Avatar option #2942
2170
+ * Fixed: Edit page is getting blank when product module is used #2944
2171
+ * Fixed: YoastSEO post analysis broke & getting Uncaught TypeError: $ is not a function #2948
2172
+ * Fixed: Yoast meta data are not renderring correct content for custom homepage #2928
2173
+ * Fixed: Date format in Swift theme homepage/loop #2965
2174
+ * Fixed: Published Date Disappear When selecting Horizontal Design in Related Post [swift-theme] #2957
2175
+
2176
+ = 0.9.97.44.1 (29th March 2019) =
2177
+ * Added: Advertisement AMP panel improved #2724
2178
+ * Fixed: Vuukle AMP integration code updated #2600
2179
+ * Fixed: Fatal Error with old Plugins manager v1.0 #2976
2180
+
2181
+ = 0.9.97.44 (28th March 2019) =
2182
+ * Added: Captions feature in AMP page builder #2645
2183
+ * Added: Compatibility with the Youtube Oembed Plyr plugin #1505
2184
+ * Added: Caption option for gallery/slider module in pagebuilder #2790
2185
+ * Added: Like & share feature for every image in instant_articles #2764
2186
+ * Added: Genesis option in SEO settings #2386
2187
+ * Added: Improved the 'Setup AMP Feature' and 'Welcome to AMP' tabs & Enhance the Support button on AMP panel #2980
2188
+ * Fixed: AMP Theme Framework getting conflicted #2782
2189
+ * Fixed: Unwanted code for call-now component is being used #2652
2190
+ * Fixed: amphtml tag while AMP Takeover option is enabled #2550
2191
+ * Fixed: Debug warnings after 0.9.97.15 #2532
2192
+ * Fixed: 'Header design' section in "Header" tab removed when design-1,2 and 3 is active & minor improvements #2978
2193
+
2194
+ = 0.9.97.43 (12th March 2019) =
2195
+ * Fixed: Fallback for Redux classes #2377
2196
+ * Fixed: Search widget CSS for Design-2 #1400
2197
+ * Fixed: Navigation Menu CSS for Swift theme #2593
2198
+
2199
+ = 0.9.97.42 (11th March 2019) =
2200
+ * Fixed: Incompatibility with AMP Plugin Manager
2201
+
2202
+ = 0.9.97.41 (11th March 2019) =
2203
+ * Added: Color picker for Footer Area #2320
2204
+ * Added: Compatibility with WP User Avatar plugin to show the gravatar #2772
2205
+ * Fixed: Options Panel not showing, says "You are not allowed to access this page" #2377
2206
+ * Fixed: faster-image libraries not being able to determine dimensions #2692
2207
+ * Fixed: Changes in endpoint to ?amp, Re-direct " /amp " to " ?amp " #2480
2208
+ * Fixed: Font style getting change on Custom Front page #2594
2209
+ * Fixed: When the user is directed to the AMP version of the page it changes the URL slighltly (swaps out characters) #2913
2210
+
2211
+ = 0.9.97.40 (9th March 2019) =
2212
+ * Added: Smooth scrolling for anchors links and jumping links within a page #2062
2213
+ * Added: Option to Enable/Disable Merriweather font in Design-1
2214
+ * Fixed: External links are getting skipped #2862
2215
+ * Fixed: Social Share “LINE” does not show up in swift theme #2641
2216
+ * Fixed: Checkbox from menu listings in AMP theme framework #2618
2217
+ * Fixed: PHP Warning undefined index fb-instant-page #2610
2218
+ * Fixed: Instagram Posts not rendering in AMP #2629
2219
+ * Fixed: Instant articles Image issue #2929
2220
+ * Fixed: Default height & width values for amp-img when values are not set #2925
2221
+
2222
+ = 0.9.97.39 (5th March 2019) =
2223
+ * Added: Compatibility with the Author Simple Box Plugin #2268
2224
+ * Added: Compatibility when short codes are added in AMP widgets #2552
2225
+ * Added: Compatibility with the footnotes plugin #2447
2226
+ * Added: ID Support on the AMP PageBuilder #2474
2227
+ * Added: embedly oembed support in wordpress #1160
2228
+ * Fixed: Dynamic Classes break issue in AMP PageBuilder #2515
2229
+ * Fixed: Debug Errors #2627
2230
+ * Fixed: Custom Front page is breaking in 0.9.97.16 #2589
2231
+ * Fixed: Date Archive not working with Swift Design #2514
2232
+ * Fixed: Background video and countdown timer is not showing in divi pagebuilder from core > 0.9.97.19 #2727
2233
+ * Fixed: Issue with pagebuilder when yoast plugin is active. #2933
2234
+
2235
+ = 0.9.97.38 (28th February 2019) =
2236
+ * Added: The Subtitle in the Facebook Instant Artical(FBIA) using of the Jannah Theme #2746
2237
+ * Fixed: Space missing in categories list for breadcrumb [Design-3] #2817
2238
+ * Fixed: Issue with Post Pagination ( Single ) #2624
2239
+ * Fixed: No match for the query in amp search then it's renderring to non-amp template when amp-takeover is enabled #2681
2240
+ * Fixed: Full excerpt length in single posts [swift] #2712
2241
+ * Fixed: Undefined variable warning in class-amp-img-sanitizer.php #2848
2242
+
2243
+ = 0.9.97.37 (23th February 2019) =
2244
+ * Added: Static page template in AMP #2614 + #2900
2245
+ * Fixed: Font size and other values are properly sanitizing #2898
2246
+ * Fixed: Failed to parse script tag contents #2884
2247
+ * Fixed: PHP Notices after the v0.9.97.32 #2879
2248
+ * Fixed: oembed wordpress post renders as a full post in AMP #2003
2249
+ * Fixed: Gallery/Slider of AMP pagebuilder not working
2250
+ * Fixed: class are repeating number of times when image (icon) added in .svg format #2893
2251
+ * Fixed: Debug warnings with WPML #2899
2252
+ * Fixed: Issue with yoast content reading while amp pagebuilder image module selected #2910
2253
+
2254
+ = 0.9.97.36 (19th February 2019) =
2255
+ * Added: Mobile and tablets Detects separately for 'Mobile Redirection' option #2436
2256
+ * Added: Scrolling bar for swift theme in chrome browser #2593
2257
+ * Added: CSS condition when element markup is visible #2753
2258
+ * Fixed: Pre tags not rendering properly on pages #2823
2259
+ * Fixed: Logo resize should only apply when Resize setting is enable #2544
2260
+ * Fixed: When /?amp is enabled "Visit AMP" is redirecting to dashboard #2363
2261
+ * Fixed: ampforwp_wc_shortcode_title is loading globally #2756
2262
+ * Fixed: Extra CSS is causing validation error of 50kb #2592
2263
+ * Fixed: PHP warning issue in latest version of php #2895
2264
+ * Fixed: Yoast analysis is giving false readings for the SEO When AMPforWP Pagebuilder is enabled #2435
2265
+
2266
+ = 0.9.97.35 (16th February 2019) =
2267
+ * Added: Levelup Compatability #2718
2268
+ * Added: "Align Justify" Option in Page builder's text module #2665
2269
+ * Added: Default value for Swift Color Scheme #2793
2270
+ * Fixed: ampforwp prefix in the analytics function #2886 #2890
2271
+ * Fixed: "Below the Footer" ads option showing above and below the footer #2778
2272
+ * Fixed: Debug error undefined index comments #2887
2273
+
2274
+ = 0.9.97.34 (14th February 2019) =
2275
+ * Fixed: Backward Compatibility for Yoast and All in One SEO options #2894
2276
+
2277
+ = 0.9.97.33 (13th February 2019) =
2278
+ * Fixed: Style sanitizer code updated #2387
2279
+ * Fixed: UTM Parameters when Mobile Redirection is enabled #2854
2280
+ * Fixed: ?nonamp=1 is not working properly #1947 & #2537
2281
+ * Fixed: All media queries load in single media query only #2711
2282
+ * Fixed: 'Hide AMP option' is not working when AMP take over is enabled #2880
2283
+ * Fixed: Swift Hover Color Changes #2751
2284
+ * Fixed: Google Font is not getting saved #2839
2285
+ * Fixed: Sidebar CSS condition code fixed #2757
2286
+ * Fixed: Performance improvement for ampforwp_stylesheet_file_insertion #2873
2287
+
2288
+ = 0.9.97.32 (8th February 2019) =
2289
+ * Added: Rank Math SEO compatibility integrated #2701 & #2736
2290
+ * Added: New filter "ampforwp_modify_thumb_url_array" to modify the thumbnail #2739
2291
+ * Fixed: 'Call Button Color' option not working - code updated #2820
2292
+ * Fixed: Validation error when uploading YouTube video in Comments #2827
2293
+ * Fixed: When Mobile Redirection option is enabled then, fr (language symbol) is removed from the URL. #2721
2294
+ * Fixed: Category Module from Page Builder not displaying #2870
2295
+ * Fixed: The homepage displays the title of the first post in All in one SEO #2865
2296
+ * Fixed: Title mismatch in some posts with Yoast #2871
2297
+
2298
+ = 0.9.97.31 (4th February 2019) =
2299
+ * Added: Subtitles plugin Compatibility #2853
2300
+ * Added: Created an option for Id's for all the modules and column in AMP Page builder #2730
2301
+ * Fixed: All the Images are Adding AMP at the End of their URL #2391
2302
+ * Fixed: When nextpage pagination is added, URL in is rendering /2?amp=1 #2767 #2766
2303
+ * Fixed: Comments Issues #2755
2304
+ * Fixed: The gutenberg button doesn't work in amp #2707
2305
+ * Fixed: Button Module color is not getting changed #2745
2306
+ * Fixed: Issue with amp menu converting & ASCII code to X #2855
2307
+ * Fixed: 'Call Button Color' option not working #2820
2308
+ * Fixed: Error: The attribute 'alt' may not appear in tag 'a' #2837
2309
+ * Fixed: Captions are not working in Gallery #2576
2310
+
2311
+ = 0.9.97.30 (2nd February 2019) =
2312
+ * Fixed: Wrong title on the archive pages #2864
2313
+ * Fixed: data-loading-strategy attribute is double quoted #2863
2314
+
2315
+ = 0.9.97.29 (31st January 2019) =
2316
+ * Fixed: Validation error due to Search Widget #2858
2317
+ * Fixed: Issue after upgrading analytics code #2859
2318
+ * Fixed: amp-animation error in amp theme framework and tech blogging amp theme #2819
2319
+ * Fixed: Blog title is displaying on Homepage when static front page is selected in All in one SEO & Yoast - code updated #2816
2320
+ * Fixed: Search Console Crawl Errors ?nonamp=1/ is listed in Access denied #2760
2321
+
2322
+ = 0.9.97.28 (29th January 2019) =
2323
+ * Added: Lightbox feature for Carousel #2731
2324
+ * Added: Specific filters to modify the analytics code #2653
2325
+ * Fixed: Homepage Blog CSS is loading on the custom frontpage in swift theme #2754
2326
+ * Fixed: Reset all & Reset section issue for redux framework #2722
2327
+ * Fixed: Transable redux fields for other plugins like wpml #2737
2328
+ * Fixed: Proper condition for Ads css #2758
2329
+ * Fixed: Jetpack stats pixel inserted twice since Jetpack v6.9 #2812
2330
+ * Fixed: AMP pagebuilder full width for posts #2765
2331
+ * Fixed: Undefined “non-content” in blacklist-sanitizer #2842
2332
+ * Fixed: Blog title is displaying on Homepage when static front page is selected in All in one SEO & Yoast #2816
2333
+
2334
+ = 0.9.97.27 (23rd January 2019) =
2335
+ * Added: ampforwp_is_amp_endpoint_takeover filter added
2336
+ * Fixed: The attribute 'action' may not appear in tag 'FORM [method=POST]' #2835
2337
+ * Fixed: Image size smaller than recommended size Warning in Search console #2838
2338
+
2339
+ = 0.9.97.26 (21st January 2019) =
2340
+ * Added: Improve the Extension array code #2822
2341
+ * Fixed: WP_Widget_Text conflict after v0.9.97.24 #2821
2342
+
2343
+ = 0.9.97.25 (17th January 2019) =
2344
+ * Added: Help message for background video of column setting of Page Builder #2716
2345
+ * Added: Review option in plugins page #2715
2346
+ * Added: Excerpt length option in Category module of Page Builder #2733
2347
+ * Added: Font Performance with font-display #2743
2348
+ * Added: Custom template for front-page & home-page #2714
2349
+ * Fixed: AMP Footer sidebar is not working in master #2800
2350
+ * Fixed: <i> tag not working in Title #2804
2351
+ * Fixed: alt attribute of <img> tag is not working when the image is inside the <a> tag #2617
2352
+ * Fixed: Remove the unnecessary code for '404 error' text in amp translation panel #2738
2353
+ * Fixed: Subtitle issue using with Jannah theme #2732
2354
+ * Fixed: Proper names given for AMP Widgets #2797
2355
+ * Fixed: Notice: Undefined index: hide-amp-tags-bulk-option2 and Undefined variable: inline_related_posts in features.php on line 4698 & 5546 #2795
2356
+ * Fixed: Quality of 'featured image slider' in Design3 #2779
2357
+ * Fixed: Embed Twits with twitter links #2798
2358
+ * Fixed: /amp in the telephone link when 'Change Internal Links to AMP' option enabled #2742
2359
+ * Fixed: Position of social sharing buttons 'above content' on pages #2809
2360
+ * Fixed: lang attribute in HTML tag #2808
2361
+ * Fixed: In footer, 'View non-AMP pages' is repeated twice when 'back to top link' option is enabled #2807
2362
+
2363
+ = 0.9.97.24 (9th January 2019) =
2364
+ * Added: Compatibility with new and all default WP widgets #1400
2365
+ * Fixed: Performance issue #2762
2366
+ * Fixed: Need to add amp endpoint filter #2761
2367
+ * Fixed: When Hide AMP Option is enabled in PageEditor with Convert AMP to WP theme (Beta) enabled it's providing output as AMP Page #2735
2368
+ * Fixed: Whenever an image inserted, has width="100%" and height="100%", its giving Validation error. #2748
2369
+ * Fixed: Custom post type is showing a blank page in the swift theme #2512
2370
+ * Fixed: Whenever Responsive AD is enabled then the AD should load on the screen without any effect to the normal mode AD in D1,2,3, and Swift #2531
2371
+ * Fixed: When Convert AMP to WP theme (Beta) is enabled GDPR popup isn't closing #2763
2372
+ * Fixed: If twitter embed code is added then other blockquotes tag are not working #2750
2373
+ * Fixed: Custom post type is showing a blank page in the swift theme #2512
2374
+ * Fixed: Conflict with the Schema and Structure data plugin #2777
2375
+ * Fixed: In the swift theme the Sticky social icons overlaps #2601
2376
+ * Fixed: " Top " Button functionality to be improved. #2529
2377
+ * Fixed: Drop down icon appearing twice #2785
2378
+ * Fixed: Custom front page Meta description and content are not rendering for ALL in SEO plugin. #2702
2379
+ * Fixed: Hover color is not appearing properly #2787
2380
+
2381
+ = 0.9.97.23 (18th December 2018) =
2382
+ * Fixed: Sub menu items and arrows are not functioning in publisher theme. #2672
2383
+ * Fixed: Fatal error when Polylang(Core) is activated. #2657
2384
+ * Fixed: Improve coding in amp-page-builder.php #2725
2385
+ * Fixed: Escaping not done properly #2723
2386
+ * Fixed: Serialization problem with AMP settings data. #2717
2387
+ * Fixed: Whenever Convert AMP to WP theme (Beta) option is enabled Logo Image is being stretched. #2726
2388
+
2389
+ = 0.9.97.22 (6th December 2018) =
2390
+ * Added: Total Plus theme compatibility #2511
2391
+ * Added: Allow SVG format Logo in AMP #2431
2392
+ * Fixed: Vuukle AMP integration #2600
2393
+ * Fixed: "Change Internal Links to AMP" not working properly for anchor tags (internal links) #2562
2394
+ * Fixed: Secondary menu color is not outputting the value in latest update #2680
2395
+ * Fixed: The instagram embed code is not working in facebook instant article in the AMP. #2523
2396
+ * Fixed: FTP Link being generated in Non-AMP but not in AMP #2477
2397
+ * Fixed: Videos aren't rendering whenever Convert AMP to WP theme (Beta) is enabled #2501
2398
+ * Fixed: More debug errors #2513
2399
+ * Fixed: Comments closed not looking good in Swift theme #2542
2400
+ * Fixed: Excerpt Option is not Working. #2509
2401
+ * Fixed: Image of Design 3 and Swift are same in Installation wizard #2540
2402
+ * Fixed: AMP renders with ?q after the /amp #2361
2403
+ * Fixed: Tables overflow in swift theme when adding the tables to the site [TEST + ALT solution] #2392
2404
+ * Fixed: Unable Access the Wp-admin page when Amp takeover option is Enabled. #2476
2405
+ * Fixed: Latest post title is displaying in the AMP homepage instead of site title #2419
2406
+ * Fixed: AMP menu is not working when Jetpack Mobile theme option is enabled #2584
2407
+ * Fixed: Link to Non-AMP page in Footer points to 404 #2586
2408
+ * Fixed: Debug warnings in error logs #2367
2409
+ * Fixed: The AMP for WP plugin(Version 0.9.97.20) bug are notice-error :undefine index and Unused code. #2687
2410
+ * Fixed: Improvements in AMP page builder code #2471
2411
+ * Fixed: Table class is getting removed in AMP pages. #2699
2412
+ * Fixed: Pagination is not working when AMP Takeover is enabled #2686
2413
+ * Fixed: The featured slider is not displaying properly images using the Firefox browser with the design 3 theme. #2677
2414
+ * Fixed: Icons for AMP Stories and Shortcode Ultimate #2598
2415
+ * Fixed: Images are stretched whenever Convert AMP to WP theme (Beta) Option is enabled. #2694
2416
+ * Fixed: Vertical words in table on mobile #2606
2417
+ * Fixed: PageBulider getting following notices in old module #2305
2418
+ * Fixed: Export option of page builder is not working in latest version #2709
2419
+ * Fixed: Remove the span tag in all 404.php files of the 4 designs #2704
2420
+ * Fixed: Wrong escaping done for default value for Google Analytics #2697
2421
+ * Fixed: Re-modification of single settings option panel when newspaper theme activated #2706
2422
+
2423
+ = 0.9.97.21 (21st November 2018) =
2424
+ * Fixed: Sanitation of user contents before save #2679
2425
+ * Fixed: Menu is Not working in Minimal Blogging theme (0.9.97.20) #2667
2426
+ * Fixed: Author bio not showing proper link #2674
2427
+ * Fixed: HTML not being rendered on cookie consent notifications #2671
2428
+ * Fixed: Telephone link not working
2429
+
2430
+ = 0.9.97.20 (29th October 2018) =
2431
+ * Fixed: Plugin Vulnerability #2650
2432
+
2433
+ = 0.9.97.19 (4th October 2018) =
2434
+ * Fixed: Tables overflow not working in swift theme #2392
2435
+ * Fixed: Null check added to fix null reference exception #2526
2436
+ * Fixed: Minor Bug related with menu #2612
2437
+
2438
+ = 0.9.97.18 (29th September 2018) =
2439
+ * Fixed: Minor Bug related with menu
2440
+
2441
+ = 0.9.97.17 (28th September 2018) =
2442
+ * Added: Featured Slider "Tag" support #954
2443
+ * Added: Marfeel plugin is blocking Internal pages of AMP and rendering 503 error #2423
2444
+ * Fixed: Dropdown Menu arrows not working properly in Swift #2148
2445
+ * Fixed: Wrong implementation of load_plugin_textdomain function #2408
2446
+ * Fixed: Page Float to right and showing menu content when page scroll horizontally in iPhone device #2434
2447
+ * Fixed: Internal Link Option is not Working in beta #2443
2448
+ * Fixed: Missing conditional tag for get_the_tags() causing "Invalid argument supplied for foreach()" error #2456
2449
+ * Fixed: Need to make a space in meta information and published date is not getting translated #2411
2450
+ * Fixed: Meta og:title and description tag are Not completely Reflecting #2454
2451
+ * Fixed: Images are not aligned center when published with Gutenberg Editor #2462
2452
+ * Fixed: Anchor Tag is not working because there is a space in between link #2465
2453
+ * Fixed: Fix social shares icons #2467
2454
+ * Fixed: Debug errors in beta #2472
2455
+ * Fixed: homepage is getting blank when "Convert To WP" is enable only for posts #2493
2456
+ * Fixed: wrong amphtml URL generating for WPML #2573
2457
+
2458
+ = 0.9.97.16 (19th September 2018) =
2459
+ * Added: 3 Types of Gallery designs #1968
2460
+ * Added: New Section to show 'change log' on Welcome Page #1753
2461
+ * Added: Allow HTML in footer section of translation panel in design 3 #1950
2462
+ * Added: Need to make the compatibility with The Voux theme #2263
2463
+ * Fixed: Special character "|" breaking the url in the twitter share #2264
2464
+ * Added: Read more button for post on blog page #2273
2465
+ * Fixed: Category Labels are Clickable on Swift Homepage even Archive support is off #2279
2466
+ * Fixed: Above Loop and Below Loop Sidebar Widget area is not connected with Swift theme #2280
2467
+ * Fixed: Aq_Resize.process() errors for images hosted on CDN #2285
2468
+ * Fixed: Convert to WP Option is displayed in Swift Theme, but not in Design 3. #2291
2469
+ * Fixed: Need to have only one text-domain in the string of the plugin #2292
2470
+ * Fixed: Bug in Facebook comments. #2300
2471
+ * Added: Beta Testing link in the Options panel #2302
2472
+ * Added: "X" button in the menu of D3 #2294
2473
+ * Fixed: AMP Take over is applying even on product when this option is enabled only for posts. #2304
2474
+ * Fixed: The Option Facebook App ID not necessary in the social icons of AMP panel when using Swift #2384
2475
+ * Fixed: Embeds not working in Archive Description #2402
2476
+ * Fixed: Spurious spaces in Footers #2521
2477
+ * Fixed: Additional spaces Pagination div on article posts #2522
2478
+
2479
+ = 0.9.97.15 (13th September 2018) =
2480
+ * Fixed: Pagination is not working on date archive #2289
2481
+ * Added: Options to show Social Icons in different places in Swift #1722
2482
+ * Fixed: Localization string for "% days ago" not working for non-Latin languages #1491
2483
+ * Added: Social Share by Supsystic Compatibility #1509
2484
+ * Fixed: Duplicate h1 tags in Design One #1522
2485
+ * Added: 3 Appearance option for Related Posts in Swift theme #1545
2486
+ * Fixed: RTL not working with Footer properly #1655
2487
+ * Fixed: Proper implementation of the property of all in one SEO pro to avoid fatal error #2500
2488
+ * Fixed: Notice: Undefined index: extension in thirdparty-compatibility.php on line 401 - 406 #2496
2489
+ * Fixed: Wrong url in Non-Amp Version link on blog posts page and category archives #2424
2490
+ * Fixed: The Consent.php path is getting index in Webmaster tool #2518
2491
+ * Added: Option to add custom things in Instant Articles #1089
2492
+ * Added: Show/hide Instant Article on specific posts #1297
2493
+ * Added: Facebook Instant Articles (FBIA) Crawler Ingestion (ia:markup_url) tag #1474
2494
+ * Added: Facebook Instant Articles Meta Tag #1486
2495
+ * Added: Related posts for instant articles #1634
2496
+ * Added: Option to remove Author info from Instant Articles #1483
2497
+ * Added: Facebook Instant Articles in each Catagory #1524
2498
+ * Added: Custom Facebook Instant Articles Ad option #1475
2499
+ * Fixed: Pagination not working after changing the pagination base #1485
2500
+ * Added: Breadcrumb with tag #1305
2501
+ * Fixed: Enabled WordPress Comments by default #1501
2502
+
2503
+ = 0.9.97.14 (4th September 2018) =
2504
+ * Added: Adobe Analytics Support #887
2505
+ * Fixed: Same Icons loading for some extensions #2172
2506
+ * Fixed: Removed extra spacing from "Back to top" text #2349
2507
+ * Fixed: Retina featured images support for Homepage and archive loop images #2334
2508
+ * Fixed: When WooCommerce Product Slider is Installed, the Picture of Icons are not loading #2325
2509
+ * Added: Customizr Theme Lazy Loading compatibility #2322
2510
+ * Fixed: "Save Module" button of AMP page Builder not displaying in OSX and in Safari #1943
2511
+ * Fixed: Sort Related Posts Randomly Not Working in Swift theme #2308
2512
+ * Added: Need to create a tutorial of How to Enter your Audience Network Placement ID of advertisement in the Instant Article #1723
2513
+ * Fixed: Retina Images option Improvement-II #2296
2514
+ * Fixed: Disable the look or check of redux framework #2293
2515
+ * Fixed: With Redux core plugin, AMP option panel design not loading #2258
2516
+ * Fixed: Issues with pagination #2253
2517
+ * Added: Thrive Architect Compatible #1575
2518
+ * Fixed: Notice Undefined variable categories_array #2486
2519
+ * Fixed: Need to add upscale parameter in-line related posts #2488
2520
+ * Fixed: Getting the warnings in error log due to global variable, not present #2395
2521
+ * Fixed: Google Analytic issue while setting up Run Installation wizard #2491
2522
+ * Added: Read more button AKA Content Sneak Peek feature for post #2246
2523
+ * Added: Showing related items/post in after nth paragraph #2246
2524
+
2525
+ = 0.9.97.13 (28th August 2018) =
2526
+ * Fixed: Fatal error in `ampforwp_related_post_loop_query()`
2527
+
2528
+ = 0.9.97.12 (27th August 2018) =
2529
+ * Fixed: Quote runs only in block post not on pages #2399
2530
+ * Added: Create a Sidebar option that can be used as global Sidebar #2388
2531
+ * Fixed: words are breaking and not readable #2441
2532
+ * Fixed: Text is breaking into next line while there is no space between the text in custom AMP Editor #2270
2533
+ * Fixed: IP Anonymization #2421
2534
+ * Added: Setka Editor Compatibility #2468
2535
+ * Fixed: In swift theme, when user ads the ad Above the Related Posts (Single Post); the content doesn't display #2311 and #2318
2536
+ * Added: Toggle controls are now accessible #1691
2537
+ * Added: Global Sidebar is now Connected with AMP Pagebuilder #2371
2538
+ * Fixed: #amp-user-notification1 Styling was loading even when disabled from option panel in swift #2400
2539
+ * Fixed: Remove the empty `@media{}` css generated by Pagebuilder #2473
2540
+ * Fixed: Blank Lines in HTML Source code #2445
2541
+ * Fixed: Optimize AMP pages on Google Lighthouse #2082
2542
+ * Fixed: RSS Feed is not working when AMP Takeover is enabled #2309
2543
+
2544
+ = 0.9.97.11 (21th August 2018) =
2545
+ * Minor Update
2546
+
2547
+ = 0.9.97.10 (18th August 2018) =
2548
+ * Fixed: Homepage build with AMP PageBuilder is displaying only when the checkbox of the Custom AMP editor is enabled #2350
2549
+ * Added: Created a new function to get the settings instead of calling it directly from global $redux_builder_amp everytime. `ampforwp_get_setting` created #2177
2550
+ * Fixed: Comments and share not loading on pages only in swift #2401
2551
+ * Fixed: Back to Top link not working in Swift Design #2404
2552
+ * Added: Ads Below the Author Area in Swift theme #2455
2553
+ * Fixed: AMP should remove spaces from GTM ID automatically #2413
2554
+ * Fixed: Some Posts are not displaying in Blog page even when AMP is enabled from Post settings #2375
2555
+ * Fixed: Wrong AMPHTML when using static page as blog using custom-code/pagebuilder from reading settings #2396
2556
+ * Added: Add paginations meta tags #2343
2557
+ * Fixed: Updated the code of AMP renders with ?q after the /amp #2361
2558
+ * Added: Add support for Relevanssi search #2307
2559
+ * Added: Show index/noindex label when enabling the options in SEO Settings #2290
2560
+ * Added: Add AMP consent in AMP Theme Framework #2440
2561
+ * Added: Created a component called `AMP-geo` so anyone can use it in thier AMP theme #2440
2562
+
2563
+ = 0.9.97.9 (1st August 2018) =
2564
+ * Minor Improvements
2565
+
2566
+ = 0.9.97.8 (24th July 2018) =
2567
+ * Fixed: AMP renders with ?q after the /amp #2361
2568
+ * Fixed: iThemes Sync can not connect to the site. #2380
2569
+ * Fixed: H1 to H6 styling is not reflecting in the Swift theme #2383
2570
+ * Fixed: Underline on Links function is not working. #2372
2571
+ * Fixed: WordPress Admin Color Scheme not applying #2390
2572
+ * Fixed: Breadcrumbs are not disabling when the sidebar template is selected #2376
2573
+ * Fixed: All the Images are Adding AMP at the End of their URL. #2391
2574
+
2575
+ = 0.9.97.7 (18th July 2018) =
2576
+ * Fixed: PageBuilder not loading on frontpage #2360
2577
+ * Fixed: 500 error on somepages due to open wp_query by other plugins
2578
+ * Fixed: License key reupdating #2261
2579
+ * Fixed: AMP renders with ?q after the /amp #2361
2580
+
2581
+ = 0.9.97.6 (14th July 2018) =
2582
+ * Fixed: Error and Warning on Structured Data for Logo. #2360
2583
+ * Fixed: Category Bulk tool breaking meta boxes #2335
2584
+
2585
+ = 0.9.97.5 (11th July 2018) =
2586
+ * Fixed: Title disappearing in Design 1,2,3 when legacy pagebuilder is enabled #2341
2587
+ * Fixed: ld+json getting a broken when special characters are added in the image. #2346
2588
+ * Fixed: Hide by Category Breaking post metabox #2330
2589
+ * Fixed: Hiding excerpt when global $redux_builder_amp is empty #2330
2590
+ * Fixed: When Google Tag Manager is enabled, only Google Analytics should get disabled but not other analytics. #2340
2591
+
2592
+ = 0.9.97.4 (09th July 2018) =
2593
+ * Fixed: Huge Performance upgrade in the way fetching the logo url #2317
2594
+ * Fixed: Fatal Error due to unable to modify values in Structured Data Object #2327
2595
+ * Fixed: Seperate option for Featured Image in pages in Swift theme #2328
2596
+ * Fixed: `<p>` tags disabling where not wanted #2330
2597
+ * Fixed: Fatal error in contact form module while ninja form or gravity form plugins are not activated #2310
2598
+ * Fixed: Woo Commerce Category page not working properly #2333
2599
+ * Fixed: Few issues related to amp-facebook-comments #2300
2600
+ * Fixed: Limit number of Tags and Category to 500 in Hide AMP-Bulk tools #2336
2601
+
2602
+ = 0.9.97 (27th June 2018) =
2603
+ * For more details check out [the blog post](https://ampforwp.com/0-9-97-released-strengthening-of-foundation-89th-update/)
2604
+ * Fixed: Extraposition attribute left in CSS Design #2 #2119
2605
+ * Fixed: Non-AMP header link not working #2109
2606
+ * Added: Create an Ad Above the Post Content #2155
2607
+ * Fixed: "AGO" text was not translatable #2158
2608
+ * Added: Filter created `ampforwp_header_url` to modify logo url #2141
2609
+ * Fixed: Removing the text "amp" in footer view non-amp-link #2158
2610
+ * Added: Compatibility WP user Avatar plugin added #2011
2611
+ * Fixed: Design 2 - meta info producing a block of empty HTML #1969 #1954
2612
+ * Added: Pocket and Hatena Bookmark social share buttons Added #1652
2613
+ * Fixed: External Links are appended with "amp" at the end of the url in content. #2174
2614
+ * Fixed: Some Issues Found in Design #3 #2130
2615
+ * Fixed: ScoopVersion: 1.4 By boostdevelopers theme displaying the error only in the category #1683
2616
+ * Fixed: Page featured Image is not displaying in the Swift theme #2136
2617
+ * Fixed: Dropcap breaking the youtube embed code #2157
2618
+ * Fixed: Bulk hide by default option is requires Permalinks to be saved #2145
2619
+ * Fixed: Fully compatibility with muffin page builder #2180
2620
+ * Fixed: Incontent Related Post Issues #2078
2621
+ * Fixed: Search page should not have AMP version of the page and not in search result #2191
2622
+ * Added: Control added to modify Retina Images resolutions #2099
2623
+ * Added: Created an option to duplicate a page builder element #1986
2624
+ * Added: Image Caption is not displaying below the Image in design 1,2,3 #2101
2625
+ * Fixed: Post pagination not working properly in D1, D2 and D3 #2168 #2243
2626
+ * Fixed: Auto re-save permalink if the options in reading setting page get changed #2190
2627
+ * Fixed: Leave a comment not looking good in Swift theme #2150
2628
+ * Added: Social icons for pages. #2162
2629
+ * Added: Create an option to pull canonical from Yoast #2118
2630
+ * Added: Full Support for All in one SEO #1720
2631
+ * Fixed: Single with sidebar CSS should only load if that layout type is selected #2091
2632
+ * Fixed: Required Filed is not working in the Repeater in Page builder #2217
2633
+ * Fixed: alt in `<div>` causing validation errors. #2093
2634
+ * Added: Drop Down Menu Support in Swift Header Menu #2095
2635
+ * Added: Parallax Setting Added in PageBuilder #2095
2636
+ * Added: Multiple Layout Settings added in Feature Module in Page Builder #2095
2637
+ * Added: Add the option changing the sliding speed of slider in "Slider module" of AMP Page Builder #2218
2638
+ * Added: Created an option Related Post link in non amp #2201
2639
+ * Fixed: Removed Jannah LazyLoad on AMP Mode #2224
2640
+ * Fixed: Custom post types with custom taxonomy not working in AMP #2209
2641
+ * Fixed: frontpage and homepage not working properly AMP take over #2153 #2277
2642
+ * Added: Button field created in Feature module #2068
2643
+ * Added: Excerpt should also work on homepage and categories page #2176
2644
+ * Fixed: Options panel breaks in when RTL in WP Dashboard #2176
2645
+ * Fixed: Featured image from Custom fields in page builder Category module #2237
2646
+ * Added: Forms Module Support added in PageBuilder #2221
2647
+ * Fixed: Paginated AMP URL on the category are opening to 404-page #2233
2648
+ * Fixed: Ads not displaying properly in RTL #2227 #2138
2649
+ * Fixed: single quotation (') in text module breaking AMP page builder #1940
2650
+ * Added: Filter created to modify `ampforwp_loop_image_update` image arguments in components of AMP theme framework #2057
2651
+ * Added: Option to change the locale of Facebook comments #2127
2652
+ * Added: Search option in options panel #2088
2653
+ * Fixed: Accordion not working when the user enters some data in Description with HTML Tags #2088 #2097
2654
+ * Fixed: Internal links now working with ?amp=1 #2204
2655
+ * Fixed: UTM Parameters not working properly with AMP #2223
2656
+ * Fixed: Multiple Slider module of AMP Page builder not working #2090
2657
+ * Fixed: Hide AMP by categories option should hide by default in the backend of that specific post #2112
2658
+ * Added: IP Anonymization in Google analytics #2135
2659
+ * Fixed: Improvement in the styling of AMP option panel #2102
2660
+ * Added: Added new fonts control for Content in Single page #2122
2661
+ * Fixed: Legacy page builder button styling is not loading properly #2036
2662
+ * Added: Filter added so we can disable Comments on specific pages `ampforwp_comments_visibility` #2170
2663
+ * Fixed: Improvement in Excerpt on small screen option #2034
2664
+ * Added: Comments on Pages #2229
2665
+ * Fixed: Pagination not working for some websites #2241
2666
+ * Fixed: "Menu" option in Footer connected with Swift #2146
2667
+ * Added: Wistia Support #1875
2668
+ * Added: Add option in page builder to give the specific name to all modules #2251
2669
+ * Added: Compatibility with Muffin Builder #2137
2670
+ * Fixed: AMPforWP Option panel styles are overriding other theme's options panel if both use Redux Framework #2121
2671
+ * Fixed: AMPforWP Option panel styles are overriding other theme's options panel if both use Redux Framework #2121
2672
+ * Added: Render all the AMP Components added in Post Editor #2216 #2228
2673
+ * Fixed: "Gap" Module of ThemeCo breaking the AMP pages #2220
2674
+ * Added: Search widget compatibility #2143
2675
+ * Added: Advertisement Module created in AMP Pagebuilder #2131
2676
+ * Fixed: Performance issue with the function `ampforwp_get_comments_gravatar` #2234
2677
+ * Fixed: Empty the amp pages, when the Clearfy HTML compress is enabled #2110
2678
+ * Fixed: The attribute 'value' appearing in tag 'a' throwing the validation error #2262
2679
+ * Fixed: Versioning of Styles and Scripts of redux-core #2126
2680
+ * Added: Related Posts based on X days #2132
2681
+ * Fixed: Warning in custom-sanitizer.php #2173
2682
+ * Added: vuukle comment support #2075
2683
+ * Fixed: Facebook Comment should not appear on the Checkout page, Add to cart page, or shop page #2170
2684
+ * Added: SpotIM comment support #2075
2685
+ * Added: Additional Controls added in Design3 Featured slider #2222
2686
+ * Fixed: Username in AMP Option panel color was too light #2266
2687
+ * Added: Settings created to modify H1 to H6 #2059
2688
+ * Fixed: AMP_QUERY_VAR debug issue #2265
2689
+ * Added: Custom page template in AMP #1923
2690
+ * Fixed: Comments Button is not displaying in Design #3 #2163
2691
+ * Added: Ability to add Forms Shortcodes in footer Widgets #2226
2692
+ * Added: Option to add rel="nofollow" in AMP page builder button module #2239
2693
+ * Added: Background video option in amp page builder #2195
2694
+ * Fixed: Drop Down Menu Support in Swift Header Menu #2095
2695
+ * Fixed: Yoast Description not getting added in AMP #2159
2696
+ * Fixed: Improvement in styling of AMP option panel #2102
2697
+ * Fixed: Hide AMP Bulk Tools Improvements #1867
2698
+ * Added: Compatibility with the Relevanssi Plugin #1503
2699
+
2700
+ = 0.9.96 (2nd June 2018) =
2701
+ * Added: Fully GDPR Compliance
2702
+ * Fixed: GTM not working
2703
+
2704
+ = 0.9.86.1 (8th May 2018) =
2705
+ * A bug causing validation issues has been resolved.
2706
+
2707
+ = 0.9.86 (3rd May 2018) =
2708
+ * For more detials check out [this blog post](https://ampforwp.com/0-9-86-released-getting-ready-for-future-87th-update/)
2709
+ * Added: GDPR Compliancy #2040
2710
+ * Added: Muffin Page Builder Compatibility #1455 #1893
2711
+ * Added: Thrive leads compatibility #2067
2712
+ * Fixed: Load structured markup json in Footer to improve performance #1945
2713
+ * Added: Font Size and Font Family Controls added in Content Presentation Module #1962
2714
+ * Added: Font Weight Control added in Text Module in PageBuilder #1962
2715
+ * Added: Other necessary controls added in Content Presentation Module #1962
2716
+ * Added: New Design called "Design 4" added in Content Presentation Module. #1962
2717
+ * Fixed: License Activation process connected with AMP extensions #1981
2718
+ * Added: Icon Selector control added in Button module in AMP Page Builder #1962
2719
+ * Added: Filter called `ampforwp_get_comments_gravatar` to modify Author Avatar Images #1949
2720
+ * Fixed: Validation error fixed by removing json+ld values to remove CDATA #1977
2721
+ * Added: Icon Adjustment Option is added in the Button Module #1962
2722
+ * Fixed: Debug Warnings fixed #1976
2723
+ * Fixed: If AMP support on post and page is disabled then mobile redirection was not working #1979
2724
+ * Fixed: Responsive element added in Image Module #1962
2725
+ * Fixed: Custom Post and Custom Taxonomies Archives not working in AMP #1957
2726
+ * Fixed: AMP take over is on and AMP support on the home page is disabled it was redirecting to some other pages #1994
2727
+ * Fixed: Design 1 and Design 2 shouldn't show 'social' tab #1996
2728
+ * Added: AMP WordPress Theme notice
2729
+ * Added: Rewrite Rules Added for WooCommerece #1957
2730
+ * Fixed: AMP Takeover blog search results giving blank page #1990
2731
+ * Fixed: Swift pagination markup is present even the page has no pagination #2000
2732
+ * Fixed: Pagination breaking on second page on Archives when Blog page is not set #1998
2733
+ * Fixed: Added proper Google API jump link #1966
2734
+ * Fixed: Advance Index and no-index controls did not had description #1978
2735
+ * Added: Filter added `amp_blacklisted_tags` in blacklist-sanitizer file
2736
+ * Added: Hyperlink for image module added #1989
2737
+ * Added: `ampforwp_get_frontpage_id` a common fucntion created to get post id for AMP frontpage #2025
2738
+ * Fixed: Comments controls were not working properly #1987
2739
+ * Fixed: Fatal Error after updating the plugin from 0.9.73 to 0.9.83 version #2017
2740
+ * Fixed: Filter created `ampforwp_modify_rel_url` to modify rel canonical URL #2012
2741
+ * Fixed: Remove structured data json if removed from AMP options panel
2742
+ * Fixed: amp widget appearing twice in design one #2008
2743
+ * Fixed: Gif in content + Lightbox feature throws validation issue. #2032
2744
+ * Added: New Features in the Page builder Modules #2029
2745
+ * Fixed: License Key was not working properly #2026
2746
+ * Fixed: Instagram comment view is getting cut off in Swift Theme #2002
2747
+ * Added: Icon module support added in Desgin 1, 2 & 3 #1997
2748
+ * Fixed: if GD or ImageMagick library is not present in the server then send the original image #2037 #2038
2749
+ * Fixed: Swift theme homepage (Non-AMP) image resizing issues in Mobile version #1992
2750
+ * Fixed: Header Element not working in Swift theme #1967
2751
+ * Fixed: Stop Loading of Latest post scripts on Homepage and Frontpage #2041
2752
+ * Added: Filter created `ampforwp_non_amp_links()` so users can have all the internal links non-amp #1973
2753
+ * Fixed: Sanitize the archive description in loop component #1974
2754
+ * Fixed: Double AMPHTML when FBIA Plugin is active #2043
2755
+ * Fixed: Image Div is loading even if the image is not present in Swift #2033
2756
+ * Fixed: Custom AMP editor is visible on pages (post type) even if the Page Support is off from amp options panel #2047
2757
+ * Fixed: When 'Structure Data for WP' plugin active, Schema type in Structure section should hide #2049
2758
+ * Fixed: Bugs in Video Module in AMP pagebuilder #2048
2759
+ * Added: Autoplay feature added in Video Module #2048
2760
+ * Fixed: Throwing error when Product Structured Data is selected #1975
2761
+ * Fixed: Advanced CSS is not loading because the files are with hosting path #2046
2762
+ * Fixed: Double Quotes breaking the html #2004
2763
+ * Removed: Blog option is removed from AMP Options panel and it is connected with Pages option Under Reading Settings #2027
2764
+ * Fixed: amphtml should not be created for 404 pages #2018
2765
+ * Added: 404 Template added, useful for AMP Takeover #2042
2766
+ * Fixed: Genesis meta titles are lost and not rendering correctly #2050
2767
+ * Fixed: Search blank on AMP Takeover #1990
2768
+ * Fixed: Remove Unused js files from Paginated Post Pages #2001
2769
+ * Fixed: Extra Space adding in H1 and other SEO tags #2054
2770
+ * Fixed: Undefined Index when called from robot #1960
2771
+ * Fixed: amp facebook comment Js not loading to the custom front page of the swift theme. #2053
2772
+ * Fixed: Tags label is not working properly when RTL Support on #1719
2773
+ * Fixed: View Non-AMP Version In the footer link has an error #2066
2774
+ * Fixed: Squirrly SEO is Adding the Javascript code in AMP #1696
2775
+ * Fixed: Translation option issue when using POT file method #1941
2776
+ * Fixed: amp-facebook-like extension is missing on Custom Frontpage #2061
2777
+ * Fixed: GTM option repositioned #2056
2778
+ * Fixed: Menu is appearing on left side instead of Right side when RTL support is ON for Design3 #1928
2779
+ * Fixed: Sidebar Bugs #1972
2780
+ * Added: Table Styling in Swift #1961
2781
+ * Fixed: Genesis index, follow options not being rendered #2071
2782
+ * Added: Filter created `ampforwp_robots_meta` to modify robots meta information #2071
2783
+ * Fixed: PHP Notices #2065
2784
+ * Added: Add a new hook `ampforwp_after_amp_menu` after the menu in all designs #2072
2785
+ * Added: New Look to Options panel #1823
2786
+ * Added: Retina Image Support added #1846
2787
+ * Fixed: Pagebuilder hrefs were stripped in hebrew language #2089
2788
+ * Fixed: Warning Fixed #2083
2789
+ * Fixed: Gallery module images not loading in Firefox #1980
2790
+ * Fixed: Pagebuilder Improvement #2024
2791
+
2792
+ = 0.9.85.5 (21st April 2018) =
2793
+ * Added: Filter added to modify frontpage post id `ampforwp_modify_frontpage_id`
2794
+ * Added: Filter added to modify amp template directory `ampforwp_template_locate` #1982
2795
+ * Other minor bugs fixed
2796
+
2797
+ = 0.9.85.3 (12th April 2018) =
2798
+ * Added: Custom Post type Archive Page support #1995
2799
+ * Fixed: AMP TakeOver redirection issues #1994
2800
+ * Fixed: Debug errors #1976
2801
+ * Fixed: Social Profile pages were hidden for Design 1 to 3 #1996
2802
+ * Fixed: Structured Data insertion was adding CData causing validation error #1999
2803
+
2804
+ = 0.9.85.2 =
2805
+ * Minor Bugs fixed
2806
+
2807
+ = 0.9.85.1 =
2808
+ * Minor Bugs fixed
2809
+
2810
+ = 0.9.85 (3rd April 2018) =
2811
+ * For more detials check out [this blog post](https://ampforwp.com/0-9-85-released-stability-update-86th-update/)
2812
+ * Fixed: Fatal error: Allowed memory size on FrontPage #1865
2813
+ * Fixed: Proper Parameters for Pinterest Sharing #1853
2814
+ * Added: Extra settings added in Button Module
2815
+ * Added: Extra settings added in Text Module
2816
+ * Fixed: Proper Parameters for Pinterest Sharing
2817
+ * Fixed: Unwanted fields are removed form the Repeater in Button module
2818
+ * Added: Enable/disable option added Related Posts #1829
2819
+ * Fixed: Legacy PageBuilder option Repositioned #1851
2820
+ * Fixed: Display the img tag only if source is present #1869
2821
+ * Fixed: Huge design improvements in Swift theme #1818
2822
+ * Added: Hook for Between Related Post is Added #1874
2823
+ * Added: Blurb module text size and background color added
2824
+ * Fixed: Comments Pagination issues #1816
2825
+ * Added: Counter Module added
2826
+ * Fixed: Date 48 years ago #1864 #1876
2827
+ * Added: Ability to pass post id in amp_content() #1872
2828
+ * Fixed: Changed the way images we fetched in WooWidget #1847
2829
+ * Fixed: Changed the position of layout in Pagebuilder #1873
2830
+ * Added: Pricing Module
2831
+ * Fixed: Changed the position of layout in Pagebuilder #1873
2832
+ * Fixed: amp_aq_resizer was not able to process the outside url #1881
2833
+ * Fixed: Advanced Google Analytics improvements #1630 #1860
2834
+ * Added: Field Added For ON & OFF in Page builder #1870
2835
+ * Fixed: Two paginations in search pages in Swift theme #1855
2836
+ * Fixed: Extra Div if categories not available #1856
2837
+ * Fixed: removed debuged tags #1870
2838
+ * Fixed: Published date connected with AMP options Panel #1888
2839
+ * Added: Featured Image option in Swift #1889
2840
+ * Added: Separate Blog settings #1887
2841
+ * Fixed: single post ads should not load on pages #1896
2842
+ * Fixed: Ads should not load on FrontPage if PageBuilder is enabled #1885
2843
+ * Fixed: Background Image Support for the Columns #1871
2844
+ * Added: Blockquotes design for Swift #1894
2845
+ * Added: Co-Authors Plus compatibility #1895
2846
+ * Added: pagebuilder for custom post types #1884
2847
+ * Added: Border option is connected to options panel #1818
2848
+ * Added: Responsive AD unit support #1852
2849
+ * Added: Sub category arrow symbol is added in Swift theme #1818
2850
+ * Added: Search text color is connected to options panel #1818
2851
+ * Fixed: Removed notice when no posttype selected #1884
2852
+ * Added: Ability to overwrite page template the WordPress way like front-page.php and page-{id}.php #1902
2853
+ * Added: Ability to overwrite author page template the WordPress way like author.php and author author-name.php #1902
2854
+ * Added: Lightbox Support for the images #1892
2855
+ * Fixed: No mobile redirection when Dev mode is enabled #1907
2856
+ * Added: Option to hide Author name in Swift #1890
2857
+ * Fixed: Script facebook-comments should not load for Frontpage #1897
2858
+ * Added: amp-facebook comments for AMP2WP #1911
2859
+ * Added: Alt tag in all modules #1898
2860
+ * Added: Sanitizers in Footer and sidebar widget in Swift #1835
2861
+ * Added: Dropcap support #1900
2862
+ * Added: Proper styling for iframes and videos in Swift theme #1909
2863
+ * Fixed: Non-AMP link fixed for AMP Takeover #1916
2864
+ * Fixed: Swift connected with Breadcrumb option #1915
2865
+ * Added: Uninstall option created to completely remove AMPforWP data #1903
2866
+ * Fixed: Recipe Structured Data requires name attribute #1917
2867
+ * Fixed: No amphtml when It is hidden from Categories #1919
2868
+ * Fixed: Content is breaking when Inline Related Post option is enabled #1912
2869
+ * Fixed: Proper redirection setup for AMP Takeover #1913
2870
+ * Added: Social media profiles added in menu #1901
2871
+ * Fixed: No Ads should display on Frontpage or Posts if Pagebuilder is enabled #1885
2872
+ * Added: #1899 Proper conditions for amp-analytics script
2873
+ * Fixed: Turn off option not working by default fixed #1537
2874
+ * Fixed: BreadCrumbs Should not load when PageBuilder is enabled #1925
2875
+ * Fixed: Removed unwanted elements loading while pagebuilder is enabled #1929
2876
+ * Fixed: amp-web-push should not load on Homepage and Blog #1930
2877
+ * Added: SmartMag theme Compatibility #1905
2878
+ * Fixed: Template overriding not working in child theme #1920
2879
+ * Fixed: Horizontal scrolling in Swift #1844
2880
+ * Fixed: Home page title should not be visible in AMP takeover #1921
2881
+ * Added: Carousel Module Added #1937
2882
+ * Fixed: Comments pagination not working #1816
2883
+ * Fixed: Comments pagination not working #1816
2884
+ * Added: Glue html css compatibility #1932
2885
+ * Added: Data Caption Support on AMP Instagram Embed #1938
2886
+ * Added: Ability to pass {author_name} and {author_id} added in Advance Analytics #1936
2887
+ * Fixed: Scrollbar in Header area in Swift in firefox #1818
2888
+ * Added: Disqus iframe height adjustment option #1935
2889
+ * Fixed: Options panel conflict fixed with Mobius theme #1942
2890
+ * Fixed: Problem with Button in Mobile view in Swift #1926
2891
+ * Fixed: Removed canvas tag in AMP version causing validation errors #1880
2892
+ * Fixed: Getting Conflict with Facebook Button by BestWebSoft #1740
2893
+ * Added: Option to enter the "ID" on CTA button module #1931
2894
+ * Added: Option for open same window in CTA module of page builder #1866
2895
+ * Fixed: Logo fetch causing Huge performance issue #1679
2896
+ * Fixed: Blurb module's default values were not set #1952
2897
+ * Fixed: Allow script with application/ld+json #1958
2898
+
2899
+ = 0.9.84 (14th March 2018) =
2900
+ * Added: Polylang Frontpage compatibility added #1779
2901
+ * Fixed: Proper link for Linkedin added #1820
2902
+ * Fixed: Incorrect function name was Added #1827
2903
+ * Fixed: Thumbnail resizing issue in Swift #1828
2904
+ * Fixed: Thumbnail issue in Loops of Design 3 #1714
2905
+ * Fixed: Hide post builder for Swift #1824
2906
+ * Fixed: To avoid warnings when there are no pages in WordPress #1810
2907
+ * Fixed: Condition for the Thumbnail for Swift #1733
2908
+ * Fixed: Proper Styling for footer for Swift #1733
2909
+ * Fixed: Line height issue and CSS editor not working in Swift #1821
2910
+ * Fixed: Renamed aq_resize to ampfrowp_aq_resize to avoid conflicts #1838
2911
+ * Fixed: Add the prefix to avoid conflicts #1817
2912
+ * Fixed: Added Custom format option in amp_date #1845
2913
+ * Fixed: Removed amp-img tag where blank SRC in Page builder #1843
2914
+ * Fixed: Pagebuilder modal max-height removed so it will become full width #1843
2915
+ * Added: An option for select target type in Button Module #1822
2916
+ * Fixed: Remove AMP category widget if swift is enabled #1790
2917
+ * Fixed: Filter added change mode type #1833
2918
+ * Added: Rewrite rule for .html blog page #1775
2919
+ * Fixed: Filter added change mode type #1833
2920
+ * Fixed: Swift Footer Widget Sanitizer Added #1800
2921
+ * Fixed: No OneSignal widget when PageBuilder is enabled #1840
2922
+ * Fixed: span tag added around the pagination text #1834
2923
+ * Added: Page specific option to add script/html and styles in page builder #1831
2924
+ * Fixed: noindex,nofollow in AMP when Dev mode is enabled #1839
2925
+ * Added: Jarida theme compatibility added #1842
2926
+ * Fixed: noindex,nofollow in AMP when Dev mode is enabled #1839
2927
+ * Fixed: Replace value attribute only from html tags. Otherwise it is removing value from * shortcodes which is breaking the whole page. #1738
2928
+ * Added: Underline option for content links added #1808
2929
+ * Added: Page specific option to add RTL in page builder #1858
2930
+ * Added: Converts AMP ads to normal so ads show when takeover is enabled in Normal Mode #1724
2931
+ * Added: Converts AMP Analytics to normal so Analytics works when takeover is enabled in Normal Mode #1724
2932
+ * Fixed: Phone icon proper alignment in Design3 #1730
2933
+ * Added: ADS for WP activation box in Extensions tab
2934
+ * Added: New design field added #1861
2935
+
2936
+ = 0.9.83.1 (8th March 2018) =
2937
+ * Fixed: Pagebuilder contents not shows on custom home page #1794
2938
+ * Added: Header hook added `ampforwp_advance_header_layout_options`
2939
+ * Fixed: Load admin files only in admin pages #1799
2940
+ * Fixed: Conflict with WP bakery pagebuilder #1783
2941
+ * Fixed: Slide in Menu break in RTL mode #1825
2942
+ * Fixed: Validation issue in loops due to empty attributes #1795
2943
+ * Fixed: Featrued Image connected Properly with Swift theme #1733
2944
+ * Fixed: Changed the disqus.php to disqus.html to pass authentication #1788
2945
+ * Added: CSS styling for Loop on shop page #1803
2946
+ * Fixed: Facebook comments not work in swift #1789
2947
+ * Fixed: Style AMP Category module in Footer swift #1790
2948
+ * Fixed: Load aq_resizer only in AMP #1805
2949
+ * Fixed: Proper markup for Pinterest in Design3 and Swift #1793
2950
+ * Fixed: Proper url for vk
2951
+
2952
+ = 0.9.83 (03rd March 2018) =
2953
+ * Added: Ability to add amp-carousel and amp-selector directly into WYSIWYG Editor #1588
2954
+ * Fixed: Debug error caused by Playbuzz Sanitizer #1674
2955
+ * Added: Show default gravatar for comments #1758
2956
+ * Fixed: Implement Swift Thumbnail Regeneration in all the designs #1709
2957
+ * Fixed: To avoid debug error in swift
2958
+ * Fixed: Translation improved for some strings #1678
2959
+ * Fixed: Stop AMP takeover for Feed pages #1767
2960
+ * Fixed: Menu issues In Design 1 & Design 2 after changing from AMP-Sidebar #1565
2961
+ * Fixed: AMP Options panel Not Working After Update (0.9.82.1) version #1761
2962
+ * Fixed: Move the label to the top [UX improvement] #1746
2963
+ * Fixed: Error with Vue #1745
2964
+ * Added: Video Module added in AMP Page Builder #1750
2965
+ * Fixed: Sidebar menu is not scrollable swift theme #1769
2966
+ * Fixed: View Non-AMP should be usertrailingslashit #1772
2967
+ * Fixed: Proper structured data for Blogpage #1660
2968
+ * Fixed: Legacy Page Builder not working after the update #1773
2969
+ * Fixed: Content blank when only image in content #1778
2970
+ * Fixed: Comment ID display issue fixed #1758
2971
+ * Fixed: PHP Warning: A non-numeric value encountered in components/logo/logo.php on line 52 #1764
2972
+ * Fixed: Yummly support added in Swift #1708
2973
+ * Fixed: Demo Link updated #1781
2974
+ * Fixed: CSS is not loading in Swift Theme #1780
2975
+ * Added: Ability to add Advertisement or Sponsored label under ads #1710
2976
+ * Fixed: Featured images distortion in related posts #1684
2977
+ * Fixed: Implement Swift Thumbnail Regeneration in all the designs #1709
2978
+ * Fixed: noarchive instead of nofollow in Archive pages #1693
2979
+ * Fixed: Internal links of tags are showing “/amp” after changing the end point to “?amp” in design 2 #1752
2980
+ * Fixed: line height is added for the logo in Swift design
2981
+ * Added: Class for Custom Frontpage #1787
2982
+ * Fixed: Recent post enable disable for Swift theme #1784
2983
+ * Fixed: Connect Show/Hide AMP option with AMP takeover#1786
2984
+ * Fixed: Added sanitizer to footer Widget #1756
2985
+
2986
+ = 0.9.82.1 (18th February 2018) =
2987
+ * Selector code reverted due to it's effect on carousel
2988
+
2989
+ = 0.9.82 (18th February 2018) =
2990
+ * View more details on https://ampforwp.com/0-9-82-released-stability-update-82nd-update/
2991
+ * Logo Resizing calculation by Pixels and resizing bug solved.
2992
+ * Update Notification in the Admin panel will only appear in the AMP options panel. So it will not annoy you anymore.
2993
+ * Glue underline is applying for some reason
2994
+ * Fatal error after 0.9.81 fixed
2995
+ * Facebook comments loading twice on swift
2996
+ * PHP Notice: Undefined variable: post_author_name
2997
+ * Pagebuilder fix in version 0.9.81 Compatibility with Yoast and other plugins #1749
2998
+ * Home loop modifier option added. Allows you to exclude the categories from the loop or include the Custom Post type in the homepage loop.
2999
+ * amphtml Conflict with Instant Article for Facebook resolved
3000
+ * /amp folder in the theme is applying changes in plugin, which causing a bug, but it’s been fixed
3001
+ * Backward Compatibility for AMP Preview
3002
+ * SEO Section Improvements
3003
+ * Wrong comments count on AMP pages
3004
+ * AMP Allow selector in the The Content. You can add tabs and AMP components directly into the loop.
3005
+ * If we turn off the Homepage Support then Blog is turned off as well, solved.
3006
+ * Post Pagination have two options like “Number of pages” and Previous & Next.
3007
+ * Removed the dot from the one Signal Service worker URL if the subdomain isn’t added (Causes Validation issues.)
3008
+ * Extra Space due to empty divs in Design 3
3009
+ * Remove alt from a tag in the AMP version caused many validation issues.
3010
+
3011
+
3012
+ = 0.9.81 (15th February 2018) =
3013
+ * Edge case fatal error on features.php fixed
3014
+ * Admin dashboard messup CSS fix #1731
3015
+ * Custom CSS Output added in Swift
3016
+
3017
+ = 0.9.80 (15th February 2018) =
3018
+ * View More details on the [blog post](https://ampforwp.com/introducing-swift/)
3019
+ * AMP Page Builder 3.0: The AMP Page Builder is a lightweight and much stable than ever and works flawlessly! [Read More](https://ampforwp.com/tutorials/article/amp-page-builder-installation/)
3020
+ * Swift: The New Default Theme, which you can select from the design section of the Page builder.
3021
+ * A way to create a Child Theme for AMP [read more](https://ampforwp.com/tutorials/article/child-theme-amp/)
3022
+ * Make AMP & Non-AMP Same: We have an amazing new option called AMP to WP which will generate the WordPress version of the AMP design which will be viewed on the canonical version of the website.
3023
+ * AMP Takeover: You can deliver a fully AMP compatible website with this option. It will basically take over the non-amp version and deliver an AMP version to your desktop and mobile users, on WordPress & AMP version. That’s why it was called AMP Takeover
3024
+ * Logo Resizing made easy
3025
+ * Typography Options
3026
+ * 3 Headers design in swift theme
3027
+ * Error while sharing the image on Pinterest #1699
3028
+ * Homepage support was not working ( when page support is off ) #1695
3029
+ * Custom Permalinks rewrite issue solved #1689
3030
+ * Custom post type was appearing two types #1688
3031
+ * Theia Post Slider plugin incompatibility with post pagination fixed #1677
3032
+ * Link to the categories in loop of Design 3 #1632
3033
+ * amphtml was not working when plain permalink selected along with static page as homepage #1614
3034
+ * AFS Analytics Integration added #1605
3035
+ * Removed the blank spaces from analytics id field to deliver a good UX. #1599
3036
+ * ?amp endpoint feature added #1561
3037
+ * Ability to remove the excerpt and image from related post #1510
3038
+ * Thumbnails on-the-fly generation added for better control over the design.
3039
+
3040
+
3041
+ = 0.9.74 (23rd January 2018) =
3042
+ * View More details on the [blog post](https://ampforwp.com/0-9-74-released-stability-update-79th-update/)
3043
+ * Fixed: Push Notifications button alligned in center #1500
3044
+ * Added: Meta robots tag support from Yoast #1563
3045
+ * Added: Option to Disable wptexturize/smart-quotes Support #1458
3046
+ * Fixed: Changed the label id to avoid conflict with Advanced AMP Ads #1591
3047
+ * Fixed: esc_attr causing validation issues with single and double quotes #1616
3048
+ * Fixed: Image stretching problem resolved when "Featured Image from the content" was set #1580 #1582
3049
+ * Added: Create Template by Custom taxonomy name like product-jeans.php in AMP Theme FrameWork #1594
3050
+ * Added: Custom Post type support added in the Core #1612
3051
+ * Fixed: custom-amp-content.php cleaned with PHPCS #1497
3052
+ * Added: Basic Product(WooCommerce) support added #992 #1276 for full WooCommerce Support please check this [Extension](https://ampforwp.com/woocommerce/#utm_source=readme-log&utm_medium=0.9.74-readme&utm_campaign=AMP%20Plugin)
3053
+ * Added: Proper fallback support added if the current active AMP theme is not available #1624
3054
+ * Fixed: Resolved debug errors #1622
3055
+ * Added: All in One SEO compatibility #1557
3056
+ * Fixed: Load AMP Styling only on AMP pages #1441
3057
+ * Added: 7 New Social Media Integrations added (Reddit, Tumblr, Telegram, Digg, StumbleUpon, Wechat, Viber) #1265
3058
+ * Fixed: itemprop="url" was adding in non-amp #1626
3059
+ * Fixed: SiteOrigin Pagebuilder compatibility with Custom Frontpage #1592 #1593
3060
+ * Added: MediaAce lazy load compatibility of Bibmer Theme #1472
3061
+ * Fixed: Content Links plugin was causing validation errors #1569
3062
+ * Added: Filter added called get_content_from_dom to modify the output in AMP function #1462
3063
+ * Added: amp_breadcrumb component added in AMP Theme Framework #1636
3064
+ * Fixed: Sidebar Styling and proper sanitizer updated
3065
+ * Added: amp_author_meta component added in AMP Theme Framework #1641
3066
+ * Fixed: amp_post_pagination component improvement in AMP Theme Framework
3067
+ * Added: Ability to add link classes in amp_post_pagination in AMP Theme Framework
3068
+ * Fixed: amp_author_meta image code improvement in AMP Theme Framework
3069
+
3070
+ = 0.9.73 (15th January 2018) =
3071
+ * View More details on the [blog post](https://ampforwp.com/0-9-73-released-stability-update-78th-update/)
3072
+ * Added: Instagram Sanitizer added to process Instagram Embeds inside the BlockQuotes #1581
3073
+ * Added: Option Created to Enable/Disable rel="nofollow" for View Non-AMP link #1572
3074
+ * Fixed: Custom AMP Content was not working with Elementor Pagbuilder #1495
3075
+ * Fixed: ampforwp_is_front_page() is not working in the newspaper theme #1583
3076
+ * Added: Allow people to use multiple Analytics on AMP #1124
3077
+ * Fixed: 'https' error with PlayBuzz Embeds #1481
3078
+ * Added: Option to show last modified date instead of Published date #1496
3079
+ * Fixed: Add proper permission for ampforwptourinstaller page
3080
+ * Fixed: Debug warnings #1586 and #1459
3081
+ * Fixed: A lot of Security Fixes has been done #1497
3082
+ * Fixed: Removed lot of unused code #1497
3083
+ * Added: AMP skip for checkout page #1443
3084
+ * Added: Show the list of Child pages at the end in Parent Page with on/off #1551
3085
+ * Fixed: Properly strip shortcodes fom Structured data description #1512
3086
+
3087
+ = 0.9.72 (6th January 2018, Happy New Year) =
3088
+ * View More details on https://ampforwp.com/0-9-72-released-stability-update-77th-update
3089
+ * Related Posts Image stretching in Design 3 AMP theme Framework #1482
3090
+ * RTL option must be integrated into AMP theme Framework #1562
3091
+ * `DOMDocument::loadHTML():` Attribute itemprop redefined warning fixed #1539
3092
+ * Created an option to add Author bio article in Facebook Instant Article #1521
3093
+ * Options to add push notification button above and below the content #1571
3094
+ * Copy the Content button for Custom Post types #1532
3095
+ * Alexa Metrics Compatibility added #1536
3096
+ * Logo styling added with amp_logo. So styling can work with AMP Theme Framework. #1520
3097
+ * Content parsing login improved, so it will not through any warnings if the content has only 1 paragraph. #1523
3098
+ * Debug Warnings removed #1564
3099
+ * Caption in the Gallery creating validation errors Fixed. #1549
3100
+ * Tables Link color should be as same as the link of the body #1559
3101
+ * Separate options for In-Content related posts #1546
3102
+ * WebPage Schema Type added in Structured Data options #1558
3103
+ * Fatal Error fixed with `mb_detect_encoding()` after enabling the minify option #1494
3104
+ * Content blank or fatal errors due to itemscope and itemtype, fixed. #1570
3105
+ * Performance improved. Due to `_transient__redux_activation_redirect` transient. #1526
3106
+
3107
+ = 0.9.71 (1st December 2017) =
3108
+ * Design 2 Post Titles issue fixed
3109
+ * Instant Articles validation issue fixed.
3110
+
3111
+ = 0.9.70 (30th November 2017) =
3112
+ * View More details on https://ampforwp.com/0-9-70-released-stability-update-76th-update/
3113
+ * Image alt tags are empty which caused issues. #1154 (thanks to @liagua)
3114
+ * ALT and IMG tags are in one line #1442
3115
+ * Updated the permalink for post view in admin area #1318
3116
+ * aria-current causing validation issues #1427
3117
+ * Aligning Captions in the Bottom in Gallery #1428
3118
+ * Logo’s height & width should dynamically come from the logo. This was a great UX improvement in my opinion. The logo would good regardless of the kind of image you upload. #1429
3119
+ * After 0.9.69.1 update Call to undefined function mb_convert_encoding #1447
3120
+ * Featured image options now also reflect the structured data #1430
3121
+ * Blur & Stretching issues of Design 3 thumbnails are now fixed. They’re crisp and clear than ever! #1227
3122
+ * Related posts are showing on single even when turned off #1434
3123
+ * Show Related posts CSS only when it is selected #1356
3124
+ * Author image now displays on author pages #1426
3125
+ * Category base removal in AMP from url option is only working on the first page #1418
3126
+ * Bug fixed: PHP Warning DOMDocument Empty string supplied as input #1449
3127
+ * Video support added in Instant Articles #1300
3128
+ * Read more tag in Instant articles issue fixed #1415
3129
+ * Amp carousel issues fixed #1446 #1456
3130
+ * Compatibilty with Envira Gallery Lazy Loading #1432
3131
+ * Inline Related Posts in AMP Theme Framework #1457
3132
+ * Different number of in-content related post and related posts at the footer #1448
3133
+ * FooGallery update broke all the AMP compatibility, but we fixed it from our side so that user’s gallery work perfectly #1424
3134
+ * WPBakery Page Builder Conflict solved #1419
3135
+ * Goodlife theme Lazy Load compatibility added #1416
3136
+ * AMP-Facebook-Like Was found but unused Validation Error fixed. #1463
3137
+ * Playbuzz not displaying if added with https: #1466
3138
+ * Options Panel labels renamed for better understanding.
3139
+
3140
+
3141
+ = 0.9.69 (20th November 2017) =
3142
+ * View More details on https://ampforwp.com/0-9-69-released-stability-update-75th-update/
3143
+ * One Signal Push Notifications bug fixed! #1404
3144
+ * AMP theme framework Related posts extended so that it can be used as a loop format #1406
3145
+ * Facebook like Button improvements #1405
3146
+ * Add layout responsive tag to image module in page builder #1373
3147
+ * Strip the shortcodes from Structure data area #1389
3148
+ * Test HTTP API Call From admin panel by redux #1391
3149
+ * Meta description tag in normal site Unicode character is different from AMP site unicode character. #1369
3150
+ * Updated the check for ampforwp_is_amp_endpoint this should fix the issue #1372
3151
+ * Updated the URL for design 3 so it can work with plain permalink #1318
3152
+ * Updated the option Featured Image from The Content #1367
3153
+ * If “Featured Image From The Content is enabled and Duplicate Featured Image” is disable it will remove all the duplicate images from the content. #1375
3154
+ * Date Format under Homepage improvements #1408
3155
+ * Warnings due to inline related posts in Homepage #1413
3156
+ * Plain Permalinks Support improved. #1318
3157
+ * Allow Homepage title of Bread Crumbs feature to be changed from Translation Panel #1414
3158
+ * Debug Errors in AMP Theme Framework #1403
3159
+ * Unnecessary loading of Merriweather fixed, it will only load in the Design 1.
3160
+ * Enter Phone Number is not Appearing when switch to Call now button #1425
3161
+ * Need excerpt below the title, above the meta #1399
3162
+ * Remove the Separator piple symbol from the footer when “Back to Top link” is off #1417
3163
+ * Display Child or subcategories on Category pages. #1385
3164
+ * Add Caption in the Gallery Image feature conflicting with Gallery widget #1407
3165
+ * Youtube Shortcode embed with &rel=0 support #1378
3166
+ * Filter for Excerpt custom text in the AMP options #1411
3167
+ * WPML Multilingual CMS plugin flags compatibility #1270
3168
+ * Compatibility with Tasty Recipes plugin and other page builders with amp page builder #1431
3169
+
3170
+
3171
+ = 0.9.68 (12th November 2017) =
3172
+ * View More details on https://ampforwp.com/0-9-68-released-stability-update-74th-update/
3173
+ * ADs are Optimize For Viewability, meaning it will try to load faster than the original AMP AD loading strategy.
3174
+ * Content was disappearing issue was resolved #1392
3175
+ * Featured Image from The Content option is connected to related post #1339
3176
+ * Fix amp-web-push helper iframe configuration URL #1387
3177
+ * Facebook Like button added to AMP #1327
3178
+ * WPML support for AMP Improvement #1285
3179
+ * Debug Errors fixed #1366
3180
+ * Setting ad density for Facebook Instant Articles ads #1287
3181
+ * Showing the number of comments in Single #1341
3182
+ * Styling added to the sitewide ads and made sure that they are in the center. #1343
3183
+ * One Signal buttons Translation added #1383
3184
+ * Article type added to Structured data #1344 #1354
3185
+ * The issue with the amp-carousel when RTL was enabled #1358
3186
+ * amp-carousel with images of different sizes #1358
3187
+ * a bug where Img is getting converted to amp-img if there's no height or width. which causing validation issue and image is not visible fixed.
3188
+ * Instant Article should have a default value for number of posts, it was causing the memory issue with alot of posts #1390
3189
+ * Notice if a post has no author data #1338
3190
+ * Added a new redux extension select field in redux framework #1349
3191
+ * Issues with galleries as well as gallery captions #1363
3192
+ * Added a hook for adding anything in between the loops #1396
3193
+ * Hide meta boxes as per the user level types #1340
3194
+ * A Switch between the Date formats #1384
3195
+ * Fix: Jannah theme lazy load issue #1362
3196
+ * Issues with galleries as well as gallery captions #1363
3197
+ * Create Dynamic url of amp according to the permalink structure #1318
3198
+ * Minor code performance improvement.
3199
+ * Archive titles in Design 3 frontend issue
3200
+
3201
+ = 0.9.67.0 (6th November 2017) =
3202
+ * View more details on https://ampforwp.com/one-signal-push-notifications-for-amp/
3203
+ * OneSignal Push Notifications integrated #807
3204
+ * Vimeo embed support added
3205
+ * SoundCloud embed support added
3206
+ * Pinterest embed support added
3207
+ * PlayBuzz embed support added
3208
+ * DailyMotion embed support added
3209
+ * Fix: Handle issues with data uri images in CSS #1033
3210
+ * Fix attribute when adding AMP Mustache lib #1033
3211
+ * Fix: Output CSS for feature image #1033
3212
+ * An option added for users who don't want to receive update notifications #1342
3213
+ * Structured data nav improvement
3214
+ * Sitenavigationelement has been implemented correctly for footer menu. #1345
3215
+ * Style sanitization for Menu Items #1359
3216
+ * Polylang flags support for menu  #1360
3217
+ * Mobile Redirection issues fixed #1173
3218
+ * Jetpack fatal error fixed #1355
3219
+ * AMP Page Builder requires a button to be clicked, so the scripts are not running on the runtime making it easy on the edit screen page and avoid the possible script conflict.
3220
+ * Needs proper CTA Bar's styling. #1361
3221
+ * Debug errors on archive pages #1353
3222
+ * Preview shall only be loaded on click rather than in background #1331
3223
+ * ampforwp_is_home() function code improved
3224
+ * making sure scripts and styling is properly adding when sanitizing the sidebar #868
3225
+ * All the backend css and js should be versioned, so it's not cached. #1335
3226
+
3227
+ = 0.9.66.1 (30th October 2017) =
3228
+ * Fatal error if has version less than WP 4.8 fixed
3229
+ * More Minor Validation errors fixed
3230
+ * Odnoklassniki sharing button is not working #1337
3231
+
3232
+ = 0.9.66.0 (29th October 2017) =
3233
+ * View more details on https://ampforwp.com/0-9-66-released-bug-squashing-oct-2017-72nd-update/
3234
+ * Design 3 & Design 1 are optimised with 90+ Google PageSpeed Score on Mobile and 95+ in desktop performance #1273
3235
+ * Featured Image from the content for blog and homepage #1295
3236
+ * Category Module for AMP Page builder added #888
3237
+ * Don't load unused CSS selectors. All the CSS is conditionally loading, to decrease the number of CSS loaded per page and increased in performance #1292
3238
+ * Twitter Video embed code support added in AMP #1307
3239
+ * Video Posting Structured data #1293
3240
+ * Navigation menus are now Schema compatible for better Structured data integration #1229
3241
+ * Yoast checking conditions for Structured Data Improved #1293
3242
+ * Added "back to Top" in design 3 #959
3243
+ * Proper blog check and author for custom frontpage #1260 (Made some changes to check the blog properly and also added the author details for Custom Frontpage)
3244
+ * AMP not working on password-protected pages #1192
3245
+ * Debug errors reported by the user #1284 and few more we found internally
3246
+ * Inline Style Sanitizer for Comments to avoid any validation issues #1193
3247
+ * Next/Previous links removed from pages #1268 props @Frenchomatic
3248
+ * WPML Multilingual CMS plugin flags compatibility added #1270
3249
+ * Image sanitizer added for the Sidebar #1270
3250
+ * Added AMP Components the correct way. Added amp-gist, amp-social-share. #336
3251
+ * amp-video script added - Which decreases the non-critical validation issues #991
3252
+ * Arrows in Design 3 pagination #1000
3253
+ * Author page links in Single #1282
3254
+ * Added previous open state of option panel and show again when search clean #1238
3255
+ * Odnoklassniki Social Sharing Support for AMP (with target blank for better bounce rate) #1230
3256
+ * GIF or animated images resize problem fixed #1281
3257
+ * In Design1, Header Background & Link Color have same option #1249
3258
+ * FB Pixel for AMP added #1231
3259
+ * Structured Data Type option for AMPed Custom Post types only #1259
3260
+ * Attribute ‘readability in the tag ‘div’ removed - this decreases the validation issues #1306
3261
+ * AMP Theme Framework Improvements: loop, author, related_post, Add Author support #1311
3262
+ * Commentator's Avatar in the comments section #1132
3263
+ * Remove 'Welcome to AMP' from Dashboard sub-menu and moved to the options area to decrease the annoyance and increase the user happiness #902
3264
+ * Option to Sort the Random Order of Related Posts to increase the audience engagement (Default is 'ID', on enabling the option it will change to 'rand') #1250
3265
+ *  View AMP on Admin Bar for the respected page/post If enable. #1236
3266
+ * google maps iframe link to larger map #1099
3267
+ * Comments now jumping due to the slash at the end #1309
3268
+ * Page Builder causes Incompatibility with the Divi theme (We restructured the Text Module for Page builder for better compatibility and UX) #1162
3269
+ * Inline Style Sanitizer for Comments added. Less Critical Validation issues and Better Presentation #1193
3270
+ * WPML amp-html error fixed #1285
3271
+ * Radio button not working for Show View more Button" #1018
3272
+ * Added registered handle for tinymcePointer localize data #1301
3273
+ * Date in the Design 2 should not be hidden in mobile version #1315
3274
+ * Page builder not working on homepage(Selected as front page) #1316
3275
+ * Instant articles number of posts option #1271 (Removed some unused code as well, it will rendered all posts if none is enter in the options)
3276
+ * Auto flush on save for FBIA to improve the UX.
3277
+ * Plain Permalinks Support improved. #1318
3278
+ * Tables support added to FB Instant Articles #1266
3279
+ * Demo link added in the Theme selector option #1248
3280
+ * Remove invalid attributes from multiple tags which reduces critical validation errors and validates pages.
3281
+ * AMP makes a problem in archive page label, when it is active in non-amp version #1304
3282
+ * placeholder-icon.png is 404 fixed #1310
3283
+ * Category & Tags switches for Single added. #1055
3284
+ * Copy Content (Custom AMP Editor) Option Not showing with Page Builder of SiteOrigin issue fixed #1280
3285
+ * Improving UX with: when AMP support is off for a specific post type then all the AMP related metaboxes should be removed #1289
3286
+ * Options Panel Options rearranged, labels rewritten, descriptions repositioned for better User interaction [commit]
3287
+
3288
+ = 0.9.65.2 (25th October 2017) =
3289
+ * TypeWatch is not a function #1299
3290
+ * Error with BackupBuddy fixed #1303
3291
+
3292
+ = 0.9.65.1 (24th October 2017) =
3293
+ * AMP Minifcation Issues fixed
3294
+
3295
+ = 0.9.65 (22nd October 2017) =
3296
+ * View more details on https://ampforwp.com/new/
3297
+ * Favicon for AMP #1039
3298
+ * AMP Minification option added with Performance Tab in Options #1286
3299
+ * Post support is turned off then Meta box should also be removed #1253
3300
+ * Excerpt Length feature in Design two and Three #1122
3301
+ * Test Contact form plugins and their settings in the options panel #1121
3302
+ * Mobile preview in Edit Screen #1082
3303
+ * Search feature for Options Panel #1238
3304
+ * WordPress Social Share Buttons Validation Issues #1272
3305
+ * itemtype attribute is striping in the ul tag #1210
3306
+ * Debug Error in Breadcrumb 0.9.64 #1267
3307
+ * Disable AMP linking at Wordpress Search Page #969
3308
+ * Featured Image is missing #1071
3309
+ * Removed ampforwp_plugin_activation_notice #1034
3310
+ * Add VK (Vkontakte) Sharing Button #1187
3311
+ * Grab the first image instead of post thumbnail for featured image #1189
3312
+ * AMP theme framework core changes #1274
3313
+ * Grab the first image instead of post thumbnail for featured image #1189
3314
+ * Create a Switch on Top of Page Builder #1279
3315
+ * Inline Related Posts added that helps you with improving bounce rate #1078
3316
+ * Caption Support in Image Gallery Carousel #1172 #1136
3317
+ * Instant Articles feed shows sticky posts on top #945
3318
+ * Added search check, to fix debug notice
3319
+ * Option to hide date from Design 1 & Design 3 Homepage Loop #1264
3320
+ * UI labels improvements in the Options panel
3321
+ * Sorting out design #2 static front page #1175
3322
+
3323
+ = 0.9.64 (15th October 2017) =
3324
+ * View more details on https://ampforwp.com/new/
3325
+ * Structured Data Type option added. You can now change the structured data format for Posts, Pages and Custom post types #323
3326
+ * When comments plugin activate, Comments section should remove. #1093
3327
+ * Notification causes a validation error. #1147
3328
+ * CSS !important need sanitization #1225 - This will help us to validate tens of thousands of pages.
3329
+ * Strange spaces when using Sassy Social Share #1185
3330
+ * Remote CDN use? Let's host it? #549
3331
+ * Typo fix for Linkedin Profile Page URL section #905 [Thanks to Prayag @pra85]
3332
+ * Replace fastimage with fasterimage for PHP 5.4+ #1191
3333
+ * Debug Errors Post 0.9.63 #1219
3334
+ * Ad5 code injected twice #1116
3335
+ * Homepage Support must be Off when we turn Off Homepage Support. #738
3336
+ * Add custom class in post pagination for styling #1100
3337
+ * Removed the Lazy Loading issue of Schema Theme #1170
3338
+ * H1 tag for archive titles (Commit) #1155
3339
+ * Alt tag for the Logo #1155
3340
+ * Design 3 Menu RTL issue fixed #1106
3341
+ * Ability to add dynamic classes in body tag #1237
3342
+ * Warnings fixed on 404 page #1243
3343
+ * Properly structured data for Homepage, Custom Frontpage and Blog #1155 #1242
3344
+ * Option added to Enable/Disable categories and Tags links from Single #1155
3345
+ * Fatal error after 0.9.63 fixed #1220
3346
+ * Debug Error due to vendor AMP #1213
3347
+ * PHP warning on line 147 after 0.9.63 #1241
3348
+
3349
+ = 0.9.63 (8th October 2017) =
3350
+ * View more details on https://ampforwp.com/new/
3351
+ * Category and Tag Base Remover as core features #1079
3352
+ * Hide AMP on Posts option added #935
3353
+ * Installation Setup Screen Added for new users
3354
+ * Validation for the session in PHP #1158. PR by Bryan Contreras @bryan3561
3355
+ * All the amp pages should work perfect with Plain Permalink settings #488
3356
+ * WYSIWYG TinyMCE editor added for the Text Module in AMP Page Builder #1205
3357
+ * WPML Static Front Page Support for title and description with Yoast. #1143
3358
+ * Row Settings area added for AMP Page Builder #1148
3359
+ * xlink attribute causes Validation Issues #1149
3360
+ * Posts with no images on Archive pages are squeezed to 65% #1058
3361
+ * Body Class to target specific pages #1123
3362
+ * Option to enable/disable Breadcrumb #1129
3363
+ * Debug errors due to Breadcrumbs fixed #1109 #1130 #966
3364
+ * Visit AMP option added below the View Site in Dashboard. #1076
3365
+ * Many Debug errors fixed #1109
3366
+ * Textarea for body tag which will help people add AMP Auto Ads #1064
3367
+ * Structured data improvements #1048 #1044 #1085 #1118
3368
+ * Twitter share URL based on users choice, you can allow people to share pretty links and short links. #1097
3369
+ * Author Avatar removed code fixed which has been displayed in the div "amp-wp-meta amp-wp-byline". #1087
3370
+ * Only one figure element is allowed in the article header FB Instant Articles #1127 & #1157
3371
+ * Image alt tags are empty and cause issues fixed. #1154
3372
+ * Button to copy the content into Custom AMP Editor #783
3373
+ * Rename AMP loop widget areas or add proper descriptions #1045
3374
+ * Trailing slash issue #1095
3375
+ * Related Posts by Post type featured added #1141
3376
+ * Ultimate Social Media Icons plugin causes validation issues fixed #1135
3377
+ * Adding proper path for functions.php, it was causing strange fatal errors and irregular white screen of death fixed  #1144
3378
+ * A smooth way to migrate from other AMP plugins to AMPforWP #1051
3379
+ * Alert added on AMP by Automattic installation. #1180
3380
+ * Insertion of strange spaces around H1 titles #1069
3381
+ * AMP Page Builder and HTTPS #1164
3382
+ * You can display comments from more than one vendor such as displaying WP & FB Comments #1150
3383
+ * Rename AMP loop widget areas or add proper descriptions #1045
3384
+ * FrontPage featured image with srcset #1063
3385
+ * An option for Showing featured image from custom field #1098
3386
+ * Added the Custom Front Page Title From Yoast SEO #1163
3387
+ * Commenting breaks SSI directives causes to display error #1179
3388
+ * rel canonical appears more than once in search pages #1195
3389
+ * Dev mode in AMP #1083
3390
+ * Social Sticky Icons Improvements #1061
3391
+ * Grand-Child support added in Design #1152
3392
+ * amp-accordion non-critical error in Design 3 & CSS improvements fixed #1152
3393
+ * Incorrect @id for mainentity #1080
3394
+ * Hide AMP by specific Categories tweaked for performance. Thanks to Joshua Eichorn @jeichorn CTO at Page.ly #1133 - Huge Thanks!
3395
+ * amp-auto-ads for sites with RTL support ON #1176
3396
+ * Redirected the Google forms to our contact page so that we can take each and every query and answer every person. #1201
3397
+ * ui-state-highlight class was conflicting with ACF date picker fixed #1199
3398
+ * Responsify WP Lazy loading causes blank image (Compatibility) #1131
3399
+ * amp-carousel scripts loading on the second page fixed in Design 3
3400
+ * Show Design screenshot while selection of design #1209
3401
+ * Switches Redesigned for better UX #1211
3402
+ * Welcome Page UX Improved #1214
3403
+
3404
+ = 0.9.62 (25th September 2017) =
3405
+ * View more details on https://ampforwp.com/new/
3406
+ * INTRODUCING Page Builder 2.0 for AMP! [Learn More & Watch the Video](https://ampforwp.com/tutorials/article/amp-page-builder-installation/)
3407
+ * Documentation & Help links improved
3408
+ * Post type specific classes for targetting
3409
+ * Design name restored in Options panel (It was recently renamed to Appearance)
3410
+ * Minor Bug fixes as well
3411
+
3412
+ = 0.9.61 (10th September 2017) =
3413
+ * View more details on https://ampforwp.com/options-restructured/
3414
+ * Options Panel Restructured Options were dividing into two parts: Settings and Appearance.
3415
+ * AMP Theme Framework Core Support Added. You can now create themes of your own in just minutes.
3416
+ * WPML Static Front Page Support #1111
3417
+ * Notification message disables when CF7 & gravity form is activated. #1107
3418
+ * Space after On in Design 3 #1114
3419
+
3420
+ = 0.9.60 (4th September 2017) =
3421
+ * View more details on https://ampforwp.com/0-9-60-released-improved-redirection-66th-update/
3422
+ * Class added to View non-amp anchor tag
3423
+ * Params added properly to get rid of a warning #1077
3424
+ * rel=attachment noopener generating validation errors #1090
3425
+ * Breadcrumbs Support Added #701
3426
+ * Enable / Disable button added for Navigation Menu #735
3427
+ * Move the ad code for Instant Article down after the article #964
3428
+ * Add analytics code of FB instant articles properly #1096
3429
+ * datetime Tag not stripping properly #1043
3430
+ * Mobile redirection on custom post types #1028 #1052
3431
+ * Mobile Redirection causing extra redirect #879 #933
3432
+ * Proper mobile redirection on Homepage #1052
3433
+ * View non-amp on blog will redirect to blog
3434
+ * Blog will redirect to blog irrespective of AMP Homepage option #871
3435
+ * Dont redirect if archive support is disabled #1052
3436
+ * non-amp category pages should redirect to non-amp pages if turned off from Hide AMP #999
3437
+ * Disable amp for forum plugin (wpforo) #592
3438
+
3439
+ = 0.9.59 (23th August 2017) =
3440
+ * Design 3 Images were not aligned properly. Fixed. #1040
3441
+ * Caption in the design 3 improved
3442
+ * Jetpack File not loading throwing fatal error #1038
3443
+ * If the mobile redirection is ON and the category is excluded to display the AMP then it should redirect properly
3444
+ * Custom Editor Compatibility issue with SiteOrigin PageBuilder fixed #997
3445
+ * Native Twitter Embed support
3446
+ * Added a hook after the body tag: ampforwp_body_beginning (commit)
3447
+ * GTM in AMP Improved #958
3448
+ * WP User Avatar compatibility Added #975
3449
+ * Alt tag on frontpage featured image added #1050
3450
+ * Blurred Images on the frontpage fixed #1050
3451
+ * Need to escape alt tag #1049
3452
+ * Debug errors & PHP warnings were fixed #859 #811 #830 #810
3453
+ * Proper rel canonicals for inner pages #1047
3454
+ * Added Video sanitizer for comments #1053
3455
+ * When activating the AMP plugin, display a notification in the popup. #1036
3456
+ * Video Sanitizer added for Comments
3457
+
3458
+ = 0.9.58.1 (9th August 2017) =
3459
+ * Jetpack conflict issue solved #1038
3460
+ * Genesis SEO Support added #1013
3461
+ * Fixed Wrong SEO title issue #1013 and #836
3462
+ * Design 3 Carousel script loading method improved #990
3463
+
3464
+ = 0.9.58 (9th August 2017) =
3465
+ * View more details on https://ampforwp.com/new/
3466
+ * Genesis SEO for AMP support added
3467
+ * AMP 0.4.2 Vendor Bundled for making it crash proof
3468
+ * Archive desc only on 1st page #1029
3469
+ * Ads are not working after 0.9.6 #1030
3470
+ * Fixed the Post 0.9.57 Update Bugs #1025
3471
+ * All Images are aligned on left side in design 3 #1031
3472
+ * Custom frontpage title issue in Design 3 fixed
3473
+
3474
+ = 0.9.57 (5th August 2017) =
3475
+ * See the Full changelog https://ampforwp.com/0-9-57-released-compatibility-issue-fixed-62nd-update/
3476
+
3477
+ = 0.9.56 (31st July 2017) =
3478
+ * View more details on https://ampforwp.com/page-break-in-amp/
3479
+ * Page Break / NextPage (Pagination) Support Added #834 #857 (Improvement)
3480
+ * Show/Hide AMP for Categories of Posts or All posts #872 (Improvement)
3481
+ * Adding analytics capabilities to Instant Articles #978
3482
+ * JetPack Plugin Conflict Solved #971
3483
+ * Social sharing code improved. amp-social-share js is getting added for line and WhatsApp social share #981
3484
+ * Code improvement for rel canonicals(home and archive)
3485
+ * Perfect SEO URL + Yoast SEO Compatibility #982
3486
+ * Some styling for tags to show up properly
3487
+ * Undefined index notices #960
3488
+ * Non-amp category pages should redirect to non-amp pages if turned off from Hiding AMP #999
3489
+ * Page builder text and button module issues #972
3490
+ * Documentation links updated in the Options panel
3491
+
3492
+ = 0.9.55 (13th July 2017) =
3493
+ * View more details on https://ampforwp.com/0-9-55-released-improvement-update-61st-update/
3494
+ * Disqus Comments show up even when disabled per post #931
3495
+ * Unnecessary: Adding the Markup for AMP Woocommerce latest Products #929
3496
+ * H3 inside OL in Related-Posts.php #930
3497
+ * Advertisement Options in Instant Articles #943
3498
+ * Incompatible with bootstrap plugin #525
3499
+ * Error in tag and category links #934
3500
+ * Pagebuilder Button module link had issues #951
3501
+ * Unnecessary: Adding the Markup for AMP Woocommerce latest Products #929
3502
+ * WPtouch Pro Compatibility Issues #927
3503
+ * Better scripts compatibility in Single of post types #757
3504
+ * Instant Articles Error: "The HTML element does not contain any text" #949
3505
+ * added a filter in all the dates so a user can change the date format and modify #962
3506
+ * Design3 Menu Arrows are clickable along with the links #952
3507
+
3508
+
3509
+ = 0.9.54.2 (4th July 2017) =
3510
+ * Minor bug post 0.9.54 bug fixed
3511
+
3512
+ = 0.9.54 (4th July 2017) =
3513
+ * View more details on https://ampforwp.com/new/
3514
+ * Facebook Instant Articles Support #862
3515
+ * Exclude Some Pages from Mobile Redirection #914
3516
+ * After 0.9.53 update amp-social-share js missing (critical issue) #924
3517
+ * Hooks added in Header (above and below)
3518
+ * View non AMP[Code improvement] #928
3519
+ * Pages are not supposed to show meta like this, especially Categories #894
3520
+ * Monarch plugin having design issues #925
3521
+ * Show AMP Hide AMP Check Box Fixes #794
3522
+
3523
+ = 0.9.53 (19th June 2017) =
3524
+ * View more details on https://ampforwp.com/stability-validation-issues-59th-update/
3525
+ * Compatibility Issue with Rocket Lazy Load plugin #907
3526
+ * Link color issue with UX of Color Pickers in Design 3 #731
3527
+ * amp-analytics js appears more than once when Google tag manager is used #885
3528
+ * SEO by SQUIRRLY is adding analytics twice #678
3529
+ * Fatal error when WPSEO is activated #900
3530
+ * Design 3 Sticky header should have an option #625
3531
+ * Search form was enhanced, it can now be used on the websites without https certificate. That will certainly fix a lot of validation issues. #912
3532
+ * Yandex Metrika support in AMP #585
3533
+ * Histats Analytics Support #880
3534
+ * Chartbeat Analytics Support #882
3535
+ * Do not strip Rel from anchor tags #790
3536
+ * Design close Resulting Blank Screen in AMP Site #642
3537
+ * Logo size is not applying #817
3538
+ * AMP Publisher logo guidelines #162
3539
+ * Remove amp-social-share extension .js from Custom Frontpage #899
3540
+ * Add compatibility with Sassy Social Share #679
3541
+ * Remove Disallowed ‘like’ tag from Facebook Like button by Ultimate Facebook plugin
3542
+
3543
+ = 0.9.51.1 (12th June 2017) =
3544
+ * Redirection issue after 0.9.51 Update.
3545
+ * Improved compatibility with plugins.
3546
+
3547
+ = 0.9.51 (8th June 2017) =
3548
+ * View more details on https://ampforwp.com/page-builder-released-in-amp/
3549
+ * Page Builder Support added ( See Tutorial at https://ampforwp.com/tutorials/page-builder/ )
3550
+ * Comments are not showing properly when words are long #861
3551
+ * Remove amp-social-share extension .js from Pages #853
3552
+ * The tag ‘amp-sidebar extension .js scriptappears more than once in the document #828
3553
+ * Remove Advertisement tab #839
3554
+ * Compatibility with Slide-in Plugin by WPMU dev #866
3555
+ * Mobile redirection issue with bbpress #867
3556
+ * All the data must be properly sanitize in the sidebar #849
3557
+ * AMP html should not be added on the second page of comments
3558
+ * Author page’s support #456
3559
+ * URLs in comments should be clickable(links) #869
3560
+ * Featured image should be centered in desktop mode #870
3561
+ * Added More Hooks #721 (Documentation on this coming soon!)
3562
+ * Page 2 goes to the wrong URL #865
3563
+ * Proper Title and meta for homepage and posts #850
3564
+ * Gist Support added #608 – Just add a shortcode and enjoy Devs (Ex: amp-gist id="b9bb35bc68df68259af94430f012425f )
3565
+ * /blog/amp pagination not working #875
3566
+ * separate the Text and Date format in design 2 #876
3567
+ * Comments show in AMP w/o breaks between paragraphs #873
3568
+ * If no featured image below hooks are not working #877
3569
+ * Change meta name Viewport and its value #878
3570
+ * Bolt icon in option #474
3571
+ * Code restructuring and code quality improvements.
3572
+ * Create a seperate function for comment code in frontpage.php #682
3573
+ * Remove all the duplicate code from frontpage.php of all the designs and use hooks to add the code instead of static code #889
3574
+ * Few Debug errors removed.
3575
+
3576
+ = 0.9.50 (24 May 2017) =
3577
+ * View more details on https://ampforwp.com/facebook-comments-in-amp/
3578
+ * Design 3 Social Icons issue #832
3579
+ * View non AMP leads to /?nonamp=1 #814
3580
+ * Youtube shortcode compatibility improved #557
3581
+ * welcome.php should be shown only if user is “administrator” #696
3582
+ * Facebook comments support added in AMP #825
3583
+ * WP Like Button Compatibility #841
3584
+ * Custom Taxonomy Support added with Custom Post Type Extension.
3585
+ * Front page comments not found as expected #837
3586
+ * Fixed xml:lang tag issue #848
3587
+ * Sanitize Iframe in the archive description Fixed #845
3588
+ * Compatibility with Newspaper Theme by TagDiv #842 and #796
3589
+ * Some debug problems (blog page, style.php) #838
3590
+ * Featured Image hooks added
3591
+ * Twitter is misspelled #854
3592
+ * The core concept of the AMP Content builder has been built.
3593
+
3594
+
3595
+ = 0.9.49 (12 May 2017) =
3596
+ * View more details on https://ampforwp.com/0-9-49-released-small-important-bugs-fixed-56th-update/
3597
+ * Option added to display the excerpt in Single #806
3598
+ * Ability to add new invalid tags to filter out from AMP pages #809
3599
+ * In frontpage, comment button is pointing to wrong URL #812
3600
+ * Call now button and search is overlapping in Design-1 #784
3601
+ * Sticky Social Icons should be off if the CTA notification bar is on #788
3602
+ * Author bio in Design 1 and 2 #732
3603
+ * Styling in Taxonomy description causing validation issues #798
3604
+ * Twitter share(handle, url positions fixed) #815
3605
+ * Tables responsiveness in ALL Designs #726
3606
+ * Output all the categories and tags with their own ID’s in the div classes #750
3607
+ * Social Share Icons Overlap with Leave A Comment in Design 3 #716
3608
+ * Effective Measure Support on AMP #297
3609
+ * Custom AMP editor on pages should only be shown when page support is ON #756
3610
+ * AMP on website.com/blog without need of separate installation #775
3611
+ * GTranslate Compatible #819
3612
+ * Images and amp-anim styling added #725
3613
+ * Filter to make the title in a post to a link #727
3614
+ * Author Bio and Social Share button must not come in Pages #770
3615
+ * StatCounter is now compatible with AMP #361
3616
+ * Line Social media support #500
3617
+ * Footer menus for Design 1 & Design 2 #623
3618
+ * Strip out src=”about:blank” When Gravity Forms used #804
3619
+ * Add Compatibility with Crazy Lazy load plugin #751
3620
+ * Meta Titles and Description issues fixed with Yoast, All in one SEO and The SEO Framework #813
3621
+ * Double quotes in the Excerpt of the meta description is making AMP Invalidated #818
3622
+ * Missing featured image on static front page #824
3623
+ * Fatal error while activation: see the video 0.9.49 Beta #827
3624
+ * Review this code in archive.php in all 3 designs. #826
3625
+
3626
+
3627
+ = 0.9.48 (28 April 2017) =
3628
+ * View more details on: https://ampforwp.com/0-9-48-released-step-towards-multilingual-support-55th-update/
3629
+ * The default translation method of WordPress added. (Option in Translation panel to switch between * Translation panel and POT file #540)
3630
+ * A new Advertisement slot added above the related posts in the Single. It not only gives better options for people to display ads but this ad slot is also very handy if you are using ad companies like Taboola and RevContent.
3631
+ * Another Advertisement slot added below the post title in the Single post.
3632
+ * Fatal error: require_once report-bugs.php #747 fixed
3633
+ * Add / for codes in Meta Description #766 fixed
3634
+ * Controls re-adjusted & Renamed title of yoast description control in Options panel
3635
+ * Design-3 Slider URL redirecting to non-AMP page #758
3636
+ * Added new sanitizer For HTML to AMP-HTML conversion
3637
+ * Sanitized Archive descriptions so that it would convert to AMP
3638
+ * Comments sanitized with new sanitizer so that HTML tags automatically become AMP compatible.
3639
+ * 301 redirects on non-pretty internal links #767
3640
+ * Create a filter to modify the value of rel="amphtml" #778
3641
+ * Max-width added for images in comments
3642
+ * If in WooCommerce ?amp endpoint set then update href.
3643
+ * Undefined Variable (Debug) #733 and many other debug issues were fixed
3644
+ * Show last updated Post instead of published date #575
3645
+ * WooCommerce Widget added to display latest products on homepage. #763
3646
+ * add amp_post_template_above_footer hook global in all the designs #779
3647
+ * Excerpt on top of the content in Single #665
3648
+ * Subscribe box has been improved for the UX needs #712
3649
+ * Notice warnings since 0.4.2 update #740
3650
+ * AMP Comments Form Integration with the extension
3651
+ * Filter added on the loop in Homepage of the Design 3 so that it can be modified with an external plugin.
3652
+ * 404 on paged home page #781
3653
+ * Twitter handle should be at the end of the tweet not in the beginning #787
3654
+ * Wrong Rel Canonical for AMP Custom Frontpage #799
3655
+ * Merged a pull request #761 that will improve the title and description output that is much more stable and flexible for future enhancement and use. It was contributed by Sybre Waaijer - Thanks mate for the contribution, we (our team and users) really appreciate your hard work done on this code.
3656
+ * Extension page user experienced improved.
3657
+ * Removed old Youtube installation video and replaced with new one.
3658
+
3659
+ = 0.9.47.2 (12 April 2017) =
3660
+ * Design-3 Slider URL redirecting to non-AMP page #758
3661
+ * Ads showing in comments #768
3662
+
3663
+ = 0.9.47.1 (11 April 2017) =
3664
+ * Meta description option improved in SEO section #766
3665
+ * Fatal error: require_once report-bugs.php #747
3666
+
3667
+ = 0.9.47 (10 April 2017) =
3668
+ * View more details at https://ampforwp.com/0-9-47-released-54th-update/
3669
+ * Meta saving method updated for customAMP content editor checkbox was causing some conflict.
3670
+ * Wrong Yoast title and structured data in Custom Frontpage fixed
3671
+ * CSS minification all 3 designs
3672
+ * Polylang flags in menu was causing validation issue, is now resolved
3673
+ * WPML flags in menu was causing validation issue, is now resolved
3674
+ * Standardized function created for content sanitization.
3675
+ * Archive description now displays AMP compatible markup
3676
+ * Comments markup sanitized for AMP
3677
+ * Design 3 images not aligned properly, fixed
3678
+ * Images are aligned to center in Design 1.
3679
+ * carousel ending with //amp instead of /amp fixed #753
3680
+ * Title of the Post along with Post link when shared in twitter #683
3681
+ * Ads were cutting in half in RTL, fixed
3682
+ * Add / at the end of AMP links with in the AMP pages (Internal links) #668
3683
+ * Rendering the wrong URLs in front page if paged #742
3684
+ * Option to turn off AMP on all pages, so people can turn on only for specific pages #746
3685
+ * Need Meta Description on amp pages #741
3686
+ * Woocommerce Loop shortcode updated
3687
+ * Call Now Button added in header #563
3688
+ * Post images are not centered in Design 3 #695
3689
+ * UX of GTM settings done, since users were getting confused #700
3690
+ * Front page amphtml fixed for paginated pages
3691
+
3692
+ = 0.9.45.6 (31 March 2017) =
3693
+ * Installation Process from welcome page was not working after WP Plugin DIR API change was fixed.
3694
+ * WP Rocket Minifcation and Concatenation was not working, its fixed now.
3695
+ * WP Rocket was tested properly to make sure everything is working fine.
3696
+
3697
+ = 0.9.45.5 (25 March 2017) =
3698
+ * WP rocket conflict solved
3699
+ * Cannot set property ‘innerHTML’ of null issue fixed
3700
+
3701
+ = 0.9.45.3 (21 March 2017) =
3702
+ * Post 0.9.45 bugs fixed and released as an urgent update.
3703
+
3704
+ = 0.9.45.1 (19 March 2017) =
3705
+ * Post 0.9.45 bugs fixed and released as an urgent update.
3706
+
3707
+ = 0.9.45 (18 March 2017) =
3708
+ * View more details at https://ampforwp.com/0-9-45-released-compatibility-rtl-53rd-update/
3709
+ * W3Total cache compatibility added
3710
+ * RTL Support added for Right-to-Left language websites.
3711
+ * Comments Pagination feature added
3712
+ * WP-Rocket Compatibility added
3713
+ * WPML Compatibility added
3714
+ * Quantcast analytics support added
3715
+ * ComScore support added
3716
+ * Custom Yoast title support added #685
3717
+ * WooCommerce Shortcode: Allows you to display WooCommerce Products. [amp-woocommerce num=6] will display the 6 products from WooCommerce. [amp-woocommerce num=6 link=noamp] will display 6 products but they will go to non-amp website, if you want to link to AMP version of the page then use [amp-woocommerce num=6 link=amp]
3718
+ * Admin area UX improvements
3719
+ * Adding notifications script in the correct way
3720
+ * Comments now display on frontpage as well.
3721
+ * Re-positioned non-amp Header link control to the right section.
3722
+ * ?nonamp=1 only displays when the Mobile redirection is on
3723
+ * Properly adding iFrame js.
3724
+ * Custom Post type incompatibility fixed
3725
+ * Widgets added to the Custom Frontpage.
3726
+ * Stripping shortcodes from excerpts.
3727
+ * Custom content on static frontpage had over riding issue #687
3728
+ * Option added for controlling number of comments
3729
+ * Welcome page should be shown only if user is “administrator” #696
3730
+ * Digg Digg social share compatibility #694
3731
+ * Removed unnecessary lines from Design 3
3732
+ * Sanitized Archive Description to amp Compatible #659
3733
+ * Author box now displays HTML properly #645
3734
+ * Date added Design-3 in meta #583
3735
+ * Options link was removed from wp-admin tool bar after a feedback from a user.
3736
+ * Footer sub menus layout compatibility.
3737
+
3738
+
3739
+ = 0.9.44 (5 March 2017) =
3740
+ * View more details at https://ampforwp.com/user-experience-52nd-update/
3741
+ * Added Welcome Screen for better User experience. [Enhancement]
3742
+ * Undefined Index debug error resolved [Bug fix]
3743
+ * All in one SEO Support support tested [3rd party compatibility]
3744
+ * Frontpage title in Design 3 is out of the container #644 [Bug fix]
3745
+ * Default Table markup in AMP #643 [Enhancement]
3746
+ * AMP carousel is not working on Frontpage #641 [Bug fix]
3747
+ * Social share .js was getting added even when it was not required #638 [Bug fix]
3748
+ * Search Feature added for Design 1 & Design 2 [Major Improvement]
3749
+ * Accordion script loading issue in Design 3 #634 [Bug fix]
3750
+ * ?nonamp=1 links should be nofollow #622 [Bug fix]
3751
+ * Same Header and Color Scheme are making header elements invisible #629 [Enhancement]
3752
+ * In Search AMP rel canonical was different #631 [Bug fix]
3753
+ * Non-AMP link in Design 3 was not working when mobile redirection was enabled #632 [Bug fix]
3754
+ * Search form text strings are now added in the translation panel #607 [Bug fix]
3755
+ * Load AMP-ads conditionally only if ads are available #609 [Bug fix]
3756
+ * Added compatibility with Custom post type extension. Option to hide/show AMP on all custom post types #587 [Bug fix]
3757
+ * Report a Bug & Request feature links added [Enhancement]
3758
+ * If there was no menu set in Design 3 then all pages were getting displayed. #613 [Bug fix]
3759
+ * The tag Font is disallowed #616 [Validation Improved]
3760
+ * index/noindex separately added for Tags and also for Categories #606 [Enhancement]
3761
+ * Use of undefined constant AMP_QUERY_VAR #596 [Bug fixed]
3762
+ * Logo is not centered in Design 3 #586 [Bug fixed]
3763
+ * Remove defer, a very rare type of defer was getting added #589 [Validation Improved]
3764
+ * Disqus comments iframe had scrolling issues #566 [Bug fixed]
3765
+ * Left side blank gap in the RTL in design 2 #541 [Bug fixed]
3766
+ * Inline Styles not working correctly in Custom AMP Editor #533 [Bug fixed]
3767
+ * Re-save permalinks issues. Flushing rewrites with options saved. #511 [Improvement]
3768
+ * Code review and cleaning of the customizer #404 [Code Cleaning]
3769
+ * Google Search iframe had some header alignment issues in Design 3. #624 - Thank you Leo Osa @leoosa for the contribution! [Bug fixed]
3770
+ * AMP Frontpage + Override AMP Content = Blank page #604 [Bug fixed]
3771
+ * Widget area added on the homepage with an 'AMP Category Blocks' widget. It means you can display multiple category blocks the homepage. This allows you to display complex layouts, even on AMP. [Major Improvement]
3772
+ * Auto-append /amp at the end of internal links in Menu with an option in the Menu section of the options panel #531 [Major Improvement]
3773
+ Reformatting and Minifying of stylesheet [Code Cleaning]
3774
+ * Created a new section for Homepage and moved some controls from other areas to the home section for the better user experience. [User Experience]
3775
+ * Override Homepage Thumbnail size option added. It will give you more control over your thumbnails. [Major Improvement]
3776
+ * New color picker added to change the color of the header elements in the Design 3 to give you better control over the design. [Enhancement]
3777
+ * Extra amp-carousel script loading is now fixed. [Bug fixed]
3778
+ * Crafting of layout code in design 2 and design 3, especially with social icons area. [Code Cleaning]
3779
+ * Design of search form was not clickable in iOS devices #621 [Bug fixed]
3780
+ * Disqus iframe was loading even when there was no disqus name was added in the option. We found that many users might be enabling it without knowing the output and then they seem to forget, which was causing them validation warnings. [Bug fixed]
3781
+
3782
+ = 0.9.43.6 =
3783
+ * View more details at https://ampforwp.com/stability-sprint-3-51st-update/
3784
+ * Typo in the is_home() function fixed
3785
+ * Option to hide/show AMP on all custom post types #587
3786
+ * False detection by Windows defender tool fixed
3787
+ * Conditional tags were not compatible with Advanced AMP ads which were causing some conflicts but is now fixed.
3788
+
3789
+ = 0.9.43.5 =
3790
+ * View more details at https://ampforwp.com/stability-sprint-2-50th-update/
3791
+ * Fixed shortcodes issue in related posts #543
3792
+ * Iframe Scripts Added properly
3793
+ * Proper conditions added for the social section of Design 3
3794
+ * Featured Image issue stretched in Design 2 & 3
3795
+ * Removed extra global $redux_builder_amp;
3796
+ * Custom Logo Dimensions option added #479
3797
+ * Index & NoIndex options added for SEO section. #558
3798
+ * Added URL for rewrite flushing rules in Options
3799
+ * Option to enable and disable the Author area in Design 3#577
3800
+ * Rel Nofollow added in credit link
3801
+ * debug issue solved: fn_offset not defined
3802
+ * debug issue solved: global $post not declared
3803
+ * The word 'ago' is now translatable in design 3
3804
+ * The word 'read next' is translatable now
3805
+ * Tablepress compatibility added #392
3806
+ * Secure API server is now serving through Google Cloud Manager.
3807
+ * Thrive Content builder was displaying twice when the Custom AMP content was on. It was a complex issue which has been solved now.
3808
+ * amp-ad extension.js script was loading if the Ads are not enabled. #598
3809
+ * Social Share Extension Included on Homepage even if we didn't have social icons #599
3810
+ * Installation UX improvement #593
3811
+ * Removed duplicate global variable
3812
+ * Proper OG tags added #588
3813
+ * Proper instructions added for Custom AMP content #471
3814
+
3815
+
3816
+ = 0.9.43.1 =
3817
+ * View more details at https://ampforwp.com/0-9-43-1-released-stability-sprint-1-49th-update/
3818
+ * Emoji in comments leads to AMP errors
3819
+ * Design 1 showing time on archives
3820
+ * Added some space between the archive label.
3821
+ * Lazy loading plugins compatibility #544
3822
+ * Custom header and footer areas
3823
+ * Sticky posts now come on top #564
3824
+ * Footer non-amplink added in design 3 #562
3825
+ * HTML Paragraph tag is shown in the title in category! #518
3826
+
3827
+ = 0.9.42 =
3828
+ * View more details at https://ampforwp.com/design-three-update/
3829
+ * Design 3 was released – Video Overview along with new options and features. View the video overview at: https://www.youtube.com/watch?v=ub1pwskt3Rc [Major Feature]
3830
+ * Ticket #517 Added Upload field into Redux core [3rd party Compatiblity]
3831
+ * Ticket#529 Controls for archive titles added [Improvement]
3832
+ * Ticket #548 Jetpack photon code removed
3833
+
3834
+ = 0.9.41 =
3835
+ * View more details at https://ampforwp.com/disqus-comments-in-amp/
3836
+ * Disqus Comments in AMP Support Added [New Feature] - This feature can be enabled from Dashboard > AMP Options > Disqus Comments
3837
+ * AMP WooCommerce supported tag was missing after the last update. [Bug fix]
3838
+ * Homepage & Related Posts was displaying private and protected posts, which is now fixed [Bug fix]
3839
+ * Next previous links added in Design 1 [Enhancement]
3840
+ * Invalid Post Time displaying in the homepage of Design 1 [Bug fix]
3841
+ * Twitter share now includes the twitter handle of the author with setting in options [Enhancement]
3842
+ * Emoji in comments leads to AMP errors was fixed [Bug fix]
3843
+ * Date are now displayed on archives in Design 1 [Enhancement]
3844
+ * When RTL enabled logo merges with nav bar was fixed [Bug fix]
3845
+ * Jetpack Photon compatibility added [3rd Party Compatibility]
3846
+
3847
+ = 0.9.40 =
3848
+ * View more details at https://ampforwp.com/0-9-40-released-biggest-stability-update/
3849
+ * Proper endpoints added [Improvement]
3850
+ * Flush Rewrites properly [Improvement]
3851
+ * REL Canonical properly getting added. [Improvement]
3852
+ * Proper Frontpage Canonical added [Improvement]
3853
+ * Added Base name support for categories and tags [Improvement]
3854
+ * Redirection of excluded post solved. [Bug fix]
3855
+ * Archives properly redirecting to the right URL [Bug fix]
3856
+ * Homepage redirection solved [Bug fix]
3857
+ * Plusone tag is stripped properly. [Validation Issue fixed]
3858
+ * Archives are now clickable. [Improvements]
3859
+ * WP_Query filter added for better customizability of Homepage loop. [Better Customizations]
3860
+ * Social share boost plugin compatibility. [3rd party Customizations]
3861
+ * Removed H1 from the frontpage even if it is not available. [Improvement]
3862
+ * H3 instead of H1 for Site title. So there is only one H1 per page. [SEO Improvement]
3863
+
3864
+ = 0.9.38 =
3865
+ * View full details at https://ampforwp.com/google-tag-manager-for-amp/
3866
+ * Google Tag manager included [New feature]
3867
+ * Iframe max-width added [Improvement]
3868
+ * Paginated pages have different titles now. [Bug fix]
3869
+
3870
+ = 0.9.37 =
3871
+ * View full details at https://ampforwp.com/category-tags-archive-support-added/
3872
+ * Debug issues solved [Bug fix]
3873
+ * Remove Extra styling added by other Themes/ Plugins [3rd party themes and plugin Support]
3874
+ * Category, Tags & Archive Support with titles added [Enchancement]
3875
+ * Archive Title support added [Enchancement]
3876
+ * There were some issues with attachments [Bug fix]
3877
+ * removed ? from amp url's [Improvement]
3878
+ * Mobile redirection for Archives added and 404 redirections removed for archives [Improvement]
3879
+ * View non-amp version now properly redirects to the normal version. #415 [Bug fix]
3880
+ * Added an option to turn off AMP support for Homepage. [Enchancement]
3881
+ * Too many redirects issue on homepage is fixed #435 [Improvement]
3882
+ * Spell check and G tags are removed for thrive & Spell check compatibility [Better Validation]
3883
+ * If image is not available in gravatar fixed, it was throwing an error #365 #327 [Improvement]
3884
+ * Comment anchor link changed for simplecomment button files in both designs [Improvement]
3885
+ * Redirection Loop issue fixed [Bug fix]
3886
+ * Shortcodes were visible in excerpt, it's fixed now. [Improvement]
3887
+ * Defer onload by other plugins was causing issues #431 [Better Validation & 3rd party support]
3888
+ * Improved Sessions [Improvement]
3889
+ * Advnaced Settings panel was created for better user experience. [Improvement]
3890
+ * Spell check tag was causing validation issues. [Better Validation & 3rd party support]
3891
+ * RTL issue fixed #454 [Bug fixed]
3892
+
3893
+ = 0.9.36 =
3894
+ * Full details at https://ampforwp.com/0-9-36-released-stability-update-43rd-update/
3895
+ * Redux Core Update. Better compatibility with the Salient theme and Themeforest themes & plugins using redux framework in their core, which makes the plugin much stable. [Huge Improvements]
3896
+ * Hide advertisement section if advance ads plugin is active. [Better User experience]
3897
+ * Ultimate Social Media PLUS Plugin Compatibility (Link) [3rd Party plugin Compatibility & Better Validation]
3898
+ * Launch Post Builder button added. One of the important feature called ‘Post Builder’, that is drag and drop post builder was somewhere hidden in the customizer, so positioned it for better visibility from users. [Better UX]
3899
+
3900
+ = 0.9.35 =
3901
+ * Full details at https://ampforwp.com/page-builder-realtime-preview-3rd-party-plugins-compatibility/
3902
+ * Customizer page builder (Design Manager) was not showing real-time preview, we have fixed this issue properly [Bug fix]
3903
+ * Attachment page was having the wrong endpoint. [Bug fix]
3904
+ * Fb:like div has href, showfaces, send and action tag, which was against validation [Validation Improvement]
3905
+ * A plugin (Spam Protection by CleanTalk, no Captcha Anti-Spam) was forcefully adding script into the AMP version. [3rd party Compatibility]
3906
+ * Lang attributes were added [Enhancement]
3907
+ * The tag like was disallowed in the AMP [Validation Improvement]
3908
+ * We did some more testing with Visual Composer & AMP [3rd party Compatibility]
3909
+ * AMP on Pages option was not working in some cases. [Bug fix]
3910
+ * Disable comment button when comments were disabled. This was fixed by @lofesa and was sent as a pull request. Thank you Lofesa!
3911
+ * g:plusone tag was not getting removed properly. [Validation Improvement]
3912
+ * Thrive headline optimizer was having issues in AMP version. [Validation Improvement]
3913
+ * Structured Data Image width issue solved [Enhancement]
3914
+ * BJ Lazy Load was having issues, we have added a fix which will make this plugin compatible with the AMP. [3rd party Compatibility & Validation Improvement]
3915
+ * imageanchor=”1″ was getting added by some 3rd party plugin, this was fixed.[Validation Improvement]
3916
+
3917
+ = 0.9.34 =
3918
+ * Newspaper theme by Tagdiv was having issues, we have fixed this one.
3919
+
3920
+ = 0.9.33 [15th Jan 2017] =
3921
+ * Full details at https://ampforwp.com/debug-errors-shortcodes/
3922
+ * Mobile was not working with Newspaper theme by Tagdiv [Bugfix]
3923
+ * Debug errors fixed, Code is now much cleaner.
3924
+ * New rewrite rules for homepage pagination. It had some paginated URLs with wrong amphtml tag.
3925
+ * Extra analytics file was loading. Better compatibility with Yoast & Monster analytics.
3926
+ * Properly removes AMP if turned off from Post panel
3927
+ * z-index position improved on Sticky Social bar
3928
+ * Better compatibility with shortcodes.
3929
+ * Divi Standard Layouts Compatibility
3930
+ * Properly Hide AMP posts if excluded. #367
3931
+ * Mobile redirection was causing loop issues which are now fixed.
3932
+ * Some plugins were loading in core AMP js file, which was causing the issues, which is now fixed. [Better Validation]
3933
+ * onclick was getting added in the links on AMP version. Issue fixed. [Better Validation]
3934
+ * thrive_headline tag was getting added in the Title tag which was causing validation issues. Fixed. [Better Validation]
3935
+ * Some interactive plugins were using place, state, city and imap tags which are now fixed. [Better Validation]
3936
+
3937
+ = 0.9.32 [7th Jan 2017] =
3938
+ * Full details at https://ampforwp.com/first-wave-of-polishing-in-2017/
3939
+ * Rel=canonical issue fixed: AMP URL redirect to the normal URL #293 & #332.
3940
+ * Paginated pages on homepage redirect to homepage URL #335
3941
+ * Title of the page should be displayed on the FrontPage #358
3942
+ * Thrive Builder AMP Validation Compatibility, so it will be validated properly in AMP.
3943
+ * Twitter Sharing improved so it gets the data properly #341
3944
+ * Option to change the number of Related Posts #290
3945
+ * Validation errors due to rel="canonical" was missing on some pages
3946
+ * Comment button displays even if the comments are not available
3947
+ * Threaded comments were duplicating, so that issue is solved and added proper CSS for it.
3948
+ * Minor issue with Jetpack Comments fixed.
3949
+ * Missing amp-social-share.js on front page fixed #372
3950
+ * Minor improvements to Title and description tags.
3951
+ * Analytics Script was loading twice when Glue was active.
3952
+ * Page specific class added for better customization compatibility #377
3953
+ * Inline Style support added Fixed #356
3954
+ * Bugs fixed in Email notification pointer
3955
+
3956
+ = 0.9.31 [2nd Jan 2017] =
3957
+ * Proper Details at https://ampforwp.com/amp-0-9-31-released-installation-user-experience/
3958
+ * Proper Condition added for the scripts to load in Frontpage.php
3959
+ * Rel canonical properly added for front pages
3960
+ * 404 and Archive page Mobile redirection code refined
3961
+ * User Experience Improvement: Installation process was improved
3962
+
3963
+ = 0.9.3 [31st December 2016] =
3964
+ * Proper Details at https://ampforwp.com/custom-amp-content-editor/
3965
+ * Custom AMP Editor - Which allows you to override your Content that you had written in Post or page, so you can add the different content just for AMP.
3966
+ * FrontPage had some validation issues. [Bug fix]
3967
+ * Related posts in Design 1 we're redirecting to 404 fixed [Bug fix]
3968
+
3969
+ = 0.9.2.2 [27th December 2016] =
3970
+ * Proper Details at https://ampforwp.com/polishing-user-experience-improvements/
3971
+ * Made the Options panel user-friendly
3972
+ * Social Share on frontpage issue fixed.
3973
+ * Readme.txt made user-friendly.
3974
+ * Archive option removed and some UI improvements
3975
+ * Single was not displaying the Title
3976
+ * 'Type is not allowed' [Validation issue fixed]
3977
+ * noshade tag Validation issue fixed
3978
+
3979
+ = 0.9.2.1 [24th December 2016] =
3980
+ * Proper Details at https://ampforwp.com/step-towards-fixing-amp-validation-errors/
3981
+ * Disabled the Tags and Categories support for AMP for better validation until we find a better solution.
3982
+ * Mobile redirection bug fixed, It was continuously redirecting to the same page [Bug fix]
3983
+ * trailingslashit added to make sure we have proper url for Mobile redirection [Bug fix]
3984
+ * In content AD overlapping the content issue fixed
3985
+
3986
+ = 0.9.2 [23th December 2016] =
3987
+ * Proper Details at https://ampforwp.com/mobile-redirection/
3988
+ * AMP Mobile Redirection Feature added. It can be turned on from Dashboard > General and then Mobile Redirection. [New Feature]
3989
+ * Archive title and description added [Improvement]
3990
+ * Improved the Speed of the AMP version #321 [Improvement]
3991
+ * Anchor link was not closing fixed #328 [Bug Fix]
3992
+ * Typo in Trailingslashit function which resulted in some issues in the Homepage version [Bug Fix]
3993
+
3994
+ = 0.9.1.2 [20th December 2016] =
3995
+ * Proper Details at https://ampforwp.com/new/
3996
+ * DoubleClick Support
3997
+ * Custom Post Type Support
3998
+ * Ratings Support
3999
+ * Comments Gaping fix
4000
+ * Custom Excerpt code
4001
+ * Better Compatibility with Yoast SEO plugin
4002
+ * AMP Validation error in Design 1 Fixed
4003
+ * Proper Homepage title & Description with Yoast SEO plugin issue fixed
4004
+ * Design -1 Excerpt too big for mobile devices, Fixed
4005
+ * Advertisement support on Design 1
4006
+ * Link to Tags & Categories were having some issues.
4007
+ * AMP looking bad on big devices
4008
+ * AMP validation Improvement: Lightbox plugins compatibility
4009
+ * Huge Progress in AMP Validation Errors: Strip unwanted codes and tags from wp_footer for better compatibility with Plugins
4010
+ * Page Performance: Removed default Google font loading
4011
+ * Page Performance: DNS Prefetch tag added for faster DNS Handshake
4012
+
4013
+ = 0.9.1 [16th December 2016] =
4014
+ * Proper Details at https://ampforwp.com/new/
4015
+ * PHP7 Compatibility
4016
+ * Pagination URLs (Prev & Next) was going to 404 ( #244 | #251 )
4017
+ * Custom CSS not working in Design one (#249)
4018
+ * Enhanced the translation panel by adding Textarea from Redux, which means that we're able to allow HTML in footer like before (#260)
4019
+ * How to remove “Powered by WordPress” from Design-1 of AMP ( #264 )
4020
+ * Non-amp Homepage support added (#267)
4021
+ * using get_avatar() (#259)
4022
+ * Validation issue fixed: The attribute 'rel' may not appear in tag 'div' (#268)
4023
+ * Validation Issue fixed: Script Tag removed from the content.
4024
+ * Featured image in Design 1 in single #261
4025
+ * After Fresh installation - a save is required Fixed
4026
+ * Excerpt length controlled
4027
+ * Design One has thumbnails on the Homepage
4028
+ * Non-AMP link goes to the wrong page, issue fixed.
4029
+ * Archive pages were broken, fixed.
4030
+ * Option to Enable & Disable the Next/Previous links in Single
4031
+ * WhatsApp sharing not working, issue fixed.
4032
+ * Category Taxonomy has extra ':' in the word.
4033
+ * The word 'Ago' is now translatable.
4034
+ * Yoast SEO with AMP compatibility issue fixed.
4035
+ * Several Minor Polishing in the code
4036
+ * Footer Ad gets covered by Sticky Social Icons (#269)
4037
+ * Smaller image size when “image caption” is used in Design-2 (#263)
4038
+ * Footer ad with Sticky Social bar issue fix
4039
+ * Checked with WordPress 4.7
4040
+ * Ad #1 was messing up with the title, issue fixed.
4041
+ * Compatibility improved with AMP WooCommerce.
4042
+
4043
+ = 0.9 =
4044
+ * Proper Details at https://ampforwp.com/amp-pagebuilder/
4045
+ * Drag & Drop Page builder Added: You can easily modify the look of the AMP page using this feature
4046
+ * 100% Yoast Compatible , Now no need to have additionally Glue Installed
4047
+ * 100% completed Translation panel, Now absolutely anything on page is translated
4048
+ * Added Option to turn on/off Page Support
4049
+ * Styling for Tags was Corrected
4050
+ * Made changes to these sections to reflect in the new Design manager : Related Posts, Footer
4051
+ * Default Image alignment styling added
4052
+ * Added Option to turn on/off Page Support
4053
+ * Related Posts Now use Custom Excerpt if it Exists
4054
+ * Now AMP pages wont have Validation errors because of 'rel' attribute in 'div' Tag or 'onclick' attribute in 'a' Tag
4055
+ * <pre> Tag styling issue fixed for AMP pages
4056
+ * Frontpage (Homepage) Compatibility with AMP which means better validation of front page.
4057
+ * WooCommerce Support Added https://wordpress.org/plugins/amp-woocommerce/ (for E-Commerce)
4058
+ * 2 New Designs added
4059
+ * SEO Panel Added
4060
+
4061
+ = 0.8.8 =
4062
+ * Proper Details at https://ampforwp.com/amp-0-8-8-released-translation-panel/
4063
+ * Translation Panel added. You can now easily translate the AMP version from the backend without any complications.
4064
+ * Badge Tag was throwing Validation error
4065
+ * Plusone tag validation error was fixed
4066
+ * Time tag was validation error was fixed
4067
+ * User experience for Mobile devices was improved
4068
+ * Meta info was messing up in smaller devices, it was fixed as well.
4069
+ * Internal AMP linking added for Categories and Tags
4070
+ * Future errors for AMP ads was fixed
4071
+ * Blockquote styling added
4072
+ * “Please Activate parent Plugin settings” added for better User Experience.
4073
+ * Related Post Ux improvement
4074
+ * Plugin version added in Footer source code for better debugging
4075
+ * Added Support for Default WordPress Image alignment
4076
+ * New action hooks added in index page
4077
+ * Featured Image Size options added
4078
+
4079
+ = 0.8.7 =
4080
+ * Proper Details at https://ampforwp.com/amp-0-8-7/
4081
+ * added option to enable/disable AMP on Archive pages (Ticket #188)
4082
+ * Solved 404 on Related Posts (Ticket #178 )
4083
+ * Related posts by either categories or Tags(Ticket #179)
4084
+ * added a link to menu Section from the AMP Options page(Ticket #190)
4085
+ * Added Support for Piwik Analytics(Ticket #163)
4086
+ * Added Support for Segment.com Analytics(Ticket #50)
4087
+ * Added a switch for hiding Non-Amp page link from Footer.( Ticket #189)
4088
+ * Added an Option that strips Users URL from Comments Section(Ticket #180)
4089
+ * Fixed stripping <date> tags from the content , Since it was preventing validation – amp-img issues fixed
4090
+ * UX Improved for every section of AMP Options page
4091
+ * Added Settings button on plugin page
4092
+ * Related posts switch added
4093
+ * Removed carousel.js
4094
+
4095
+
4096
+ = 0.8.6.1 =
4097
+ * Date Tag fix
4098
+ * Few validation issues after 0.8.6 were fixed (Frontpage amp-img strip issue fixed)
4099
+
4100
+ = 0.8.6 =
4101
+ * Proper Details at https://ampforwp.com/amp-0-8-6-released-related-posts-comments/
4102
+ * Related Posts
4103
+ * Post Comments
4104
+ * WhatsApp sharing button Your visitors can now easily share the content over the whatsapp.
4105
+ * Validation issue fixed by All In One Schema.org Rich Snippets plugin
4106
+ * Removed Google Fonts loading for Performance
4107
+ * New relic Support
4108
+ * Class added to ‘View Non-AMP Version’ text
4109
+ * Archives Structured Data issue fixed
4110
+ * Some instances img tags converted into amp-img automatically.
4111
+
4112
+
4113
+ = 0.8.5.3 =
4114
+ * Canonical issue fixed for Post
4115
+
4116
+ = 0.8.5.2 =
4117
+ * Canonical issue fixed for FrontPage
4118
+
4119
+ = 0.8.5.1 =
4120
+ * Proper Details at https://ampforwp.com/new/
4121
+ * Validation issue fixed: 'Value' tag
4122
+ * Validation issue fixed: The attribute 'contenteditable' may not appear in tag 'a'.
4123
+ * Validation issue fixed: Table markup
4124
+ * Validation issue fixed: nowrap and misc tags
4125
+ * New Relic Support
4126
+ * Tags on off option
4127
+ * Canonical and correct AMP html Redirect issues Solved
4128
+ * NextGEN Gallery Validation Support Added
4129
+
4130
+ = 0.8.5 =
4131
+ * Proper Details at https://ampforwp.com/the-0-4-compatibility/
4132
+ * AMP 0.4 Compatibility Check
4133
+ * Even better Structured Data Validation, Once in for all!
4134
+ * Structured Data Options to eliminate Validation errors
4135
+ * AMP Page Exclude option
4136
+
4137
+ = 0.8.4 =
4138
+ * Proper Details at https://ampforwp.com/blog/structured-data-validation/
4139
+ * Structured Data Validation
4140
+ * Navigation Text Change
4141
+ * Inline Style Validation
4142
+ * Form Validation
4143
+ * Frontpage shows the amphtml rel twice fixed
4144
+ * Facebook Sharing not working
4145
+
4146
+ = 0.8.3 =
4147
+ * Prefix added in the Content filter
4148
+ * Extra space after quote in Ads
4149
+
4150
+ = 0.8.2 =
4151
+ * Proper Details at https://ampforwp.com/blog/the-custom-frontpage/
4152
+ * Custom AMP FrontPage
4153
+ * Featured Image
4154
+ * New Mobile Friendly Advertisement sizes
4155
+ * Single Post Pagination Option
4156
+ * RTL Support
4157
+ * Notifications
4158
+ * Gaping if the Meta was turned off.
4159
+ * Analytics was not fetching the user id properly.
4160
+ * Page was not using the post template along with the AD support.
4161
+ * AMP Endpoint support for Paged when the front page is active.
4162
+ * UI improvement of Admin panel
4163
+ * Few Validation issues fixed
4164
+
4165
+ = 0.8.1 =
4166
+ * Warning: Cannot modify header information error fixed
4167
+ * Validation issue fixed. KK Star Plugin compatible.
4168
+ * Gaping in the smaller screens fixed
4169
+
4170
+ = 0.8 =
4171
+ * Proper Details at https://ampforwp.com/blog/the-change/
4172
+ * Plugin was re-written from scratch and is now built on top of default AMP plugin by Automattic but giving you the same features of the original plugin.
4173
+ * 99.5% Validation issues were fixed.
4174
+ * Page builder & Shortcodes Compatibility Support Added
4175
+ * Conflict with JSON API
4176
+ * Carousel support for Gallery
4177
+ * Better Image stretching and resizing
4178
+ * Youtube Video Embed Support
4179
+ * Vine Embed Support
4180
+ * Twitter oembed Support
4181
+ * Instagram Embed Support
4182
+ * Facebook Video Embed Support
4183
+ * Better Future Compatibility
4184
+
4185
+ = 0.7.7 =
4186
+ * Proper Details at https://ampforwp.com/blog/amp-0-7-7/
4187
+ * Big Validation Error fix Update
4188
+ * Disable AMP support on specific Pages and Posts
4189
+ * Option to disable the Post meta from the Single
4190
+ * Footer Credits and Copyright Text Option
4191
+ * New options for Social Sharing Bar in Single
4192
+ * Jetpack Social & Related Sharing Issue fixed
4193
+ * Gaping in footer if the Sticky bar is enabled
4194
+ * Text domain added on few strings
4195
+
4196
+ = 0.7.6 =
4197
+ * Google Adsense Support Added with AMP-Ad
4198
+ * Wrong Homepage rel amphtml bug fixed
4199
+
4200
+ = 0.7.5 =
4201
+ * Google Analytics Support Added
4202
+ * Logo Support Added. If the logo is disabled, then the Title should be activated.
4203
+ * Color Scheme Feature Added
4204
+ * User friendly Options Panel Added
4205
+ * iFrame support Added
4206
+ * Few Minor Bugs Fixed
4207
+
4208
+ = 0.7.1 =
4209
+ * Bug #24 (Github) fixed
4210
+ * Strip Style tags for faster & better validation
4211
+ * Bug #21 (Github) fixed
4212
+
4213
+ = 0.7 =
4214
+ * Canonical Improved
4215
+ * Navigation Validation bug fixed
4216
+ * Two more validation bugs fixed ('role' and 'tabindex' attribute)
4217
+ * Featured image automatically hides if it is not present
4218
+ * Validation issues in the images of the post's the_content
4219
+
4220
+ = 0.6 =
4221
+ * Improved Navigation Menu
4222
+ * Search Console errors fixed
4223
+ * Social Sharing option
4224
+ * Pages support
4225
+ * Force redirection for mobile users removed and many other bug fixes
4226
+
4227
+ = 0.5 =
4228
+ * Added AMP Markup for Google Structured data. This will fix the issues in Webmaster tools.
4229
+
4230
+ = 0.4 =
4231
+ * Support of Custom menu added for AMP enabled sites
4232
+
4233
+ = 0.3 =
4234
+ * Support of amp-img added in single posts
4235
+ * minor css bug fixed
4236
+
4237
+ = 0.2.5 =
4238
+ * Minor bugs fixed
4239
+ * ?mobile & ?nomobile is now ?amp & ?noamp
4240
+
4241
+ = 0.2 =
4242
+ * White Screen of death issue fixed
4243
+ * Plugin URI updated
4244
+
4245
+ = 0.1 =
4246
+ * Initial version
classes/ampforwp-fields.php CHANGED
@@ -1,9 +1,9 @@
1
- <?php
2
- if ( ! defined( 'ABSPATH' ) ) {
3
- exit;
4
- }
5
- global $amp_ux_fields;
6
- require_once AMPFORWP_PLUGIN_DIR."classes/class-ampforwp-fields.php";
7
- $ampforwp_fields = new AMPforWP_Fields();
8
- $ampforwp_fields->createFields($amp_ux_fields);
9
  ?>
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+ global $amp_ux_fields;
6
+ require_once AMPFORWP_PLUGIN_DIR."classes/class-ampforwp-fields.php";
7
+ $ampforwp_fields = new AMPforWP_Fields();
8
+ $ampforwp_fields->createFields($amp_ux_fields);
9
  ?>
classes/class-ampforwp-embedly-sanitizer.php CHANGED
@@ -1,52 +1,52 @@
1
- <?php
2
- use AMPforWP\AMPVendor\AMP_Base_Sanitizer;
3
- use AMPforWP\AMPVendor\AMP_DOM_Utils;
4
- if ( ! defined( 'ABSPATH' ) ) {
5
- exit;
6
- }
7
- /**
8
- * Converts embedly-cards to <amp-embedly-card>
9
- */
10
- class AMPforWP_Embedly_Sanitizer extends AMP_Base_Sanitizer {
11
- private $embedly_cards = array();
12
- private static $script_slug = 'amp-embedly-card';
13
- private static $script_src = 'https://cdn.ampproject.org/v0/amp-embedly-card-0.1.js';
14
- public function sanitize() {
15
- $body = $this->get_body_node();
16
- $xpath = new DOMXPath($this->dom);
17
- $class_name = 'embedly-card';
18
- $blockquotes = $xpath->query("//*[contains(@class,'$class_name')]");
19
- foreach($blockquotes as $embedly_card){
20
- $this->replace_with_amp_embedly_card($embedly_card);
21
- }
22
- if(count($this->embedly_cards) > 0){
23
- $this->did_convert_elements = true;
24
- }
25
- }
26
- function replace_with_amp_embedly_card ($embedly_card){
27
- $medias = $embedly_card->getElementsByTagName('a');
28
- if($medias->length > 0){
29
- $media = $medias->item(0);
30
- $href = $media->getAttribute('href');
31
- $tag = $this->create_amp_embedly_card($href);
32
- $this->embedly_cards[] = $tag; // add it to array
33
- $embedly_card->parentNode->replaceChild( $tag, $embedly_card);
34
- }
35
- }
36
- function create_amp_embedly_card($href){
37
- $attrs = array(
38
- 'data-url' => $href,
39
- 'width' => 100,
40
- 'height'=> 50,
41
- 'layout' => 'responsive'
42
- );
43
- $attrs = ampforwp_amp_consent_check( $attrs );
44
- return AMP_DOM_Utils::create_node($this->dom, 'amp-embedly-card', $attrs);
45
- }
46
- public function get_scripts() {
47
- if ( ! $this->did_convert_elements ) {
48
- return array();
49
- }
50
- return array( self::$script_slug => self::$script_src );
51
- }
52
  }
1
+ <?php
2
+ use AMPforWP\AMPVendor\AMP_Base_Sanitizer;
3
+ use AMPforWP\AMPVendor\AMP_DOM_Utils;
4
+ if ( ! defined( 'ABSPATH' ) ) {
5
+ exit;
6
+ }
7
+ /**
8
+ * Converts embedly-cards to <amp-embedly-card>
9
+ */
10
+ class AMPforWP_Embedly_Sanitizer extends AMP_Base_Sanitizer {
11
+ private $embedly_cards = array();
12
+ private static $script_slug = 'amp-embedly-card';
13
+ private static $script_src = 'https://cdn.ampproject.org/v0/amp-embedly-card-0.1.js';
14
+ public function sanitize() {
15
+ $body = $this->get_body_node();
16
+ $xpath = new DOMXPath($this->dom);
17
+ $class_name = 'embedly-card';
18
+ $blockquotes = $xpath->query("//*[contains(@class,'$class_name')]");
19
+ foreach($blockquotes as $embedly_card){
20
+ $this->replace_with_amp_embedly_card($embedly_card);
21
+ }
22
+ if(count($this->embedly_cards) > 0){
23
+ $this->did_convert_elements = true;
24
+ }
25
+ }
26
+ function replace_with_amp_embedly_card ($embedly_card){
27
+ $medias = $embedly_card->getElementsByTagName('a');
28
+ if($medias->length > 0){
29
+ $media = $medias->item(0);
30
+ $href = $media->getAttribute('href');
31
+ $tag = $this->create_amp_embedly_card($href);
32
+ $this->embedly_cards[] = $tag; // add it to array
33
+ $embedly_card->parentNode->replaceChild( $tag, $embedly_card);
34
+ }
35
+ }
36
+ function create_amp_embedly_card($href){
37
+ $attrs = array(
38
+ 'data-url' => $href,
39
+ 'width' => 100,
40
+ 'height'=> 50,
41
+ 'layout' => 'responsive'
42
+ );
43
+ $attrs = ampforwp_amp_consent_check( $attrs );
44
+ return AMP_DOM_Utils::create_node($this->dom, 'amp-embedly-card', $attrs);
45
+ }
46
+ public function get_scripts() {
47
+ if ( ! $this->did_convert_elements ) {
48
+ return array();
49
+ }
50
+ return array( self::$script_slug => self::$script_src );
51
+ }
52
  }
classes/class-ampforwp-fields.php CHANGED
@@ -1,476 +1,476 @@
1
- <?php
2
- if ( ! defined( 'ABSPATH' ) ) {
3
- exit;
4
- }
5
- /**
6
- *
7
- */
8
- class AMPforWP_Fields
9
- {
10
- private $output = '';
11
- private $class = '';
12
- private $id = '';
13
- private $title = '';
14
- private $element_class = '';
15
- private $parent_class = '';
16
- private $desc = '';
17
- private $default = '';
18
- private $selected = '';
19
- private $data_secure = '';
20
- private $data_url = '';
21
- private $options = array();
22
- private $required = array();
23
-
24
- public function createFields($fields_array){
25
- if ( is_array($fields_array) ) {
26
- foreach ($fields_array as $field_array ) {
27
- $this->setField($field_array['field_type'], $field_array['field_data']);
28
- }
29
- }
30
- }
31
- public function setField( $type = '', $fields=array() ){
32
- if( '' == $type ) {
33
- return false;
34
- }
35
- if( !empty($fields) ){
36
- if ( isset($fields['class']) ) {
37
- if ( $type != 'section_start' && $type != 'section_end' && $type != 'main_section_start' && $type != 'main_section_end' && $type != 'sub_section_start' && $type != 'sub_section_end') {
38
- $fields['class'] .= ' amp-ux-field';
39
- }
40
- $this->class = $fields['class'];
41
- }
42
- else{
43
- $this->class = '';
44
- }
45
- if ( isset($fields['parent-class']) ) {
46
- $this->parent_class = $fields['parent-class'];
47
- }
48
- else{
49
- $this->parent_class = '';
50
- }
51
- if ( isset($fields['title']) ) {
52
- $this->title = $fields['title'];
53
- }
54
- else{
55
- $this->title = '';
56
- }
57
- if ( isset($fields['element-class']) ) {
58
- $this->element_class = $fields['element-class'];
59
- }
60
- else{
61
- $this->element_class = '';
62
- }
63
- if ( isset($fields['id']) ) {
64
- $this->id = $fields['id'];
65
- }
66
- else{
67
- $this->id = '';
68
- }
69
- if ( isset($fields['default']) ) {
70
- $this->default = $fields['default'];
71
- }
72
- else{
73
- $this->default = '';
74
- }
75
- if ( isset($fields['required']) ) {
76
- $this->required = $fields['required'];
77
- }
78
- else{
79
- $this->required = '';
80
- }
81
- if ( isset($fields['options']) && is_array($fields['options']) ){
82
- $this->options = $fields['options'];
83
- }
84
- else{
85
- $this->options = '';
86
- }
87
- if ( isset($fields['data-href']) ) {
88
- $this->data_href = ' data-href='.esc_url($fields['data-href']);
89
- }
90
- else{
91
- $this->data_href = '';
92
- }
93
- if ( isset($fields['data-url']) ) {
94
- $this->data_url = ' data-url='.esc_url($fields['data-url']);
95
- }
96
- else{
97
- $this->data_url = '';
98
- }
99
- if ( isset($fields['data-secure']) ) {
100
- $this->data_secure = ' data-secure='.esc_attr($fields['data-secure']);
101
- }
102
- else{
103
- $this->data_secure = '';
104
- }
105
- if ( isset($fields['data-text']) ) {
106
- $this->data_text = ' data-text='.esc_attr($fields['data-text']);
107
- }
108
- else{
109
- $this->data_text = '';
110
- }
111
- if ( isset($fields['desc']) ) {
112
- $this->desc = $fields['desc'];
113
- }
114
- else{
115
- $this->desc = '';
116
- }
117
- }
118
- // Select
119
- if ( 'select' == $type ) {
120
- $this->ampforwp_field_select($fields);
121
- //$this->loading();
122
- }
123
- // Text
124
- if ( 'text' == $type ) {
125
- $this->ampforwp_field_text($fields);
126
- }
127
- // Checkbox
128
- if ( 'checkbox' == $type ) {
129
- $this->ampforwp_field_checkbox($fields);
130
- }
131
- // Upload
132
- if ( 'media' == $type ) {
133
- $this->ampforwp_field_media($fields);
134
- }
135
- // Color
136
- if ( 'color' == $type ) {
137
- $this->ampforwp_field_color($fields);
138
- }
139
- // Switch
140
- if ( 'switch' == $type ) {
141
- $this->ampforwp_field_switch($fields);
142
- }
143
- // Notification
144
- if ( 'notification' == $type ) {
145
- $this->ampforwp_field_notification($fields);
146
- }
147
- // Loader
148
- if ( 'loader' == $type ) {
149
- $this->ampforwp_field_loader($fields);
150
- }
151
- // Label
152
- if ( 'footer' == $type ) {
153
- $this->ampforwp_field_footer($fields);
154
- }
155
- // Main section
156
- if ( 'main_section_start' == $type ) {
157
- $this->main_section_start($fields);
158
- }
159
- if ( 'main_section_end' == $type ) {
160
- $this->main_section_end($fields);
161
- }
162
- // Section Start
163
- if ( 'section_start' == $type ) {
164
- $this->section_start($fields);
165
- }
166
- // Section end
167
- if ( 'section_end' == $type ) {
168
- $this->section_end($fields);
169
- }
170
- // Sub Section Start
171
- if ( 'sub_section_start' == $type ) {
172
- $this->sub_section_start($fields);
173
- }
174
- // Sub Section end
175
- if ( 'sub_section_end' == $type ) {
176
- $this->sub_section_end($fields);
177
- }
178
- // Sub Section end
179
- if ( 'heading' == $type ) {
180
- $this->ampforwp_field_heading($fields);
181
- }
182
- }
183
-
184
- public function ampforwp_field_heading($fields = array()){
185
- echo '<div class="ux-field-container amp-ux-heading"><h2>'.esc_html($this->title).'</h2></div>';
186
- }
187
- public function ampforwp_field_loader($fields = array()){
188
- echo '<div class="amp-ux-loader"><div class="amp-ux-loading"></div><div id="amp-ux-loading-saved" class="hide"></div><span class="hide amp-ux-check"></span></div>';
189
- }
190
-
191
- // Main Section
192
- public function main_section_start($fields = array() ) {
193
- if ( isset($fields['class']) ) {
194
- $this->class = $fields['class'];
195
- }
196
- if ( isset($fields['id']) ) {
197
- $this->id = $fields['id'];
198
- }
199
- echo '<div id="'.esc_attr($this->id).'" class="'.esc_attr($this->class).'">';
200
- }
201
- public function main_section_end($fields = array() ) {
202
- echo '</div>';
203
- }
204
- // Section Start
205
- public function section_start($fields = array()){
206
- if ( isset($fields['class']) ) {
207
- $this->class = $fields['class'];
208
- }
209
- if ( isset($fields['id']) ) {
210
- $this->id = $fields['id'];
211
- }
212
- $dcls = 'drawer';
213
- if($this->class=='ampforwp-ux-sub-section'){
214
- $dcls = '';
215
- }
216
- echo '<div id="'.esc_attr($this->id).'" class="'.esc_attr($dcls).' '.esc_attr($this->class).' amp-ux-section-container">
217
- <div class="amp-fields-content">';
218
- }
219
- // Sub Section Start
220
- public function sub_section_start($fields = array()){
221
- if ( isset($fields['class']) ) {
222
- $this->class = $fields['class'];
223
- }
224
- if ( isset($fields['id']) ) {
225
- $this->id = $fields['id'];
226
- }
227
- $hide = '';
228
- if ( isset($fields['default']) && $fields['default']==0) {
229
- $hide = 'hide';
230
- }
231
- $data_href = "";
232
- if ( isset($fields['data-href'])) {
233
- $data_href = 'data-href='.esc_attr($fields['data-href']);
234
- }
235
-
236
- echo '<div id="'.esc_attr($this->id).'" class="'.esc_attr($this->class).' '.esc_attr($hide).'" '.esc_attr($data_href).'>';
237
- if(isset($fields['closable']) && $fields['closable']==1){
238
- echo '<div class="ampforwp-ux-closable '.esc_attr($this->id).'">X</div>';
239
- }
240
- }
241
- // Section End
242
- public function sub_section_end(){
243
- echo '</div>';
244
- }
245
- // Section End
246
- public function section_end(){
247
- echo '</div></div>';
248
- }
249
- public function ampforwp_field_select($fields){
250
- $required = $hide = $hrf_id = '';
251
- $data_num = 1;
252
- if ( !empty($this->required) ) {
253
- $required = 'required='.esc_attr($this->required[0]);
254
- $hide = ' hide';
255
- }
256
- $output = '<div class="ux-field-container amp-ux-select-container '.$hide.'" '.esc_attr($required).'>';
257
- if ( !empty($this->title) ) {
258
- $output .= '<h2 class="'.esc_attr($this->element_class).'">'.esc_html__($this->title).'</h2>';
259
- }
260
- $output .= '<select id="'.$this->id.'" class="'.$this->class.'" '.$this->data_href.'>';
261
- if ( !empty($this->options) ) {
262
- foreach ( $this->options as $option_key => $option_value ) {
263
- if( $option_key == $this->default ) {
264
- $this->selected = 'selected';
265
- }
266
- else{
267
- $this->selected = '';
268
- }
269
- $output .= '<option value="'.esc_attr($option_key).'" '.esc_attr($this->selected).' data-num="'.intval($data_num).'">'.esc_attr($option_value).'</option>';
270
- $data_num ++;
271
- }
272
- }
273
- $output .= '</select>';
274
- if(isset($fields['data-value']) && isset($fields['data-value-id'])){
275
- $hide = '';
276
- if($this->default!="Other"){
277
- $hide = 'hide';
278
- }
279
- $output .= '<div class="ux-other-site-type '.esc_attr($hide).'"><h2 class="ux-label trac-id site-tpy">Mention the type of your site</h2></div><input type="text" id="'.esc_attr($fields['data-value-id']).'" class="'.esc_attr($this->class).' '.esc_attr($hide).'" value="'.esc_attr($fields['data-value']).'" placeholder="Enter your website type">';
280
- }
281
- if( $this->data_href ){
282
- if ( isset($fields['data-href-id']) ) {
283
- $hrf_id = $fields['data-href-id'];
284
- }
285
- $output .= '<input type="hidden" value="'.esc_attr($this->default).'" id="'.esc_attr($hrf_id).'">';
286
- }
287
- if($this->id=="ampforwp-ux-analytics-more"){
288
- $output .= '<span><button type="button" id="ampforwp-add-more-analytics" class="">Add</button></span>';
289
- }
290
-
291
- $output .= '</div>';
292
- echo $output; /* $output XSS escaped */
293
- }
294
- public function ampforwp_field_checkbox($fields){
295
- $required = $hide = $checked = '';
296
- if ( !empty($fields['required']) ) {
297
- $required = 'required='.esc_attr($this->required[0]);
298
- $hide = 'hide';
299
- }
300
- if ( isset($fields['default']) && '1' == $fields['default'] ){
301
- $checked = 'checked';
302
- }
303
-
304
- $lbl_cls = '';
305
- if(isset($fields['label-class'])){
306
- $lbl_cls = 'class="'.esc_attr($fields['label-class']).'"';
307
- } /* $lbl_cls XSS escaped */
308
-
309
- $output = '<div class="ux-field-container amp-ux-checkbox-container '.esc_attr($hide).' '.esc_attr($this->parent_class).' " '.esc_attr($required).'><label '.$lbl_cls.'><input type="checkbox" class="'.esc_attr($this->class).'" id="'.esc_attr($this->id).'" ' . esc_attr($checked).'>'.esc_html__($this->title).'</label></div>'; /* $lbl_cls XSS escaped */
310
- echo $output; /* $output XSS escaped */
311
- }
312
- public function ampforwp_field_switch($fields){
313
-
314
- $required = '';
315
- $output = '';
316
- $hide = '';
317
- if ( !empty($this->required) ) {
318
- $required = 'required='.$this->required[0];
319
- $this->class .= ' hide';
320
- $hide = ' hide';
321
- }
322
- if($this->id == 'amp-ux-ext-ssd'){
323
-
324
- $output .= '<div class="ux-field-container amp-ux-heading"><h2 style="margin-top:40px; margin-bottom: 0px;">Recommended Plugins</h2></div>';
325
- }
326
- $output .= '<div class="ux-field-container amp-ux-switch-container '.esc_attr($this->parent_class).' '.esc_attr($hide).'">';
327
- if ( !empty($this->title) ) {
328
- $output .= '<h2 class="'.esc_attr($this->element_class).'">'.esc_html__($this->title, 'accelerated-mobile-pages').'</h2>';
329
- }
330
- if ( 1 == $this->default ) {
331
- $this->selected = 'checked';
332
- }
333
- else{
334
- $this->selected = '';
335
- }
336
- if(isset($fields['data-url']) && $fields['data-url']!="" && 2 == $this->default){
337
- $output .= '<div class="switch-options">
338
- <label class="ios7-switch '.esc_attr($this->id).'">
339
- <a target="_blank" href="'.esc_url($fields['data-url']).'" class="afw-plugin-url"><i class="el el-cog"></i></a>
340
- </label>
341
- <input type="hidden" class="checkbox checkbox-input " id="'.esc_attr($this->id).'" value="'.esc_attr($this->default).'">
342
- </div>';
343
- }else{
344
- $output .= '<div class="switch-options">
345
- <label class="ios7-switch '.esc_attr($this->id).'">
346
- <input id="'.esc_attr($this->id).'" '.esc_attr($this->selected).' class="switch-on-off '.esc_attr($this->class).'" type="checkbox" data-id="'.esc_attr($this->id).'" value="'.esc_attr($this->default).'" '.esc_attr($this->data_secure).' '.esc_attr($this->data_url).'>
347
- <span></span>
348
- </label>
349
- <input type="hidden" class="checkbox checkbox-input " id="'.esc_attr($this->id).'" value="'.esc_attr($this->default).'">
350
- </div>';
351
- }
352
- if( $this->desc ){
353
- $output .= '<p class="amp-ux-switch-text">'.esc_html($this->desc).'</p>';
354
- }
355
- $output .= '</div>';
356
- echo $output; /* $output XSS escaped */
357
- }
358
-
359
- public function ampforwp_field_media(){
360
- $output = '<div class="ux-field-container amp-ux-media-container">';
361
- $id = $url = $width = $height = '';
362
- if ( !empty($this->title) ) {
363
- $output .= '<h2 class="'.esc_attr($this->element_class).'">'.esc_html($this->title).'</h2>';
364
- }
365
- if ( is_array($this->default) ) {
366
- $id = $this->default['id'];
367
- $url = $this->default['url'];
368
- $width = $this->default['width'];
369
- $height = $this->default['height'];
370
- $hide = 'hide';
371
- }
372
- $opt_med_url = ampforwp_get_setting('opt-media','url');
373
- $but_name = "Add Logo";
374
- $logo_css = "";
375
- if($opt_med_url!=""){
376
- $hide = '';
377
- $but_name = "Change Logo";
378
- $logo_css = "amp-ux-chng-lg";
379
- }
380
- $output .= '<div id="'.esc_attr($this->id).'" class="'.esc_attr($this->class).'" data-id="opt-media" data-type="media">
381
- <input placeholder="No media selected" type="text" class="upload large-text hide" id="amp-ux-opt-media-url" value="'.intval($id).'" readonly="readonly">
382
- <input type="hidden" class="data" data-mode="image">
383
- <input type="hidden" class="library-filter" data-lib-filter="">
384
- <input type="hidden" class="upload-id " name="amp-ux-logo-id" id="amp-ux-logo-id" value="'.intval($id).'">
385
- <input type="hidden" class="upload-height" name="amp-ux-logo-height" id="amp-ux-logo-height" value="'.intval($height).'">
386
- <input type="hidden" class="upload-width" name="amp-ux-logo-width" id="amp-ux-logo-width" value="'.intval($width).'">
387
- <input type="hidden" class="upload-thumbnail" name="amp-ux-logo-thumb" id="amp-ux-logo-thumb" value="'.esc_url($url).'">
388
- <div class="screenshot '.esc_attr($hide).'">
389
-
390
- <img class="redux-option-image amp-ux-image" id="image_opt-media" src="'.esc_url($url).'" alt="" target="_blank" rel="external">
391
-
392
- </div>
393
- <div class="upload_button_div amp-ux-upload '.esc_attr($logo_css).'">
394
- <span class="button media_upload_button media-amp-ux-opt-media media-'.intval($this->id).'" id="opt-media-media">'.esc_attr($but_name).'</span>
395
- <span class="amp-ux-img-re-txt">(Recommended Size: 120 x 90)</span>
396
- </div>';
397
- $output .= '</div></div>';
398
- echo $output; /* $output XSS escaped */
399
- }
400
-
401
- public function ampforwp_field_color(){
402
-
403
- $output = '<div class="ux-field-container amp-ux-color-container" id="ampforwp-easy-setup-global-color">';
404
- if ( !empty($this->title) ) {
405
- $output .= '<h2 class="'.esc_attr($this->element_class).'">'.esc_html($this->title).'</h2>';
406
- }
407
- $this->selected = $this->default ? 'value='.esc_attr($this->default) : "";
408
- $output .= '<input type="text" id="'.esc_attr($this->id).'" class="'.esc_attr($this->class).'" '.esc_attr($this->selected).'>';
409
- $output .= '</div>';
410
- echo $output; /* $output XSS escaped */
411
- }
412
- public function ampforwp_field_text($fields){
413
- $required = '';
414
- $hide = '';
415
- if ( !empty($this->required) ) {
416
- $required = 'required="'.esc_attr($this->required[0]).'"';
417
- $hide .= ' hide';
418
- }
419
- $output = '<div class="ux-field-container amp-ux-text-container '.esc_attr($hide).'">';
420
- if ( !empty($this->title) ) {
421
- $output .= '<h2 class="'.esc_attr($this->element_class).'">'.esc_html($this->title).'</h2>';
422
- }
423
- $output .= '<input type="text" id="'.esc_attr($this->id).'" class="'.esc_attr($this->class).'" '.esc_attr($this->data_text).' value="'.esc_attr($this->default).'"></div>';
424
- echo $output; /* $output XSS escaped */
425
- }
426
-
427
- public function loading(){
428
- $output = '<span class="hide amp-ux-check"></span><div class="hide amp-ux-loading"></div><br>';
429
- echo $output; /* $output XSS escaped */
430
- }
431
- public function ampforwp_field_notification($fields){
432
- $required = $hide = $hrf_id = '';
433
- $data_num = 1;
434
- if ( !empty($this->required) ) {
435
- $required = 'required='.esc_attr($this->required[0]);
436
- $hide = ' hide';
437
- }
438
-
439
- $class = "";
440
- if($fields['type']=="warning"){
441
- $class = "warning";
442
- }
443
- else if($fields['type']=="notice"){
444
- $class = "warning-red";
445
- }
446
- else if($fields['type']=="success"){
447
- $class = "success";
448
- }
449
- if($this->default==1){
450
- $hide = "";
451
- }
452
- $output = '<div class="ux-field-container amp-ux-notif-container '.esc_attr($class).' '.esc_attr($hide).'" id="'.esc_attr($this->id).'" '.esc_attr($required).'>';
453
- if ( !empty($this->desc) ) {
454
- $output .= '<p>'.$this->desc.'</p>'; // xss ok for $this->desc
455
- }
456
- $output .= '</div>';
457
- echo $output; // xss ok for $output
458
- }
459
-
460
- public function ampforwp_field_footer($fields){
461
- $output = '<div class="ux-field-container ux-field-footer" id="'.esc_attr($this->id).'">';
462
- foreach($fields as $f){
463
- $svg = '';
464
- if(isset($f['svg'])){
465
- $svg = $f['svg'];
466
- }
467
- $output .= '<div class="ux-field-foot-cont"><a href="'.esc_url($f['url']).'" target="_blank">
468
- <i class="ux-foot-icon '.esc_attr($f['icon']).'"></i>'.$svg.'
469
- <p>'.esc_html__($f['desc']).'</p></a>
470
- </div>';
471
- }
472
- $output .= '</div>';
473
- echo $output; // xss ok for $output
474
- }
475
-
476
  }?>
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+ /**
6
+ *
7
+ */
8
+ class AMPforWP_Fields
9
+ {
10
+ private $output = '';
11
+ private $class = '';
12
+ private $id = '';
13
+ private $title = '';
14
+ private $element_class = '';
15
+ private $parent_class = '';
16
+ private $desc = '';
17
+ private $default = '';
18
+ private $selected = '';
19
+ private $data_secure = '';
20
+ private $data_url = '';
21
+ private $options = array();
22
+ private $required = array();
23
+
24
+ public function createFields($fields_array){
25
+ if ( is_array($fields_array) ) {
26
+ foreach ($fields_array as $field_array ) {
27
+ $this->setField($field_array['field_type'], $field_array['field_data']);
28
+ }
29
+ }
30
+ }
31
+ public function setField( $type = '', $fields=array() ){
32
+ if( '' == $type ) {
33
+ return false;
34
+ }
35
+ if( !empty($fields) ){
36
+ if ( isset($fields['class']) ) {
37
+ if ( $type != 'section_start' && $type != 'section_end' && $type != 'main_section_start' && $type != 'main_section_end' && $type != 'sub_section_start' && $type != 'sub_section_end') {
38
+ $fields['class'] .= ' amp-ux-field';
39
+ }
40
+ $this->class = $fields['class'];
41
+ }
42
+ else{
43
+ $this->class = '';
44
+ }
45
+ if ( isset($fields['parent-class']) ) {
46
+ $this->parent_class = $fields['parent-class'];
47
+ }
48
+ else{
49
+ $this->parent_class = '';
50
+ }
51
+ if ( isset($fields['title']) ) {
52
+ $this->title = $fields['title'];
53
+ }
54
+ else{
55
+ $this->title = '';
56
+ }
57
+ if ( isset($fields['element-class']) ) {
58
+ $this->element_class = $fields['element-class'];
59
+ }
60
+ else{
61
+ $this->element_class = '';
62
+ }
63
+ if ( isset($fields['id']) ) {
64
+ $this->id = $fields['id'];
65
+ }
66
+ else{
67
+ $this->id = '';
68
+ }
69
+ if ( isset($fields['default']) ) {
70
+ $this->default = $fields['default'];
71
+ }
72
+ else{
73
+ $this->default = '';
74
+ }
75
+ if ( isset($fields['required']) ) {
76
+ $this->required = $fields['required'];
77
+ }
78
+ else{
79
+ $this->required = '';
80
+ }
81
+ if ( isset($fields['options']) && is_array($fields['options']) ){
82
+ $this->options = $fields['options'];
83
+ }
84
+ else{
85
+ $this->options = '';
86
+ }
87
+ if ( isset($fields['data-href']) ) {
88
+ $this->data_href = ' data-href='.esc_url($fields['data-href']);
89
+ }
90
+ else{
91
+ $this->data_href = '';
92
+ }
93
+ if ( isset($fields['data-url']) ) {
94
+ $this->data_url = ' data-url='.esc_url($fields['data-url']);
95
+ }
96
+ else{
97
+ $this->data_url = '';
98
+ }
99
+ if ( isset($fields['data-secure']) ) {
100
+ $this->data_secure = ' data-secure='.esc_attr($fields['data-secure']);
101
+ }
102
+ else{
103
+ $this->data_secure = '';
104
+ }
105
+ if ( isset($fields['data-text']) ) {
106
+ $this->data_text = ' data-text='.esc_attr($fields['data-text']);
107
+ }
108
+ else{
109
+ $this->data_text = '';
110
+ }
111
+ if ( isset($fields['desc']) ) {
112
+ $this->desc = $fields['desc'];
113
+ }
114
+ else{
115
+ $this->desc = '';
116
+ }
117
+ }
118
+ // Select
119
+ if ( 'select' == $type ) {
120
+ $this->ampforwp_field_select($fields);
121
+ //$this->loading();
122
+ }
123
+ // Text
124
+ if ( 'text' == $type ) {
125
+ $this->ampforwp_field_text($fields);
126
+ }
127
+ // Checkbox
128
+ if ( 'checkbox' == $type ) {
129
+ $this->ampforwp_field_checkbox($fields);
130
+ }
131
+ // Upload
132
+ if ( 'media' == $type ) {
133
+ $this->ampforwp_field_media($fields);
134
+ }
135
+ // Color
136
+ if ( 'color' == $type ) {
137
+ $this->ampforwp_field_color($fields);
138
+ }
139
+ // Switch
140
+ if ( 'switch' == $type ) {
141
+ $this->ampforwp_field_switch($fields);
142
+ }
143
+ // Notification
144
+ if ( 'notification' == $type ) {
145
+ $this->ampforwp_field_notification($fields);
146
+ }
147
+ // Loader
148
+ if ( 'loader' == $type ) {
149
+ $this->ampforwp_field_loader($fields);
150
+ }
151
+ // Label
152
+ if ( 'footer' == $type ) {
153
+ $this->ampforwp_field_footer($fields);
154
+ }
155
+ // Main section
156
+ if ( 'main_section_start' == $type ) {
157
+ $this->main_section_start($fields);
158
+ }
159
+ if ( 'main_section_end' == $type ) {
160
+ $this->main_section_end($fields);
161
+ }
162
+ // Section Start
163
+ if ( 'section_start' == $type ) {
164
+ $this->section_start($fields);
165
+ }
166
+ // Section end
167
+ if ( 'section_end' == $type ) {
168
+ $this->section_end($fields);
169
+ }
170
+ // Sub Section Start
171
+ if ( 'sub_section_start' == $type ) {
172
+ $this->sub_section_start($fields);
173
+ }
174
+ // Sub Section end
175
+ if ( 'sub_section_end' == $type ) {
176
+ $this->sub_section_end($fields);
177
+ }
178
+ // Sub Section end
179
+ if ( 'heading' == $type ) {
180
+ $this->ampforwp_field_heading($fields);
181
+ }
182
+ }
183
+
184
+ public function ampforwp_field_heading($fields = array()){
185
+ echo '<div class="ux-field-container amp-ux-heading"><h2>'.esc_html($this->title).'</h2></div>';
186
+ }
187
+ public function ampforwp_field_loader($fields = array()){
188
+ echo '<div class="amp-ux-loader"><div class="amp-ux-loading"></div><div id="amp-ux-loading-saved" class="hide"></div><span class="hide amp-ux-check"></span></div>';
189
+ }
190
+
191
+ // Main Section
192
+ public function main_section_start($fields = array() ) {
193
+ if ( isset($fields['class']) ) {
194
+ $this->class = $fields['class'];
195
+ }
196
+ if ( isset($fields['id']) ) {
197
+ $this->id = $fields['id'];
198
+ }
199
+ echo '<div id="'.esc_attr($this->id).'" class="'.esc_attr($this->class).'">';
200
+ }
201
+ public function main_section_end($fields = array() ) {
202
+ echo '</div>';
203
+ }
204
+ // Section Start
205
+ public function section_start($fields = array()){
206
+ if ( isset($fields['class']) ) {
207
+ $this->class = $fields['class'];
208
+ }
209
+ if ( isset($fields['id']) ) {
210
+ $this->id = $fields['id'];
211
+ }
212
+ $dcls = 'drawer';
213
+ if($this->class=='ampforwp-ux-sub-section'){
214
+ $dcls = '';
215
+ }
216
+ echo '<div id="'.esc_attr($this->id).'" class="'.esc_attr($dcls).' '.esc_attr($this->class).' amp-ux-section-container">
217
+ <div class="amp-fields-content">';
218
+ }
219
+ // Sub Section Start
220
+ public function sub_section_start($fields = array()){
221
+ if ( isset($fields['class']) ) {
222
+ $this->class = $fields['class'];
223
+ }
224
+ if ( isset($fields['id']) ) {
225
+ $this->id = $fields['id'];
226
+ }
227
+ $hide = '';
228
+ if ( isset($fields['default']) && $fields['default']==0) {
229
+ $hide = 'hide';
230
+ }
231
+ $data_href = "";
232
+ if ( isset($fields['data-href'])) {
233
+ $data_href = 'data-href='.esc_attr($fields['data-href']);
234
+ }
235
+
236
+ echo '<div id="'.esc_attr($this->id).'" class="'.esc_attr($this->class).' '.esc_attr($hide).'" '.esc_attr($data_href).'>';
237
+ if(isset($fields['closable']) && $fields['closable']==1){
238
+ echo '<div class="ampforwp-ux-closable '.esc_attr($this->id).'">X</div>';
239
+ }
240
+ }
241
+ // Section End
242
+ public function sub_section_end(){
243
+ echo '</div>';
244
+ }
245
+ // Section End
246
+ public function section_end(){
247
+ echo '</div></div>';
248
+ }
249
+ public function ampforwp_field_select($fields){
250
+ $required = $hide = $hrf_id = '';
251
+ $data_num = 1;
252
+ if ( !empty($this->required) ) {
253
+ $required = 'required='.esc_attr($this->required[0]);
254
+ $hide = ' hide';
255
+ }
256
+ $output = '<div class="ux-field-container amp-ux-select-container '.$hide.'" '.esc_attr($required).'>';
257
+ if ( !empty($this->title) ) {
258
+ $output .= '<h2 class="'.esc_attr($this->element_class).'">'.esc_html__($this->title).'</h2>';
259
+ }
260
+ $output .= '<select id="'.$this->id.'" class="'.$this->class.'" '.$this->data_href.'>';
261
+ if ( !empty($this->options) ) {
262
+ foreach ( $this->options as $option_key => $option_value ) {
263
+ if( $option_key == $this->default ) {
264
+ $this->selected = 'selected';
265
+ }
266
+ else{
267
+ $this->selected = '';
268
+ }
269
+ $output .= '<option value="'.esc_attr($option_key).'" '.esc_attr($this->selected).' data-num="'.intval($data_num).'">'.esc_attr($option_value).'</option>';
270
+ $data_num ++;
271
+ }
272
+ }
273
+ $output .= '</select>';
274
+ if(isset($fields['data-value']) && isset($fields['data-value-id'])){
275
+ $hide = '';
276
+ if($this->default!="Other"){
277
+ $hide = 'hide';
278
+ }
279
+ $output .= '<div class="ux-other-site-type '.esc_attr($hide).'"><h2 class="ux-label trac-id site-tpy">Mention the type of your site</h2></div><input type="text" id="'.esc_attr($fields['data-value-id']).'" class="'.esc_attr($this->class).' '.esc_attr($hide).'" value="'.esc_attr($fields['data-value']).'" placeholder="Enter your website type">';
280
+ }
281
+ if( $this->data_href ){
282
+ if ( isset($fields['data-href-id']) ) {
283
+ $hrf_id = $fields['data-href-id'];
284
+ }
285
+ $output .= '<input type="hidden" value="'.esc_attr($this->default).'" id="'.esc_attr($hrf_id).'">';
286
+ }
287
+ if($this->id=="ampforwp-ux-analytics-more"){
288
+ $output .= '<span><button type="button" id="ampforwp-add-more-analytics" class="">Add</button></span>';
289
+ }
290
+
291
+ $output .= '</div>';
292
+ echo $output; /* $output XSS escaped */
293
+ }
294
+ public function ampforwp_field_checkbox($fields){
295
+ $required = $hide = $checked = '';
296
+ if ( !empty($fields['required']) ) {
297
+ $required = 'required='.esc_attr($this->required[0]);
298
+ $hide = 'hide';
299
+ }
300
+ if ( isset($fields['default']) && '1' == $fields['default'] ){
301
+ $checked = 'checked';
302
+ }
303
+
304
+ $lbl_cls = '';
305
+ if(isset($fields['label-class'])){
306
+ $lbl_cls = 'class="'.esc_attr($fields['label-class']).'"';
307
+ } /* $lbl_cls XSS escaped */
308
+
309
+ $output = '<div class="ux-field-container amp-ux-checkbox-container '.esc_attr($hide).' '.esc_attr($this->parent_class).' " '.esc_attr($required).'><label '.$lbl_cls.'><input type="checkbox" class="'.esc_attr($this->class).'" id="'.esc_attr($this->id).'" ' . esc_attr($checked).'>'.esc_html__($this->title).'</label></div>'; /* $lbl_cls XSS escaped */
310
+ echo $output; /* $output XSS escaped */
311
+ }
312
+ public function ampforwp_field_switch($fields){
313
+
314
+ $required = '';
315
+ $output = '';
316
+ $hide = '';
317
+ if ( !empty($this->required) ) {
318
+ $required = 'required='.$this->required[0];
319
+ $this->class .= ' hide';
320
+ $hide = ' hide';
321
+ }
322
+ if($this->id == 'amp-ux-ext-ssd'){
323
+
324
+ $output .= '<div class="ux-field-container amp-ux-heading"><h2 style="margin-top:40px; margin-bottom: 0px;">Recommended Plugins</h2></div>';
325
+ }
326
+ $output .= '<div class="ux-field-container amp-ux-switch-container '.esc_attr($this->parent_class).' '.esc_attr($hide).'">';
327
+ if ( !empty($this->title) ) {
328
+ $output .= '<h2 class="'.esc_attr($this->element_class).'">'.esc_html__($this->title, 'accelerated-mobile-pages').'</h2>';
329
+ }
330
+ if ( 1 == $this->default ) {
331
+ $this->selected = 'checked';
332
+ }
333
+ else{
334
+ $this->selected = '';
335
+ }
336
+ if(isset($fields['data-url']) && $fields['data-url']!="" && 2 == $this->default){
337
+ $output .= '<div class="switch-options">
338
+ <label class="ios7-switch '.esc_attr($this->id).'">
339
+ <a target="_blank" href="'.esc_url($fields['data-url']).'" class="afw-plugin-url"><i class="el el-cog"></i></a>
340
+ </label>
341
+ <input type="hidden" class="checkbox checkbox-input " id="'.esc_attr($this->id).'" value="'.esc_attr($this->default).'">
342
+ </div>';
343
+ }else{
344
+ $output .= '<div class="switch-options">
345
+ <label class="ios7-switch '.esc_attr($this->id).'">
346
+ <input id="'.esc_attr($this->id).'" '.esc_attr($this->selected).' class="switch-on-off '.esc_attr($this->class).'" type="checkbox" data-id="'.esc_attr($this->id).'" value="'.esc_attr($this->default).'" '.esc_attr($this->data_secure).' '.esc_attr($this->data_url).'>
347
+ <span></span>
348
+ </label>
349
+ <input type="hidden" class="checkbox checkbox-input " id="'.esc_attr($this->id).'" value="'.esc_attr($this->default).'">
350
+ </div>';
351
+ }
352
+ if( $this->desc ){
353
+ $output .= '<p class="amp-ux-switch-text">'.esc_html($this->desc).'</p>';
354
+ }
355
+ $output .= '</div>';
356
+ echo $output; /* $output XSS escaped */
357
+ }
358
+
359
+ public function ampforwp_field_media(){
360
+ $output = '<div class="ux-field-container amp-ux-media-container">';
361
+ $id = $url = $width = $height = '';
362
+ if ( !empty($this->title) ) {
363
+ $output .= '<h2 class="'.esc_attr($this->element_class).'">'.esc_html($this->title).'</h2>';
364
+ }
365
+ if ( is_array($this->default) ) {
366
+ $id = $this->default['id'];
367
+ $url = $this->default['url'];
368
+ $width = $this->default['width'];
369
+ $height = $this->default['height'];
370
+ $hide = 'hide';
371
+ }
372
+ $opt_med_url = ampforwp_get_setting('opt-media','url');
373
+ $but_name = "Add Logo";
374
+ $logo_css = "";
375
+ if($opt_med_url!=""){
376
+ $hide = '';
377
+ $but_name = "Change Logo";
378
+ $logo_css = "amp-ux-chng-lg";
379
+ }
380
+ $output .= '<div id="'.esc_attr($this->id).'" class="'.esc_attr($this->class).'" data-id="opt-media" data-type="media">
381
+ <input placeholder="No media selected" type="text" class="upload large-text hide" id="amp-ux-opt-media-url" value="'.intval($id).'" readonly="readonly">
382
+ <input type="hidden" class="data" data-mode="image">
383
+ <input type="hidden" class="library-filter" data-lib-filter="">
384
+ <input type="hidden" class="upload-id " name="amp-ux-logo-id" id="amp-ux-logo-id" value="'.intval($id).'">
385
+ <input type="hidden" class="upload-height" name="amp-ux-logo-height" id="amp-ux-logo-height" value="'.intval($height).'">
386
+ <input type="hidden" class="upload-width" name="amp-ux-logo-width" id="amp-ux-logo-width" value="'.intval($width).'">
387
+ <input type="hidden" class="upload-thumbnail" name="amp-ux-logo-thumb" id="amp-ux-logo-thumb" value="'.esc_url($url).'">
388
+ <div class="screenshot '.esc_attr($hide).'">
389
+
390
+ <img class="redux-option-image amp-ux-image" id="image_opt-media" src="'.esc_url($url).'" alt="" target="_blank" rel="external">
391
+
392
+ </div>
393
+ <div class="upload_button_div amp-ux-upload '.esc_attr($logo_css).'">
394
+ <span class="button media_upload_button media-amp-ux-opt-media media-'.intval($this->id).'" id="opt-media-media">'.esc_attr($but_name).'</span>
395
+ <span class="amp-ux-img-re-txt">(Recommended Size: 120 x 90)</span>
396
+ </div>';
397
+ $output .= '</div></div>';
398
+ echo $output; /* $output XSS escaped */
399
+ }
400
+
401
+ public function ampforwp_field_color(){
402
+
403
+ $output = '<div class="ux-field-container amp-ux-color-container" id="ampforwp-easy-setup-global-color">';
404
+ if ( !empty($this->title) ) {
405
+ $output .= '<h2 class="'.esc_attr($this->element_class).'">'.esc_html($this->title).'</h2>';
406
+ }
407
+ $this->selected = $this->default ? 'value='.esc_attr($this->default) : "";
408
+ $output .= '<input type="text" id="'.esc_attr($this->id).'" class="'.esc_attr($this->class).'" '.esc_attr($this->selected).'>';
409
+ $output .= '</div>';
410
+ echo $output; /* $output XSS escaped */
411
+ }
412
+ public function ampforwp_field_text($fields){
413
+ $required = '';
414
+ $hide = '';
415
+ if ( !empty($this->required) ) {
416
+ $required = 'required="'.esc_attr($this->required[0]).'"';
417
+ $hide .= ' hide';
418
+ }
419
+ $output = '<div class="ux-field-container amp-ux-text-container '.esc_attr($hide).'">';
420
+ if ( !empty($this->title) ) {
421
+ $output .= '<h2 class="'.esc_attr($this->element_class).'">'.esc_html($this->title).'</h2>';
422
+ }
423
+ $output .= '<input type="text" id="'.esc_attr($this->id).'" class="'.esc_attr($this->class).'" '.esc_attr($this->data_text).' value="'.esc_attr($this->default).'"></div>';
424
+ echo $output; /* $output XSS escaped */
425
+ }
426
+
427
+ public function loading(){
428
+ $output = '<span class="hide amp-ux-check"></span><div class="hide amp-ux-loading"></div><br>';
429
+ echo $output; /* $output XSS escaped */
430
+ }
431
+ public function ampforwp_field_notification($fields){
432
+ $required = $hide = $hrf_id = '';
433
+ $data_num = 1;
434
+ if ( !empty($this->required) ) {
435
+ $required = 'required='.esc_attr($this->required[0]);
436
+ $hide = ' hide';
437
+ }
438
+
439
+ $class = "";
440
+ if($fields['type']=="warning"){
441
+ $class = "warning";
442
+ }
443
+ else if($fields['type']=="notice"){
444
+ $class = "warning-red";
445
+ }
446
+ else if($fields['type']=="success"){
447
+ $class = "success";
448
+ }
449
+ if($this->default==1){
450
+ $hide = "";
451
+ }
452
+ $output = '<div class="ux-field-container amp-ux-notif-container '.esc_attr($class).' '.esc_attr($hide).'" id="'.esc_attr($this->id).'" '.esc_attr($required).'>';
453
+ if ( !empty($this->desc) ) {
454
+ $output .= '<p>'.$this->desc.'</p>'; // xss ok for $this->desc
455
+ }
456
+ $output .= '</div>';
457
+ echo $output; // xss ok for $output
458
+ }
459
+
460
+ public function ampforwp_field_footer($fields){
461
+ $output = '<div class="ux-field-container ux-field-footer" id="'.esc_attr($this->id).'">';
462
+ foreach($fields as $f){
463
+ $svg = '';
464
+ if(isset($f['svg'])){
465
+ $svg = $f['svg'];
466
+ }
467
+ $output .= '<div class="ux-field-foot-cont"><a href="'.esc_url($f['url']).'" target="_blank">
468
+ <i class="ux-foot-icon '.esc_attr($f['icon']).'"></i>'.$svg.'
469
+ <p>'.esc_html__($f['desc']).'</p></a>
470
+ </div>';
471
+ }
472
+ $output .= '</div>';
473
+ echo $output; // xss ok for $output
474
+ }
475
+
476
  }?>
classes/class-ampforwp-infinite-scroll.php CHANGED
@@ -1,233 +1,233 @@
1
- <?php
2
- if ( ! defined( 'ABSPATH' ) ) {
3
- exit;
4
- }
5
- /**
6
- * Class: To enable Infinite Scroll in AMP
7
- * Note: For performance reasons the component will render a maximum of three documents (total) on screen at one time. This limit may be changed or removed in the future.
8
- * Read more about it here: https://www.ampproject.org/docs/reference/components/amp-next-page
9
- */
10
- if( ! class_exists('AMPforWP_Infinite_Scroll') ) {
11
-
12
- class AMPforWP_Infinite_Scroll
13
- {
14
- private $paged;
15
- private $is_single = false;
16
- private $is_loop = false;
17
- function __construct()
18
- {
19
- $this->is_single = true == $this->is_single() ? $this->is_single() : $this->is_single;
20
- $this->is_loop = true == $this->is_loop() ? $this->is_loop() : $this->is_loop;
21
- $this->paged = $this->paged();
22
- if ( $this->is_single && 'page' != get_post_type(ampforwp_get_the_ID()) ){
23
- // amp-next-page experiment meta tag
24
- add_action('amp_experiment_meta', array( $this, 'amp_experiment_meta') );
25
- // amp-next-page script
26
- add_filter('ampforwp_post_template_data', array( $this , 'amp_infinite_scroll_script') );
27
- // amp-next-page tag
28
- if ( 4 != ampforwp_get_setting('amp-design-selector') || (class_exists('AmpforwpAmpLayouts')) && 3 == ampforwp_get_setting('single-design-type') )
29
- add_action('ampforwp_above_related_post', array( $this , 'amp_next_page') );
30
- else {
31
- if (true == ampforwp_get_setting('ampforwp-infinite-scroll-new-features')) {
32
- add_action('ampforwp_global_after_footer', array( $this , 'amp_next_page') );
33
- }else{
34
- add_action('ampforwp_single_design_type_handle', array( $this , 'amp_next_page') );
35
- }
36
- }
37
- }
38
- if ( $this->is_loop ) {
39
- // amp-next-page experiment meta tag
40
- add_action('amp_experiment_meta', array( $this, 'amp_experiment_meta') );
41
- // amp-next-page script
42
- add_filter('ampforwp_post_template_data', array( $this , 'amp_infinite_scroll_script') );
43
- // amp-next-page tag
44
- add_action('ampforwp_loop_before_pagination', array( $this , 'amp_next_page') );
45
- // Next Posts Link
46
- add_filter('ampforwp_next_posts_link', array( $this , 'next_posts_link') , 10 , 2 );
47
- }
48
- }
49
- public function is_single() {
50
- if ( is_single() && true == ampforwp_get_setting('ampforwp-infinite-scroll-single') ) {
51
- return true;
52
- }
53
- return false;
54
- }
55
- public function is_loop() {
56
- $script = true;
57
- if ( (ampforwp_is_home() || is_archive()) && (true == ampforwp_get_setting('ampforwp-infinite-scroll-home') || true == ampforwp_get_setting('ampforwp-wcp-infinite-scroll') ) ) {
58
- if( function_exists('is_product_category') && is_product_category() || function_exists('is_product_tag') && is_product_tag() || function_exists('is_shop') && is_shop()){
59
- $script = false;
60
- }
61
- $script = apply_filters('ampforwp_modify_infinite_scroll_script', $script);
62
- return $script;
63
- }
64
- return false;
65
- }
66
- public function paged() {
67
- $paged = get_query_var( 'paged' );
68
- $page = get_query_var( 'page' );
69
- if ( $paged ) {
70
- return intval($paged);
71
- } elseif ( $page ) {
72
- return intval($page);
73
- } else {
74
- return 1;
75
- }
76
- }
77
- public function amp_experiment_meta() {
78
- echo '<meta name="amp-experiments-opt-in" content="amp-next-page">';
79
- }
80
-
81
- public function amp_infinite_scroll_script( $data ) {
82
- if ( empty( $data['amp_component_scripts']['amp-next-page'] ) ) {
83
- if (true == ampforwp_get_setting('ampforwp-infinite-scroll-new-features')) {
84
- $data['amp_component_scripts']['amp-next-page'] = 'https://cdn.ampproject.org/v0/amp-next-page-latest.js';
85
- }else{
86
- $data['amp_component_scripts']['amp-next-page'] = 'https://cdn.ampproject.org/v0/amp-next-page-0.1.js';
87
- }
88
- }
89
- return $data;
90
- }
91
-
92
- public function amp_next_page() {
93
- $loop_link = $first_url = $first_title = $first_image = $second_url = $second_image = $second_title ='';
94
- $single_links = $single_titles = $single_images = $classes = $pages = array();
95
- if ( $this->is_loop ) {
96
- $loop_link = $this->loop_link();
97
- $loop_link1 = $loop_link2 = '';
98
- $loop_link1 = $loop_link.($this->paged+1);
99
- $loop_link2 = $loop_link.($this->paged+2);
100
- if ( true == ampforwp_get_setting('amp-core-end-point') ) {
101
- $loop_link1 = ampforwp_url_controller($loop_link1);
102
- $loop_link2 = ampforwp_url_controller($loop_link2);
103
- }
104
- if (true == ampforwp_get_setting('ampforwp-infinite-scroll-new-features')) {
105
- $pages[] = array('title'=>'','image'=>'','url'=>$loop_link1);
106
- }else{
107
- $pages[] = array('title'=>'','image'=>'','ampUrl'=>$loop_link1);
108
- $pages[] = array('title'=>'','image'=>'','ampUrl'=>$loop_link2);
109
- }
110
- }
111
- if ( $this->is_single ) {
112
- $pages = $this->single_post();
113
- }
114
- $classes = $this->hide();
115
- ?>
116
- <amp-next-page>
117
- <script type="application/json">
118
- <?php
119
- if (true == ampforwp_get_setting('ampforwp-infinite-scroll-new-features')) {
120
- echo json_encode($pages);
121
- }else{
122
- ?>
123
- {
124
- "pages": <?php echo json_encode($pages);?>,
125
- "hideSelectors": <?php echo ampforwp_css_sanitizer($classes);?>
126
- }
127
- <?php } ?>
128
- </script>
129
- </amp-next-page>
130
- <?php }
131
- public function single_post() {
132
- global $post;
133
- $pages = array();
134
- $exclude_ids = ampforwp_exclude_posts();
135
- $exclude_ids[] = $post->ID;
136
- $query_args = array(
137
- 'post_type' => get_post_type(),
138
- 'orderby' => 'date',
139
- 'ignore_sticky_posts' => 1,
140
- 'paged' => esc_attr($this->paged),
141
- 'post__not_in' => $exclude_ids,
142
- 'has_password' => false ,
143
- 'post_status'=> 'publish',
144
- 'posts_per_page' => 2,
145
- 'no_found_rows' => true
146
- );
147
- if (ampforwp_get_setting('ampforwp-infinite-scroll-single') && ampforwp_get_setting('ampforwp-infinite-scroll-single-category')){
148
- $categories = get_the_category($post->ID);
149
- $category_ids = array();
150
- if ($categories) {
151
- foreach($categories as $individual_category){
152
- $category_ids[] = $individual_category->cat_ID;
153
- }
154
- if(class_exists( 'WPSEO_Options' )){
155
- $primary_cat = get_post_meta(ampforwp_get_the_ID(), '_yoast_wpseo_primary_category', true);
156
- if (isset($primary_cat)) {
157
- $primary_cat = explode( " ", $primary_cat);
158
- $category_ids = array_intersect($category_ids,
159
- $primary_cat);
160
- }
161
- }
162
- }
163
- $query_args['category__in'] = $category_ids;
164
- }
165
- if (ampforwp_get_setting('ampforwp-infinite-scroll-single') && ampforwp_get_setting('ampforwp-infinite-scroll-single-tag')){
166
- $tags = get_the_tags(ampforwp_get_the_ID());
167
- if ($tags) {
168
- $tags_ids = array();
169
- foreach($tags as $individual_tag){
170
- $tags_ids[] = $individual_tag->term_id;
171
- }
172
- }
173
- $query_args['tag__in'] = $tags_ids;
174
- }
175
- $query_args = apply_filters('ampforwp_infinite_scroll_query_args', $query_args);
176
- $query = new WP_Query( $query_args );
177
- while ($query->have_posts()) {
178
- $query->the_post();
179
- if (true == ampforwp_get_setting('ampforwp-infinite-scroll-new-features')) {
180
- $pages[] = array('title'=>get_the_title(),'image'=>ampforwp_get_post_thumbnail('url', 'full'),'url'=>ampforwp_url_controller( get_permalink() ));
181
- }else{
182
- $pages[] = array('title'=>get_the_title(),'image'=>ampforwp_get_post_thumbnail('url', 'full'),'ampUrl'=>ampforwp_url_controller( get_permalink() ));
183
- }
184
- }
185
- wp_reset_postdata();
186
- return $pages;
187
- }
188
-
189
- public function loop_link() {
190
- global $wp;
191
- $amp_url = trailingslashit(home_url($wp->request));
192
- if( $this->paged < 2 ) {
193
- $amp_url = trailingslashit($amp_url.'page');
194
- }
195
- else
196
- $amp_url = str_replace('/'.$this->paged, '', $amp_url);
197
- return $amp_url;
198
- }
199
- public function hide() {
200
- $classes = array();
201
- $design = ampforwp_get_setting('amp-design-selector');
202
- if ( 1 == $design ) {
203
- $classes = array("#pagination",".related_posts", ".amp-wp-footer",".amp-wp-header",".f-w");
204
- }
205
- if ( 2 == $design ) {
206
- $classes = array("#headerwrap","#pagination","#footer",".nav_container",".related_posts",".f-w");
207
- }
208
- if ( 3 == $design ) {
209
- $classes = array("#headerwrap",".relatedpost",".footer_wrapper",".pagination-holder",".f-w");
210
- }
211
- if ( 4 == $design ) {
212
- $classes = array(".p-m-fl",".loop-pagination",".footer",".r-pf",".srp ul",".srp h3","#pagination",".h_m_w", ".f-w");
213
- }
214
- $classes = (array) apply_filters('ampforwp_infinite_scroll_exclude_items', $classes);
215
- return json_encode($classes);
216
- }
217
- public function next_posts_link( $next_link , $paged ) {
218
- // Change the next link to paged+3
219
- // reason: amp-next-page will show the results for 3 pages
220
- $next_link = preg_replace('/'.($paged+1).'/', ($paged+3), $next_link);
221
- //Pagination + infinite scroll creates 404 links #5167
222
- preg_match_all('/<a href="(.*?)"(.*?)<\/a>/', $next_link, $match);
223
- $url = $match[1][0];
224
- $headers = get_headers($url, 1);
225
- if(isset($headers[0]) && !stripos($headers[0], "200 OK")){
226
- return;
227
- }
228
- return $next_link;
229
- }
230
- }
231
- // Initiate the Class
232
- new AMPforWP_Infinite_Scroll();
233
  }
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+ /**
6
+ * Class: To enable Infinite Scroll in AMP
7
+ * Note: For performance reasons the component will render a maximum of three documents (total) on screen at one time. This limit may be changed or removed in the future.
8
+ * Read more about it here: https://www.ampproject.org/docs/reference/components/amp-next-page
9
+ */
10
+ if( ! class_exists('AMPforWP_Infinite_Scroll') ) {
11
+
12
+ class AMPforWP_Infinite_Scroll
13
+ {
14
+ private $paged;
15
+ private $is_single = false;
16
+ private $is_loop = false;
17
+ function __construct()
18
+ {
19
+ $this->is_single = true == $this->is_single() ? $this->is_single() : $this->is_single;
20
+ $this->is_loop = true == $this->is_loop() ? $this->is_loop() : $this->is_loop;
21
+ $this->paged = $this->paged();
22
+ if ( $this->is_single && 'page' != get_post_type(ampforwp_get_the_ID()) ){
23
+ // amp-next-page experiment meta tag
24
+ add_action('amp_experiment_meta', array( $this, 'amp_experiment_meta') );
25
+ // amp-next-page script
26
+ add_filter('ampforwp_post_template_data', array( $this , 'amp_infinite_scroll_script') );
27
+ // amp-next-page tag
28
+ if ( 4 != ampforwp_get_setting('amp-design-selector') || (class_exists('AmpforwpAmpLayouts')) && 3 == ampforwp_get_setting('single-design-type') )
29
+ add_action('ampforwp_above_related_post', array( $this , 'amp_next_page') );
30
+ else {
31
+ if (true == ampforwp_get_setting('ampforwp-infinite-scroll-new-features')) {
32
+ add_action('ampforwp_global_after_footer', array( $this , 'amp_next_page') );
33
+ }else{
34
+ add_action('ampforwp_single_design_type_handle', array( $this , 'amp_next_page') );
35
+ }
36
+ }
37
+ }
38
+ if ( $this->is_loop ) {
39
+ // amp-next-page experiment meta tag
40
+ add_action('amp_experiment_meta', array( $this, 'amp_experiment_meta') );
41
+ // amp-next-page script
42
+ add_filter('ampforwp_post_template_data', array( $this , 'amp_infinite_scroll_script') );
43
+ // amp-next-page tag
44
+ add_action('ampforwp_loop_before_pagination', array( $this , 'amp_next_page') );
45
+ // Next Posts Link
46
+ add_filter('ampforwp_next_posts_link', array( $this , 'next_posts_link') , 10 , 2 );
47
+ }
48
+ }
49
+ public function is_single() {
50
+ if ( is_single() && true == ampforwp_get_setting('ampforwp-infinite-scroll-single') ) {
51
+ return true;
52
+ }
53
+ return false;
54
+ }
55
+ public function is_loop() {
56
+ $script = true;
57
+ if ( (ampforwp_is_home() || is_archive()) && (true == ampforwp_get_setting('ampforwp-infinite-scroll-home') || true == ampforwp_get_setting('ampforwp-wcp-infinite-scroll') ) ) {
58
+ if( function_exists('is_product_category') && is_product_category() || function_exists('is_product_tag') && is_product_tag() || function_exists('is_shop') && is_shop()){
59
+ $script = false;
60
+ }
61
+ $script = apply_filters('ampforwp_modify_infinite_scroll_script', $script);
62
+ return $script;
63
+ }
64
+ return false;
65
+ }
66
+ public function paged() {
67
+ $paged = get_query_var( 'paged' );
68
+ $page = get_query_var( 'page' );
69
+ if ( $paged ) {
70
+ return intval($paged);
71
+ } elseif ( $page ) {
72
+ return intval($page);
73
+ } else {
74
+ return 1;
75
+ }
76
+ }
77
+ public function amp_experiment_meta() {
78
+ echo '<meta name="amp-experiments-opt-in" content="amp-next-page">';
79
+ }
80
+
81
+ public function amp_infinite_scroll_script( $data ) {
82
+ if ( empty( $data['amp_component_scripts']['amp-next-page'] ) ) {
83
+ if (true == ampforwp_get_setting('ampforwp-infinite-scroll-new-features')) {
84
+ $data['amp_component_scripts']['amp-next-page'] = 'https://cdn.ampproject.org/v0/amp-next-page-latest.js';
85
+ }else{
86
+ $data['amp_component_scripts']['amp-next-page'] = 'https://cdn.ampproject.org/v0/amp-next-page-0.1.js';
87
+ }
88
+ }
89
+ return $data;
90
+ }
91
+
92
+ public function amp_next_page() {
93
+ $loop_link = $first_url = $first_title = $first_image = $second_url = $second_image = $second_title ='';
94
+ $single_links = $single_titles = $single_images = $classes = $pages = array();
95
+ if ( $this->is_loop ) {
96
+ $loop_link = $this->loop_link();
97
+ $loop_link1 = $loop_link2 = '';
98
+ $loop_link1 = $loop_link.($this->paged+1);
99
+ $loop_link2 = $loop_link.($this->paged+2);
100
+ if ( true == ampforwp_get_setting('amp-core-end-point') ) {
101
+ $loop_link1 = ampforwp_url_controller($loop_link1);
102
+ $loop_link2 = ampforwp_url_controller($loop_link2);
103
+ }
104
+ if (true == ampforwp_get_setting('ampforwp-infinite-scroll-new-features')) {
105
+ $pages[] = array('title'=>'','image'=>'','url'=>$loop_link1);
106
+ }else{
107
+ $pages[] = array('title'=>'','image'=>'','ampUrl'=>$loop_link1);
108
+ $pages[] = array('title'=>'','image'=>'','ampUrl'=>$loop_link2);
109
+ }
110
+ }
111
+ if ( $this->is_single ) {
112
+ $pages = $this->single_post();
113
+ }
114
+ $classes = $this->hide();
115
+ ?>
116
+ <amp-next-page>
117
+ <script type="application/json">
118
+ <?php
119
+ if (true == ampforwp_get_setting('ampforwp-infinite-scroll-new-features')) {
120
+ echo json_encode($pages);
121
+ }else{
122
+ ?>
123
+ {
124
+ "pages": <?php echo json_encode($pages);?>,
125
+ "hideSelectors": <?php echo ampforwp_css_sanitizer($classes);?>
126
+ }
127
+ <?php } ?>
128
+ </script>
129
+ </amp-next-page>
130
+ <?php }
131
+ public function single_post() {
132
+ global $post;
133
+ $pages = array();
134
+ $exclude_ids = ampforwp_exclude_posts();
135
+ $exclude_ids[] = $post->ID;
136
+ $query_args = array(
137
+ 'post_type' => get_post_type(),
138
+ 'orderby' => 'date',
139
+ 'ignore_sticky_posts' => 1,
140
+ 'paged' => esc_attr($this->paged),
141
+ 'post__not_in' => $exclude_ids,
142
+ 'has_password' => false ,
143
+ 'post_status'=> 'publish',
144
+ 'posts_per_page' => 2,
145
+ 'no_found_rows' => true
146
+ );
147
+ if (ampforwp_get_setting('ampforwp-infinite-scroll-single') && ampforwp_get_setting('ampforwp-infinite-scroll-single-category')){
148
+ $categories = get_the_category($post->ID);
149
+ $category_ids = array();
150
+ if ($categories) {
151
+ foreach($categories as $individual_category){
152
+ $category_ids[] = $individual_category->cat_ID;
153
+ }
154
+ if(class_exists( 'WPSEO_Options' )){
155
+ $primary_cat = get_post_meta(ampforwp_get_the_ID(), '_yoast_wpseo_primary_category', true);
156
+ if (isset($primary_cat)) {
157
+ $primary_cat = explode( " ", $primary_cat);
158
+ $category_ids = array_intersect($category_ids,
159
+ $primary_cat);
160
+ }
161
+ }
162
+ }
163
+ $query_args['category__in'] = $category_ids;
164
+ }
165
+ if (ampforwp_get_setting('ampforwp-infinite-scroll-single') && ampforwp_get_setting('ampforwp-infinite-scroll-single-tag')){
166
+ $tags = get_the_tags(ampforwp_get_the_ID());
167
+ if ($tags) {
168
+ $tags_ids = array();
169
+ foreach($tags as $individual_tag){
170
+ $tags_ids[] = $individual_tag->term_id;
171
+ }
172
+ }
173
+ $query_args['tag__in'] = $tags_ids;
174
+ }
175
+ $query_args = apply_filters('ampforwp_infinite_scroll_query_args', $query_args);
176
+ $query = new WP_Query( $query_args );
177
+ while ($query->have_posts()) {
178
+ $query->the_post();
179
+ if (true == ampforwp_get_setting('ampforwp-infinite-scroll-new-features')) {
180
+ $pages[] = array('title'=>get_the_title(),'image'=>ampforwp_get_post_thumbnail('url', 'full'),'url'=>ampforwp_url_controller( get_permalink() ));
181
+ }else{
182
+ $pages[] = array('title'=>get_the_title(),'image'=>ampforwp_get_post_thumbnail('url', 'full'),'ampUrl'=>ampforwp_url_controller( get_permalink() ));
183
+ }
184
+ }
185
+ wp_reset_postdata();
186
+ return $pages;
187
+ }
188
+
189
+ public function loop_link() {
190
+ global $wp;
191
+ $amp_url = trailingslashit(home_url($wp->request));
192
+ if( $this->paged < 2 ) {
193
+ $amp_url = trailingslashit($amp_url.'page');
194
+ }
195
+ else
196
+ $amp_url = str_replace('/'.$this->paged, '', $amp_url);
197
+ return $amp_url;
198
+ }
199
+ public function hide() {
200
+ $classes = array();
201
+ $design = ampforwp_get_setting('amp-design-selector');
202
+ if ( 1 == $design ) {
203
+ $classes = array("#pagination",".related_posts", ".amp-wp-footer",".amp-wp-header",".f-w");
204
+ }
205
+ if ( 2 == $design ) {
206
+ $classes = array("#headerwrap","#pagination","#footer",".nav_container",".related_posts",".f-w");
207
+ }
208
+ if ( 3 == $design ) {
209
+ $classes = array("#headerwrap",".relatedpost",".footer_wrapper",".pagination-holder",".f-w");
210
+ }
211
+ if ( 4 == $design ) {
212
+ $classes = array(".p-m-fl",".loop-pagination",".footer",".r-pf",".srp ul",".srp h3","#pagination",".h_m_w", ".f-w");
213
+ }
214
+ $classes = (array) apply_filters('ampforwp_infinite_scroll_exclude_items', $classes);
215
+ return json_encode($classes);
216
+ }
217
+ public function next_posts_link( $next_link , $paged ) {
218
+ // Change the next link to paged+3
219
+ // reason: amp-next-page will show the results for 3 pages
220
+ $next_link = preg_replace('/'.($paged+1).'/', ($paged+3), $next_link);
221
+ //Pagination + infinite scroll creates 404 links #5167
222
+ preg_match_all('/<a href="(.*?)"(.*?)<\/a>/', $next_link, $match);
223
+ $url = $match[1][0];
224
+ $headers = get_headers($url, 1);
225
+ if(isset($headers[0]) && !stripos($headers[0], "200 OK")){
226
+ return;
227
+ }
228
+ return $next_link;
229
+ }
230
+ }
231
+ // Initiate the Class
232
+ new AMPforWP_Infinite_Scroll();
233
  }
classes/class-ampforwp-instagram-sanitizer.php CHANGED
@@ -1,68 +1,68 @@
1
- <?php
2
- use AMPforWP\AMPVendor\AMP_Base_Sanitizer;
3
- use AMPforWP\AMPVendor\AMP_DOM_Utils;
4
- if ( ! defined( 'ABSPATH' ) ) {
5
- exit;
6
- }
7
- /**
8
- * Converts Instagram embeds to <amp-instagram>
9
- */
10
- class AMPFORWP_Instagram_Embed_Sanitizer extends AMP_Base_Sanitizer {
11
- private $instagram_medias = array();
12
- const URL_PATTERN = '#http(s?)://(www\.)?instagr(\.am|am\.com)/(p|tv|reel)/([^/?]+)#i';
13
- private static $script_slug = 'amp-instagram';
14
- private static $script_src = 'https://cdn.ampproject.org/v0/amp-instagram-0.1.js';
15
- public function sanitize() {
16
- $body = $this->get_body_node();
17
- $xpath = new \DOMXPath($this->dom);
18
- $class_name = 'instagram-media';
19
- $blockquotes = $xpath->query("//*[contains(@class,'$class_name')]");
20
- foreach($blockquotes as $instagram_media){
21
- $this->replace_with_amp_instagram($instagram_media);
22
- }
23
- if(count($this->instagram_medias) > 0){
24
- $this->did_convert_elements = true;
25
- }
26
- }
27
- function replace_with_amp_instagram ($instagram_media){
28
- $medias = $instagram_media->getElementsByTagName('a');
29
- if($medias->length > 0){
30
- $media = $medias->item(0);
31
- // Insta link
32
- $href = $media->getAttribute('href');
33
- // Get the ID from the link
34
- $sourcecode = $this->get_instagram_id_from_url($href);
35
- // Create Instagram tag from the link
36
- $tag = $this->create_instagram_tag($sourcecode);
37
- $this->instagram_medias[] = $tag; // add it to array
38
- $instagram_media->parentNode->replaceChild( $tag, $instagram_media);
39
- }
40
- }
41
- function create_instagram_tag($sourcecode){
42
- $attrs = array(
43
- 'data-shortcode' => $sourcecode,
44
- 'width' => 400,
45
- 'height'=> 400,
46
- 'layout' => 'responsive',
47
- 'data-captioned' => '',
48
- );
49
- $attrs = ampforwp_amp_consent_check( $attrs );
50
- return AMP_DOM_Utils::create_node($this->dom, 'amp-instagram', $attrs);
51
- }
52
- public function get_scripts() {
53
- if ( ! $this->did_convert_elements ) {
54
- return array();
55
- }
56
- return array( self::$script_slug => self::$script_src );
57
- }
58
-
59
- private function get_instagram_id_from_url( $url ) {
60
- $found = preg_match( self::URL_PATTERN, $url, $matches );
61
-
62
- if ( ! $found ) {
63
- return false;
64
- }
65
-
66
- return end( $matches );
67
- }
68
  }
1
+ <?php
2
+ use AMPforWP\AMPVendor\AMP_Base_Sanitizer;
3
+ use AMPforWP\AMPVendor\AMP_DOM_Utils;
4
+ if ( ! defined( 'ABSPATH' ) ) {
5
+ exit;
6
+ }
7
+ /**
8
+ * Converts Instagram embeds to <amp-instagram>
9
+ */
10
+ class AMPFORWP_Instagram_Embed_Sanitizer extends AMP_Base_Sanitizer {
11
+ private $instagram_medias = array();
12
+ const URL_PATTERN = '#http(s?)://(www\.)?instagr(\.am|am\.com)/(p|tv|reel)/([^/?]+)#i';
13
+ private static $script_slug = 'amp-instagram';
14
+ private static $script_src = 'https://cdn.ampproject.org/v0/amp-instagram-0.1.js';
15
+ public function sanitize() {
16
+ $body = $this->get_body_node();
17
+ $xpath = new \DOMXPath($this->dom);
18
+ $class_name = 'instagram-media';
19
+ $blockquotes = $xpath->query("//*[contains(@class,'$class_name')]");
20
+ foreach($blockquotes as $instagram_media){
21
+ $this->replace_with_amp_instagram($instagram_media);
22
+ }
23
+ if(count($this->instagram_medias) > 0){
24
+ $this->did_convert_elements = true;
25
+ }
26
+ }
27
+ function replace_with_amp_instagram ($instagram_media){
28
+ $medias = $instagram_media->getElementsByTagName('a');
29
+ if($medias->length > 0){
30
+ $media = $medias->item(0);
31
+ // Insta link
32
+ $href = $media->getAttribute('href');
33
+ // Get the ID from the link
34
+ $sourcecode = $this->get_instagram_id_from_url($href);
35
+ // Create Instagram tag from the link
36
+ $tag = $this->create_instagram_tag($sourcecode);
37
+ $this->instagram_medias[] = $tag; // add it to array
38
+ $instagram_media->parentNode->replaceChild( $tag, $instagram_media);
39
+ }
40
+ }
41
+ function create_instagram_tag($sourcecode){
42
+ $attrs = array(
43
+ 'data-shortcode' => $sourcecode,
44
+ 'width' => 400,
45
+ 'height'=> 400,
46
+ 'layout' => 'responsive',
47
+ 'data-captioned' => '',
48
+ );
49
+ $attrs = ampforwp_amp_consent_check( $attrs );
50
+ return AMP_DOM_Utils::create_node($this->dom, 'amp-instagram', $attrs);
51
+ }
52
+ public function get_scripts() {
53
+ if ( ! $this->did_convert_elements ) {
54
+ return array();
55
+ }
56
+ return array( self::$script_slug => self::$script_src );
57
+ }
58
+
59
+ private function get_instagram_id_from_url( $url ) {
60
+ $found = preg_match( self::URL_PATTERN, $url, $matches );
61
+
62
+ if ( ! $found ) {
63
+ return false;
64
+ }
65
+
66
+ return end( $matches );
67
+ }
68
  }
classes/class-ampforwp-photo-gallery-embed.php CHANGED
@@ -1,299 +1,299 @@
1
- <?php
2
- if ( ! defined( 'ABSPATH' ) ) {
3
- exit;
4
- }
5
- /*
6
- Most of the code is taken from class-amp-gallery-embed.php and Photo Gallery Plugin https://wordpress.org/plugins/photo-gallery/
7
- */
8
- require_once( AMP__VENDOR__DIR__ . '/includes/embeds/class-amp-base-embed-handler.php' );
9
-
10
- class AMPforWP_Photo_Gallery_Embed_Handler extends AMPforWP\AMPVendor\AMP_Base_Embed_Handler {
11
- private static $script_slug = 'amp-carousel';
12
- private static $script_src = 'https://cdn.ampproject.org/v0/amp-carousel-0.2.js';
13
-
14
- public function register_embed() {
15
- add_shortcode( 'Best_Wordpress_Gallery', array( $this, 'shortcode' ) );
16
- }
17
-
18
- public function unregister_embed() {
19
- remove_shortcode( 'Best_Wordpress_Gallery' );
20
- }
21
-
22
- public function get_scripts() {
23
- if ( ! $this->did_convert_elements ) {
24
- return array();
25
- }
26
-
27
- return array( self::$script_slug => self::$script_src );
28
- }
29
-
30
- public function shortcode( $args ) {
31
-
32
- $params = array();
33
- $param_id = 0;
34
- if(isset($args['id'])){
35
- $param_id = $args['id'];
36
- }
37
- $params['id'] = WDWLibrary::get('shortcode_id', $param_id);
38
- // Get values for elementor widget.
39
- $params['gallery_type'] = WDWLibrary::get('gallery_type', 'thumbnails');
40
- $params['gallery_id'] = WDWLibrary::get('gallery_id', 0);
41
- $params['tag'] = WDWLibrary::get('tag', 0);
42
- $params['album_id'] = WDWLibrary::get('album_id', 0);
43
- $params['theme_id'] = WDWLibrary::get('theme_id', 0);
44
- $params['ajax'] = TRUE;
45
- if ( isset($params['id']) && $params['id'] ) {
46
- global $wpdb;
47
- $shortcode = $wpdb->get_var($wpdb->prepare("SELECT tagtext FROM " . $wpdb->prefix . "bwg_shortcode WHERE id='%d'", $params['id']));
48
- if ($shortcode) {
49
- $shortcode_params = explode('" ', $shortcode);
50
- foreach ($shortcode_params as $shortcode_param) {
51
- $shortcode_param = str_replace('"', '', $shortcode_param);
52
- $shortcode_elem = explode('=', $shortcode_param);
53
- $params[str_replace(' ', '', $shortcode_elem[0])] = $shortcode_elem[1];
54
- }
55
- }
56
- else {
57
- return;
58
- }
59
- }
60
-
61
- // 'gallery_type' is the only parameter not being checked.
62
- // Checking for incomplete shortcodes.
63
- if ( isset($params['gallery_type']) ) {
64
- $pairs = WDWLibrary::get_shortcode_option_params( $params );
65
- if ( isset($params['ajax']) ) {
66
- $pairs['ajax'] = $params['ajax'];
67
- }
68
- ob_start();
69
- $this->front_end( $pairs );
70
- $output = str_replace( array( "\r\n", "\n", "\r" ), '', ob_get_clean() );
71
- $dom = '';
72
- $nodes = '';
73
- $num_nodes = '';
74
- $urls = array();
75
- if( !empty( $output ) ){
76
- // Create a new document
77
- $dom = new DOMDocument();
78
- if( function_exists( 'mb_convert_encoding' ) ){
79
- $output = mb_convert_encoding($output, 'HTML-ENTITIES', 'UTF-8');
80
- }
81
- else{
82
- $output = preg_replace( '/&.*?;/', 'x', $output ); // multi-byte characters converted to X
83
- }
84
- // To Suppress Warnings
85
- libxml_use_internal_errors(true);
86
- $dom->loadHTML($output);
87
- libxml_use_internal_errors(false);
88
- // get all the img's
89
- $nodes = $dom->getElementsByTagName( 'img' );
90
- $num_nodes = $nodes->length;
91
- for ( $i = $num_nodes - 1; $i >= 0; $i-- ) {
92
- $url = $width = $height = '';
93
- $node = $nodes->item( $i );
94
- $urls[] = apply_filters('amp_photo_gallery_image_params', array(
95
- 'url' => $node->getAttribute( 'src' ),
96
- 'width' => 500,
97
- 'height' => 500,
98
- ));
99
- }
100
- }
101
- }
102
- return $this->render( array(
103
- 'images' => $urls,
104
- ) );
105
- }
106
-
107
- public function front_end($params) {
108
- require_once(BWG()->plugin_dir . '/framework/WDWLibraryEmbed.php');
109
- require_once(BWG()->plugin_dir . '/frontend/controllers/controller.php');
110
- $controller = new BWGControllerSite( ucfirst( $params[ 'gallery_type' ] ) );
111
- if ( WDWLibrary::get('shortcode_id', 0) || isset($params['ajax']) ) {
112
- $controller->execute($params, 1, WDWLibrary::get('bwg', 0));
113
- }
114
- else {
115
- $bwg = WDWLibrary::unique_number();
116
- $controller->execute($params, 1, $bwg);
117
- }
118
-
119
- return;
120
- }
121
- public function render( $args ) {
122
- global $redux_builder_amp,$carousel_markup_all;
123
- $this->did_convert_elements = true;
124
-
125
- $args = wp_parse_args( $args, array(
126
- 'images' => false,
127
- ) );
128
-
129
- if ( empty( $args['images'] ) ) {
130
- return '';
131
- }
132
-
133
- /*Filter*/
134
- $carousel_markup = $amp_image_lightbox = '';
135
-
136
- $carousel_markup_all = array(
137
- '1'=>array(
138
- 'main-html'=>'{{with_carousel}}
139
- {{amp_image_lightbox}}',
140
- 'image-with-caption-html'=>'<figure><div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div><figcaption {{openbrack}}class{{closebrack}}="expanded? \'expanded\' : \'\'" on="tap:AMP.setState({expanded: !expanded})" tabindex="0" role="button" >{{main_images_caption}}<span {{openbrack}}text{{closebrack}}="expanded ? \'less\' : \'more\'">more</span> </figcaption></figure>',
141
- 'image-without-caption-html' =>'<div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div>',
142
- 'gallery_css' => '',
143
-
144
- 'scripts' => array()
145
- ),
146
- '2' => array(
147
- 'main-html'=>'{{with_carousel}}
148
- {{with_carousel_thumbnail}}
149
- {{amp_image_lightbox}}',
150
- 'image-with-caption-html'=>'<figure><div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div><figcaption {{openbrack}}class{{closebrack}}="expanded? \'expanded\' : \'\'" on="tap:AMP.setState({expanded: !expanded})" tabindex="0" role="button" >{{main_images_caption}}<span {{openbrack}}text{{closebrack}}="expanded ? \'less\' : \'more\'">more</span> </figcaption></figure>',
151
- 'image-without-caption-html' =>'<div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div>',
152
- 'carousel_with_thumbnail_html'=>'<button on="tap:carousel-with-carousel-preview-{{unique_id}}.goToSlide(index={{unique_index}})" class="amp-carousel-slide amp-scrollable-carousel-slide">{{thumbnail}}</button>',
153
- 'gallery_css' => '
154
- .carousel-preview button{padding:0;}
155
- .carousel-preview amp-img{height:40px;width:60px;position:relative;}
156
- .carousel-preview {width: 100%;display: inline-block;text-align: center;margin: 20px 0px;}
157
- ',
158
- 'scripts' => array()
159
- ),
160
- '3' => array(
161
- 'main-html'=>'<div class="gal_w">{{with_images}}</div>
162
- {{amp_image_lightbox}}',
163
- 'image-with-caption-html'=>'',
164
- 'image-without-caption-html' =>'{{main_images}}',
165
- 'gallery_css' => '
166
- .gal_w{display:inline-block;width:100%}
167
- .gal_w amp-img{background:#f1f1f1;height:134px;width:150px;position: relative;float:left;margin:10px;}
168
- .cls-btn{background:#0d0d0d;border:none;position: absolute;right: 10px;}
169
- .cls-btn:after{content:"X";display:inline-block;color:#fff;font-size:20px;padding:20px;}
170
- ',
171
- 'scripts' => array()
172
- ),
173
- );
174
-
175
- $carousel_markup_all = apply_filters("ampforwp_manage_gallery_markup", $carousel_markup_all);
176
- //Default markup
177
- $markup = $carousel_markup_all[1];
178
-
179
- if( isset($redux_builder_amp['ampforwp-gallery-design-type']) && isset($carousel_markup_all[$redux_builder_amp['ampforwp-gallery-design-type'] ] ) ){
180
- $markup = $carousel_markup_all[$redux_builder_amp['ampforwp-gallery-design-type']];
181
- }
182
-
183
- $amp_images = array();
184
- foreach ( $args['images'] as $key => $image ) {
185
- $amp_img_arr = array(
186
- 'src' => $image['url'],
187
- 'width' => $image['width'],
188
- 'height' => $image['height'],
189
- 'layout' => 'fill',
190
- 'class' => 'amp-carousel-img',
191
- );
192
- if( 3 == ampforwp_get_setting('ampforwp-gallery-design-type') || true == ampforwp_get_setting('ampforwp-gallery-lightbox') ){
193
- $design3_additional_attr = array('on'=> 'tap:gallery-lightbox', 'role'=>'button',
194
- 'tabindex'=>$key);
195
- $amp_img_arr = array_merge($amp_img_arr, $design3_additional_attr);
196
- $amp_image_lightbox = '<amp-image-lightbox id="gallery-lightbox" layout="nodisplay">
197
- <div on="tap:gallery-lightbox.close" role="button"
198
- tabindex="0">
199
- <button class="cls-btn" on="tap:gallery-lightbox.close"
200
- role="button" tabindex="0"></button>
201
- </div>
202
- </amp-image-lightbox>';
203
- }
204
- $amp_images[$key] = AMP_HTML_Utils::build_tag(
205
- 'amp-img',
206
- $amp_img_arr
207
- );
208
-
209
- //Small Thumbnail Images
210
- $thumb_url = ampforwp_aq_resize( $image['url'], 120, 60, true, false ); //resize & crop the image
211
- if($thumb_url!=false){
212
- $smallimage = $thumb_url[0];
213
- $smallwidth = $thumb_url[1];
214
- $smallheight = $thumb_url[2];
215
- }else{
216
- $smallimage = $image['url'];
217
- $smallwidth = $image['width'];
218
- $smallheight = $image['height'];
219
- }
220
-
221
- $amp_images_small[$key] = AMP_HTML_Utils::build_tag(
222
- 'amp-img',
223
- array(
224
- 'src' => $smallimage,
225
- 'width' => $smallwidth,
226
- 'height' => $smallheight,
227
- 'layout' => 'fill',
228
- 'class' => 'amp-carousel-img',
229
- )
230
- );
231
-
232
- //Image markups loading
233
- $returnHtml = '';
234
- //Check if the attachment has caption or not
235
- if(isset($image['caption']) && $image['caption'] != '' && isset($markup['image-with-caption-html']) && $markup['image-with-caption-html'] != ''){
236
- // To enable the carousel magic
237
- $caption = $image['caption'];
238
- // Append the caption with image
239
- $returnHtml = isset($markup['image-with-caption-html'])? $markup['image-with-caption-html']:'';
240
- $returnHtml = str_replace('{{main_images}}', $amp_images[$key] , $returnHtml);
241
- $returnHtml = str_replace('{{main_images_caption}}', wp_kses_data( $caption ), $returnHtml);
242
- // Replace the openbrack with [ and closebrack with ]
243
- $returnHtml = str_replace('{{openbrack}}', '[', $returnHtml);
244
- $returnHtml = str_replace('{{closebrack}}', ']', $returnHtml);
245
- }
246
- elseif( isset($markup['image-without-caption-html']) ){
247
- // If there is no caption
248
- $returnHtml = isset($markup['image-without-caption-html'])? $markup['image-without-caption-html'] :'';
249
- $returnHtml = str_replace('{{main_images}}', $amp_images[$key] , $returnHtml);
250
- }
251
-
252
- $images[$key] = apply_filters('amp_gallery_images', $returnHtml, $image, $markup);
253
- }// foreach Closed
254
-
255
- //replacements
256
- $r = rand(1,100);
257
- $amp_carousel = AMP_HTML_Utils::build_tag(
258
- 'amp-carousel',
259
- array(
260
- 'width' => $this->args['width'],
261
- 'height' => $this->args['height'],
262
- 'type' => 'slides',
263
- 'layout' => 'responsive',
264
- 'class' => 'collapsible-captions',
265
- 'id' => 'carousel-with-carousel-preview-'.$r
266
- ),
267
- implode( PHP_EOL, $images ));
268
-
269
- $amp_carousel_with_thumbnail_nav = apply_filters('amp_thumbnail_images', $amp_images_small, $r, $markup);
270
- $amp_carousel_thumbnail ='';
271
- if(!empty($amp_carousel_with_thumbnail_nav)){
272
- $amp_carousel_thumbnail = AMP_HTML_Utils::build_tag(
273
- 'amp-carousel',
274
- array(
275
- 'width' => 'auto',
276
- 'height' => 48,
277
- 'type' => 'carousel',
278
- 'layout' => 'fixed-height',
279
- 'class' => 'carousel-preview'
280
- ),
281
- implode( PHP_EOL, $amp_carousel_with_thumbnail_nav ));
282
-
283
- }
284
- $amp_carousel_thumbnail = apply_filters('amp_gallery_markup', $amp_carousel_thumbnail);
285
-
286
- $returnCompleteHtml = $markup['main-html'];
287
- //last changes
288
- $returnCompleteHtml = str_replace('{{with_carousel}}', $amp_carousel, $returnCompleteHtml);
289
- $returnCompleteHtml = str_replace('{{with_carousel_thumbnail}}', $amp_carousel_thumbnail, $returnCompleteHtml);
290
- $returnCompleteHtml = str_replace('{{amp_image_lightbox}}', $amp_image_lightbox, $returnCompleteHtml);
291
- $returnCompleteHtml = str_replace('{{with_images}}', implode( PHP_EOL, $images ), $returnCompleteHtml);
292
- return $returnCompleteHtml;
293
- }
294
- }// Class closed
295
-
296
- // Add Caption in the Gallery Image
297
- add_filter('amp_gallery_images','ampforwp_new_gallery_images', 10, 3);
298
-
299
  add_filter('amp_thumbnail_images','ampforwp_new_thumbnail_images',10,3);
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+ /*
6
+ Most of the code is taken from class-amp-gallery-embed.php and Photo Gallery Plugin https://wordpress.org/plugins/photo-gallery/
7
+ */
8
+ require_once( AMP__VENDOR__DIR__ . '/includes/embeds/class-amp-base-embed-handler.php' );
9
+
10
+ class AMPforWP_Photo_Gallery_Embed_Handler extends AMPforWP\AMPVendor\AMP_Base_Embed_Handler {
11
+ private static $script_slug = 'amp-carousel';
12
+ private static $script_src = 'https://cdn.ampproject.org/v0/amp-carousel-0.2.js';
13
+
14
+ public function register_embed() {
15
+ add_shortcode( 'Best_Wordpress_Gallery', array( $this, 'shortcode' ) );
16
+ }
17
+
18
+ public function unregister_embed() {
19
+ remove_shortcode( 'Best_Wordpress_Gallery' );
20
+ }
21
+
22
+ public function get_scripts() {
23
+ if ( ! $this->did_convert_elements ) {
24
+ return array();
25
+ }
26
+
27
+ return array( self::$script_slug => self::$script_src );
28
+ }
29
+
30
+ public function shortcode( $args ) {
31
+
32
+ $params = array();
33
+ $param_id = 0;
34
+ if(isset($args['id'])){
35
+ $param_id = $args['id'];
36
+ }
37
+ $params['id'] = WDWLibrary::get('shortcode_id', $param_id);
38
+ // Get values for elementor widget.
39
+ $params['gallery_type'] = WDWLibrary::get('gallery_type', 'thumbnails');
40
+ $params['gallery_id'] = WDWLibrary::get('gallery_id', 0);
41
+ $params['tag'] = WDWLibrary::get('tag', 0);
42
+ $params['album_id'] = WDWLibrary::get('album_id', 0);
43
+ $params['theme_id'] = WDWLibrary::get('theme_id', 0);
44
+ $params['ajax'] = TRUE;
45
+ if ( isset($params['id']) && $params['id'] ) {
46
+ global $wpdb;
47
+ $shortcode = $wpdb->get_var($wpdb->prepare("SELECT tagtext FROM " . $wpdb->prefix . "bwg_shortcode WHERE id='%d'", $params['id']));
48
+ if ($shortcode) {
49
+ $shortcode_params = explode('" ', $shortcode);
50
+ foreach ($shortcode_params as $shortcode_param) {
51
+ $shortcode_param = str_replace('"', '', $shortcode_param);
52
+ $shortcode_elem = explode('=', $shortcode_param);
53
+ $params[str_replace(' ', '', $shortcode_elem[0])] = $shortcode_elem[1];
54
+ }
55
+ }
56
+ else {
57
+ return;
58
+ }
59
+ }
60
+
61
+ // 'gallery_type' is the only parameter not being checked.
62
+ // Checking for incomplete shortcodes.
63
+ if ( isset($params['gallery_type']) ) {
64
+ $pairs = WDWLibrary::get_shortcode_option_params( $params );
65
+ if ( isset($params['ajax']) ) {
66
+ $pairs['ajax'] = $params['ajax'];
67
+ }
68
+ ob_start();
69
+ $this->front_end( $pairs );
70
+ $output = str_replace( array( "\r\n", "\n", "\r" ), '', ob_get_clean() );
71
+ $dom = '';
72
+ $nodes = '';
73
+ $num_nodes = '';
74
+ $urls = array();
75
+ if( !empty( $output ) ){
76
+ // Create a new document
77
+ $dom = new DOMDocument();
78
+ if( function_exists( 'mb_convert_encoding' ) ){
79
+ $output = mb_convert_encoding($output, 'HTML-ENTITIES', 'UTF-8');
80
+ }
81
+ else{
82
+ $output = preg_replace( '/&.*?;/', 'x', $output ); // multi-byte characters converted to X
83
+ }
84
+ // To Suppress Warnings
85
+ libxml_use_internal_errors(true);
86
+ $dom->loadHTML($output);
87
+ libxml_use_internal_errors(false);
88
+ // get all the img's
89
+ $nodes = $dom->getElementsByTagName( 'img' );
90
+ $num_nodes = $nodes->length;
91
+ for ( $i = $num_nodes - 1; $i >= 0; $i-- ) {
92
+ $url = $width = $height = '';
93
+ $node = $nodes->item( $i );
94
+ $urls[] = apply_filters('amp_photo_gallery_image_params', array(
95
+ 'url' => $node->getAttribute( 'src' ),
96
+ 'width' => 500,
97
+ 'height' => 500,
98
+ ));
99
+ }
100
+ }
101
+ }
102
+ return $this->render( array(
103
+ 'images' => $urls,
104
+ ) );
105
+ }
106
+
107
+ public function front_end($params) {
108
+ require_once(BWG()->plugin_dir . '/framework/WDWLibraryEmbed.php');
109
+ require_once(BWG()->plugin_dir . '/frontend/controllers/controller.php');
110
+ $controller = new BWGControllerSite( ucfirst( $params[ 'gallery_type' ] ) );
111
+ if ( WDWLibrary::get('shortcode_id', 0) || isset($params['ajax']) ) {
112
+ $controller->execute($params, 1, WDWLibrary::get('bwg', 0));
113
+ }
114
+ else {
115
+ $bwg = WDWLibrary::unique_number();
116
+ $controller->execute($params, 1, $bwg);
117
+ }
118
+
119
+ return;
120
+ }
121
+ public function render( $args ) {
122
+ global $redux_builder_amp,$carousel_markup_all;
123
+ $this->did_convert_elements = true;
124
+
125
+ $args = wp_parse_args( $args, array(
126
+ 'images' => false,
127
+ ) );
128
+
129
+ if ( empty( $args['images'] ) ) {
130
+ return '';
131
+ }
132
+
133
+ /*Filter*/
134
+ $carousel_markup = $amp_image_lightbox = '';
135
+
136
+ $carousel_markup_all = array(
137
+ '1'=>array(
138
+ 'main-html'=>'{{with_carousel}}
139
+ {{amp_image_lightbox}}',
140
+ 'image-with-caption-html'=>'<figure><div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div><figcaption {{openbrack}}class{{closebrack}}="expanded? \'expanded\' : \'\'" on="tap:AMP.setState({expanded: !expanded})" tabindex="0" role="button" >{{main_images_caption}}<span {{openbrack}}text{{closebrack}}="expanded ? \'less\' : \'more\'">more</span> </figcaption></figure>',
141
+ 'image-without-caption-html' =>'<div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div>',
142
+ 'gallery_css' => '',
143
+
144
+ 'scripts' => array()
145
+ ),
146
+ '2' => array(
147
+ 'main-html'=>'{{with_carousel}}
148
+ {{with_carousel_thumbnail}}
149
+ {{amp_image_lightbox}}',
150
+ 'image-with-caption-html'=>'<figure><div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div><figcaption {{openbrack}}class{{closebrack}}="expanded? \'expanded\' : \'\'" on="tap:AMP.setState({expanded: !expanded})" tabindex="0" role="button" >{{main_images_caption}}<span {{openbrack}}text{{closebrack}}="expanded ? \'less\' : \'more\'">more</span> </figcaption></figure>',
151
+ 'image-without-caption-html' =>'<div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div>',
152
+ 'carousel_with_thumbnail_html'=>'<button on="tap:carousel-with-carousel-preview-{{unique_id}}.goToSlide(index={{unique_index}})" class="amp-carousel-slide amp-scrollable-carousel-slide">{{thumbnail}}</button>',
153
+ 'gallery_css' => '
154
+ .carousel-preview button{padding:0;}
155
+ .carousel-preview amp-img{height:40px;width:60px;position:relative;}
156
+ .carousel-preview {width: 100%;display: inline-block;text-align: center;margin: 20px 0px;}
157
+ ',
158
+ 'scripts' => array()
159
+ ),
160
+ '3' => array(
161
+ 'main-html'=>'<div class="gal_w">{{with_images}}</div>
162
+ {{amp_image_lightbox}}',
163
+ 'image-with-caption-html'=>'',
164
+ 'image-without-caption-html' =>'{{main_images}}',
165
+ 'gallery_css' => '
166
+ .gal_w{display:inline-block;width:100%}
167
+ .gal_w amp-img{background:#f1f1f1;height:134px;width:150px;position: relative;float:left;margin:10px;}
168
+ .cls-btn{background:#0d0d0d;border:none;position: absolute;right: 10px;}
169
+ .cls-btn:after{content:"X";display:inline-block;color:#fff;font-size:20px;padding:20px;}
170
+ ',
171
+ 'scripts' => array()
172
+ ),
173
+ );
174
+
175
+ $carousel_markup_all = apply_filters("ampforwp_manage_gallery_markup", $carousel_markup_all);
176
+ //Default markup
177
+ $markup = $carousel_markup_all[1];
178
+
179
+ if( isset($redux_builder_amp['ampforwp-gallery-design-type']) && isset($carousel_markup_all[$redux_builder_amp['ampforwp-gallery-design-type'] ] ) ){
180
+ $markup = $carousel_markup_all[$redux_builder_amp['ampforwp-gallery-design-type']];
181
+ }
182
+
183
+ $amp_images = array();
184
+ foreach ( $args['images'] as $key => $image ) {
185
+ $amp_img_arr = array(
186
+ 'src' => $image['url'],
187
+ 'width' => $image['width'],
188
+ 'height' => $image['height'],
189
+ 'layout' => 'fill',
190
+ 'class' => 'amp-carousel-img',
191
+ );
192
+ if( 3 == ampforwp_get_setting('ampforwp-gallery-design-type') || true == ampforwp_get_setting('ampforwp-gallery-lightbox') ){
193
+ $design3_additional_attr = array('on'=> 'tap:gallery-lightbox', 'role'=>'button',
194
+ 'tabindex'=>$key);
195
+ $amp_img_arr = array_merge($amp_img_arr, $design3_additional_attr);
196
+ $amp_image_lightbox = '<amp-image-lightbox id="gallery-lightbox" layout="nodisplay">
197
+ <div on="tap:gallery-lightbox.close" role="button"
198
+ tabindex="0">
199
+ <button class="cls-btn" on="tap:gallery-lightbox.close"
200
+ role="button" tabindex="0"></button>
201
+ </div>
202
+ </amp-image-lightbox>';
203
+ }
204
+ $amp_images[$key] = AMP_HTML_Utils::build_tag(
205
+ 'amp-img',
206
+ $amp_img_arr
207
+ );
208
+
209
+ //Small Thumbnail Images
210
+ $thumb_url = ampforwp_aq_resize( $image['url'], 120, 60, true, false ); //resize & crop the image
211
+ if($thumb_url!=false){
212
+ $smallimage = $thumb_url[0];
213
+ $smallwidth = $thumb_url[1];
214
+ $smallheight = $thumb_url[2];
215
+ }else{
216
+ $smallimage = $image['url'];
217
+ $smallwidth = $image['width'];
218
+ $smallheight = $image['height'];
219
+ }
220
+
221
+ $amp_images_small[$key] = AMP_HTML_Utils::build_tag(
222
+ 'amp-img',
223
+ array(
224
+ 'src' => $smallimage,
225
+ 'width' => $smallwidth,
226
+ 'height' => $smallheight,
227
+ 'layout' => 'fill',
228
+ 'class' => 'amp-carousel-img',
229
+ )
230
+ );
231
+
232
+ //Image markups loading
233
+ $returnHtml = '';
234
+ //Check if the attachment has caption or not
235
+ if(isset($image['caption']) && $image['caption'] != '' && isset($markup['image-with-caption-html']) && $markup['image-with-caption-html'] != ''){
236
+ // To enable the carousel magic
237
+ $caption = $image['caption'];
238
+ // Append the caption with image
239
+ $returnHtml = isset($markup['image-with-caption-html'])? $markup['image-with-caption-html']:'';
240
+ $returnHtml = str_replace('{{main_images}}', $amp_images[$key] , $returnHtml);
241
+ $returnHtml = str_replace('{{main_images_caption}}', wp_kses_data( $caption ), $returnHtml);
242
+ // Replace the openbrack with [ and closebrack with ]
243
+ $returnHtml = str_replace('{{openbrack}}', '[', $returnHtml);
244
+ $returnHtml = str_replace('{{closebrack}}', ']', $returnHtml);
245
+ }
246
+ elseif( isset($markup['image-without-caption-html']) ){
247
+ // If there is no caption
248
+ $returnHtml = isset($markup['image-without-caption-html'])? $markup['image-without-caption-html'] :'';
249
+ $returnHtml = str_replace('{{main_images}}', $amp_images[$key] , $returnHtml);
250
+ }
251
+
252
+ $images[$key] = apply_filters('amp_gallery_images', $returnHtml, $image, $markup);
253
+ }// foreach Closed
254
+
255
+ //replacements
256
+ $r = rand(1,100);
257
+ $amp_carousel = AMP_HTML_Utils::build_tag(
258
+ 'amp-carousel',
259
+ array(
260
+ 'width' => $this->args['width'],
261
+ 'height' => $this->args['height'],
262
+ 'type' => 'slides',
263
+ 'layout' => 'responsive',
264
+ 'class' => 'collapsible-captions',
265
+ 'id' => 'carousel-with-carousel-preview-'.$r
266
+ ),
267
+ implode( PHP_EOL, $images ));
268
+
269
+ $amp_carousel_with_thumbnail_nav = apply_filters('amp_thumbnail_images', $amp_images_small, $r, $markup);
270
+ $amp_carousel_thumbnail ='';
271
+ if(!empty($amp_carousel_with_thumbnail_nav)){
272
+ $amp_carousel_thumbnail = AMP_HTML_Utils::build_tag(
273
+ 'amp-carousel',
274
+ array(
275
+ 'width' => 'auto',
276
+ 'height' => 48,
277
+ 'type' => 'carousel',
278
+ 'layout' => 'fixed-height',
279
+ 'class' => 'carousel-preview'
280
+ ),
281
+ implode( PHP_EOL, $amp_carousel_with_thumbnail_nav ));
282
+
283
+ }
284
+ $amp_carousel_thumbnail = apply_filters('amp_gallery_markup', $amp_carousel_thumbnail);
285
+
286
+ $returnCompleteHtml = $markup['main-html'];
287
+ //last changes
288
+ $returnCompleteHtml = str_replace('{{with_carousel}}', $amp_carousel, $returnCompleteHtml);
289
+ $returnCompleteHtml = str_replace('{{with_carousel_thumbnail}}', $amp_carousel_thumbnail, $returnCompleteHtml);
290
+ $returnCompleteHtml = str_replace('{{amp_image_lightbox}}', $amp_image_lightbox, $returnCompleteHtml);
291
+ $returnCompleteHtml = str_replace('{{with_images}}', implode( PHP_EOL, $images ), $returnCompleteHtml);
292
+ return $returnCompleteHtml;
293
+ }
294
+ }// Class closed
295
+
296
+ // Add Caption in the Gallery Image
297
+ add_filter('amp_gallery_images','ampforwp_new_gallery_images', 10, 3);
298
+
299
  add_filter('amp_thumbnail_images','ampforwp_new_thumbnail_images',10,3);
classes/class-ampforwp-rev-slider.php CHANGED
@@ -1,528 +1,528 @@
1
- <?php
2
- if ( ! defined( 'ABSPATH' ) ) {
3
- exit;
4
- }
5
- /*
6
- Most of the code is taken from class-amp-gallery-embed.php and Slider Revolution https://revolution.themepunch.com/
7
- */
8
- require_once( AMP__VENDOR__DIR__ . '/includes/embeds/class-amp-base-embed-handler.php' );
9
-
10
- class AMP_Rev_Slider_Embed_Handler extends AMPforWP\AMPVendor\AMP_Base_Embed_Handler {
11
- private static $script_slug = 'amp-carousel';
12
- private static $script_src = 'https://cdn.ampproject.org/v0/amp-carousel-0.2.js';
13
-
14
- public function register_embed() {
15
- add_shortcode( 'rev_slider', array( $this, 'shortcode' ) );
16
- }
17
-
18
- public function unregister_embed() {
19
- remove_shortcode( 'rev_slider' );
20
- }
21
-
22
- public function get_scripts() {
23
- if ( ! $this->did_convert_elements ) {
24
- return array();
25
- }
26
-
27
- return array( self::$script_slug => self::$script_src );
28
- }
29
-
30
- public function shortcode( $args, $mid_content = null ) {
31
- global $post,$revSliderVersion;
32
- extract(shortcode_atts(array('alias' => ''), $args, 'rev_slider'));
33
- extract(shortcode_atts(array('settings' => ''), $args, 'rev_slider'));
34
- extract(shortcode_atts(array('order' => ''), $args, 'rev_slider'));
35
- // Below version 6.0
36
- if( !empty($revSliderVersion) && 6 > $revSliderVersion ){
37
- if($settings !== '') $settings = json_decode(str_replace(array('({', '})', "'"), array('[', ']', '"'), $settings) ,true);
38
- if($order !== '') $order = explode(',', $order);
39
-
40
- $sliderAlias = ($alias != '') ? $alias : RevSliderFunctions::getVal($args,0);
41
- $gal_ids = RevSliderFunctionsWP::check_for_shortcodes($mid_content);
42
- ob_start();
43
- if(!empty($gal_ids)){ //add a gallery based slider
44
- $slider = RevSliderOutput::putSlider($sliderAlias, '', $gal_ids);
45
- }else{
46
- $slider = RevSliderOutput::putSlider($sliderAlias, '', array(), $settings, $order);
47
- }
48
- $content = ob_get_contents();
49
- ob_clean();
50
- ob_end_clean();
51
- $ids = array();
52
- $slides = $slider->getSlidesForOutput(true,'',$gal_ids);
53
- foreach ($slides as $slide) {
54
- $bgtype = $slide->getParam('background_type', 'image');
55
- $img_data = wp_get_attachment_metadata( $slide->getImageID() );
56
-
57
- if($bgtype == 'external'){
58
- $url = esc_url($slide->getParam('slide_bg_external', ''));
59
- $imgalt = esc_attr($slide->getParam('alt_attr', ''));
60
- $img_title = esc_attr($slide->getParam('title_attr', ''));
61
- $img_w = $slide->getParam('ext_width', '1920');
62
- $img_h = $slide->getParam('ext_height', '1080');
63
- $urls[] = apply_filters('amp_gallery_image_params', array(
64
- 'url' => $url,
65
- 'width' => intval($img_w),
66
- 'height' => intval($img_h),
67
- 'bgtype' => esc_attr($bgtype)
68
- ),$attachment_id);
69
- }elseif( $bgtype == 'image'){
70
- $img_data = wp_get_attachment_metadata( $slide->getImageID() );
71
- $url = $slide->getImageUrl();
72
- $attachment_id = $slide->getImageID();
73
- $width = 480;
74
- $height = 270;
75
- if(isset($img_data['width'])){
76
- $width = $img_data['width'];
77
- }
78
- if(isset($img_data['height'])){
79
- $height = $img_data['height'];
80
- }
81
- $urls[] = apply_filters('amp_gallery_image_params', array(
82
- 'url' => $url,
83
- 'width' => intval($width),
84
- 'height' => intval($height),
85
- 'bgtype' => esc_attr($bgtype)
86
- ),$attachment_id);
87
- }elseif( $bgtype == 'youtube' ){
88
- $youtube_id = $slide->getParam('slide_bg_youtube', '');
89
- $cover_img = $slide->getImageUrl();
90
- $urls[] = apply_filters('amp_gallery_image_params', array(
91
- 'url' => $youtube_id,
92
- 'width' => '480',
93
- 'height' => '270',
94
- 'bgtype' => esc_attr($bgtype),
95
- 'cover_img' => $cover_img
96
- ),$attachment_id);
97
- }
98
- }
99
- }
100
- // Version 6.0+
101
- elseif ( defined('RS_REVISION') && 6.0 <= RS_REVISION ) {
102
- extract(shortcode_atts(array('alias' => ''), $args, 'rev_slider'));
103
- extract(shortcode_atts(array('settings' => ''), $args, 'rev_slider'));
104
- extract(shortcode_atts(array('order' => ''), $args, 'rev_slider'));
105
- extract(shortcode_atts(array('usage' => ''), $args, 'rev_slider'));
106
- $output = new RevSliderOutput();
107
- $slider_alias = ($alias != '') ? $alias : $output->get_val($args, 0); //backwards compatibility
108
-
109
- $output->set_custom_order($order);
110
- $output->set_custom_settings($settings);
111
-
112
- $gallery_ids = $output->check_for_shortcodes($mid_content); //check for example on gallery shortcode and do stuff
113
- if($gallery_ids !== false) $output->set_gallery_ids($gallery_ids);
114
-
115
- ob_start();
116
- $slider = $output->add_slider_to_stage($slider_alias, $usage);
117
- $content = ob_get_contents();
118
- ob_clean();
119
- ob_end_clean();
120
- $slides = $slider->get_slides_for_output(true,'',$gallery_ids);
121
- foreach ($slides as $slide) {
122
- $bgtype = $slide->get_param(array('bg', 'type'),'');
123
- $layers = $slide->getLayers();
124
- $image_id = $slide->image_id;
125
- $url = $slide->image_url;
126
- if ( $image_id ) {
127
- $img_data = wp_get_attachment_metadata( $image_id );
128
- }
129
- if($bgtype == 'external' || !empty($layers)){
130
- $url = esc_url($slide->get_param(array('bg','externalSrc'), ''));
131
- $imgalt = esc_attr($slide->get_param('alt_attr', ''));
132
- $img_title = esc_attr($slide->get_param('title_attr', ''));
133
- $img_w = $slide->get_param('ext_width', '1920');
134
- $img_h = $slide->get_param('ext_height', '1080');
135
- $urls[] = apply_filters('amp_gallery_image_params', array(
136
- 'url' => $url,
137
- 'width' => intval($img_w),
138
- 'height' => intval($img_h),
139
- 'bgtype' => esc_attr($bgtype)
140
- ),$image_id);
141
- if(!empty($layers)){
142
- foreach ($layers as $key => $layer) {
143
- if($layer['type'] == 'video'){
144
- $video_url = esc_attr($layer['media']['mp4Url']);;
145
- $video_url = str_replace('http:','https:',$video_url);
146
- $cover_img = esc_attr($layer['media']['posterUrl']);
147
- $urls[] = apply_filters('amp_gallery_image_params', array(
148
- 'url' => esc_url($video_url),
149
- 'width' => '480',
150
- 'height' => '270',
151
- 'bgtype' => esc_attr($layer['type']),
152
- 'cover_img' => esc_url($cover_img)
153
- ),$image_id);
154
- }
155
- }
156
- }
157
- }elseif( $bgtype == 'image' || !empty($layers) ){
158
- $width = 480;
159
- $height = 270;
160
- if(isset($img_data['width'])){
161
- $width = $img_data['width'];
162
- }
163
- if(isset($img_data['height'])){
164
- $height = $img_data['height'];
165
- }
166
- $urls[] = apply_filters('amp_gallery_image_params', array(
167
- 'url' => $url,
168
- 'width' => intval($width),
169
- 'height' => intval($height),
170
- 'bgtype' => esc_attr($bgtype)
171
- ),$image_id);
172
- if(!empty($layers)){
173
- foreach ($layers as $key => $layer) {
174
- if($layer['type'] == 'video'){
175
- $video_url = esc_attr($layer['media']['mp4Url']);;
176
- $video_url = str_replace('http:','https:',$video_url);
177
- $cover_img = esc_attr($layer['media']['posterUrl']);
178
- $urls[] = apply_filters('amp_gallery_image_params', array(
179
- 'url' => esc_url($video_url),
180
- 'width' => '480',
181
- 'height' => '270',
182
- 'bgtype' => esc_attr($layer['type']),
183
- 'cover_img' => esc_url($cover_img)
184
- ),$image_id);
185
- }
186
- }
187
- }
188
- }elseif( $bgtype == 'youtube' || !empty($layers) ){
189
- $youtube_id = $slide->get_param(array('bg','youtube'), '');
190
- $cover_img = $slide->get_param(array('bg','image'), '');
191
- $urls[] = apply_filters('amp_gallery_image_params', array(
192
- 'url' => esc_attr($youtube_id),
193
- 'width' => '480',
194
- 'height' => '270',
195
- 'bgtype' => esc_attr($bgtype),
196
- 'cover_img' => esc_attr($cover_img)
197
- ),$image_id);
198
- if(!empty($layers)){
199
- foreach ($layers as $key => $layer) {
200
- if($layer['type'] == 'video'){
201
- $video_url = esc_attr($layer['media']['mp4Url']);;
202
- $video_url = str_replace('http:','https:',$video_url);
203
- $cover_img = esc_attr($layer['media']['posterUrl']);
204
- $urls[] = apply_filters('amp_gallery_image_params', array(
205
- 'url' => esc_url($video_url),
206
- 'width' => '480',
207
- 'height' => '270',
208
- 'bgtype' => esc_attr($layer['type']),
209
- 'cover_img' => esc_url($cover_img)
210
- ),$image_id);
211
- }
212
- }
213
- }
214
- }elseif( $bgtype == 'vimeo' || !empty($layers) ){
215
- $vimeo_id = $slide->get_param(array('bg','vimeo'), '');
216
- $cover_img = $slide->get_param(array('bg','image'), '');
217
- $urls[] = apply_filters('amp_gallery_image_params', array(
218
- 'url' => esc_attr($vimeo_id),
219
- 'width' => '480',
220
- 'height' => '270',
221
- 'bgtype' => esc_attr($bgtype),
222
- 'cover_img' => esc_attr($cover_img)
223
- ),$image_id);
224
- if(!empty($layers)){
225
- foreach ($layers as $key => $layer) {
226
- if($layer['type'] == 'video'){
227
- $video_url = esc_attr($layer['media']['mp4Url']);;
228
- $video_url = str_replace('http:','https:',$video_url);
229
- $cover_img = esc_attr($layer['media']['posterUrl']);
230
- $urls[] = apply_filters('amp_gallery_image_params', array(
231
- 'url' => esc_url($video_url),
232
- 'width' => '480',
233
- 'height' => '270',
234
- 'bgtype' => esc_attr($layer['type']),
235
- 'cover_img' => esc_url($cover_img)
236
- ),$image_id);
237
- }
238
- }
239
- }
240
- }elseif($bgtype == 'html5' || !empty($layers)){
241
- $html5_url = $slide->get_param(array('bg','mpeg'), '');
242
- $html5_url = str_replace('http:','https:',$html5_url);
243
- $cover_img = $slide->get_param(array('bg','image'), '');
244
- $urls[] = apply_filters('amp_gallery_image_params', array(
245
- 'url' => esc_url($html5_url),
246
- 'width' => '480',
247
- 'height' => '270',
248
- 'bgtype' => esc_attr($bgtype),
249
- 'cover_img' => esc_url($cover_img)
250
- ),$image_id);
251
- if(!empty($layers)){
252
- foreach ($layers as $key => $layer) {
253
- if($layer['type'] == 'video'){
254
- $video_url = esc_attr($layer['media']['mp4Url']);;
255
- $video_url = str_replace('http:','https:',$video_url);
256
- $cover_img = esc_attr($layer['media']['posterUrl']);
257
- $urls[] = apply_filters('amp_gallery_image_params', array(
258
- 'url' => esc_url($video_url),
259
- 'width' => '480',
260
- 'height' => '270',
261
- 'bgtype' => esc_attr($layer['type']),
262
- 'cover_img' => esc_url($cover_img)
263
- ),$image_id);
264
- }
265
- }
266
- }
267
- }
268
- }
269
- }
270
-
271
- return $this->render( array(
272
- 'images' => $urls,
273
- ) );
274
- }
275
-
276
- public function render( $args ) {
277
- global $redux_builder_amp,$carousel_markup_all;
278
- $this->did_convert_elements = true;
279
-
280
- $args = wp_parse_args( $args, array(
281
- 'images' => false,
282
- ) );
283
-
284
- if ( empty( $args['images'] ) ) {
285
- return '';
286
- }
287
-
288
- /*Filter*/
289
- $carousel_markup = $amp_image_lightbox = '';
290
-
291
- $carousel_markup_all = array(
292
- '1'=>array(
293
- 'main-html'=>'{{with_carousel}}
294
- {{amp_image_lightbox}}',
295
- 'image-with-caption-html'=>'<figure><div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div><figcaption {{openbrack}}class{{closebrack}}="expanded? \'expanded\' : \'\'" on="tap:AMP.setState({expanded: !expanded})" tabindex="0" role="button" >{{main_images_caption}}<span {{openbrack}}text{{closebrack}}="expanded ? \'less\' : \'more\'">more</span> </figcaption></figure>',
296
- 'image-without-caption-html' =>'<div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div>',
297
- 'gallery_css' => '.cls-btn{background:#0d0d0d;border:none;position: absolute;right: 10px;}
298
- .cls-btn:after{content:"X";display:inline-block;color:#fff;font-size:20px;padding:20px;}',
299
-
300
- 'scripts' => array()
301
- ),
302
- '2' => array(
303
- 'main-html'=>'{{with_carousel}}
304
- {{with_carousel_thumbnail}}
305
- {{amp_image_lightbox}}',
306
- 'image-with-caption-html'=>'<figure><div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div><figcaption {{openbrack}}class{{closebrack}}="expanded? \'expanded\' : \'\'" on="tap:AMP.setState({expanded: !expanded})" tabindex="0" role="button" >{{main_images_caption}}<span {{openbrack}}text{{closebrack}}="expanded ? \'less\' : \'more\'">more</span> </figcaption></figure>',
307
- 'image-without-caption-html' =>'<div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div>',
308
- 'carousel_with_thumbnail_html'=>'<button on="tap:carousel-with-carousel-preview-{{unique_id}}.goToSlide(index={{unique_index}})" class="amp-carousel-slide amp-scrollable-carousel-slide">{{thumbnail}}</button>',
309
- 'gallery_css' => '
310
- .cls-btn{background:#0d0d0d;border:none;position: absolute;right: 10px;}
311
- .cls-btn:after{content:"X";display:inline-block;color:#fff;font-size:20px;padding:20px;}
312
- .carousel-preview button{padding:0;}
313
- .carousel-preview amp-img{height:40px;width:60px;position:relative;}
314
- .carousel-preview {width: 100%;display: inline-block;text-align: center;margin: 20px 0px;}
315
- ',
316
- 'scripts' => array()
317
- ),
318
- '3' => array(
319
- 'main-html'=>'<div class="gal_w">{{with_images}}</div>
320
- {{amp_image_lightbox}}',
321
- 'image-with-caption-html'=>'',
322
- 'image-without-caption-html' =>'{{main_images}}',
323
- 'gallery_css' => '
324
- .gal_w{display:inline-block;width:100%}
325
- .gal_w amp-img{background:#f1f1f1;height:134px;width:150px;position: relative;float:left;margin:10px;}
326
- .cls-btn{background:#0d0d0d;border:none;position: absolute;right: 10px;}
327
- .cls-btn:after{content:"X";display:inline-block;color:#fff;font-size:20px;padding:20px;}
328
- ',
329
- 'scripts' => array()
330
- ),
331
- );
332
-
333
- $carousel_markup_all = apply_filters("ampforwp_manage_gallery_markup", $carousel_markup_all);
334
- //Default markup
335
- $markup = $carousel_markup_all[1];
336
-
337
- if( isset($redux_builder_amp['ampforwp-gallery-design-type']) && isset($carousel_markup_all[$redux_builder_amp['ampforwp-gallery-design-type'] ] ) ){
338
- $markup = $carousel_markup_all[$redux_builder_amp['ampforwp-gallery-design-type']];
339
- }
340
-
341
- $amp_images = array();
342
- $tag_type = '';
343
- foreach ( $args['images'] as $key => $image ) {
344
- if($image['bgtype'] =="image" || $image['bgtype'] =="external" ){
345
- $amp_img_arr = array(
346
- 'src' => $image['url'],
347
- 'width' => $image['width'],
348
- 'height' => $image['height'],
349
- 'layout' => 'fill',
350
- 'class' => 'amp-carousel-img',
351
- );
352
- $tag_type = 'amp-img';
353
- }elseif( $image['bgtype'] =="youtube"){
354
- $amp_img_arr = array(
355
- 'data-videoid'=> $image['url'],
356
- 'width' => $image['width'],
357
- 'height' => $image['height'],
358
- 'layout'=>'responsive',
359
- 'class' => 'amp-carousel-img',
360
- 'data-param-playlist'=> $image['url'],
361
- 'data-param-modestbranding'=> '1',
362
- 'autoplay' => '',
363
- );
364
- $tag_type = 'amp-youtube';
365
- }elseif( $image['bgtype'] =="vimeo"){
366
- $amp_img_arr = array(
367
- 'data-videoid'=> $image['url'],
368
- 'width' => $image['width'],
369
- 'height' => $image['height'],
370
- 'layout'=>'responsive',
371
- 'class' => 'amp-carousel-img',
372
- 'autoplay' => '',
373
- );
374
- $tag_type = 'amp-vimeo';
375
- }elseif( $image['bgtype'] =="html5"){
376
- $amp_img_arr = array(
377
- 'src'=> $image['url'],
378
- 'width' => $image['width'],
379
- 'height' => $image['height'],
380
- 'layout'=>'responsive',
381
- 'class' => 'amp-carousel-img',
382
- 'poster' => $image['cover_img'],
383
- 'controls' => '',
384
- 'autoplay' => '',
385
- );
386
- $tag_type = 'amp-video';
387
- }
388
- elseif( $image['bgtype'] =="video"){
389
- $amp_img_arr = array(
390
- 'src'=> $image['url'],
391
- 'width' => $image['width'],
392
- 'height' => $image['height'],
393
- 'layout'=>'responsive',
394
- 'class' => 'amp-carousel-img',
395
- 'poster' => $image['cover_img'],
396
- 'controls' => '',
397
- 'autoplay' => '',
398
- );
399
- $tag_type = 'amp-video';
400
- }
401
- if( 3 == ampforwp_get_setting('ampforwp-gallery-design-type') || true == ampforwp_get_setting('ampforwp-gallery-lightbox') ){
402
- $design3_additional_attr = array('on'=> 'tap:gallery-lightbox', 'role'=>'button',
403
- 'tabindex'=>$key);
404
- $amp_img_arr = array_merge($amp_img_arr, $design3_additional_attr);
405
- $amp_image_lightbox = '<amp-image-lightbox id="gallery-lightbox" layout="nodisplay">
406
- <div on="tap:gallery-lightbox.close" role="button"
407
- tabindex="0">
408
- <button class="cls-btn" on="tap:gallery-lightbox.close"
409
- role="button" tabindex="0"></button>
410
- </div>
411
- </amp-image-lightbox>';
412
- }
413
- $amp_images[$key] = AMP_HTML_Utils::build_tag(
414
- $tag_type,
415
- $amp_img_arr
416
- );
417
-
418
- $upload_dir = wp_upload_dir();
419
- $upload_url = $upload_dir['baseurl'];
420
- if( $tag_type == 'amp-img'){
421
- if ( false === strpos( $image['url'], $upload_url ) ) {
422
- $smallimage = $image['url'];
423
- $smallwidth = 120;
424
- $smallheight = 60;
425
- }else{
426
- //Small Thumbnail Images
427
- $thumb_url = ampforwp_aq_resize( $image['url'], 120, 60, true, false ); //resize & crop the image
428
- if($thumb_url!=false){
429
- $smallimage = $thumb_url[0];
430
- $smallwidth = $thumb_url[1];
431
- $smallheight = $thumb_url[2];
432
- }else{
433
- $smallimage = $image['url'];
434
- $smallwidth = $image['width'];
435
- $smallheight = $image['height'];
436
- }
437
- }
438
- }elseif( $tag_type == 'amp-youtube'){
439
- $smallimage = $image['cover_img'];
440
- $smallwidth = 120;
441
- $smallheight = 60;
442
- }
443
-
444
- $amp_images_small[$key] = AMP_HTML_Utils::build_tag(
445
- 'amp-img',
446
- array(
447
- 'src' => $smallimage,
448
- 'width' => $smallwidth,
449
- 'height' => $smallheight,
450
- 'layout' => 'fill',
451
- 'class' => 'amp-carousel-img',
452
- )
453
- );
454
-
455
- //Image markups loading
456
- $returnHtml = '';
457
- //Check if the attachment has caption or not
458
- if(isset($image['caption']) && $image['caption'] != '' && isset($markup['image-with-caption-html']) && $markup['image-with-caption-html'] != ''){
459
- // To enable the carousel magic
460
- $caption = $image['caption'];
461
- // Append the caption with image
462
- $returnHtml = isset($markup['image-with-caption-html'])? $markup['image-with-caption-html']:'';
463
- $returnHtml = str_replace('{{main_images}}', $amp_images[$key] , $returnHtml);
464
- $returnHtml = str_replace('{{main_images_caption}}', wp_kses_data( $caption ), $returnHtml);
465
- // Replace the openbrack with [ and closebrack with ]
466
- $returnHtml = str_replace('{{openbrack}}', '[', $returnHtml);
467
- $returnHtml = str_replace('{{closebrack}}', ']', $returnHtml);
468
- }
469
- elseif( isset($markup['image-without-caption-html']) ){
470
- // If there is no caption
471
- $returnHtml = isset($markup['image-without-caption-html'])? $markup['image-without-caption-html'] :'';
472
- $returnHtml = str_replace('{{main_images}}', $amp_images[$key] , $returnHtml);
473
- }
474
-
475
- $images[$key] = apply_filters('amp_gallery_images', $returnHtml, $image, $markup);
476
- }// foreach Closed
477
-
478
- //replacements
479
- $r = rand(1,100);
480
-
481
- $carousel_args = array(
482
- 'width' => $this->args['width'],
483
- 'height' => $this->args['height'],
484
- 'type' => 'slides',
485
- 'layout' => 'responsive',
486
- 'class' => 'collapsible-captions',
487
- 'id' => 'carousel-with-carousel-preview-'.$r
488
- );
489
- $c_args = array('loop'=>'', 'autoplay'=>'');
490
- $carousel_filter = apply_filters('ampforwp_carousel_args',$c_args);
491
- $carousel_args = array_merge($carousel_args,$carousel_filter);
492
-
493
- $amp_carousel = AMP_HTML_Utils::build_tag(
494
- 'amp-carousel',
495
- $carousel_args,
496
- implode( PHP_EOL, $images ));
497
-
498
- $amp_carousel_with_thumbnail_nav = apply_filters('amp_thumbnail_images', $amp_images_small, $r, $markup);
499
- $amp_carousel_thumbnail ='';
500
- if(!empty($amp_carousel_with_thumbnail_nav)){
501
- $amp_carousel_thumbnail = AMP_HTML_Utils::build_tag(
502
- 'amp-carousel',
503
- array(
504
- 'width' => 'auto',
505
- 'height' => 48,
506
- 'type' => 'carousel',
507
- 'layout' => 'fixed-height',
508
- 'class' => 'carousel-preview'
509
- ),
510
- implode( PHP_EOL, $amp_carousel_with_thumbnail_nav ));
511
-
512
- }
513
- $amp_carousel_thumbnail = apply_filters('amp_gallery_markup', $amp_carousel_thumbnail);
514
-
515
- $returnCompleteHtml = $markup['main-html'];
516
- //last changes
517
- $returnCompleteHtml = str_replace('{{with_carousel}}', $amp_carousel, $returnCompleteHtml);
518
- $returnCompleteHtml = str_replace('{{with_carousel_thumbnail}}', $amp_carousel_thumbnail, $returnCompleteHtml);
519
- $returnCompleteHtml = str_replace('{{amp_image_lightbox}}', $amp_image_lightbox, $returnCompleteHtml);
520
- $returnCompleteHtml = str_replace('{{with_images}}', implode( PHP_EOL, $images ), $returnCompleteHtml);
521
- return $returnCompleteHtml;
522
- }
523
- }// Class closed
524
-
525
- // Add Caption in the Gallery Image
526
- add_filter('amp_gallery_images','ampforwp_new_gallery_images', 10, 3);
527
-
528
  add_filter('amp_thumbnail_images','ampforwp_new_thumbnail_images',10,3);
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+ /*
6
+ Most of the code is taken from class-amp-gallery-embed.php and Slider Revolution https://revolution.themepunch.com/
7
+ */
8
+ require_once( AMP__VENDOR__DIR__ . '/includes/embeds/class-amp-base-embed-handler.php' );
9
+
10
+ class AMP_Rev_Slider_Embed_Handler extends AMPforWP\AMPVendor\AMP_Base_Embed_Handler {
11
+ private static $script_slug = 'amp-carousel';
12
+ private static $script_src = 'https://cdn.ampproject.org/v0/amp-carousel-0.2.js';
13
+
14
+ public function register_embed() {
15
+ add_shortcode( 'rev_slider', array( $this, 'shortcode' ) );
16
+ }
17
+
18
+ public function unregister_embed() {
19
+ remove_shortcode( 'rev_slider' );
20
+ }
21
+
22
+ public function get_scripts() {
23
+ if ( ! $this->did_convert_elements ) {
24
+ return array();
25
+ }
26
+
27
+ return array( self::$script_slug => self::$script_src );
28
+ }
29
+
30
+ public function shortcode( $args, $mid_content = null ) {
31
+ global $post,$revSliderVersion;
32
+ extract(shortcode_atts(array('alias' => ''), $args, 'rev_slider'));
33
+ extract(shortcode_atts(array('settings' => ''), $args, 'rev_slider'));
34
+ extract(shortcode_atts(array('order' => ''), $args, 'rev_slider'));
35
+ // Below version 6.0
36
+ if( !empty($revSliderVersion) && 6 > $revSliderVersion ){
37
+ if($settings !== '') $settings = json_decode(str_replace(array('({', '})', "'"), array('[', ']', '"'), $settings) ,true);
38
+ if($order !== '') $order = explode(',', $order);
39
+
40
+ $sliderAlias = ($alias != '') ? $alias : RevSliderFunctions::getVal($args,0);
41
+ $gal_ids = RevSliderFunctionsWP::check_for_shortcodes($mid_content);
42
+ ob_start();
43
+ if(!empty($gal_ids)){ //add a gallery based slider
44
+ $slider = RevSliderOutput::putSlider($sliderAlias, '', $gal_ids);
45
+ }else{
46
+ $slider = RevSliderOutput::putSlider($sliderAlias, '', array(), $settings, $order);
47
+ }
48
+ $content = ob_get_contents();
49
+ ob_clean();
50
+ ob_end_clean();
51
+ $ids = array();
52
+ $slides = $slider->getSlidesForOutput(true,'',$gal_ids);
53
+ foreach ($slides as $slide) {
54
+ $bgtype = $slide->getParam('background_type', 'image');
55
+ $img_data = wp_get_attachment_metadata( $slide->getImageID() );
56
+
57
+ if($bgtype == 'external'){
58
+ $url = esc_url($slide->getParam('slide_bg_external', ''));
59
+ $imgalt = esc_attr($slide->getParam('alt_attr', ''));
60
+ $img_title = esc_attr($slide->getParam('title_attr', ''));
61
+ $img_w = $slide->getParam('ext_width', '1920');
62
+ $img_h = $slide->getParam('ext_height', '1080');
63
+ $urls[] = apply_filters('amp_gallery_image_params', array(
64
+ 'url' => $url,
65
+ 'width' => intval($img_w),
66
+ 'height' => intval($img_h),
67
+ 'bgtype' => esc_attr($bgtype)
68
+ ),$attachment_id);
69
+ }elseif( $bgtype == 'image'){
70
+ $img_data = wp_get_attachment_metadata( $slide->getImageID() );
71
+ $url = $slide->getImageUrl();
72
+ $attachment_id = $slide->getImageID();
73
+ $width = 480;
74
+ $height = 270;
75
+ if(isset($img_data['width'])){
76
+ $width = $img_data['width'];
77
+ }
78
+ if(isset($img_data['height'])){
79
+ $height = $img_data['height'];
80
+ }
81
+ $urls[] = apply_filters('amp_gallery_image_params', array(
82
+ 'url' => $url,
83
+ 'width' => intval($width),
84
+ 'height' => intval($height),
85
+ 'bgtype' => esc_attr($bgtype)
86
+ ),$attachment_id);
87
+ }elseif( $bgtype == 'youtube' ){
88
+ $youtube_id = $slide->getParam('slide_bg_youtube', '');
89
+ $cover_img = $slide->getImageUrl();
90
+ $urls[] = apply_filters('amp_gallery_image_params', array(
91
+ 'url' => $youtube_id,
92
+ 'width' => '480',
93
+ 'height' => '270',
94
+ 'bgtype' => esc_attr($bgtype),
95
+ 'cover_img' => $cover_img
96
+ ),$attachment_id);
97
+ }
98
+ }
99
+ }
100
+ // Version 6.0+
101
+ elseif ( defined('RS_REVISION') && 6.0 <= RS_REVISION ) {
102
+ extract(shortcode_atts(array('alias' => ''), $args, 'rev_slider'));
103
+ extract(shortcode_atts(array('settings' => ''), $args, 'rev_slider'));
104
+ extract(shortcode_atts(array('order' => ''), $args, 'rev_slider'));
105
+ extract(shortcode_atts(array('usage' => ''), $args, 'rev_slider'));
106
+ $output = new RevSliderOutput();
107
+ $slider_alias = ($alias != '') ? $alias : $output->get_val($args, 0); //backwards compatibility
108
+
109
+ $output->set_custom_order($order);
110
+ $output->set_custom_settings($settings);
111
+
112
+ $gallery_ids = $output->check_for_shortcodes($mid_content); //check for example on gallery shortcode and do stuff
113
+ if($gallery_ids !== false) $output->set_gallery_ids($gallery_ids);
114
+
115
+ ob_start();
116
+ $slider = $output->add_slider_to_stage($slider_alias, $usage);
117
+ $content = ob_get_contents();
118
+ ob_clean();
119
+ ob_end_clean();
120
+ $slides = $slider->get_slides_for_output(true,'',$gallery_ids);
121
+ foreach ($slides as $slide) {
122
+ $bgtype = $slide->get_param(array('bg', 'type'),'');
123
+ $layers = $slide->getLayers();
124
+ $image_id = $slide->image_id;
125
+ $url = $slide->image_url;
126
+ if ( $image_id ) {
127
+ $img_data = wp_get_attachment_metadata( $image_id );
128
+ }
129
+ if($bgtype == 'external' || !empty($layers)){
130
+ $url = esc_url($slide->get_param(array('bg','externalSrc'), ''));
131
+ $imgalt = esc_attr($slide->get_param('alt_attr', ''));
132
+ $img_title = esc_attr($slide->get_param('title_attr', ''));
133
+ $img_w = $slide->get_param('ext_width', '1920');
134
+ $img_h = $slide->get_param('ext_height', '1080');
135
+ $urls[] = apply_filters('amp_gallery_image_params', array(
136
+ 'url' => $url,
137
+ 'width' => intval($img_w),
138
+ 'height' => intval($img_h),
139
+ 'bgtype' => esc_attr($bgtype)
140
+ ),$image_id);
141
+ if(!empty($layers)){
142
+ foreach ($layers as $key => $layer) {
143
+ if($layer['type'] == 'video'){
144
+ $video_url = esc_attr($layer['media']['mp4Url']);;
145
+ $video_url = str_replace('http:','https:',$video_url);
146
+ $cover_img = esc_attr($layer['media']['posterUrl']);
147
+ $urls[] = apply_filters('amp_gallery_image_params', array(
148
+ 'url' => esc_url($video_url),
149
+ 'width' => '480',
150
+ 'height' => '270',
151
+ 'bgtype' => esc_attr($layer['type']),
152
+ 'cover_img' => esc_url($cover_img)
153
+ ),$image_id);
154
+ }
155
+ }
156
+ }
157
+ }elseif( $bgtype == 'image' || !empty($layers) ){
158
+ $width = 480;
159
+ $height = 270;
160
+ if(isset($img_data['width'])){
161
+ $width = $img_data['width'];
162
+ }
163
+ if(isset($img_data['height'])){
164
+ $height = $img_data['height'];
165
+ }
166
+ $urls[] = apply_filters('amp_gallery_image_params', array(
167
+ 'url' => $url,
168
+ 'width' => intval($width),
169
+ 'height' => intval($height),
170
+ 'bgtype' => esc_attr($bgtype)
171
+ ),$image_id);
172
+ if(!empty($layers)){
173
+ foreach ($layers as $key => $layer) {
174
+ if($layer['type'] == 'video'){
175
+ $video_url = esc_attr($layer['media']['mp4Url']);;
176
+ $video_url = str_replace('http:','https:',$video_url);
177
+ $cover_img = esc_attr($layer['media']['posterUrl']);
178
+ $urls[] = apply_filters('amp_gallery_image_params', array(
179
+ 'url' => esc_url($video_url),
180
+ 'width' => '480',
181
+ 'height' => '270',
182
+ 'bgtype' => esc_attr($layer['type']),
183
+ 'cover_img' => esc_url($cover_img)
184
+ ),$image_id);
185
+ }
186
+ }
187
+ }
188
+ }elseif( $bgtype == 'youtube' || !empty($layers) ){
189
+ $youtube_id = $slide->get_param(array('bg','youtube'), '');
190
+ $cover_img = $slide->get_param(array('bg','image'), '');
191
+ $urls[] = apply_filters('amp_gallery_image_params', array(
192
+ 'url' => esc_attr($youtube_id),
193
+ 'width' => '480',
194
+ 'height' => '270',
195
+ 'bgtype' => esc_attr($bgtype),
196
+ 'cover_img' => esc_attr($cover_img)
197
+ ),$image_id);
198
+ if(!empty($layers)){
199
+ foreach ($layers as $key => $layer) {
200
+ if($layer['type'] == 'video'){
201
+ $video_url = esc_attr($layer['media']['mp4Url']);;
202
+ $video_url = str_replace('http:','https:',$video_url);
203
+ $cover_img = esc_attr($layer['media']['posterUrl']);
204
+ $urls[] = apply_filters('amp_gallery_image_params', array(
205
+ 'url' => esc_url($video_url),
206
+ 'width' => '480',
207
+ 'height' => '270',
208
+ 'bgtype' => esc_attr($layer['type']),
209
+ 'cover_img' => esc_url($cover_img)
210
+ ),$image_id);
211
+ }
212
+ }
213
+ }
214
+ }elseif( $bgtype == 'vimeo' || !empty($layers) ){
215
+ $vimeo_id = $slide->get_param(array('bg','vimeo'), '');
216
+ $cover_img = $slide->get_param(array('bg','image'), '');
217
+ $urls[] = apply_filters('amp_gallery_image_params', array(
218
+ 'url' => esc_attr($vimeo_id),
219
+ 'width' => '480',
220
+ 'height' => '270',
221
+ 'bgtype' => esc_attr($bgtype),
222
+ 'cover_img' => esc_attr($cover_img)
223
+ ),$image_id);
224
+ if(!empty($layers)){
225
+ foreach ($layers as $key => $layer) {
226
+ if($layer['type'] == 'video'){
227
+ $video_url = esc_attr($layer['media']['mp4Url']);;
228
+ $video_url = str_replace('http:','https:',$video_url);
229
+ $cover_img = esc_attr($layer['media']['posterUrl']);
230
+ $urls[] = apply_filters('amp_gallery_image_params', array(
231
+ 'url' => esc_url($video_url),
232
+ 'width' => '480',
233
+ 'height' => '270',
234
+ 'bgtype' => esc_attr($layer['type']),
235
+ 'cover_img' => esc_url($cover_img)
236
+ ),$image_id);
237
+ }
238
+ }
239
+ }
240
+ }elseif($bgtype == 'html5' || !empty($layers)){
241
+ $html5_url = $slide->get_param(array('bg','mpeg'), '');
242
+ $html5_url = str_replace('http:','https:',$html5_url);
243
+ $cover_img = $slide->get_param(array('bg','image'), '');
244
+ $urls[] = apply_filters('amp_gallery_image_params', array(
245
+ 'url' => esc_url($html5_url),
246
+ 'width' => '480',
247
+ 'height' => '270',
248
+ 'bgtype' => esc_attr($bgtype),
249
+ 'cover_img' => esc_url($cover_img)
250
+ ),$image_id);
251
+ if(!empty($layers)){
252
+ foreach ($layers as $key => $layer) {
253
+ if($layer['type'] == 'video'){
254
+ $video_url = esc_attr($layer['media']['mp4Url']);;
255
+ $video_url = str_replace('http:','https:',$video_url);
256
+ $cover_img = esc_attr($layer['media']['posterUrl']);
257
+ $urls[] = apply_filters('amp_gallery_image_params', array(
258
+ 'url' => esc_url($video_url),
259
+ 'width' => '480',
260
+ 'height' => '270',
261
+ 'bgtype' => esc_attr($layer['type']),
262
+ 'cover_img' => esc_url($cover_img)
263
+ ),$image_id);
264
+ }
265
+ }
266
+ }
267
+ }
268
+ }
269
+ }
270
+
271
+ return $this->render( array(
272
+ 'images' => $urls,
273
+ ) );
274
+ }
275
+
276
+ public function render( $args ) {
277
+ global $redux_builder_amp,$carousel_markup_all;
278
+ $this->did_convert_elements = true;
279
+
280
+ $args = wp_parse_args( $args, array(
281
+ 'images' => false,
282
+ ) );
283
+
284
+ if ( empty( $args['images'] ) ) {
285
+ return '';
286
+ }
287
+
288
+ /*Filter*/
289
+ $carousel_markup = $amp_image_lightbox = '';
290
+
291
+ $carousel_markup_all = array(
292
+ '1'=>array(
293
+ 'main-html'=>'{{with_carousel}}
294
+ {{amp_image_lightbox}}',
295
+ 'image-with-caption-html'=>'<figure><div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div><figcaption {{openbrack}}class{{closebrack}}="expanded? \'expanded\' : \'\'" on="tap:AMP.setState({expanded: !expanded})" tabindex="0" role="button" >{{main_images_caption}}<span {{openbrack}}text{{closebrack}}="expanded ? \'less\' : \'more\'">more</span> </figcaption></figure>',
296
+ 'image-without-caption-html' =>'<div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div>',
297
+ 'gallery_css' => '.cls-btn{background:#0d0d0d;border:none;position: absolute;right: 10px;}
298
+ .cls-btn:after{content:"X";display:inline-block;color:#fff;font-size:20px;padding:20px;}',
299
+
300
+ 'scripts' => array()
301
+ ),
302
+ '2' => array(
303
+ 'main-html'=>'{{with_carousel}}
304
+ {{with_carousel_thumbnail}}
305
+ {{amp_image_lightbox}}',
306
+ 'image-with-caption-html'=>'<figure><div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div><figcaption {{openbrack}}class{{closebrack}}="expanded? \'expanded\' : \'\'" on="tap:AMP.setState({expanded: !expanded})" tabindex="0" role="button" >{{main_images_caption}}<span {{openbrack}}text{{closebrack}}="expanded ? \'less\' : \'more\'">more</span> </figcaption></figure>',
307
+ 'image-without-caption-html' =>'<div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div>',
308
+ 'carousel_with_thumbnail_html'=>'<button on="tap:carousel-with-carousel-preview-{{unique_id}}.goToSlide(index={{unique_index}})" class="amp-carousel-slide amp-scrollable-carousel-slide">{{thumbnail}}</button>',
309
+ 'gallery_css' => '
310
+ .cls-btn{background:#0d0d0d;border:none;position: absolute;right: 10px;}
311
+ .cls-btn:after{content:"X";display:inline-block;color:#fff;font-size:20px;padding:20px;}
312
+ .carousel-preview button{padding:0;}
313
+ .carousel-preview amp-img{height:40px;width:60px;position:relative;}
314
+ .carousel-preview {width: 100%;display: inline-block;text-align: center;margin: 20px 0px;}
315
+ ',
316
+ 'scripts' => array()
317
+ ),
318
+ '3' => array(
319
+ 'main-html'=>'<div class="gal_w">{{with_images}}</div>
320
+ {{amp_image_lightbox}}',
321
+ 'image-with-caption-html'=>'',
322
+ 'image-without-caption-html' =>'{{main_images}}',
323
+ 'gallery_css' => '
324
+ .gal_w{display:inline-block;width:100%}
325
+ .gal_w amp-img{background:#f1f1f1;height:134px;width:150px;position: relative;float:left;margin:10px;}
326
+ .cls-btn{background:#0d0d0d;border:none;position: absolute;right: 10px;}
327
+ .cls-btn:after{content:"X";display:inline-block;color:#fff;font-size:20px;padding:20px;}
328
+ ',
329
+ 'scripts' => array()
330
+ ),
331
+ );
332
+
333
+ $carousel_markup_all = apply_filters("ampforwp_manage_gallery_markup", $carousel_markup_all);
334
+ //Default markup
335
+ $markup = $carousel_markup_all[1];
336
+
337
+ if( isset($redux_builder_amp['ampforwp-gallery-design-type']) && isset($carousel_markup_all[$redux_builder_amp['ampforwp-gallery-design-type'] ] ) ){
338
+ $markup = $carousel_markup_all[$redux_builder_amp['ampforwp-gallery-design-type']];
339
+ }
340
+
341
+ $amp_images = array();
342
+ $tag_type = '';
343
+ foreach ( $args['images'] as $key => $image ) {
344
+ if($image['bgtype'] =="image" || $image['bgtype'] =="external" ){
345
+ $amp_img_arr = array(
346
+ 'src' => $image['url'],
347
+ 'width' => $image['width'],
348
+ 'height' => $image['height'],
349
+ 'layout' => 'fill',
350
+ 'class' => 'amp-carousel-img',
351
+ );
352
+ $tag_type = 'amp-img';
353
+ }elseif( $image['bgtype'] =="youtube"){
354
+ $amp_img_arr = array(
355
+ 'data-videoid'=> $image['url'],
356
+ 'width' => $image['width'],
357
+ 'height' => $image['height'],
358
+ 'layout'=>'responsive',
359
+ 'class' => 'amp-carousel-img',
360
+ 'data-param-playlist'=> $image['url'],
361
+ 'data-param-modestbranding'=> '1',
362
+ 'autoplay' => '',
363
+ );
364
+ $tag_type = 'amp-youtube';
365
+ }elseif( $image['bgtype'] =="vimeo"){
366
+ $amp_img_arr = array(
367
+ 'data-videoid'=> $image['url'],
368
+ 'width' => $image['width'],
369
+ 'height' => $image['height'],
370
+ 'layout'=>'responsive',
371
+ 'class' => 'amp-carousel-img',
372
+ 'autoplay' => '',
373
+ );
374
+ $tag_type = 'amp-vimeo';
375
+ }elseif( $image['bgtype'] =="html5"){
376
+ $amp_img_arr = array(
377
+ 'src'=> $image['url'],
378
+ 'width' => $image['width'],
379
+ 'height' => $image['height'],
380
+ 'layout'=>'responsive',
381
+ 'class' => 'amp-carousel-img',
382
+ 'poster' => $image['cover_img'],
383
+ 'controls' => '',
384
+ 'autoplay' => '',
385
+ );
386
+ $tag_type = 'amp-video';
387
+ }
388
+ elseif( $image['bgtype'] =="video"){
389
+ $amp_img_arr = array(
390
+ 'src'=> $image['url'],
391
+ 'width' => $image['width'],
392
+ 'height' => $image['height'],
393
+ 'layout'=>'responsive',
394
+ 'class' => 'amp-carousel-img',
395
+ 'poster' => $image['cover_img'],
396
+ 'controls' => '',
397
+ 'autoplay' => '',
398
+ );
399
+ $tag_type = 'amp-video';
400
+ }
401
+ if( 3 == ampforwp_get_setting('ampforwp-gallery-design-type') || true == ampforwp_get_setting('ampforwp-gallery-lightbox') ){
402
+ $design3_additional_attr = array('on'=> 'tap:gallery-lightbox', 'role'=>'button',
403
+ 'tabindex'=>$key);
404
+ $amp_img_arr = array_merge($amp_img_arr, $design3_additional_attr);
405
+ $amp_image_lightbox = '<amp-image-lightbox id="gallery-lightbox" layout="nodisplay">
406
+ <div on="tap:gallery-lightbox.close" role="button"
407
+ tabindex="0">
408
+ <button class="cls-btn" on="tap:gallery-lightbox.close"
409
+ role="button" tabindex="0"></button>
410
+ </div>
411
+ </amp-image-lightbox>';
412
+ }
413
+ $amp_images[$key] = AMP_HTML_Utils::build_tag(
414
+ $tag_type,
415
+ $amp_img_arr
416
+ );
417
+
418
+ $upload_dir = wp_upload_dir();
419
+ $upload_url = $upload_dir['baseurl'];
420
+ if( $tag_type == 'amp-img'){
421
+ if ( false === strpos( $image['url'], $upload_url ) ) {
422
+ $smallimage = $image['url'];
423
+ $smallwidth = 120;
424
+ $smallheight = 60;
425
+ }else{
426
+ //Small Thumbnail Images
427
+ $thumb_url = ampforwp_aq_resize( $image['url'], 120, 60, true, false ); //resize & crop the image
428
+ if($thumb_url!=false){
429
+ $smallimage = $thumb_url[0];
430
+ $smallwidth = $thumb_url[1];
431
+ $smallheight = $thumb_url[2];
432
+ }else{
433
+ $smallimage = $image['url'];
434
+ $smallwidth = $image['width'];
435
+ $smallheight = $image['height'];
436
+ }
437
+ }
438
+ }elseif( $tag_type == 'amp-youtube'){
439
+ $smallimage = $image['cover_img'];
440
+ $smallwidth = 120;
441
+ $smallheight = 60;
442
+ }
443
+
444
+ $amp_images_small[$key] = AMP_HTML_Utils::build_tag(
445
+ 'amp-img',
446
+ array(
447
+ 'src' => $smallimage,
448
+ 'width' => $smallwidth,
449
+ 'height' => $smallheight,
450
+ 'layout' => 'fill',
451
+ 'class' => 'amp-carousel-img',
452
+ )
453
+ );
454
+
455
+ //Image markups loading
456
+ $returnHtml = '';
457
+ //Check if the attachment has caption or not
458
+ if(isset($image['caption']) && $image['caption'] != '' && isset($markup['image-with-caption-html']) && $markup['image-with-caption-html'] != ''){
459
+ // To enable the carousel magic
460
+ $caption = $image['caption'];
461
+ // Append the caption with image
462
+ $returnHtml = isset($markup['image-with-caption-html'])? $markup['image-with-caption-html']:'';
463
+ $returnHtml = str_replace('{{main_images}}', $amp_images[$key] , $returnHtml);
464
+ $returnHtml = str_replace('{{main_images_caption}}', wp_kses_data( $caption ), $returnHtml);
465
+ // Replace the openbrack with [ and closebrack with ]
466
+ $returnHtml = str_replace('{{openbrack}}', '[', $returnHtml);
467
+ $returnHtml = str_replace('{{closebrack}}', ']', $returnHtml);
468
+ }
469
+ elseif( isset($markup['image-without-caption-html']) ){
470
+ // If there is no caption
471
+ $returnHtml = isset($markup['image-without-caption-html'])? $markup['image-without-caption-html'] :'';
472
+ $returnHtml = str_replace('{{main_images}}', $amp_images[$key] , $returnHtml);
473
+ }
474
+
475
+ $images[$key] = apply_filters('amp_gallery_images', $returnHtml, $image, $markup);
476
+ }// foreach Closed
477
+
478
+ //replacements
479
+ $r = rand(1,100);
480
+
481
+ $carousel_args = array(
482
+ 'width' => $this->args['width'],
483
+ 'height' => $this->args['height'],
484
+ 'type' => 'slides',
485
+ 'layout' => 'responsive',
486
+ 'class' => 'collapsible-captions',
487
+ 'id' => 'carousel-with-carousel-preview-'.$r
488
+ );
489
+ $c_args = array('loop'=>'', 'autoplay'=>'');
490
+ $carousel_filter = apply_filters('ampforwp_carousel_args',$c_args);
491
+ $carousel_args = array_merge($carousel_args,$carousel_filter);
492
+
493
+ $amp_carousel = AMP_HTML_Utils::build_tag(
494
+ 'amp-carousel',
495
+ $carousel_args,
496
+ implode( PHP_EOL, $images ));
497
+
498
+ $amp_carousel_with_thumbnail_nav = apply_filters('amp_thumbnail_images', $amp_images_small, $r, $markup);
499
+ $amp_carousel_thumbnail ='';
500
+ if(!empty($amp_carousel_with_thumbnail_nav)){
501
+ $amp_carousel_thumbnail = AMP_HTML_Utils::build_tag(
502
+ 'amp-carousel',
503
+ array(
504
+ 'width' => 'auto',
505
+ 'height' => 48,
506
+ 'type' => 'carousel',
507
+ 'layout' => 'fixed-height',
508
+ 'class' => 'carousel-preview'
509
+ ),
510
+ implode( PHP_EOL, $amp_carousel_with_thumbnail_nav ));
511
+
512
+ }
513
+ $amp_carousel_thumbnail = apply_filters('amp_gallery_markup', $amp_carousel_thumbnail);
514
+
515
+ $returnCompleteHtml = $markup['main-html'];
516
+ //last changes
517
+ $returnCompleteHtml = str_replace('{{with_carousel}}', $amp_carousel, $returnCompleteHtml);
518
+ $returnCompleteHtml = str_replace('{{with_carousel_thumbnail}}', $amp_carousel_thumbnail, $returnCompleteHtml);
519
+ $returnCompleteHtml = str_replace('{{amp_image_lightbox}}', $amp_image_lightbox, $returnCompleteHtml);
520
+ $returnCompleteHtml = str_replace('{{with_images}}', implode( PHP_EOL, $images ), $returnCompleteHtml);
521
+ return $returnCompleteHtml;
522
+ }
523
+ }// Class closed
524
+
525
+ // Add Caption in the Gallery Image
526
+ add_filter('amp_gallery_images','ampforwp_new_gallery_images', 10, 3);
527
+
528
  add_filter('amp_thumbnail_images','ampforwp_new_thumbnail_images',10,3);
classes/class-ampforwp-slide-anything-embed.php CHANGED
@@ -1,321 +1,321 @@
1
- <?php
2
- if ( ! defined( 'ABSPATH' ) ) {
3
- exit;
4
- }
5
- require_once( AMP__VENDOR__DIR__ . '/includes/embeds/class-amp-base-embed-handler.php' );
6
-
7
- class AMPFORWP_Slide_Anything_Embed_Handler extends AMPforWP\AMPVendor\AMP_Base_Embed_Handler {
8
- private static $script_slug = 'amp-carousel';
9
- private static $script_src = 'https://cdn.ampproject.org/v0/amp-carousel-0.2.js';
10
-
11
- public function register_embed() {
12
- add_shortcode( 'slide-anything', array( $this, 'shortcode' ) );
13
- }
14
-
15
- public function unregister_embed() {
16
- remove_shortcode( 'slide-anything' );
17
- }
18
-
19
- public function get_scripts() {
20
- if ( ! $this->did_convert_elements ) {
21
- return array();
22
- }
23
-
24
- return array( self::$script_slug => self::$script_src );
25
- }
26
-
27
- public function shortcode( $attr ) {
28
- $post = get_post();
29
- if ( ! empty( $attr['ids'] ) ) {
30
- // 'ids' is explicitly ordered, unless you specify otherwise.
31
- if ( empty( $attr['orderby'] ) ) {
32
- $attr['orderby'] = 'post__in';
33
- }
34
- $attr['include'] = $attr['ids'];
35
- }
36
-
37
- $atts = shortcode_atts( array(
38
- 'order' => 'ASC',
39
- 'orderby' => 'menu_order ID',
40
- 'id' => $post ? $post->ID : 0,
41
- 'include' => '',
42
- 'exclude' => '',
43
- //'size' => array( $this->args['width'], $this->args['height'] ),
44
- //'size' => isset($attr['size'])? $attr['size']:'thumbnail',
45
- 'size' => 'large'
46
- ), $attr, 'slide-anything' );
47
-
48
- $id = intval( $atts['id'] );
49
- $post_status = get_post_status($id);
50
- if ($post_status == 'publish') {
51
- global $metadata;
52
- $metadata = get_metadata('post', $id);
53
- }
54
-
55
- $slide_data = $attachments = array();
56
- $slide_data['num_slides'] = $metadata['sa_num_slides'][0];
57
- $slide_data['shortcodes'] = $metadata['sa_shortcodes'][0];
58
- if ($slide_data['shortcodes'] == '1') {
59
- $slide_data['shortcodes'] = 'true';
60
- } else {
61
- $slide_data['shortcodes'] = 'false';
62
- }
63
- $slide_data['css_id'] = $metadata['sa_css_id'][0];
64
- for ($i = 1; $i <= $slide_data['num_slides']; $i++) {
65
- $slide_data["slide".$i."_num"] = $i;
66
- // apply 'the_content' filter to slide content to process any shortcodes
67
- if ($slide_data['shortcodes'] == 'true') {
68
- $slide_data["slide".$i."_content"] = do_shortcode($metadata["sa_slide".$i."_content"][0]);
69
- } else {
70
- $slide_data["slide".$i."_content"] = $metadata["sa_slide".$i."_content"][0];
71
- }
72
- $slide_image_data = '';
73
- if (isset($metadata["sa_slide".$i."_image_data"])) {
74
- $slide_image_data = $metadata["sa_slide".$i."_image_data"][0];
75
- }
76
- if (isset($slide_image_data) && ($slide_image_data != '')) {
77
- $data_arr = explode("~", $slide_image_data);
78
- $slide_data["slide".$i."_image_id"] = $data_arr[0];
79
- $slide_data["slide".$i."_image_pos"] = $data_arr[1];
80
- $slide_data["slide".$i."_image_size"] = $data_arr[2];
81
- $slide_data["slide".$i."_image_repeat"] = $data_arr[3];
82
- $slide_data["slide".$i."_image_color"] = $data_arr[4];
83
- } else {
84
- $slide_data["slide".$i."_image_id"] = $metadata["sa_slide".$i."_image_id"][0];
85
- $slide_data["slide".$i."_image_pos"] = $metadata["sa_slide".$i."_image_pos"][0];
86
- $slide_data["slide".$i."_image_size"] = $metadata["sa_slide".$i."_image_size"][0];
87
- $slide_data["slide".$i."_image_repeat"] = $metadata["sa_slide".$i."_image_repeat"][0];
88
- $slide_data["slide".$i."_image_color"] = $metadata["sa_slide".$i."_image_color"][0];
89
- }
90
- $slide_data["slide".$i."_link_url"] = $metadata["sa_slide".$i."_link_url"][0];
91
- $slide_data["slide".$i."_link_target"] = $metadata["sa_slide".$i."_link_target"][0];
92
- if ($slide_data["slide".$i."_link_target"] == '') {
93
- $slide_data["slide".$i."_link_target"] = '_self';
94
- }
95
- $attachments[] = $slide_data["slide".$i."_image_id"];
96
- }
97
-
98
- if ( empty( $attachments ) ) {
99
- return '';
100
- }
101
-
102
- $urls = array();
103
- foreach ( $attachments as $attachment_id ) {
104
- list( $url, $width, $height ) = wp_get_attachment_image_src( $attachment_id, $atts['size'], true );
105
-
106
- if ( ! $url ) {
107
- continue;
108
- }
109
-
110
- $urls[] = apply_filters('amp_gallery_image_params', array(
111
- 'url' => $url,
112
- 'width' => $width,
113
- 'height' => $height,
114
- ),$attachment_id);
115
- }
116
- return $this->render( array(
117
- 'images' => $urls,
118
- ) );
119
- }
120
-
121
- public function render( $args ) {
122
- global $redux_builder_amp,$carousel_markup_all;
123
- $this->did_convert_elements = true;
124
-
125
- $args = wp_parse_args( $args, array(
126
- 'images' => false,
127
- ) );
128
-
129
- if ( empty( $args['images'] ) ) {
130
- return '';
131
- }
132
-
133
- /*Filter*/
134
- $carousel_markup = $amp_image_lightbox = '';
135
-
136
- $carousel_markup_all = array(
137
- '1'=>array(
138
- 'main-html'=>'{{with_carousel}}
139
- {{amp_image_lightbox}}',
140
- 'image-with-caption-html'=>'<figure><div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div><figcaption {{openbrack}}class{{closebrack}}="expanded? \'expanded\' : \'\'" on="tap:AMP.setState({expanded: !expanded})" tabindex="0" role="button" >{{main_images_caption}}<span {{openbrack}}text{{closebrack}}="expanded ? \'less\' : \'more\'">more</span> </figcaption></figure>',
141
- 'image-without-caption-html' =>'<div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div>',
142
- 'gallery_css' => '',
143
-
144
- 'scripts' => array()
145
- ),
146
- '2' => array(
147
- 'main-html'=>'{{with_carousel}}
148
- {{with_carousel_thumbnail}}
149
- {{amp_image_lightbox}}',
150
- 'image-with-caption-html'=>'<figure><div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div><figcaption {{openbrack}}class{{closebrack}}="expanded? \'expanded\' : \'\'" on="tap:AMP.setState({expanded: !expanded})" tabindex="0" role="button" >{{main_images_caption}}<span {{openbrack}}text{{closebrack}}="expanded ? \'less\' : \'more\'">more</span> </figcaption></figure>',
151
- 'image-without-caption-html' =>'<div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div>',
152
- 'carousel_with_thumbnail_html'=>'<button on="tap:carousel-with-carousel-preview-{{unique_id}}.goToSlide(index={{unique_index}})" class="amp-carousel-slide amp-scrollable-carousel-slide">{{thumbnail}}</button>',
153
- 'gallery_css' => '
154
- .carousel-preview button{padding:0;}
155
- .carousel-preview amp-img{height:40px;width:60px;position:relative;}
156
- .carousel-preview {width: 100%;display: inline-block;text-align: center;margin: 20px 0px;}
157
- ',
158
- 'scripts' => array()
159
- ),
160
- '3' => array(
161
- 'main-html'=>'<div class="gal_w">{{with_images}}</div>
162
- {{amp_image_lightbox}}',
163
- 'image-with-caption-html'=>'',
164
- 'image-without-caption-html' =>'{{main_images}}',
165
- 'gallery_css' => '
166
- .gal_w{display:inline-block;width:100%}
167
- .gal_w amp-img{background:#f1f1f1;height:134px;width:150px;position: relative;float:left;margin:10px;}
168
- .cls-btn{background:#0d0d0d;border:none;position: absolute;right: 10px;}
169
- .cls-btn:after{content:"X";display:inline-block;color:#fff;font-size:20px;padding:20px;}
170
- ',
171
- 'scripts' => array()
172
- ),
173
- );
174
-
175
- $carousel_markup_all = apply_filters("ampforwp_manage_gallery_markup", $carousel_markup_all);
176
- //Default markup
177
- $markup = $carousel_markup_all[1];
178
- if( isset($redux_builder_amp['ampforwp-gallery-design-type']) && isset($carousel_markup_all[$redux_builder_amp['ampforwp-gallery-design-type'] ] ) ){
179
- $markup = $carousel_markup_all[$redux_builder_amp['ampforwp-gallery-design-type']];
180
- }
181
-
182
- $amp_images = array();
183
- foreach ( $args['images'] as $key => $image ) {
184
- $amp_img_arr = array(
185
- 'src' => $image['url'],
186
- 'width' => $image['width'],
187
- 'height' => $image['height'],
188
- 'layout' => 'fill',
189
- 'class' => 'amp-carousel-img',
190
- );
191
- if( 3 == ampforwp_get_setting('ampforwp-gallery-design-type') || true == ampforwp_get_setting('ampforwp-gallery-lightbox') ){
192
- $design3_additional_attr = array('on'=> 'tap:gallery-lightbox', 'role'=>'button',
193
- 'tabindex'=>$key);
194
- $amp_img_arr = array_merge($amp_img_arr, $design3_additional_attr);
195
- $amp_image_lightbox = '<amp-image-lightbox id="gallery-lightbox" layout="nodisplay">
196
- <div on="tap:gallery-lightbox.close" role="button"
197
- tabindex="0">
198
- <button class="cls-btn" on="tap:gallery-lightbox.close"
199
- role="button" tabindex="0"></button>
200
- </div>
201
- </amp-image-lightbox>';
202
- }
203
- if(!preg_match('/default.png/', $amp_img_arr['src'])){
204
- $amp_images[$key] = AMP_HTML_Utils::build_tag(
205
- 'amp-img',
206
- $amp_img_arr
207
- );
208
- }else{
209
- global $metadata;
210
- $slide_data = array();
211
- $slide_data['num_slides'] = $metadata['sa_num_slides'][0];
212
- for ($i = 1; $i <= $slide_data['num_slides']; $i++) {
213
- if (isset($metadata["sa_slide".$i."_content"][0])) {
214
- $metadata["sa_slide".$i."_content"][0] = preg_replace('/\[[caption|\/].*?\]/', '', $metadata["sa_slide".$i."_content"][0]);
215
- $amp_images[$i-1] = AMP_HTML_Utils::build_tag(
216
- 'div', array( 'slideampcontent' => esc_attr($metadata["sa_slide".$i."_content"][0]))
217
- );
218
- }
219
- }
220
- }
221
-
222
-
223
- //Small Thumbnail Images
224
- $thumb_url = ampforwp_aq_resize( $image['url'], 120, 60, true, false ); //resize & crop the image
225
- if($thumb_url!=false){
226
- $smallimage = $thumb_url[0];
227
- $smallwidth = $thumb_url[1];
228
- $smallheight = $thumb_url[2];
229
- }else{
230
- $smallimage = $image['url'];
231
- $smallwidth = $image['width'];
232
- $smallheight = $image['height'];
233
- }
234
-
235
- $amp_images_small[$key] = AMP_HTML_Utils::build_tag(
236
- 'amp-img',
237
- array(
238
- 'src' => $smallimage,
239
- 'width' => $smallwidth,
240
- 'height' => $smallheight,
241
- 'layout' => 'fill',
242
- 'class' => 'amp-carousel-img',
243
- )
244
- );
245
-
246
- //Image markups loading
247
- $returnHtml = '';
248
- //Check if the attachment has caption or not
249
- if(isset($image['caption']) && $image['caption'] != '' && isset($markup['image-with-caption-html']) && $markup['image-with-caption-html'] != ''){
250
- // To enable the carousel magic
251
- $caption = $image['caption'];
252
- // Append the caption with image
253
- $returnHtml = isset($markup['image-with-caption-html'])? $markup['image-with-caption-html']:'';
254
- $returnHtml = str_replace('{{main_images}}', $amp_images[$key] , $returnHtml);
255
- $returnHtml = str_replace('{{main_images_caption}}', wp_kses_data( $caption ), $returnHtml);
256
- // Replace the openbrack with [ and closebrack with ]
257
- $returnHtml = str_replace('{{openbrack}}', '[', $returnHtml);
258
- $returnHtml = str_replace('{{closebrack}}', ']', $returnHtml);
259
- }
260
- elseif( isset($markup['image-without-caption-html']) ){
261
- // If there is no caption
262
- $returnHtml = isset($markup['image-without-caption-html'])? $markup['image-without-caption-html'] :'';
263
- $returnHtml = str_replace('{{main_images}}', $amp_images[$key] , $returnHtml);
264
- }
265
-
266
- $images[$key] = apply_filters('amp_gallery_images', $returnHtml, $image, $markup);
267
- }// foreach Closed
268
-
269
- //replacements
270
- $r = rand(1,100);
271
- $carousel_args = array(
272
- 'width' => $this->args['width'],
273
- 'height' => $this->args['height'],
274
- 'type' => 'slides',
275
- 'layout' => 'responsive',
276
- 'class' => 'collapsible-captions',
277
- 'id' => 'carousel-with-carousel-preview-'.$r
278
- );
279
- $c_args = array('loop'=>'', 'autoplay'=>'');
280
- $carousel_filter = apply_filters('ampforwp_carousel_args',$c_args);
281
- $carousel_args = array_merge($carousel_args,$carousel_filter);
282
-
283
- $amp_carousel = AMP_HTML_Utils::build_tag(
284
- 'amp-carousel',
285
- $carousel_args,
286
- implode( PHP_EOL, $images ));
287
-
288
- $amp_carousel_with_thumbnail_nav = apply_filters('amp_thumbnail_images', $amp_images_small, $r, $markup);
289
- $amp_carousel_thumbnail ='';
290
- if(!empty($amp_carousel_with_thumbnail_nav)){
291
- $amp_carousel_thumbnail = AMP_HTML_Utils::build_tag(
292
- 'amp-carousel',
293
- array(
294
- 'width' => 'auto',
295
- 'height' => 48,
296
- 'type' => 'carousel',
297
- 'layout' => 'fixed-height',
298
- 'class' => 'carousel-preview'
299
- ),
300
- implode( PHP_EOL, $amp_carousel_with_thumbnail_nav ));
301
-
302
- }
303
- $amp_carousel_thumbnail = apply_filters('amp_gallery_markup', $amp_carousel_thumbnail);
304
- $returnCompleteHtml = $markup['main-html'];
305
- //last changes
306
- $returnCompleteHtml = str_replace('{{with_carousel}}', $amp_carousel, $returnCompleteHtml);
307
- $returnCompleteHtml = str_replace('{{with_carousel_thumbnail}}', $amp_carousel_thumbnail, $returnCompleteHtml);
308
- $returnCompleteHtml = str_replace('{{amp_image_lightbox}}', $amp_image_lightbox, $returnCompleteHtml);
309
- $returnCompleteHtml = str_replace('{{with_images}}', implode( PHP_EOL, $images ), $returnCompleteHtml);
310
- $returnCompleteHtml = preg_replace('/<div slideampcontent="(.*?)"><\/div>/s', '<div>$1</div>', $returnCompleteHtml);
311
- //$returnCompleteHtml = str_replace('&lt;', '<', $returnCompleteHtml);
312
- //$returnCompleteHtml = str_replace('&gt;', '>', $returnCompleteHtml);
313
- $returnCompleteHtml = htmlspecialchars_decode($returnCompleteHtml);
314
- return $returnCompleteHtml;
315
- }
316
- }// Class closed
317
-
318
- // Add Caption in the Gallery Image
319
- add_filter('amp_gallery_images','ampforwp_new_gallery_images', 10, 3);
320
-
321
  add_filter('amp_thumbnail_images','ampforwp_new_thumbnail_images',10,3);
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+ require_once( AMP__VENDOR__DIR__ . '/includes/embeds/class-amp-base-embed-handler.php' );
6
+
7
+ class AMPFORWP_Slide_Anything_Embed_Handler extends AMPforWP\AMPVendor\AMP_Base_Embed_Handler {
8
+ private static $script_slug = 'amp-carousel';
9
+ private static $script_src = 'https://cdn.ampproject.org/v0/amp-carousel-0.2.js';
10
+
11
+ public function register_embed() {
12
+ add_shortcode( 'slide-anything', array( $this, 'shortcode' ) );
13
+ }
14
+
15
+ public function unregister_embed() {
16
+ remove_shortcode( 'slide-anything' );
17
+ }
18
+
19
+ public function get_scripts() {
20
+ if ( ! $this->did_convert_elements ) {
21
+ return array();
22
+ }
23
+
24
+ return array( self::$script_slug => self::$script_src );
25
+ }
26
+
27
+ public function shortcode( $attr ) {
28
+ $post = get_post();
29
+ if ( ! empty( $attr['ids'] ) ) {
30
+ // 'ids' is explicitly ordered, unless you specify otherwise.
31
+ if ( empty( $attr['orderby'] ) ) {
32
+ $attr['orderby'] = 'post__in';
33
+ }
34
+ $attr['include'] = $attr['ids'];
35
+ }
36
+
37
+ $atts = shortcode_atts( array(
38
+ 'order' => 'ASC',
39
+ 'orderby' => 'menu_order ID',
40
+ 'id' => $post ? $post->ID : 0,
41
+ 'include' => '',
42
+ 'exclude' => '',
43
+ //'size' => array( $this->args['width'], $this->args['height'] ),
44
+ //'size' => isset($attr['size'])? $attr['size']:'thumbnail',
45
+ 'size' => 'large'
46
+ ), $attr, 'slide-anything' );
47
+
48
+ $id = intval( $atts['id'] );
49
+ $post_status = get_post_status($id);
50
+ if ($post_status == 'publish') {
51
+ global $metadata;
52
+ $metadata = get_metadata('post', $id);
53
+ }
54
+
55
+ $slide_data = $attachments = array();
56
+ $slide_data['num_slides'] = $metadata['sa_num_slides'][0];
57
+ $slide_data['shortcodes'] = $metadata['sa_shortcodes'][0];
58
+ if ($slide_data['shortcodes'] == '1') {
59
+ $slide_data['shortcodes'] = 'true';
60
+ } else {
61
+ $slide_data['shortcodes'] = 'false';
62
+ }
63
+ $slide_data['css_id'] = $metadata['sa_css_id'][0];
64
+ for ($i = 1; $i <= $slide_data['num_slides']; $i++) {
65
+ $slide_data["slide".$i."_num"] = $i;
66
+ // apply 'the_content' filter to slide content to process any shortcodes
67
+ if ($slide_data['shortcodes'] == 'true') {
68
+ $slide_data["slide".$i."_content"] = do_shortcode($metadata["sa_slide".$i."_content"][0]);
69
+ } else {
70
+ $slide_data["slide".$i."_content"] = $metadata["sa_slide".$i."_content"][0];
71
+ }
72
+ $slide_image_data = '';
73
+ if (isset($metadata["sa_slide".$i."_image_data"])) {
74
+ $slide_image_data = $metadata["sa_slide".$i."_image_data"][0];
75
+ }
76
+ if (isset($slide_image_data) && ($slide_image_data != '')) {
77
+ $data_arr = explode("~", $slide_image_data);
78
+ $slide_data["slide".$i."_image_id"] = $data_arr[0];
79
+ $slide_data["slide".$i."_image_pos"] = $data_arr[1];
80
+ $slide_data["slide".$i."_image_size"] = $data_arr[2];
81
+ $slide_data["slide".$i."_image_repeat"] = $data_arr[3];
82
+ $slide_data["slide".$i."_image_color"] = $data_arr[4];
83
+ } else {
84
+ $slide_data["slide".$i."_image_id"] = $metadata["sa_slide".$i."_image_id"][0];
85
+ $slide_data["slide".$i."_image_pos"] = $metadata["sa_slide".$i."_image_pos"][0];
86
+ $slide_data["slide".$i."_image_size"] = $metadata["sa_slide".$i."_image_size"][0];
87
+ $slide_data["slide".$i."_image_repeat"] = $metadata["sa_slide".$i."_image_repeat"][0];
88
+ $slide_data["slide".$i."_image_color"] = $metadata["sa_slide".$i."_image_color"][0];
89
+ }
90
+ $slide_data["slide".$i."_link_url"] = $metadata["sa_slide".$i."_link_url"][0];
91
+ $slide_data["slide".$i."_link_target"] = $metadata["sa_slide".$i."_link_target"][0];
92
+ if ($slide_data["slide".$i."_link_target"] == '') {
93
+ $slide_data["slide".$i."_link_target"] = '_self';
94
+ }
95
+ $attachments[] = $slide_data["slide".$i."_image_id"];
96
+ }
97
+
98
+ if ( empty( $attachments ) ) {
99
+ return '';
100
+ }
101
+
102
+ $urls = array();
103
+ foreach ( $attachments as $attachment_id ) {
104
+ list( $url, $width, $height ) = wp_get_attachment_image_src( $attachment_id, $atts['size'], true );
105
+
106
+ if ( ! $url ) {
107
+ continue;
108
+ }
109
+
110
+ $urls[] = apply_filters('amp_gallery_image_params', array(
111
+ 'url' => $url,
112
+ 'width' => $width,
113
+ 'height' => $height,
114
+ ),$attachment_id);
115
+ }
116
+ return $this->render( array(
117
+ 'images' => $urls,
118
+ ) );
119
+ }
120
+
121
+ public function render( $args ) {
122
+ global $redux_builder_amp,$carousel_markup_all;
123
+ $this->did_convert_elements = true;
124
+
125
+ $args = wp_parse_args( $args, array(
126
+ 'images' => false,
127
+ ) );
128
+
129
+ if ( empty( $args['images'] ) ) {
130
+ return '';
131
+ }
132
+
133
+ /*Filter*/
134
+ $carousel_markup = $amp_image_lightbox = '';
135
+
136
+ $carousel_markup_all = array(
137
+ '1'=>array(
138
+ 'main-html'=>'{{with_carousel}}
139
+ {{amp_image_lightbox}}',
140
+ 'image-with-caption-html'=>'<figure><div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div><figcaption {{openbrack}}class{{closebrack}}="expanded? \'expanded\' : \'\'" on="tap:AMP.setState({expanded: !expanded})" tabindex="0" role="button" >{{main_images_caption}}<span {{openbrack}}text{{closebrack}}="expanded ? \'less\' : \'more\'">more</span> </figcaption></figure>',
141
+ 'image-without-caption-html' =>'<div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div>',
142
+ 'gallery_css' => '',
143
+
144
+ 'scripts' => array()
145
+ ),
146
+ '2' => array(
147
+ 'main-html'=>'{{with_carousel}}
148
+ {{with_carousel_thumbnail}}
149
+ {{amp_image_lightbox}}',
150
+ 'image-with-caption-html'=>'<figure><div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div><figcaption {{openbrack}}class{{closebrack}}="expanded? \'expanded\' : \'\'" on="tap:AMP.setState({expanded: !expanded})" tabindex="0" role="button" >{{main_images_caption}}<span {{openbrack}}text{{closebrack}}="expanded ? \'less\' : \'more\'">more</span> </figcaption></figure>',
151
+ 'image-without-caption-html' =>'<div class="ampforwp-gallery-item amp-carousel-container">{{main_images}} </div>',
152
+ 'carousel_with_thumbnail_html'=>'<button on="tap:carousel-with-carousel-preview-{{unique_id}}.goToSlide(index={{unique_index}})" class="amp-carousel-slide amp-scrollable-carousel-slide">{{thumbnail}}</button>',
153
+ 'gallery_css' => '
154
+ .carousel-preview button{padding:0;}
155
+ .carousel-preview amp-img{height:40px;width:60px;position:relative;}
156
+ .carousel-preview {width: 100%;display: inline-block;text-align: center;margin: 20px 0px;}
157
+ ',
158
+ 'scripts' => array()
159
+ ),
160
+ '3' => array(
161
+ 'main-html'=>'<div class="gal_w">{{with_images}}</div>
162
+ {{amp_image_lightbox}}',
163
+ 'image-with-caption-html'=>'',
164
+ 'image-without-caption-html' =>'{{main_images}}',
165
+ 'gallery_css' => '
166
+ .gal_w{display:inline-block;width:100%}
167
+ .gal_w amp-img{background:#f1f1f1;height:134px;width:150px;position: relative;float:left;margin:10px;}
168
+ .cls-btn{background:#0d0d0d;border:none;position: absolute;right: 10px;}
169
+ .cls-btn:after{content:"X";display:inline-block;color:#fff;font-size:20px;padding:20px;}
170
+ ',
171
+ 'scripts' => array()
172
+ ),
173
+ );
174
+
175
+ $carousel_markup_all = apply_filters("ampforwp_manage_gallery_markup", $carousel_markup_all);
176
+ //Default markup
177
+ $markup = $carousel_markup_all[1];
178
+ if( isset($redux_builder_amp['ampforwp-gallery-design-type']) && isset($carousel_markup_all[$redux_builder_amp['ampforwp-gallery-design-type'] ] ) ){
179
+ $markup = $carousel_markup_all[$redux_builder_amp['ampforwp-gallery-design-type']];
180
+ }
181
+
182
+ $amp_images = array();
183
+ foreach ( $args['images'] as $key => $image ) {
184
+ $amp_img_arr = array(
185
+ 'src' => $image['url'],
186
+ 'width' => $image['width'],
187
+ 'height' => $image['height'],
188
+ 'layout' => 'fill',
189
+ 'class' => 'amp-carousel-img',
190
+ );
191
+ if( 3 == ampforwp_get_setting('ampforwp-gallery-design-type') || true == ampforwp_get_setting('ampforwp-gallery-lightbox') ){
192
+ $design3_additional_attr = array('on'=> 'tap:gallery-lightbox', 'role'=>'button',
193
+ 'tabindex'=>$key);
194
+ $amp_img_arr = array_merge($amp_img_arr, $design3_additional_attr);
195
+ $amp_image_lightbox = '<amp-image-lightbox id="gallery-lightbox" layout="nodisplay">
196
+ <div on="tap:gallery-lightbox.close" role="button"
197
+ tabindex="0">
198
+ <button class="cls-btn" on="tap:gallery-lightbox.close"
199
+ role="button" tabindex="0"></button>
200
+ </div>
201
+ </amp-image-lightbox>';
202
+ }
203
+ if(!preg_match('/default.png/', $amp_img_arr['src'])){
204
+ $amp_images[$key] = AMP_HTML_Utils::build_tag(
205
+ 'amp-img',
206
+ $amp_img_arr
207
+ );
208
+ }else{
209
+ global $metadata;
210
+ $slide_data = array();
211
+ $slide_data['num_slides'] = $metadata['sa_num_slides'][0];
212
+ for ($i = 1; $i <= $slide_data['num_slides']; $i++) {
213
+ if (isset($metadata["sa_slide".$i."_content"][0])) {
214
+ $metadata["sa_slide".$i."_content"][0] = preg_replace('/\[[caption|\/].*?\]/', '', $metadata["sa_slide".$i."_content"][0]);
215
+ $amp_images[$i-1] = AMP_HTML_Utils::build_tag(
216
+ 'div', array( 'slideampcontent' => esc_attr($metadata["sa_slide".$i."_content"][0]))
217
+ );
218
+ }
219
+ }
220
+ }
221
+
222
+
223
+ //Small Thumbnail Images
224
+ $thumb_url = ampforwp_aq_resize( $image['url'], 120, 60, true, false ); //resize & crop the image
225
+ if($thumb_url!=false){
226
+ $smallimage = $thumb_url[0];
227
+ $smallwidth = $thumb_url[1];
228
+ $smallheight = $thumb_url[2];
229
+ }else{
230
+ $smallimage = $image['url'];
231
+ $smallwidth = $image['width'];
232
+ $smallheight = $image['height'];
233
+ }
234
+
235
+ $amp_images_small[$key] = AMP_HTML_Utils::build_tag(
236
+ 'amp-img',
237
+ array(
238
+ 'src' => $smallimage,
239
+ 'width' => $smallwidth,
240
+ 'height' => $smallheight,
241
+ 'layout' => 'fill',
242
+ 'class' => 'amp-carousel-img',
243
+ )
244
+ );
245
+
246
+ //Image markups loading
247
+ $returnHtml = '';
248
+ //Check if the attachment has caption or not
249
+ if(isset($image['caption']) && $image['caption'] != '' && isset($markup['image-with-caption-html']) && $markup['image-with-caption-html'] != ''){
250
+ // To enable the carousel magic
251
+ $caption = $image['caption'];
252
+ // Append the caption with image
253
+ $returnHtml = isset($markup['image-with-caption-html'])? $markup['image-with-caption-html']:'';
254
+ $returnHtml = str_replace('{{main_images}}', $amp_images[$key] , $returnHtml);
255
+ $returnHtml = str_replace('{{main_images_caption}}', wp_kses_data( $caption ), $returnHtml);
256
+ // Replace the openbrack with [ and closebrack with ]
257
+ $returnHtml = str_replace('{{openbrack}}', '[', $returnHtml);
258
+ $returnHtml = str_replace('{{closebrack}}', ']', $returnHtml);
259
+ }
260
+ elseif( isset($markup['image-without-caption-html']) ){
261
+ // If there is no caption
262
+ $returnHtml = isset($markup['image-without-caption-html'])? $markup['image-without-caption-html'] :'';
263
+ $returnHtml = str_replace('{{main_images}}', $amp_images[$key] , $returnHtml);
264
+ }
265
+
266
+ $images[$key] = apply_filters('amp_gallery_images', $returnHtml, $image, $markup);
267
+ }// foreach Closed
268
+
269
+ //replacements
270
+ $r = rand(1,100);
271
+ $carousel_args = array(
272
+ 'width' => $this->args['width'],
273
+ 'height' => $this->args['height'],
274
+ 'type' => 'slides',
275
+ 'layout' => 'responsive',
276
+ 'class' => 'collapsible-captions',
277
+ 'id' => 'carousel-with-carousel-preview-'.$r
278
+ );
279
+ $c_args = array('loop'=>'', 'autoplay'=>'');
280
+ $carousel_filter = apply_filters('ampforwp_carousel_args',$c_args);
281
+ $carousel_args = array_merge($carousel_args,$carousel_filter);
282
+
283
+ $amp_carousel = AMP_HTML_Utils::build_tag(
284
+ 'amp-carousel',
285
+ $carousel_args,
286
+ implode( PHP_EOL, $images ));
287
+
288
+ $amp_carousel_with_thumbnail_nav = apply_filters('amp_thumbnail_images', $amp_images_small, $r, $markup);
289
+ $amp_carousel_thumbnail ='';
290
+ if(!empty($amp_carousel_with_thumbnail_nav)){
291
+ $amp_carousel_thumbnail = AMP_HTML_Utils::build_tag(
292
+ 'amp-carousel',
293
+ array(
294
+ 'width' => 'auto',
295
+ 'height' => 48,
296
+ 'type' => 'carousel',
297
+ 'layout' => 'fixed-height',
298
+ 'class' => 'carousel-preview'
299
+ ),
300
+ implode( PHP_EOL, $amp_carousel_with_thumbnail_nav ));
301
+
302
+ }
303
+ $amp_carousel_thumbnail = apply_filters('amp_gallery_markup', $amp_carousel_thumbnail);
304
+ $returnCompleteHtml = $markup['main-html'];
305
+ //last changes
306
+ $returnCompleteHtml = str_replace('{{with_carousel}}', $amp_carousel, $returnCompleteHtml);
307
+ $returnCompleteHtml = str_replace('{{with_carousel_thumbnail}}', $amp_carousel_thumbnail, $returnCompleteHtml);
308
+ $returnCompleteHtml = str_replace('{{amp_image_lightbox}}', $amp_image_lightbox, $returnCompleteHtml);
309
+ $returnCompleteHtml = str_replace('{{with_images}}', implode( PHP_EOL, $images ), $returnCompleteHtml);
310
+ $returnCompleteHtml = preg_replace('/<div slideampcontent="(.*?)"><\/div>/s', '<div>$1</div>', $returnCompleteHtml);
311
+ //$returnCompleteHtml = str_replace('&lt;', '<', $returnCompleteHtml);
312
+ //$returnCompleteHtml = str_replace('&gt;', '>', $returnCompleteHtml);
313
+ $returnCompleteHtml = htmlspecialchars_decode($returnCompleteHtml);
314
+ return $returnCompleteHtml;
315
+ }
316
+ }// Class closed
317
+
318
+ // Add Caption in the Gallery Image
319
+ add_filter('amp_gallery_images','ampforwp_new_gallery_images', 10, 3);
320
+
321
  add_filter('amp_thumbnail_images','ampforwp_new_thumbnail_images',10,3);
classes/class-ampforwp-walker-nav-menu.php CHANGED
@@ -1,99 +1,99 @@
1
- <?php
2
- // Exit if accessed directly
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- exit;
5
- }
6
-
7
- /*Sidebar Nav menu Walker Start*/
8
- class Ampforwp_Walker_Nav_Menu extends Walker_Nav_Menu {
9
-
10
- function start_lvl(&$output, $depth=0, $args = array(), $has_children = 0) {
11
- static $column = 1;
12
- $indent = str_repeat("\t", $depth);
13
- //$output .= "\n$indent<ul class=\"sub-menu\">\n";
14
-
15
- // Change sub-menu to dropdown menu
16
- if ($depth > 0 && $has_children > 0 )
17
- {
18
- $column += 1;
19
- $output .= "\n$indent<input type=\"checkbox\" id=\"drop-$column\"><label for=\"drop-$column\" class=\"toggle\"></label><ul class=\"sub-menu\">\n";
20
- }else{
21
- $column += 1;
22
- $output .= "\n$indent<input type=\"checkbox\" id=\"drop-$column\"><label for=\"drop-$column\" class=\"toggle\"></label><ul class=\"sub-menu\">\n";
23
-
24
- }
25
- }
26
-
27
- function start_el ( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
28
- // Most of this code is copied from original Walker_Nav_Menu
29
- global $wp_query, $wpdb;
30
- $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
31
-
32
- $class_names = $value = '';
33
-
34
- $classes = empty( $item->classes ) ? array() : (array) $item->classes;
35
- $classes[] = 'menu-item-' . $item->ID;
36
-
37
- $class_names = join( ' ', apply_filters( 'ampforwp_nav_menu_css_class', array_filter( $classes ), $item, $args ) );
38
- $lmenu = "";
39
- if($item->url=="" || $item->url=="#"){
40
- $lmenu = "link-menu";
41
- }
42
- $jump_link = false;
43
- $parse_url = wp_parse_url($item->url);
44
- if( function_exists('ampforwp_get_setting') && ampforwp_get_setting('amp-design-selector') == 4 && (strpos($item->url, '#') === 0 || isset($parse_url['fragment']) ) ){
45
- $jump_link = true;
46
- }
47
-
48
- $class_names = ' class="' . esc_attr( $class_names ) . ' '.esc_attr($lmenu).'"';
49
-
50
- $id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args, $depth );
51
- $id = strlen( $id ) ? ' id="' . esc_attr( $id ) . '"' : '';
52
-
53
- $has_children = 1;
54
-
55
- $output .= $indent . '<li' . $id . $value . $class_names .'>';
56
-
57
- $atts = array();
58
- $atts['title'] = ! empty( $item->attr_title ) ? $item->attr_title : '';
59
- $atts['target'] = ! empty( $item->target ) ? $item->target : '';
60
- $atts['rel'] = ! empty( $item->xfn ) ? $item->xfn : '';
61
- $atts['href'] = ! empty( $item->url ) ? $item->url : '';
62
- $atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args, $depth );
63
-
64
- $attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $atts['title'] ) .'"' : '';
65
- $attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $atts['target'] ) .'"' : '';
66
- $attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $atts['rel'] ) .'"' : '';
67
- $attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $atts['href'] ) .'"' : '';
68
-
69
- if($jump_link == true){
70
- $attributes .= 'on="tap:AMP.setState({ offcanvas_menu: false })" role="button " tabindex="0"';
71
- }
72
-
73
- // Check if menu item is in main menu
74
- if ( $depth == 0 && $has_children > 0 ) {
75
- // These lines adds your custom class and attribute
76
- $attributes .= ' class="dropdown-toggle"';
77
- $attributes .= ' data-toggle="dropdown"';
78
- }
79
- global $is_safari;
80
- if ($is_safari || ( isset($_SERVER["HTTP_USER_AGENT"]) && strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox'))) {
81
- $attributes .= 'on="tap:sidebar.close"';
82
- }
83
- $item_output = isset($args->before) ? $args->before : 1;
84
-
85
- $item_output .= '<a'. $attributes .'>';
86
- $item_output .= (isset($args->link_before) ? $args->link_before : 1 ). apply_filters( 'the_title', $item->title, $item->ID ) . (isset($args->link_after) ? $args->link_after : 1 );
87
- $item_output .= '</a>';
88
-
89
- // Add the caret if menu level is 0
90
- if ( $has_children > 0 ) {
91
- //$item_output .= '<label for="drop-"'.$depth.' class="toggle">+</label>';
92
- }
93
- $item_output .= isset($args->after) ? $args->after : 1;
94
-
95
- $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
96
- }
97
-
98
- }
99
  /*Sidebar Nav menu Walker end*/
1
+ <?php
2
+ // Exit if accessed directly
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
+ /*Sidebar Nav menu Walker Start*/
8
+ class Ampforwp_Walker_Nav_Menu extends Walker_Nav_Menu {
9
+
10
+ function start_lvl(&$output, $depth=0, $args = array(), $has_children = 0) {
11
+ static $column = 1;
12
+ $indent = str_repeat("\t", $depth);
13
+ //$output .= "\n$indent<ul class=\"sub-menu\">\n";
14
+
15
+ // Change sub-menu to dropdown menu
16
+ if ($depth > 0 && $has_children > 0 )
17
+ {
18
+ $column += 1;
19
+ $output .= "\n$indent<input type=\"checkbox\" id=\"drop-$column\"><label for=\"drop-$column\" class=\"toggle\"></label><ul class=\"sub-menu\">\n";
20
+ }else{
21
+ $column += 1;
22
+ $output .= "\n$indent<input type=\"checkbox\" id=\"drop-$column\"><label for=\"drop-$column\" class=\"toggle\"></label><ul class=\"sub-menu\">\n";
23
+
24
+ }
25
+ }
26
+
27
+ function start_el ( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
28
+ // Most of this code is copied from original Walker_Nav_Menu
29
+ global $wp_query, $wpdb;
30
+ $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
31
+
32
+ $class_names = $value = '';
33
+
34
+ $classes = empty( $item->classes ) ? array() : (array) $item->classes;
35
+ $classes[] = 'menu-item-' . $item->ID;
36
+
37
+ $class_names = join( ' ', apply_filters( 'ampforwp_nav_menu_css_class', array_filter( $classes ), $item, $args ) );
38
+ $lmenu = "";
39
+ if($item->url=="" || $item->url=="#"){
40
+ $lmenu = "link-menu";
41
+ }
42
+ $jump_link = false;
43
+ $parse_url = wp_parse_url($item->url);
44
+ if( function_exists('ampforwp_get_setting') && ampforwp_get_setting('amp-design-selector') == 4 && (strpos($item->url, '#') === 0 || isset($parse_url['fragment']) ) ){
45
+ $jump_link = true;
46
+ }
47
+
48
+ $class_names = ' class="' . esc_attr( $class_names ) . ' '.esc_attr($lmenu).'"';
49
+
50
+ $id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args, $depth );
51
+ $id = strlen( $id ) ? ' id="' . esc_attr( $id ) . '"' : '';
52
+
53
+ $has_children = 1;
54
+
55
+ $output .= $indent . '<li' . $id . $value . $class_names .'>';
56
+
57
+ $atts = array();
58
+ $atts['title'] = ! empty( $item->attr_title ) ? $item->attr_title : '';
59
+ $atts['target'] = ! empty( $item->target ) ? $item->target : '';
60
+ $atts['rel'] = ! empty( $item->xfn ) ? $item->xfn : '';
61
+ $atts['href'] = ! empty( $item->url ) ? $item->url : '';
62
+ $atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args, $depth );
63
+
64
+ $attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $atts['title'] ) .'"' : '';
65
+ $attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $atts['target'] ) .'"' : '';
66
+ $attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $atts['rel'] ) .'"' : '';
67
+ $attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $atts['href'] ) .'"' : '';
68
+
69
+ if($jump_link == true){
70
+ $attributes .= 'on="tap:AMP.setState({ offcanvas_menu: false })" role="button " tabindex="0"';
71
+ }
72
+
73
+ // Check if menu item is in main menu
74
+ if ( $depth == 0 && $has_children > 0 ) {
75
+ // These lines adds your custom class and attribute
76
+ $attributes .= ' class="dropdown-toggle"';
77
+ $attributes .= ' data-toggle="dropdown"';
78
+ }
79
+ global $is_safari;
80
+ if ($is_safari || ( isset($_SERVER["HTTP_USER_AGENT"]) && strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox'))) {
81
+ $attributes .= 'on="tap:sidebar.close"';
82
+ }
83
+ $item_output = isset($args->before) ? $args->before : 1;
84
+
85
+ $item_output .= '<a'. $attributes .'>';
86
+ $item_output .= (isset($args->link_before) ? $args->link_before : 1 ). apply_filters( 'the_title', $item->title, $item->ID ) . (isset($args->link_after) ? $args->link_after : 1 );
87
+ $item_output .= '</a>';
88
+
89
+ // Add the caret if menu level is 0
90
+ if ( $has_children > 0 ) {
91
+ //$item_output .= '<label for="drop-"'.$depth.' class="toggle">+</label>';
92
+ }
93
+ $item_output .= isset($args->after) ? $args->after : 1;
94
+
95
+ $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
96
+ }
97
+
98
+ }
99
  /*Sidebar Nav menu Walker end*/
classes/class-ampforwp-youtube-embed.php CHANGED
@@ -1,173 +1,173 @@
1
- <?php
2
-
3
- // Exit if accessed directly
4
- if ( ! defined( 'ABSPATH' ) ) {
5
- exit;
6
- }
7
- use AMPforWP\AMPVendor\AMP_Base_Embed_Handler;
8
- use AMPforWP\AMPVendor\AMP_HTML_Utils;
9
- $file_path = AMP__VENDOR__DIR__ . '/includes/embeds/class-amp-base-embed-handler.php';
10
- if( file_exists($file_path) ){
11
- require_once $file_path;
12
- }
13
-
14
- // Much of this class is borrowed from Jetpack embeds
15
- class AMPforWP_YouTube_Embed_Handler extends AMP_Base_Embed_Handler {
16
- const SHORT_URL_HOST = 'youtu.be';
17
- // Only handling single videos. Playlists are handled elsewhere.
18
- const URL_PATTERN = '#https?://(?:www\.)?(?:youtube.com/(?:v/|e/|embed/|watch[/\#?])|youtu\.be/).*#i';
19
- const RATIO = 0.5625;
20
-
21
- protected $DEFAULT_WIDTH = 600;
22
- protected $DEFAULT_HEIGHT = 338;
23
-
24
- private static $script_slug = 'amp-youtube';
25
- private static $script_src = 'https://cdn.ampproject.org/v0/amp-youtube-0.1.js';
26
-
27
- function __construct( $args = array() ) {
28
- parent::__construct( $args );
29
-
30
- if ( isset( $this->args['content_max_width'] ) ) {
31
- $max_width = $this->args['content_max_width'];
32
- $this->args['width'] = $max_width;
33
- $this->args['height'] = round( $max_width * self::RATIO );
34
- }
35
- }
36
-
37
- function register_embed() {
38
- wp_embed_register_handler( 'amp-youtube', self::URL_PATTERN, array( $this, 'oembed' ), -1 );
39
- add_shortcode( 'youtube', array( $this, 'shortcode' ) );
40
- add_filter( 'wp_video_shortcode_override', array( $this, 'video_override') , 10, 2 );
41
- }
42
-
43
- public function unregister_embed() {
44
- wp_embed_unregister_handler( 'amp-youtube', -1 );
45
- remove_shortcode( 'youtube' );
46
- }
47
-
48
- public function get_scripts() {
49
- if ( ! $this->did_convert_elements ) {
50
- return array();
51
- }
52
-
53
- return array( self::$script_slug => self::$script_src );
54
- }
55
-
56
- public function shortcode( $attr ) {
57
- $url = false;
58
- $video_id = false;
59
- if ( isset( $attr[0] ) ) {
60
- $url = ltrim( $attr[0] , '=' );
61
- } elseif ( function_exists ( 'ampforwp_youtube_shortcode' ) ) {
62
- $url = ampforwp_youtube_shortcode( $attr );
63
- }
64
-
65
- if ( empty( $url ) ) {
66
- return '';
67
- }
68
-
69
- $video_id = $this->get_video_id_from_url( $url );
70
-
71
- return $this->render( array(
72
- 'url' => $url,
73
- 'video_id' => $video_id,
74
- ) );
75
- }
76
-
77
-
78
- public function oembed( $matches, $attr, $url, $rawattr ) {
79
- return $this->shortcode( array( $url ) );
80
- }
81
-
82
- public function render( $args ) {
83
- $args = wp_parse_args( $args, array(
84
- 'video_id' => false,
85
- ) );
86
-
87
- if ( empty( $args['video_id'] ) ) {
88
- return AMP_HTML_Utils::build_tag( 'a', array( 'href' => esc_url( $args['url'] ), 'class' => 'amp-wp-embed-fallback' ), esc_html( $args['url'] ) );
89
- }
90
-
91
- $this->did_convert_elements = true;
92
- // Return it with a filter for the modification purpose #1378
93
- $attrs = array(
94
- 'data-videoid' => $args['video_id'],
95
- 'layout' => 'responsive',
96
- 'width' => $this->args['width'],
97
- 'height' => $this->args['height'],
98
- );
99
- if(ampforwp_get_setting('ampforwp-amp-video-docking')==true){
100
- $attrs['dock'] = '#dock-slot';
101
- }
102
- if(ampforwp_get_setting('ampforwp-amp-video-lightbox')==true){
103
- $attrs['autoplay'] = true;
104
- }
105
- $attrs = ampforwp_amp_consent_check( $attrs );
106
- return AMP_HTML_Utils::build_tag('amp-youtube',apply_filters('amp_youtube_params', $attrs) );
107
- }
108
-
109
- private function get_video_id_from_url( $url ) {
110
- $video_id = false;
111
- $parsed_url = parse_url( $url );
112
- if(!isset($parsed_url['host'])){
113
- $parsed_url['host'] = '';
114
- }
115
- if ( self::SHORT_URL_HOST === substr( $parsed_url['host'], -strlen( self::SHORT_URL_HOST ) ) ) {
116
- // youtu.be/{id}
117
- $parts = explode( '/', $parsed_url['path'] );
118
- if ( ! empty( $parts ) ) {
119
- $video_id = $parts[1];
120
- }
121
- } else {
122
- // ?v={id} or ?list={id}
123
- if(isset($parsed_url['query'])){
124
- parse_str( $parsed_url['query'], $query_args );
125
- }
126
-
127
- if ( isset( $query_args['v'] ) ) {
128
- $video_id = $this->sanitize_v_arg( $query_args['v'] );
129
- }
130
- }
131
-
132
- if ( empty( $video_id ) ) {
133
- // /(v|e|embed)/{id}
134
- $parts = explode( '/', $parsed_url['path'] );
135
-
136
- if ( in_array( $parts[1], array( 'v', 'e', 'embed' ) ) ) {
137
- $video_id = $parts[2];
138
- }
139
- }
140
-
141
- return $video_id;
142
- }
143
-
144
- private function sanitize_v_arg( $value ) {
145
- // Deal with broken params like `?v=123?rel=0`
146
- if ( false !== strpos( $value, '?' ) ) {
147
- $value = strtok( $value, '?' );
148
- }
149
-
150
- return $value;
151
- }
152
- /**
153
- * Override the output of YouTube videos.
154
- *
155
- * This overrides the value in wp_video_shortcode().
156
- * The pattern matching is copied from WP_Widget_Media_Video::render().
157
- *
158
- * @param string $html Empty variable to be replaced with shortcode markup.
159
- * @param array $attr The shortcode attributes.
160
- * @return string|null $markup The markup to output.
161
- */
162
- public function video_override( $html, $attr ) {
163
- if ( ! isset( $attr['src'] ) ) {
164
- return $html;
165
- }
166
- $src = $attr['src'];
167
- $youtube_pattern = '#^https?://(?:www\.)?(?:youtube\.com/watch|youtu\.be/)#';
168
- if ( 1 === preg_match( $youtube_pattern, $src ) ) {
169
- return $this->shortcode( [ $src ] );
170
- }
171
- return $html;
172
- }
173
  }
1
+ <?php
2
+
3
+ // Exit if accessed directly
4
+ if ( ! defined( 'ABSPATH' ) ) {
5
+ exit;
6
+ }
7
+ use AMPforWP\AMPVendor\AMP_Base_Embed_Handler;
8
+ use AMPforWP\AMPVendor\AMP_HTML_Utils;
9
+ $file_path = AMP__VENDOR__DIR__ . '/includes/embeds/class-amp-base-embed-handler.php';
10
+ if( file_exists($file_path) ){
11
+ require_once $file_path;
12
+ }
13
+
14
+ // Much of this class is borrowed from Jetpack embeds
15
+ class AMPforWP_YouTube_Embed_Handler extends AMP_Base_Embed_Handler {
16
+ const SHORT_URL_HOST = 'youtu.be';
17
+ // Only handling single videos. Playlists are handled elsewhere.
18
+ const URL_PATTERN = '#https?://(?:www\.)?(?:youtube.com/(?:v/|e/|embed/|watch[/\#?])|youtu\.be/).*#i';
19
+ const RATIO = 0.5625;
20
+
21
+ protected $DEFAULT_WIDTH = 600;
22
+ protected $DEFAULT_HEIGHT = 338;
23
+
24
+ private static $script_slug = 'amp-youtube';
25
+ private static $script_src = 'https://cdn.ampproject.org/v0/amp-youtube-0.1.js';
26
+
27
+ function __construct( $args = array() ) {
28
+ parent::__construct( $args );
29
+
30
+ if ( isset( $this->args['content_max_width'] ) ) {
31
+ $max_width = $this->args['content_max_width'];
32
+ $this->args['width'] = $max_width;
33
+ $this->args['height'] = round( $max_width * self::RATIO );
34
+ }
35
+ }
36
+
37
+ function register_embed() {
38
+ wp_embed_register_handler( 'amp-youtube', self::URL_PATTERN, array( $this, 'oembed' ), -1 );
39
+ add_shortcode( 'youtube', array( $this, 'shortcode' ) );
40
+ add_filter( 'wp_video_shortcode_override', array( $this, 'video_override') , 10, 2 );
41
+ }
42
+
43
+ public function unregister_embed() {
44
+ wp_embed_unregister_handler( 'amp-youtube', -1 );
45
+ remove_shortcode( 'youtube' );
46
+ }
47
+
48
+ public function get_scripts() {
49
+ if ( ! $this->did_convert_elements ) {
50
+ return array();
51
+ }
52
+
53
+ return array( self::$script_slug => self::$script_src );
54
+ }
55
+
56
+ public function shortcode( $attr ) {
57
+ $url = false;
58
+ $video_id = false;
59
+ if ( isset( $attr[0] ) ) {
60
+ $url = ltrim( $attr[0] , '=' );
61
+ } elseif ( function_exists ( 'ampforwp_youtube_shortcode' ) ) {
62
+ $url = ampforwp_youtube_shortcode( $attr );
63
+ }
64
+
65
+ if ( empty( $url ) ) {
66
+ return '';
67
+ }
68
+
69
+ $video_id = $this->get_video_id_from_url( $url );
70
+
71
+ return $this->render( array(
72
+ 'url' => $url,
73
+ 'video_id' => $video_id,
74
+ ) );
75
+ }
76
+
77
+
78
+ public function oembed( $matches, $attr, $url, $rawattr ) {
79
+ return $this->shortcode( array( $url ) );
80
+ }
81
+
82
+ public function render( $args ) {
83
+ $args = wp_parse_args( $args, array(
84
+ 'video_id' => false,
85
+ ) );
86
+
87
+ if ( empty( $args['video_id'] ) ) {
88
+ return AMP_HTML_Utils::build_tag( 'a', array( 'href' => esc_url( $args['url'] ), 'class' => 'amp-wp-embed-fallback' ), esc_html( $args['url'] ) );
89
+ }
90
+
91
+ $this->did_convert_elements = true;
92
+ // Return it with a filter for the modification purpose #1378
93
+ $attrs = array(
94
+ 'data-videoid' => $args['video_id'],
95
+ 'layout' => 'responsive',
96
+ 'width' => $this->args['width'],
97
+ 'height' => $this->args['height'],
98
+ );
99
+ if(ampforwp_get_setting('ampforwp-amp-video-docking')==true){
100
+ $attrs['dock'] = '#dock-slot';
101
+ }
102
+ if(ampforwp_get_setting('ampforwp-amp-video-lightbox')==true){
103
+ $attrs['autoplay'] = true;
104
+ }
105
+ $attrs = ampforwp_amp_consent_check( $attrs );
106
+ return AMP_HTML_Utils::build_tag('amp-youtube',apply_filters('amp_youtube_params', $attrs) );
107
+ }
108
+
109
+ private function get_video_id_from_url( $url ) {
110
+ $video_id = false;
111
+ $parsed_url = parse_url( $url );
112
+ if(!isset($parsed_url['host'])){
113
+ $parsed_url['host'] = '';
114
+ }
115
+ if ( self::SHORT_URL_HOST === substr( $parsed_url['host'], -strlen( self::SHORT_URL_HOST ) ) ) {
116
+ // youtu.be/{id}
117
+ $parts = explode( '/', $parsed_url['path'] );
118
+ if ( ! empty( $parts ) ) {
119
+ $video_id = $parts[1];
120
+ }
121
+ } else {
122
+ // ?v={id} or ?list={id}
123
+ if(isset($parsed_url['query'])){
124
+ parse_str( $parsed_url['query'], $query_args );
125
+ }
126
+
127
+ if ( isset( $query_args['v'] ) ) {
128
+ $video_id = $this->sanitize_v_arg( $query_args['v'] );
129
+ }
130
+ }
131
+
132
+ if ( empty( $video_id ) ) {
133
+ // /(v|e|embed)/{id}
134
+ $parts = explode( '/', $parsed_url['path'] );
135
+
136
+ if ( in_array( $parts[1], array( 'v', 'e', 'embed' ) ) ) {
137
+ $video_id = $parts[2];
138
+ }
139
+ }
140
+
141
+ return $video_id;
142
+ }
143
+
144
+ private function sanitize_v_arg( $value ) {
145
+ // Deal with broken params like `?v=123?rel=0`
146
+ if ( false !== strpos( $value, '?' ) ) {
147
+ $value = strtok( $value, '?' );
148
+ }
149
+
150
+ return $value;
151
+ }
152
+ /**
153
+ * Override the output of YouTube videos.
154
+ *
155
+ * This overrides the value in wp_video_shortcode().
156
+ * The pattern matching is copied from WP_Widget_Media_Video::render().
157
+ *
158
+ * @param string $html Empty variable to be replaced with shortcode markup.
159
+ * @param array $attr The shortcode attributes.
160
+ * @return string|null $markup The markup to output.
161
+ */
162
+ public function video_override( $html, $attr ) {
163
+ if ( ! isset( $attr['src'] ) ) {
164
+ return $html;
165
+ }
166
+ $src = $attr['src'];
167
+ $youtube_pattern = '#^https?://(?:www\.)?(?:youtube\.com/watch|youtu\.be/)#';
168
+ if ( 1 === preg_match( $youtube_pattern, $src ) ) {
169
+ return $this->shortcode( [ $src ] );
170
+ }
171
+ return $html;
172
+ }
173
  }
classes/class-init.php CHANGED
@@ -1,16 +1,16 @@
1
- <?php
2
- // Exit if accessed directly
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- exit;
5
- }
6
-
7
- if ( ! class_exists( 'Ampforwp_Loader', false ) ) {
8
- class Ampforwp_Loader {
9
- public function __construct() {
10
- $this->load_required_files();
11
- }
12
- public function load_required_files() {
13
- require AMPFORWP_PLUGIN_DIR . '/templates/features.php';
14
- }
15
- }
16
  } ?>
1
+ <?php
2
+ // Exit if accessed directly
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
+ if ( ! class_exists( 'Ampforwp_Loader', false ) ) {
8
+ class Ampforwp_Loader {
9
+ public function __construct() {
10
+ $this->load_required_files();
11
+ }
12
+ public function load_required_files() {
13
+ require AMPFORWP_PLUGIN_DIR . '/templates/features.php';
14
+ }
15
+ }
16
  } ?>
components/author-box/author-box.php CHANGED
@@ -1,183 +1,183 @@
1
- <?php
2
- if ( ! defined( 'ABSPATH' ) ) {
3
- exit;
4
- }
5
- function ampforwp_framework_get_author_box( $args=array() ) {
6
- // Simple Author Box compatibility #2268
7
- if( class_exists('Simple_Author_Box') && !isset($args['author_info']) ){
8
- return;
9
- }
10
- global $post, $redux_builder_amp;
11
- $post_author = get_userdata($post->post_author);
12
- if(empty($post_author)){
13
- return;
14
- }
15
- if ( ! is_array($args) ) {
16
- $args = array();
17
- }
18
-
19
- $avatar = false; //To show author Avater
20
- $author_pub_name = false; //To show author name
21
- $avatar_size = 40;
22
- $author_description = false;
23
- $class = $author_prefix = $author_wrapper_class = '';
24
- $show_date = false;
25
- $show_time = false;
26
- $author_name = $post_author->display_name;
27
- $author_name = apply_filters('ampforwp_modify_author_name',$author_name);
28
- $and_text = '';
29
- $avatar_size_weight = $avatar_size_height = '';
30
- $and_text = ampforwp_translation($redux_builder_amp['amp-translator-and-text'], 'and' );
31
- if ( function_exists('coauthors') ) {
32
- $author_name = coauthors($and_text,$and_text,null,null,false);
33
- }
34
- $author_link = get_author_posts_url($post_author->ID);
35
- if ( function_exists('coauthors_posts_links') ) {
36
- $author_link = coauthors_posts_links($and_text,$and_text,null,null,false);
37
- }
38
- $author_image_wrapper = $alt = '';
39
-
40
- if ( isset($args['author_pub_name']) ) {
41
- $author_pub_name = $args['author_pub_name'];
42
- }
43
-
44
- if ( isset($args['avatar']) ) {
45
- $avatar = $args['avatar'];
46
- }
47
- if ( isset($args['avatar_size']) ) {
48
- $avatar_size = ampforwp_get_setting('amp-author-bio-image-width');
49
- $avatar_size_width = ampforwp_get_setting('amp-author-bio-image-width');
50
- $avatar_size_height = ampforwp_get_setting('amp-author-bio-image-height');
51
- if (empty($avatar_size_width)) {
52
- $avatar_size_width = 60;
53
- }
54
- if (empty($avatar_size_height)) {
55
- $avatar_size_height = 60;
56
- }
57
- if (empty($avatar_size)) {
58
- $avatar_size_width = 60;
59
- }
60
- }
61
- if ( isset($args['class']) ) {
62
- $class = $args['class'];
63
- }
64
- if ( isset($args['author_description']) ) {
65
- $author_description = $args['author_description'];
66
- }
67
-
68
-
69
- if ( isset( $args['author_prefix']) ) {
70
- $author_prefix = $args['author_prefix'];
71
- }
72
- //$author_prefix = ampforwp_translation($redux_builder_amp['amp-translator-by-text'] , $author_prefix );
73
-
74
- if ( isset( $args['author_link']) ) {
75
- $author_link = $args['author_link'];
76
- }
77
- $is_author_link_amp = true;
78
- if ( isset( $args['is_author_link_amp']) ) {
79
- $is_author_link_amp = $args['is_author_link_amp'];
80
- }
81
- if ( isset( $args['author_wrapper_class']) ) {
82
- $author_wrapper_class = $args['author_wrapper_class'];
83
- }
84
-
85
- if ( isset($args['author_image_wrapper']) ) {
86
- $author_image_wrapper = $args['author_image_wrapper'];
87
- }
88
- if ( isset($args['show_date']) ) {
89
- $show_date = $args['show_date'];
90
- }
91
- if ( isset($args['show_time']) ) {
92
- $show_time = $args['show_time'];
93
- }
94
-
95
- ?>
96
- <div class="amp-author <?php echo esc_attr($class); ?>">
97
- <?php if ( $avatar && true == ampforwp_get_setting('amp-author-bio-image')) {
98
- $author_avatar_url = ampforwp_get_wp_user_avatar();
99
- if( null == $author_avatar_url ){
100
- $author_avatar_url = get_avatar_url( $post_author->ID, array( 'size' => $avatar_size ) );
101
- }
102
- if(class_exists('WP_User_Avatar_Functions') && defined('PPRESS_VERSION_NUMBER') && version_compare(PPRESS_VERSION_NUMBER,'3.0', '<')){
103
- $image = get_wp_user_avatar();
104
- if (!empty($image)) {
105
- preg_match_all( '@alt="([^"]+)"@' , $image, $match );
106
- $alt = array_pop($match);
107
- $alt = implode(" ", $alt);
108
- $alt = explode(" ", $alt);
109
- if(class_exists('transposh_plugin') && isset($_GET['lang']) && isset($alt[1]) ){
110
- $alt = 'alt=' . $alt[1];
111
- }
112
- elseif (isset($alt[0])) {
113
- $alt = 'alt=' . $alt[0];
114
- }
115
- }
116
- }
117
- ?>
118
- <div class="amp-author-image <?php echo esc_attr($author_image_wrapper); ?>">
119
- <amp-img <?php if(ampforwp_get_data_consent()){?>data-block-on-consent <?php } ?>src="<?php echo esc_url($author_avatar_url); ?>" <?php echo esc_attr($alt); ?> width="<?php echo esc_attr($avatar_size_width); ?>" height="<?php echo esc_attr($avatar_size_height); ?>" layout="fixed"></amp-img>
120
- </div>
121
- <?php } ?>
122
- <?php echo '<div class="author-details '. esc_attr($author_wrapper_class) .'">';
123
- if ( true == ampforwp_get_setting('ampforwp-author-page-url') ){
124
- if ( function_exists('coauthors_posts_links') ) {
125
- if( $author_pub_name ){
126
- $author_link_ = $author_link;
127
- if($is_author_link_amp==true && ampforwp_get_setting('ampforwp-archive-support')){
128
- $author_link_ = ampforwp_url_controller($author_link);
129
- if($author_link_)
130
- {
131
- echo '<span class="author-name">' .esc_html($author_prefix) . ' <a href="'. esc_url($author_link_).'" title="'. esc_html($author_name).'"> ' .esc_html( $author_name ).'</a></span>';
132
- }
133
- else
134
- {
135
- echo $author_link; // this is html
136
- }
137
- }
138
- echo ampforwp_yoast_twitter_handle();
139
- }
140
- }
141
- else {
142
- if( $author_pub_name ){
143
- if($is_author_link_amp==true && ampforwp_get_setting('ampforwp-archive-support')){
144
- $author_link = ampforwp_url_controller($author_link);
145
- }
146
- echo '<span class="author-name">' .esc_html($author_prefix) . ' <a href="'. esc_url($author_link).'" title="'. esc_html($author_name).'"> ' .esc_html( $author_name ).'</a></span>';
147
- echo ampforwp_yoast_twitter_handle();
148
- }
149
- }
150
- }
151
- else{
152
- if( $author_pub_name ){
153
- echo '<span class="author-name">' . esc_html($author_prefix) . esc_html( $author_name ) . '</span>';
154
- echo ampforwp_yoast_twitter_handle();
155
- }
156
- }
157
-
158
- //to show date and time
159
- if ( $show_date || $show_time ) {
160
- echo '<span class="posted-time"> ';
161
- if ( $show_date ) {
162
- echo esc_html( get_the_date() ) . ' ';
163
- }
164
- if ( $show_time ) {
165
- echo esc_html( get_the_time());
166
- }
167
- echo '</span>';
168
- }
169
- if ( $author_description ) {
170
- if( true == ampforwp_get_setting('amp-author-box-description') ){
171
- $allowed_tags = '<p><a><b><strong><i><u><ul><ol><li><h1><h2><h3><h4><h5><h6><table><tr><th><td><em><span>';
172
- $author_description = "<p>".strip_tags($post_author->description,$allowed_tags)."</p>";
173
- $author_description = apply_filters( 'ampforwp_author_description', $author_description);
174
- echo $author_description;
175
- }
176
- } ?>
177
- </div>
178
- </div>
179
- <?php
180
- if(is_singular() && ( isset($args['ads_below_the_author']) && true == $args['ads_below_the_author'] )){
181
- do_action('ampforwp_below_author_box');
182
- }
183
  }
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+ function ampforwp_framework_get_author_box( $args=array() ) {
6
+ // Simple Author Box compatibility #2268
7
+ if( class_exists('Simple_Author_Box') && !isset($args['author_info']) ){
8
+ return;
9
+ }
10
+ global $post, $redux_builder_amp;
11
+ $post_author = get_userdata($post->post_author);
12
+ if(empty($post_author)){
13
+ return;
14
+ }
15
+ if ( ! is_array($args) ) {
16
+ $args = array();
17
+ }
18
+
19
+ $avatar = false; //To show author Avater
20
+ $author_pub_name = false; //To show author name
21
+ $avatar_size = 40;
22
+ $author_description = false;
23
+ $class = $author_prefix = $author_wrapper_class = '';
24
+ $show_date = false;
25
+ $show_time = false;
26
+ $author_name = $post_author->display_name;
27
+ $author_name = apply_filters('ampforwp_modify_author_name',$author_name);
28
+ $and_text = '';
29
+ $avatar_size_weight = $avatar_size_height = '';
30
+ $and_text = ampforwp_translation($redux_builder_amp['amp-translator-and-text'], 'and' );
31
+ if ( function_exists('coauthors') ) {
32
+ $author_name = coauthors($and_text,$and_text,null,null,false);
33
+ }
34
+ $author_link = get_author_posts_url($post_author->ID);
35
+ if ( function_exists('coauthors_posts_links') ) {
36
+ $author_link = coauthors_posts_links($and_text,$and_text,null,null,false);
37
+ }
38
+ $author_image_wrapper = $alt = '';
39
+
40
+ if ( isset($args['author_pub_name']) ) {
41
+ $author_pub_name = $args['author_pub_name'];
42
+ }
43
+
44
+ if ( isset($args['avatar']) ) {
45
+ $avatar = $args['avatar'];
46
+ }
47
+ if ( isset($args['avatar_size']) ) {
48
+ $avatar_size = ampforwp_get_setting('amp-author-bio-image-width');
49
+ $avatar_size_width = ampforwp_get_setting('amp-author-bio-image-width');
50
+ $avatar_size_height = ampforwp_get_setting('amp-author-bio-image-height');
51
+ if (empty($avatar_size_width)) {
52
+ $avatar_size_width = 60;
53
+ }
54
+ if (empty($avatar_size_height)) {
55
+ $avatar_size_height = 60;
56
+ }
57
+ if (empty($avatar_size)) {
58
+ $avatar_size_width = 60;
59
+ }
60
+ }
61
+ if ( isset($args['class']) ) {
62
+ $class = $args['class'];
63
+ }
64
+ if ( isset($args['author_description']) ) {
65
+ $author_description = $args['author_description'];
66
+ }
67
+
68
+
69
+ if ( isset( $args['author_prefix']) ) {
70
+ $author_prefix = $args['author_prefix'];
71
+ }
72
+ //$author_prefix = ampforwp_translation($redux_builder_amp['amp-translator-by-text'] , $author_prefix );
73
+
74
+ if ( isset( $args['author_link']) ) {
75
+ $author_link = $args['author_link'];
76
+ }
77
+ $is_author_link_amp = true;
78
+ if ( isset( $args['is_author_link_amp']) ) {
79
+ $is_author_link_amp = $args['is_author_link_amp'];
80
+ }
81
+ if ( isset( $args['author_wrapper_class']) ) {
82
+ $author_wrapper_class = $args['author_wrapper_class'];
83
+ }
84
+
85
+ if ( isset($args['author_image_wrapper']) ) {
86
+ $author_image_wrapper = $args['author_image_wrapper'];
87
+ }
88
+ if ( isset($args['show_date']) ) {
89
+ $show_date = $args['show_date'];
90
+ }
91
+ if ( isset($args['show_time']) ) {
92
+ $show_time = $args['show_time'];
93
+ }
94
+
95
+ ?>
96
+ <div class="amp-author <?php echo esc_attr($class); ?>">
97
+ <?php if ( $avatar && true == ampforwp_get_setting('amp-author-bio-image')) {
98
+ $author_avatar_url = ampforwp_get_wp_user_avatar();
99
+ if( null == $author_avatar_url ){
100
+ $author_avatar_url = get_avatar_url( $post_author->ID, array( 'size' => $avatar_size ) );
101
+ }
102
+ if(class_exists('WP_User_Avatar_Functions') && defined('PPRESS_VERSION_NUMBER') && version_compare(PPRESS_VERSION_NUMBER,'3.0', '<')){
103
+ $image = get_wp_user_avatar();
104
+ if (!empty($image)) {
105
+ preg_match_all( '@alt="([^"]+)"@' , $image, $match );
106
+ $alt = array_pop($match);
107
+ $alt = implode(" ", $alt);
108
+ $alt = explode(" ", $alt);
109
+ if(class_exists('transposh_plugin') && isset($_GET['lang']) && isset($alt[1]) ){
110
+ $alt = 'alt=' . $alt[1];
111
+ }
112
+ elseif (isset($alt[0])) {
113
+ $alt = 'alt=' . $alt[0];
114
+ }
115
+ }
116
+ }
117
+ ?>
118
+ <div class="amp-author-image <?php echo esc_attr($author_image_wrapper); ?>">
119
+ <amp-img <?php if(ampforwp_get_data_consent()){?>data-block-on-consent <?php } ?>src="<?php echo esc_url($author_avatar_url); ?>" <?php echo esc_attr($alt); ?> width="<?php echo esc_attr($avatar_size_width); ?>" height="<?php echo esc_attr($avatar_size_height); ?>" layout="fixed"></amp-img>
120
+ </div>
121
+ <?php } ?>
122
+ <?php echo '<div class="author-details '. esc_attr($author_wrapper_class) .'">';
123
+ if ( true == ampforwp_get_setting('ampforwp-author-page-url') ){
124
+ if ( function_exists('coauthors_posts_links') ) {
125
+ if( $author_pub_name ){
126
+ $author_link_ = $author_link;
127
+ if($is_author_link_amp==true && ampforwp_get_setting('ampforwp-archive-support')){
128
+ $author_link_ = ampforwp_url_controller($author_link);
129
+ if($author_link_)
130
+ {
131
+ echo '<span class="author-name">' .esc_html($author_prefix) . ' <a href="'. esc_url($author_link_).'" title="'. esc_html($author_name).'"> ' .esc_html( $author_name ).'</a></span>';
132
+ }
133
+ else
134
+ {
135
+ echo $author_link; // this is html
136
+ }
137
+ }
138
+ echo ampforwp_yoast_twitter_handle();
139
+ }
140
+ }
141
+ else {
142
+ if( $author_pub_name ){
143
+ if($is_author_link_amp==true && ampforwp_get_setting('ampforwp-archive-support')){
144
+ $author_link = ampforwp_url_controller($author_link);
145
+ }
146
+ echo '<span class="author-name">' .esc_html($author_prefix) . ' <a href="'. esc_url($author_link).'" title="'. esc_html($author_name).'"> ' .esc_html( $author_name ).'</a></span>';
147
+ echo ampforwp_yoast_twitter_handle();
148
+ }
149
+ }
150
+ }
151
+ else{
152
+ if( $author_pub_name ){
153
+ echo '<span class="author-name">' . esc_html($author_prefix) . esc_html( $author_name ) . '</span>';
154
+ echo ampforwp_yoast_twitter_handle();
155
+ }
156
+ }
157
+
158
+ //to show date and time
159
+ if ( $show_date || $show_time ) {
160
+ echo '<span class="posted-time"> ';
161
+ if ( $show_date ) {
162
+ echo esc_html( get_the_date() ) . ' ';
163
+ }
164
+ if ( $show_time ) {
165
+ echo esc_html( get_the_time());
166
+ }
167
+ echo '</span>';
168
+ }
169
+ if ( $author_description ) {
170
+ if( true == ampforwp_get_setting('amp-author-box-description') ){
171
+ $allowed_tags = '<p><a><b><strong><i><u><ul><ol><li><h1><h2><h3><h4><h5><h6><table><tr><th><td><em><span>';
172
+ $author_description = "<p>".strip_tags($post_author->description,$allowed_tags)."</p>";
173
+ $author_description = apply_filters( 'ampforwp_author_description', $author_description);
174
+ echo $author_description;
175
+ }
176
+ } ?>
177
+ </div>
178
+ </div>
179
+ <?php
180
+ if(is_singular() && ( isset($args['ads_below_the_author']) && true == $args['ads_below_the_author'] )){
181
+ do_action('ampforwp_below_author_box');
182
+ }
183
  }
components/breadcrumb/breadcrumb.php CHANGED
@@ -1,277 +1,277 @@
1
- <?php
2
- if ( ! defined( 'ABSPATH' ) ) {
3
- exit;
4
- }
5
- function amp_breadcrumb_output(){
6
- global $redux_builder_amp;
7
- $home_non_amp = $archive_non_amp = '';
8
- if ( false == $redux_builder_amp['ampforwp-homepage-on-off-support'] ) {
9
- $home_non_amp = 'nonamp';
10
- }
11
- if ( false == $redux_builder_amp['ampforwp-archive-support'] ) {
12
- $archive_non_amp = 'nonamp';
13
- } ?>
14
- <?php
15
- if ( ampforwp_yoast_breadcrumbs_output() ) {
16
- echo '<div class="amp-wp-content breadcrumb">';
17
- echo ampforwp_yoast_breadcrumbs_output();
18
- echo '</div>';
19
- return;
20
- }
21
- echo '<div class="amp-wp-content breadcrumb">';
22
- // Settings
23
- $breadcrums_id = 'breadcrumbs';
24
- $breadcrums_class = 'breadcrumbs';
25
- $home_title = ampforwp_translation($redux_builder_amp['amp-translator-breadcrumbs-homepage-text'] , 'Homepage' );
26
- if (function_exists('pll__')) {
27
- $home_title = pll__(esc_html__( ampforwp_get_setting('amp-translator-breadcrumbs-homepage-text'), 'accelerated-mobile-pages'));
28
- }
29
- // If you have any custom post types with custom taxonomies, put the taxonomy name below (e.g. product_cat)
30
- $custom_taxonomy = 'product_cat';
31
-
32
- // Get the query & post information
33
- global $post,$wp_query;
34
- // Do not display on the homepage
35
- if ( !ampforwp_polylang_front_page() && !is_front_page() ) {
36
-
37
- // Build the breadcrums
38
- echo '<ul id="' . esc_attr($breadcrums_id) . '" class="' . esc_attr($breadcrums_class) . '">';
39
- $home_url = ampforwp_url_controller( get_home_url('', '/'), $home_non_amp );
40
- $home_url = apply_filters('ampforwp_breadcrumbs_home_url',$home_url,$post->ID);
41
- // Home page
42
- echo '<li class="item-home"><a class="bread-link bread-home" href="' . esc_url($home_url) . '" title="' . esc_attr($home_title) . '">' . esc_html($home_title) . '</a></li>';
43
- if ( is_archive() && !is_tax() && !is_category() && !is_tag() && !is_author() ) {
44
-
45
-
46
- echo '<li class="item-current item-archive"><strong class="bread-current bread-archive">' . post_type_archive_title($prefix, false) . '</strong></li>';
47
- } else if ( is_author() ) {
48
- global $author;
49
-
50
- $userdata = get_userdata( $author );
51
- $author_url= get_author_posts_url($userdata->ID);
52
- $author_url = trailingslashit($author_url);
53
- // Display author name
54
- echo '<li class="item-current item-current-' . esc_attr($userdata->user_nicename) . '"><a class="bread-current bread-current-' . esc_attr($userdata->user_nicename) . '" title="' . esc_attr($userdata->display_name) . '" href="'. ampforwp_url_controller( $author_url, $archive_non_amp ). '">' . 'Author: ' . esc_html($userdata->display_name) . '</a></li>';
55
-
56
- } else if ( is_archive() && is_tax() && !is_category() && !is_tag() ) {
57
-
58
- // If post is a custom post type
59
- $post_type = get_post_type();
60
-
61
- // If it is a custom post type display name and link
62
- if($post_type != 'post') {
63
-
64
- $post_type_object = get_post_type_object($post_type);
65
- $post_type_archive = get_post_type_archive_link($post_type);
66
- if ( false != $post_type_archive){
67
- echo '<li class="item-cat item-custom-post-type-' . esc_attr($post_type) . '"><a class="bread-cat bread-custom-post-type-' . esc_attr($post_type) . '" href="' .ampforwp_url_controller( $post_type_archive, $archive_non_amp ) . '" title="' . esc_attr($post_type_object->labels->name) . '">' . esc_html($post_type_object->labels->name) . '</a></li>';
68
- }
69
- else {
70
- echo '<li class="item-cat item-custom-post-type-' . esc_attr($post_type) . '"><span class="bread-cat bread-custom-post-type-' . esc_attr($post_type) . '">' . esc_html($post_type_object->labels->name) . '</span></li>';
71
- }
72
- }
73
-
74
- $custom_tax_name = get_queried_object()->name;
75
- echo '<li class="item-current item-archive"><strong class="bread-current bread-archive">' . esc_html($custom_tax_name) . '</strong></li>';
76
- } else if ( is_single() ) {
77
-
78
- // If post is a custom post type
79
- $post_type = get_post_type();
80
-
81
- // If it is a custom post type display name and link
82
- if($post_type != 'post') {
83
-
84
- $post_type_object = get_post_type_object($post_type);
85
- $post_type_archive = get_post_type_archive_link($post_type);
86
- if ( false != $post_type_archive){
87
- echo '<li class="item-cat item-custom-post-type-' . esc_attr($post_type) . '"><a class="bread-cat bread-custom-post-type-' . esc_attr($post_type) . '" href="' .ampforwp_url_controller( $post_type_archive, $archive_non_amp ) . '" title="' . esc_attr($post_type_object->labels->name) . '">' . esc_html($post_type_object->labels->name) . '</a></li>';
88
- }
89
- else {
90
- echo '<li class="item-cat item-custom-post-type-' . esc_attr($post_type) . '"><span class="bread-cat bread-custom-post-type-' . esc_attr($post_type) . '">' . esc_html($post_type_object->labels->name) . '</span></li>';
91
- }
92
- }
93
- /*Breadcrumb with tags Start*/
94
- $tags_breadcrumbs = '';
95
- if(ampforwp_get_setting('ampforwp-bread-crumb-type') == 'tags'){
96
- $post_tags = wp_get_post_tags($post->ID);
97
- if(!empty($post_tags)){
98
- foreach( $post_tags as $post_obj){
99
- $tag_name = $post_obj->name;
100
- $tag_id = $post_obj->term_id;
101
- $tag_name = $post_obj->name;
102
- $tag_link = get_tag_link($tag_id);
103
- if(ampforwp_get_setting('ampforwp-archive-support-tag') == true && ampforwp_get_setting('ampforwp-archive-support') == true){
104
- $tag_link = ampforwp_url_controller( $tag_link );
105
- }
106
- $tags_breadcrumbs .= '<li class="item-tag item-tag-' . esc_attr($tag_id) . ' item-tag-' . esc_attr($tag_name) . '"><a class="bread-tag bread-tag-' . esc_attr($tag_id) . ' bread-tag-' . esc_attr($tag_name) . '" href="' . esc_url($tag_link) . '" title="' . esc_attr($tag_name) . '">' . esc_html($tag_name) . '</a></li>';
107
- }
108
- if(ampforwp_get_setting('ampforwp-bread-crumb-post')){
109
- if (class_exists('WPSEO_Premium') && !empty(WPSEO_Meta::get_value( 'bctitle', ampforwp_get_the_ID()))) {
110
- $bc_title = WPSEO_Meta::get_value( 'bctitle', ampforwp_get_the_ID() );
111
- }else{
112
- $bc_title = get_the_title(ampforwp_get_the_ID());
113
- }
114
- $tags_breadcrumbs .='<li class="item-post item-post-' . esc_attr(ampforwp_get_the_ID()) . '"><span class="bread-post">'.wp_kses_data( $bc_title ). '</span></li>';
115
- }
116
- echo $tags_breadcrumbs; // Escaped above
117
- }
118
- }
119
- if(ampforwp_get_setting('ampforwp-bread-crumb-type') == 'category'){
120
- // Get post category info
121
- $category = get_the_category();
122
- if(!empty($category)) {
123
-
124
- // Get last category post is in
125
- $last_category = array_values($category);
126
- $last_category = end($last_category);
127
- $get_cat_parents = rtrim(get_category_parents($last_category->term_id, false, '>'),'>');
128
- if(class_exists( 'WPSEO_Options' )){
129
- $primary_cateogory = get_post_meta(ampforwp_get_the_ID(), '_yoast_wpseo_primary_category', true);
130
- if(isset($primary_cateogory) && $primary_cateogory!=""){
131
- $get_cat_parents = rtrim(get_category_parents($primary_cateogory, false, '>'),'>');
132
- }
133
- }
134
- // Get parent any categories and create array
135
- $cat_parents = explode('>',$get_cat_parents);
136
-
137
- // Loop through parent categories and store in variable $cat_display
138
- $cat_display = '';
139
- foreach($cat_parents as $parents) {
140
- $categories = get_the_category();
141
- $cat_id = end($categories)->cat_ID;
142
- if(class_exists( 'WPSEO_Options' ) && !empty($primary_cateogory)){
143
- $cat_id = $primary_cateogory;
144
- }
145
- $cat_link = get_category_link($cat_id);
146
- if(ampforwp_get_setting('ampforwp-archive-support-cat') == true && ampforwp_get_setting('ampforwp-archive-support') == true){
147
- $cat_link = ampforwp_url_controller( $cat_link );
148
- }
149
- $cat_link = apply_filters('ampforwp_breadcrumbs_category_url', $cat_link,$post->ID);
150
- $parents = apply_filters('ampforwp_breadcrumbs_category_name', $parents);
151
- $cat_display .= '<li class="item-cat item-cat-' . esc_attr($cat_id) . '"><a class="bread-cat bread-cat-' . esc_attr($cat_id) . ' bread-cat-' . esc_attr($parents). '" href="'. esc_url($cat_link).'" title="' . esc_attr($parents) . '">' . esc_html($parents) . '</a></li>';
152
- }
153
- if(ampforwp_get_setting('ampforwp-bread-crumb-post')){
154
- if (class_exists('WPSEO_Premium') && !empty(WPSEO_Meta::get_value( 'bctitle', ampforwp_get_the_ID()))) {
155
- $bc_title = WPSEO_Meta::get_value( 'bctitle', ampforwp_get_the_ID() );
156
- }else{
157
- $bc_title = get_the_title(ampforwp_get_the_ID());
158
- }
159
- $cat_display .='<li class="item-post item-post-' . esc_attr(ampforwp_get_the_ID()) . '"><span class="bread-post">'.wp_kses_data( $bc_title ). '</span></li>';
160
- }
161
- }
162
- }
163
- /*Breadcrumb with tags End*/
164
-
165
- // If it's a custom post type within a custom taxonomy
166
- $taxonomy_exists = taxonomy_exists($custom_taxonomy);
167
- if(empty($last_category) && !empty($custom_taxonomy) && $taxonomy_exists) {
168
-
169
- $taxonomy_terms = get_the_terms( $post->ID, $custom_taxonomy );
170
- if ( $taxonomy_terms ) {
171
- $cat_id = $taxonomy_terms[0]->term_id;
172
- $cat_nicename = $taxonomy_terms[0]->slug;
173
- $cat_link = get_term_link($taxonomy_terms[0]->term_id, $custom_taxonomy);
174
- $cat_link = trailingslashit($cat_link);
175
- $cat_name = $taxonomy_terms[0]->name;
176
- }
177
- }
178
-
179
- // Check if the post is in a category
180
- if(!empty($last_category)) {
181
- echo $cat_display; // Escaped above
182
-
183
- // Else if post is in a custom taxonomy
184
- } else if(!empty($cat_id)) {
185
-
186
- echo '<li class="item-cat item-cat-' . esc_attr($cat_id) . ' item-cat-' . esc_attr($cat_nicename) . '"><a class="bread-cat bread-cat-' . esc_attr($cat_id) . ' bread-cat-' . esc_attr($cat_nicename) . '" href="' . ampforwp_url_controller( $cat_link, $archive_non_amp ) . '" title="' . esc_attr($cat_name) . '">' . esc_html($cat_name) . '</a></li>';
187
- }
188
-
189
- } else if ( is_category() ) {
190
-
191
- // Category page
192
- echo '<li class="item-current item-cat"><strong class="bread-current bread-cat">' . single_cat_title('', false) . '</strong></li>';
193
- } else if ( is_page() ) {
194
-
195
- // Standard page
196
- if( $post->post_parent ){
197
-
198
- // If child page, get parents
199
- $anc = get_post_ancestors( $post->ID );
200
-
201
- // Get parents in the right order
202
- $anc = array_reverse($anc);
203
-
204
- // Parent page loop
205
- if ( !isset( $parents ) ) $parents = null;
206
- foreach ( $anc as $ancestor ) {
207
- $parents .= '<li class="item-parent item-parent-' . esc_attr($ancestor) . '"><a class="bread-parent bread-parent-' . esc_attr($ancestor) . '" href="' . ampforwp_url_controller( get_permalink( $ancestor ), $archive_non_amp ) . '" title="' . esc_attr(get_the_title($ancestor)) . '">' .esc_html( get_the_title($ancestor)) . '</a></li>';
208
- }
209
-
210
- // Display parent pages
211
- echo $parents; // Escaped above
212
-
213
- // Current page
214
-
215
- }
216
-
217
- } else if ( is_tag() ) {
218
-
219
- // Tag page
220
-
221
- // Get tag information
222
- $term_id = get_query_var('tag_id');
223
- $taxonomy = 'post_tag';
224
- $args = 'include=' . intval($term_id);
225
- $terms = get_terms( $taxonomy, $args );
226
- $get_term_id = $terms[0]->term_id;
227
- $get_term_slug = $terms[0]->slug;
228
- $get_term_name = $terms[0]->name;
229
-
230
- // Display the tag name
231
- echo '<li class="item-current item-tag-' . esc_attr($get_term_id) . ' item-tag-' . esc_attr($get_term_slug) . '"><strong class="bread-current bread-tag-' . esc_attr($get_term_id) . ' bread-tag-' . esc_attr($get_term_slug) . '">' . esc_html($get_term_name) . '</strong></li>';
232
- } elseif ( is_day() ) {
233
-
234
- // Day archive
235
-
236
- // Year link
237
- echo '<li class="item-year item-year-' . get_the_time('Y') . '"><a class="bread-year bread-year-' . get_the_time('Y') . '" href="' . get_year_link( get_the_time('Y') ) . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . esc_html(ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives')) . '</a></li>';
238
-
239
- // Month link
240
- echo '<li class="item-month item-month-' . get_the_time('m') . '"><a class="bread-month bread-month-' . get_the_time('m') . '" href="' . get_month_link( get_the_time('Y'), get_the_time('m') ) . '" title="' . get_the_time('M') . '">' . get_the_time('M') . esc_html(ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives')) . ' </a></li>';
241
-
242
-
243
- // Day display
244
- echo '<li class="item-current item-' . get_the_time('j') . '"><strong class="bread-current bread-' . get_the_time('j') . '"> ' . get_the_time('jS') . ' ' . get_the_time('M') . esc_html(ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives')) . ' </strong></li>';
245
-
246
- } else if ( is_month() ) {
247
-
248
- // Month Archive
249
-
250
- // Year link
251
- echo '<li class="item-year item-year-' . get_the_time('Y') . '"><a class="bread-year bread-year-' . get_the_time('Y') . '" href="' . get_year_link( get_the_time('Y') ) . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . esc_html(ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives')) . ' </a></li>';
252
-
253
- // Month display
254
- echo '<li class="item-month item-month-' . get_the_time('m') . '"><strong class="bread-month bread-month-' . get_the_time('m') . '" title="' . get_the_time('M') . '">' . get_the_time('M') . esc_html(ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives')) . ' </strong></li>';
255
-
256
- } else if ( is_year() ) {
257
-
258
- // Display year archive
259
- echo '<li class="item-current item-current-' . get_the_time('Y') . '"><strong class="bread-current bread-current-' . get_the_time('Y') . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . esc_html(ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives')). ' </strong></li>';
260
-
261
- } else if ( get_query_var('paged') ) {
262
-
263
- // Paginated archives
264
- echo '<li class="item-current item-current-' . esc_attr(get_query_var('paged')) . '"><strong class="bread-current bread-current-' . esc_attr(get_query_var('paged')) . '" title="Page ' . esc_attr(get_query_var('paged')) . '">'. esc_html(ampforwp_translation($redux_builder_amp['amp-translator-page-text'], 'Page')) . ' ' . esc_html(get_query_var('paged')) . '</strong></li>';
265
-
266
- } else if ( is_search() ) {
267
-
268
- // Search results page
269
- echo '<li class="item-current item-current-' . esc_attr(get_search_query()) . '"><strong class="bread-current bread-current-' . esc_attr(get_search_query()) . '" title="Search results for: ' . esc_attr(get_search_query()) . '">
270
- ' . esc_html(ampforwp_translation($redux_builder_amp['amp-translator-breadcrumbs-search-text'], 'Search results for')) . ': ' . esc_html(get_search_query()) . '</strong></li>';
271
-
272
- }
273
- echo '</ul>';
274
-
275
- } ?>
276
- </div>
277
  <?php }
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+ function amp_breadcrumb_output(){
6
+ global $redux_builder_amp;
7
+ $home_non_amp = $archive_non_amp = '';
8
+ if ( false == $redux_builder_amp['ampforwp-homepage-on-off-support'] ) {
9
+ $home_non_amp = 'nonamp';
10
+ }
11
+ if ( false == $redux_builder_amp['ampforwp-archive-support'] ) {
12
+ $archive_non_amp = 'nonamp';
13
+ } ?>
14
+ <?php
15
+ if ( ampforwp_yoast_breadcrumbs_output() ) {
16
+ echo '<div class="amp-wp-content breadcrumb">';
17
+ echo ampforwp_yoast_breadcrumbs_output();
18
+ echo '</div>';
19
+ return;
20
+ }
21
+ echo '<div class="amp-wp-content breadcrumb">';
22
+ // Settings
23
+ $breadcrums_id = 'breadcrumbs';
24
+ $breadcrums_class = 'breadcrumbs';
25
+ $home_title = ampforwp_translation($redux_builder_amp['amp-translator-breadcrumbs-homepage-text'] , 'Homepage' );
26
+ if (function_exists('pll__')) {
27
+ $home_title = pll__(esc_html__( ampforwp_get_setting('amp-translator-breadcrumbs-homepage-text'), 'accelerated-mobile-pages'));
28
+ }
29
+ // If you have any custom post types with custom taxonomies, put the taxonomy name below (e.g. product_cat)
30
+ $custom_taxonomy = 'product_cat';
31
+
32
+ // Get the query & post information
33
+ global $post,$wp_query;
34
+ // Do not display on the homepage
35
+ if ( !ampforwp_polylang_front_page() && !is_front_page() ) {
36
+
37
+ // Build the breadcrums
38
+ echo '<ul id="' . esc_attr($breadcrums_id) . '" class="' . esc_attr($breadcrums_class) . '">';
39
+ $home_url = ampforwp_url_controller( get_home_url('', '/'), $home_non_amp );
40
+ $home_url = apply_filters('ampforwp_breadcrumbs_home_url',$home_url,$post->ID);
41
+ // Home page
42
+ echo '<li class="item-home"><a class="bread-link bread-home" href="' . esc_url($home_url) . '" title="' . esc_attr($home_title) . '">' . esc_html($home_title) . '</a></li>';
43
+ if ( is_archive() && !is_tax() && !is_category() && !is_tag() && !is_author() ) {
44
+
45
+
46
+ echo '<li class="item-current item-archive"><strong class="bread-current bread-archive">' . post_type_archive_title($prefix, false) . '</strong></li>';
47
+ } else if ( is_author() ) {
48
+ global $author;
49
+
50
+ $userdata = get_userdata( $author );
51
+ $author_url= get_author_posts_url($userdata->ID);
52
+ $author_url = trailingslashit($author_url);
53
+ // Display author name
54
+ echo '<li class="item-current item-current-' . esc_attr($userdata->user_nicename) . '"><a class="bread-current bread-current-' . esc_attr($userdata->user_nicename) . '" title="' . esc_attr($userdata->display_name) . '" href="'. ampforwp_url_controller( $author_url, $archive_non_amp ). '">' . 'Author: ' . esc_html($userdata->display_name) . '</a></li>';
55
+
56
+ } else if ( is_archive() && is_tax() && !is_category() && !is_tag() ) {
57
+
58
+ // If post is a custom post type
59
+ $post_type = get_post_type();
60
+
61
+ // If it is a custom post type display name and link
62
+ if($post_type != 'post') {
63
+
64
+ $post_type_object = get_post_type_object($post_type);
65
+ $post_type_archive = get_post_type_archive_link($post_type);
66
+ if ( false != $post_type_archive){
67
+ echo '<li class="item-cat item-custom-post-type-' . esc_attr($post_type) . '"><a class="bread-cat bread-custom-post-type-' . esc_attr($post_type) . '" href="' .ampforwp_url_controller( $post_type_archive, $archive_non_amp ) . '" title="' . esc_attr($post_type_object->labels->name) . '">' . esc_html($post_type_object->labels->name) . '</a></li>';
68
+ }
69
+ else {
70
+ echo '<li class="item-cat item-custom-post-type-' . esc_attr($post_type) . '"><span class="bread-cat bread-custom-post-type-' . esc_attr($post_type) . '">' . esc_html($post_type_object->labels->name) . '</span></li>';
71
+ }
72
+ }
73
+
74
+ $custom_tax_name = get_queried_object()->name;
75
+ echo '<li class="item-current item-archive"><strong class="bread-current bread-archive">' . esc_html($custom_tax_name) . '</strong></li>';
76
+ } else if ( is_single() ) {
77
+
78
+ // If post is a custom post type
79
+ $post_type = get_post_type();
80
+
81
+ // If it is a custom post type display name and link
82
+ if($post_type != 'post') {
83
+
84
+ $post_type_object = get_post_type_object($post_type);
85
+ $post_type_archive = get_post_type_archive_link($post_type);
86
+ if ( false != $post_type_archive){
87
+ echo '<li class="item-cat item-custom-post-type-' . esc_attr($post_type) . '"><a class="bread-cat bread-custom-post-type-' . esc_attr($post_type) . '" href="' .ampforwp_url_controller( $post_type_archive, $archive_non_amp ) . '" title="' . esc_attr($post_type_object->labels->name) . '">' . esc_html($post_type_object->labels->name) . '</a></li>';
88
+ }
89
+ else {
90
+ echo '<li class="item-cat item-custom-post-type-' . esc_attr($post_type) . '"><span class="bread-cat bread-custom-post-type-' . esc_attr($post_type) . '">' . esc_html($post_type_object->labels->name) . '</span></li>';
91
+ }
92
+ }
93
+ /*Breadcrumb with tags Start*/
94
+ $tags_breadcrumbs = '';
95
+ if(ampforwp_get_setting('ampforwp-bread-crumb-type') == 'tags'){
96
+ $post_tags = wp_get_post_tags($post->ID);
97
+ if(!empty($post_tags)){
98
+ foreach( $post_tags as $post_obj){
99
+ $tag_name = $post_obj->name;
100
+ $tag_id = $post_obj->term_id;
101
+ $tag_name = $post_obj->name;
102
+ $tag_link = get_tag_link($tag_id);
103
+ if(ampforwp_get_setting('ampforwp-archive-support-tag') == true && ampforwp_get_setting('ampforwp-archive-support') == true){
104
+ $tag_link = ampforwp_url_controller( $tag_link );
105
+ }
106
+ $tags_breadcrumbs .= '<li class="item-tag item-tag-' . esc_attr($tag_id) . ' item-tag-' . esc_attr($tag_name) . '"><a class="bread-tag bread-tag-' . esc_attr($tag_id) . ' bread-tag-' . esc_attr($tag_name) . '" href="' . esc_url($tag_link) . '" title="' . esc_attr($tag_name) . '">' . esc_html($tag_name) . '</a></li>';
107
+ }
108
+ if(ampforwp_get_setting('ampforwp-bread-crumb-post')){
109
+ if (class_exists('WPSEO_Premium') && !empty(WPSEO_Meta::get_value( 'bctitle', ampforwp_get_the_ID()))) {
110
+ $bc_title = WPSEO_Meta::get_value( 'bctitle', ampforwp_get_the_ID() );
111
+ }else{
112
+ $bc_title = get_the_title(ampforwp_get_the_ID());
113
+ }
114
+ $tags_breadcrumbs .='<li class="item-post item-post-' . esc_attr(ampforwp_get_the_ID()) . '"><span class="bread-post">'.wp_kses_data( $bc_title ). '</span></li>';
115
+ }
116
+ echo $tags_breadcrumbs; // Escaped above
117
+ }
118
+ }
119
+ if(ampforwp_get_setting('ampforwp-bread-crumb-type') == 'category'){
120
+ // Get post category info
121
+ $category = get_the_category();
122
+ if(!empty($category)) {
123
+
124
+ // Get last category post is in
125
+ $last_category = array_values($category);
126
+ $last_category = end($last_category);
127
+ $get_cat_parents = rtrim(get_category_parents($last_category->term_id, false, '>'),'>');
128
+ if(class_exists( 'WPSEO_Options' )){
129
+ $primary_cateogory = get_post_meta(ampforwp_get_the_ID(), '_yoast_wpseo_primary_category', true);
130
+ if(isset($primary_cateogory) && $primary_cateogory!=""){
131
+ $get_cat_parents = rtrim(get_category_parents($primary_cateogory, false, '>'),'>');
132
+ }
133
+ }
134
+ // Get parent any categories and create array
135
+ $cat_parents = explode('>',$get_cat_parents);
136
+
137
+ // Loop through parent categories and store in variable $cat_display
138
+ $cat_display = '';
139
+ foreach($cat_parents as $parents) {
140
+ $categories = get_the_category();
141
+ $cat_id = end($categories)->cat_ID;
142
+ if(class_exists( 'WPSEO_Options' ) && !empty($primary_cateogory)){
143
+ $cat_id = $primary_cateogory;
144
+ }
145
+ $cat_link = get_category_link($cat_id);
146
+ if(ampforwp_get_setting('ampforwp-archive-support-cat') == true && ampforwp_get_setting('ampforwp-archive-support') == true){
147
+ $cat_link = ampforwp_url_controller( $cat_link );
148
+ }
149
+ $cat_link = apply_filters('ampforwp_breadcrumbs_category_url', $cat_link,$post->ID);
150
+ $parents = apply_filters('ampforwp_breadcrumbs_category_name', $parents);
151
+ $cat_display .= '<li class="item-cat item-cat-' . esc_attr($cat_id) . '"><a class="bread-cat bread-cat-' . esc_attr($cat_id) . ' bread-cat-' . esc_attr($parents). '" href="'. esc_url($cat_link).'" title="' . esc_attr($parents) . '">' . esc_html($parents) . '</a></li>';
152
+ }
153
+ if(ampforwp_get_setting('ampforwp-bread-crumb-post')){
154
+ if (class_exists('WPSEO_Premium') && !empty(WPSEO_Meta::get_value( 'bctitle', ampforwp_get_the_ID()))) {
155
+ $bc_title = WPSEO_Meta::get_value( 'bctitle', ampforwp_get_the_ID() );
156
+ }else{
157
+ $bc_title = get_the_title(ampforwp_get_the_ID());
158
+ }
159
+ $cat_display .='<li class="item-post item-post-' . esc_attr(ampforwp_get_the_ID()) . '"><span class="bread-post">'.wp_kses_data( $bc_title ). '</span></li>';
160
+ }
161
+ }
162
+ }
163
+ /*Breadcrumb with tags End*/
164
+
165
+ // If it's a custom post type within a custom taxonomy
166
+ $taxonomy_exists = taxonomy_exists($custom_taxonomy);
167
+ if(empty($last_category) && !empty($custom_taxonomy) && $taxonomy_exists) {
168
+
169
+ $taxonomy_terms = get_the_terms( $post->ID, $custom_taxonomy );
170
+ if ( $taxonomy_terms ) {
171
+ $cat_id = $taxonomy_terms[0]->term_id;
172
+ $cat_nicename = $taxonomy_terms[0]->slug;
173
+ $cat_link = get_term_link($taxonomy_terms[0]->term_id, $custom_taxonomy);
174
+ $cat_link = trailingslashit($cat_link);
175
+ $cat_name = $taxonomy_terms[0]->name;
176
+ }
177
+ }
178
+
179
+ // Check if the post is in a category
180
+ if(!empty($last_category)) {
181
+ echo $cat_display; // Escaped above
182
+
183
+ // Else if post is in a custom taxonomy
184
+ } else if(!empty($cat_id)) {
185
+
186
+ echo '<li class="item-cat item-cat-' . esc_attr($cat_id) . ' item-cat-' . esc_attr($cat_nicename) . '"><a class="bread-cat bread-cat-' . esc_attr($cat_id) . ' bread-cat-' . esc_attr($cat_nicename) . '" href="' . ampforwp_url_controller( $cat_link, $archive_non_amp ) . '" title="' . esc_attr($cat_name) . '">' . esc_html($cat_name) . '</a></li>';
187
+ }
188
+
189
+ } else if ( is_category() ) {
190
+
191
+ // Category page
192
+ echo '<li class="item-current item-cat"><strong class="bread-current bread-cat">' . single_cat_title('', false) . '</strong></li>';
193
+ } else if ( is_page() ) {
194
+
195
+ // Standard page
196
+ if( $post->post_parent ){
197
+
198
+ // If child page, get parents
199
+ $anc = get_post_ancestors( $post->ID );
200
+
201
+ // Get parents in the right order
202
+ $anc = array_reverse($anc);
203
+
204
+ // Parent page loop
205
+ if ( !isset( $parents ) ) $parents = null;
206
+ foreach ( $anc as $ancestor ) {
207
+ $parents .= '<li class="item-parent item-parent-' . esc_attr($ancestor) . '"><a class="bread-parent bread-parent-' . esc_attr($ancestor) . '" href="' . ampforwp_url_controller( get_permalink( $ancestor ), $archive_non_amp ) . '" title="' . esc_attr(get_the_title($ancestor)) . '">' .esc_html( get_the_title($ancestor)) . '</a></li>';
208
+ }
209
+
210
+ // Display parent pages
211
+ echo $parents; // Escaped above
212
+
213
+ // Current page
214
+
215
+ }
216
+
217
+ } else if ( is_tag() ) {
218
+
219
+ // Tag page
220
+
221
+ // Get tag information
222
+ $term_id = get_query_var('tag_id');
223
+ $taxonomy = 'post_tag';
224
+ $args = 'include=' . intval($term_id);
225
+ $terms = get_terms( $taxonomy, $args );
226
+ $get_term_id = $terms[0]->term_id;
227
+ $get_term_slug = $terms[0]->slug;
228
+ $get_term_name = $terms[0]->name;
229
+
230
+ // Display the tag name
231
+ echo '<li class="item-current item-tag-' . esc_attr($get_term_id) . ' item-tag-' . esc_attr($get_term_slug) . '"><strong class="bread-current bread-tag-' . esc_attr($get_term_id) . ' bread-tag-' . esc_attr($get_term_slug) . '">' . esc_html($get_term_name) . '</strong></li>';
232
+ } elseif ( is_day() ) {
233
+
234
+ // Day archive
235
+
236
+ // Year link
237
+ echo '<li class="item-year item-year-' . get_the_time('Y') . '"><a class="bread-year bread-year-' . get_the_time('Y') . '" href="' . get_year_link( get_the_time('Y') ) . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . esc_html(ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives')) . '</a></li>';
238
+
239
+ // Month link
240
+ echo '<li class="item-month item-month-' . get_the_time('m') . '"><a class="bread-month bread-month-' . get_the_time('m') . '" href="' . get_month_link( get_the_time('Y'), get_the_time('m') ) . '" title="' . get_the_time('M') . '">' . get_the_time('M') . esc_html(ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives')) . ' </a></li>';
241
+
242
+
243
+ // Day display
244
+ echo '<li class="item-current item-' . get_the_time('j') . '"><strong class="bread-current bread-' . get_the_time('j') . '"> ' . get_the_time('jS') . ' ' . get_the_time('M') . esc_html(ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives')) . ' </strong></li>';
245
+
246
+ } else if ( is_month() ) {
247
+
248
+ // Month Archive
249
+
250
+ // Year link
251
+ echo '<li class="item-year item-year-' . get_the_time('Y') . '"><a class="bread-year bread-year-' . get_the_time('Y') . '" href="' . get_year_link( get_the_time('Y') ) . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . esc_html(ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives')) . ' </a></li>';
252
+
253
+ // Month display
254
+ echo '<li class="item-month item-month-' . get_the_time('m') . '"><strong class="bread-month bread-month-' . get_the_time('m') . '" title="' . get_the_time('M') . '">' . get_the_time('M') . esc_html(ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives')) . ' </strong></li>';
255
+
256
+ } else if ( is_year() ) {
257
+
258
+ // Display year archive
259
+ echo '<li class="item-current item-current-' . get_the_time('Y') . '"><strong class="bread-current bread-current-' . get_the_time('Y') . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . esc_html(ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives')). ' </strong></li>';
260
+
261
+ } else if ( get_query_var('paged') ) {
262
+
263
+ // Paginated archives
264
+ echo '<li class="item-current item-current-' . esc_attr(get_query_var('paged')) . '"><strong class="bread-current bread-current-' . esc_attr(get_query_var('paged')) . '" title="Page ' . esc_attr(get_query_var('paged')) . '">'. esc_html(ampforwp_translation($redux_builder_amp['amp-translator-page-text'], 'Page')) . ' ' . esc_html(get_query_var('paged')) . '</strong></li>';
265
+
266
+ } else if ( is_search() ) {
267
+
268
+ // Search results page
269
+ echo '<li class="item-current item-current-' . esc_attr(get_search_query()) . '"><strong class="bread-current bread-current-' . esc_attr(get_search_query()) . '" title="Search results for: ' . esc_attr(get_search_query()) . '">
270
+ ' . esc_html(ampforwp_translation($redux_builder_amp['amp-translator-breadcrumbs-search-text'], 'Search results for')) . ': ' . esc_html(get_search_query()) . '</strong></li>';
271
+
272
+ }
273
+ echo '</ul>';
274
+
275
+ } ?>
276
+ </div>
277
  <?php }
components/categories-tags/categories-tags.php CHANGED
@@ -1,110 +1,110 @@
1
- <?php
2
- if ( ! defined( 'ABSPATH' ) ) {
3
- exit;
4
- }
5
- /*
6
- TODO: 1: Connect with options panel(archive support and translational panel)
7
- 2: Do we have to change the classes names as well?
8
- */
9
- global $post;
10
- function ampforwp_framework_get_categories_list( $separator = '' ){
11
- global $post, $redux_builder_amp;
12
- $ampforwp_categories = get_the_terms( $post->ID, 'category' );
13
- $cat_id = '';
14
- if (function_exists('seopress_activation')){
15
- $cat_id = get_post_meta(ampforwp_get_the_ID(),'_seopress_robots_primary_cat',true);
16
- }
17
- if(class_exists( 'WPSEO_Options' )){
18
- $cat_id = get_post_meta(ampforwp_get_the_ID(), '_yoast_wpseo_primary_category', true);
19
- }
20
- if(class_exists('RankMath')){
21
- $cat_id = get_post_meta(ampforwp_get_the_ID(), 'rank_math_primary_category', true);
22
- }
23
- if (function_exists( 'the_seo_framework' )) {
24
- $cat_id = the_seo_framework()->get_primary_term_id( ampforwp_get_the_ID(),'category' );
25
- }
26
- if(class_exists( 'SQ_Classes_ObjController' )){
27
- $get_cat_id = SQ_Classes_ObjController::getClass('SQ_Models_Domain_Categories')->getAllCategories(ampforwp_get_the_ID());
28
- $cat_id = key($get_cat_id);
29
- }
30
- $cat_id = apply_filters('ampforwp_custom_primary_cat',$cat_id);
31
- if (isset($cat_id)) {
32
- $cat_name = get_cat_name($cat_id);
33
- }
34
- if(ampforwp_get_setting('ampforwp-cats-single') == '1' && empty($cat_id)){
35
- if ( $ampforwp_categories ) : ?>
36
- <div class="amp-category">
37
- <span><?php echo esc_html(ampforwp_translation($redux_builder_amp['amp-translator-categories-text'], 'Categories' )); ?></span>
38
- <?php
39
- $anchorTag = $anchorClose = '';
40
- foreach ($ampforwp_categories as $key=>$cat ) {
41
- $term_id = $cat->term_id;
42
- $term_name = $cat->name;
43
- if( true == ampforwp_get_setting('ampforwp-cats-tags-links-single') ){
44
- $url = get_category_link( $cat->term_id );
45
- if( true == ampforwp_get_setting('ampforwp-archive-support') && true == ampforwp_get_setting('ampforwp-archive-support-cat')){
46
- $url = ampforwp_url_controller($url);
47
- }
48
- $cat = "";
49
- if(true == ampforwp_get_setting('ampforwp-cats-single-primary')){
50
- $cat = get_post_meta(ampforwp_get_the_ID(), '_yoast_wpseo_primary_category',true);
51
- if($term_id == $cat){
52
- $cat = 'primary';
53
- }else{
54
- $cat = "";
55
- }
56
- }
57
- $anchorTag = '<a href="'.esc_url($url).'" title="'.esc_html($term_name).'">';
58
- $anchorClose = "</a>";
59
- echo ('<span class="amp-cat amp-cat-'.esc_attr($term_id).' '.esc_attr($cat).' ">'.$anchorTag.esc_html($term_name).$anchorClose.'</span>');
60
- }else{
61
- echo ('<span class="amp-cat"> '.esc_html($term_name).'</span>');
62
- }
63
-
64
- if(!empty($separator) && count($ampforwp_categories)-1 > $key){
65
- echo esc_html($separator);
66
- }
67
- } ?>
68
- </div>
69
- <?php endif;
70
- }else{
71
- if( true == ampforwp_get_setting('ampforwp-cats-tags-links-single') ){
72
- $url = get_category_link( $cat_id );
73
- if( true == ampforwp_get_setting('ampforwp-archive-support') && true == ampforwp_get_setting('ampforwp-archive-support-cat')){
74
- $url = ampforwp_url_controller($url);
75
- }
76
- $anchorTag = '<a href="'.esc_url($url).'" title="'.esc_html($cat_name).'">';
77
- $anchorClose = "</a>";
78
- echo ('<span class="amp-cat amp-cat-'.esc_attr($cat_id).'">'.$anchorTag.esc_html($cat_name).$anchorClose.'</span>');
79
- }else{
80
- echo ('<span class="amp-cat"> '.esc_html($cat_name).'</span>');
81
- }
82
- }
83
- }
84
- function ampforwp_framework_get_tags_list($separator=''){
85
- global $post, $redux_builder_amp;
86
- $ampforwp_tags = get_the_terms( $post->ID, 'post_tag' );
87
- if ( $ampforwp_tags && ! is_wp_error( $ampforwp_tags ) ) :?>
88
- <div class="amp-tags">
89
- <span><?php echo esc_html(ampforwp_translation($redux_builder_amp['amp-translator-tags-text'], 'Tags' )); ?></span>
90
- <?php
91
- $anchorTag = $anchorClose = '';
92
- foreach ( $ampforwp_tags as $key=>$tag ) {
93
- if( true == ampforwp_get_setting('ampforwp-cats-tags-links-single') ){
94
- $url = get_tag_link( $tag->term_id );
95
- if( true == ampforwp_get_setting('ampforwp-archive-support') && true == ampforwp_get_setting('ampforwp-archive-support-tag')){
96
- $url = ampforwp_url_controller($url);
97
- }
98
- $anchorTag = '<a href="'.esc_url($url).'" title="'.esc_html($tag->name).'">';
99
- $anchorClose = "</a>";
100
- echo ('<span class="amp-tag amp-tag-'.esc_attr($tag->term_id).'">'.$anchorTag.esc_html($tag->name).$anchorClose.'</span>');
101
- }else{
102
- echo ('<span class="amp-tag"> '.esc_html($tag->name).'</span>');
103
- }
104
- if(!empty($separator) && count($ampforwp_tags)-1 > $key){
105
- echo esc_html($separator);
106
- }
107
- }?>
108
- </div>
109
- <?php endif;
110
  }
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+ /*
6
+ TODO: 1: Connect with options panel(archive support and translational panel)
7
+ 2: Do we have to change the classes names as well?
8
+ */
9
+ global $post;
10
+ function ampforwp_framework_get_categories_list( $separator = '' ){
11
+ global $post, $redux_builder_amp;
12
+ $ampforwp_categories = get_the_terms( $post->ID, 'category' );
13
+ $cat_id = '';
14
+ if (function_exists('seopress_activation')){
15
+ $cat_id = get_post_meta(ampforwp_get_the_ID(),'_seopress_robots_primary_cat',true);
16
+ }
17
+ if(class_exists( 'WPSEO_Options' )){
18
+ $cat_id = get_post_meta(ampforwp_get_the_ID(), '_yoast_wpseo_primary_category', true);
19
+ }
20
+ if(class_exists('RankMath')){
21
+ $cat_id = get_post_meta(ampforwp_get_the_ID(), 'rank_math_primary_category', true);
22
+ }
23
+ if (function_exists( 'the_seo_framework' )) {
24
+ $cat_id = the_seo_framework()->get_primary_term_id( ampforwp_get_the_ID(),'category' );
25
+ }
26
+ if(class_exists( 'SQ_Classes_ObjController' )){
27
+ $get_cat_id = SQ_Classes_ObjController::getClass('SQ_Models_Domain_Categories')->getAllCategories(ampforwp_get_the_ID());
28
+ $cat_id = key($get_cat_id);
29
+ }
30
+ $cat_id = apply_filters('ampforwp_custom_primary_cat',$cat_id);
31
+ if (isset($cat_id)) {
32
+ $cat_name = get_cat_name($cat_id);
33
+ }
34
+ if(ampforwp_get_setting('ampforwp-cats-single') == '1' && empty($cat_id)){
35
+ if ( $ampforwp_categories ) : ?>
36
+ <div class="amp-category">
37
+ <span><?php echo esc_html(ampforwp_translation($redux_builder_amp['amp-translator-categories-text'], 'Categories' )); ?></span>
38
+ <?php
39
+ $anchorTag = $anchorClose = '';
40
+ foreach ($ampforwp_categories as $key=>$cat ) {
41
+ $term_id = $cat->term_id;
42
+ $term_name = $cat->name;
43
+ if( true == ampforwp_get_setting('ampforwp-cats-tags-links-single') ){
44
+ $url = get_category_link( $cat->term_id );
45
+ if( true == ampforwp_get_setting('ampforwp-archive-support') && true == ampforwp_get_setting('ampforwp-archive-support-cat')){
46
+ $url = ampforwp_url_controller($url);
47
+ }
48
+ $cat = "";
49
+ if(true == ampforwp_get_setting('ampforwp-cats-single-primary')){
50
+ $cat = get_post_meta(ampforwp_get_the_ID(), '_yoast_wpseo_primary_category',true);
51
+ if($term_id == $cat){
52
+ $cat = 'primary';
53
+ }else{
54
+ $cat = "";
55
+ }
56
+ }
57
+ $anchorTag = '<a href="'.esc_url($url).'" title="'.esc_html($term_name).'">';
58
+ $anchorClose = "</a>";
59
+ echo ('<span class="amp-cat amp-cat-'.esc_attr($term_id).' '.esc_attr($cat).' ">'.$anchorTag.esc_html($term_name).$anchorClose.'</span>');
60
+ }else{
61
+ echo ('<span class="amp-cat"> '.esc_html($term_name).'</span>');
62
+ }
63
+
64
+ if(!empty($separator) && count($ampforwp_categories)-1 > $key){
65
+ echo esc_html($separator);
66
+ }
67
+ } ?>
68
+ </div>
69
+ <?php endif;
70
+ }else{
71
+ if( true == ampforwp_get_setting('ampforwp-cats-tags-links-single') ){
72
+ $url = get_category_link( $cat_id );
73
+ if( true == ampforwp_get_setting('ampforwp-archive-support') && true == ampforwp_get_setting('ampforwp-archive-support-cat')){
74
+ $url = ampforwp_url_controller($url);
75
+ }
76
+ $anchorTag = '<a href="'.esc_url($url).'" title="'.esc_html($cat_name).'">';
77
+ $anchorClose = "</a>";
78
+ echo ('<span class="amp-cat amp-cat-'.esc_attr($cat_id).'">'.$anchorTag.esc_html($cat_name).$anchorClose.'</span>');
79
+ }else{
80
+ echo ('<span class="amp-cat"> '.esc_html($cat_name).'</span>');
81
+ }
82
+ }
83
+ }
84
+ function ampforwp_framework_get_tags_list($separator=''){
85
+ global $post, $redux_builder_amp;
86
+ $ampforwp_tags = get_the_terms( $post->ID, 'post_tag' );
87
+ if ( $ampforwp_tags && ! is_wp_error( $ampforwp_tags ) ) :?>
88
+ <div class="amp-tags">
89
+ <span><?php echo esc_html(ampforwp_translation($redux_builder_amp['amp-translator-tags-text'], 'Tags' )); ?></span>
90
+ <?php
91
+ $anchorTag = $anchorClose = '';
92
+ foreach ( $ampforwp_tags as $key=>$tag ) {
93
+ if( true == ampforwp_get_setting('ampforwp-cats-tags-links-single') ){
94
+ $url = get_tag_link( $tag->term_id );
95
+ if( true == ampforwp_get_setting('ampforwp-archive-support') && true == ampforwp_get_setting('ampforwp-archive-support-tag')){
96
+ $url = ampforwp_url_controller($url);
97
+ }
98
+ $anchorTag = '<a href="'.esc_url($url).'" title="'.esc_html($tag->name).'">';
99
+ $anchorClose = "</a>";
100
+ echo ('<span class="amp-tag amp-tag-'.esc_attr($tag->term_id).'">'.$anchorTag.esc_html($tag->name).$anchorClose.'</span>');
101
+ }else{
102
+ echo ('<span class="amp-tag"> '.esc_html($tag->name).'</span>');
103
+ }
104
+ if(!empty($separator) && count($ampforwp_tags)-1 > $key){
105
+ echo esc_html($separator);
106
+ }
107
+ }?>
108
+ </div>
109
+ <?php endif;
110
  }
components/comments/comments.php CHANGED
@@ -1,268 +1,268 @@
1
- <?php
2
- if ( ! defined( 'ABSPATH' ) ) {
3
- exit;
4
- }
5
- function ampforwp_framework_get_comments(){
6
- global $redux_builder_amp;
7
- $display_comments_on = "";
8
- $display_comments_on = ampforwp_get_comments_status();
9
- do_action('ampforwp_comment_start_hook');
10
- if ( $display_comments_on ) {
11
- if ( $redux_builder_amp['ampforwp-facebook-comments-support'] ) {
12
- echo ampforwp_framework_get_facebook_comments();
13
- }
14
-
15
- if ( $redux_builder_amp['ampforwp-disqus-comments-support'] ) {
16
- ampforwp_framework_get_disqus_comments();
17
- }
18
- if ( $redux_builder_amp['ampforwp-vuukle-comments-support'] ) {
19
- ampforwp_framework_get_vuukle_comments();
20
- }
21
- if ( $redux_builder_amp['ampforwp-spotim-comments-support'] ) {
22
- ampforwp_framework_get_spotim_comments();
23
- }
24
-
25
- if ( isset($redux_builder_amp['wordpress-comments-support']) && true == $redux_builder_amp['wordpress-comments-support'] ) {
26
- do_action('ampforwp_before_comment_hook'); ?>
27
- <div class="amp-comments">
28
- <?php
29
- // Gather comments for a specific page/post
30
- $postID = $comments = $max_page = "";
31
- $postID = get_the_ID();
32
- if ( ampforwp_is_front_page() ) {
33
- $postID = ampforwp_get_frontpage_id();
34
- }
35
- $comment_order = get_option( 'comment_order' );
36
- $comments = get_comments(array(
37
- 'post_id' => $postID,
38
- 'order' => esc_attr($comment_order),
39
- 'status' => 'approve' //Change this to the type of comments to be displayed
40
- ));
41
-
42
- if ( $comments ) { ?>
43
- <div id="comments" class="amp-comments-wrapper">
44
- <h3><span><?php echo esc_html(ampforwp_translation($redux_builder_amp['amp-translator-view-comments-text'], 'View Comments' ));?></span></h3>
45
- <ul><?php
46
- // Display the list of comments
47
- function ampforwp_custom_translated_comment($comment, $args, $depth){
48
- $GLOBALS['comment'] = $comment;
49
- global $redux_builder_amp;
50
- $comment_author_img_url = "";
51
- $comment_author_img_url = ampforwp_get_comments_gravatar( $comment );
52
-
53
- ?>
54
- <li id="li-comment-<?php comment_ID() ?>"
55
- <?php comment_class(); ?> >
56
- <article id="comment-<?php comment_ID(); ?>" class="cmt-body">
57
- <footer class="cmt-meta">
58
- <?php if($comment_author_img_url){ ?>
59
- <amp-img src="<?php echo esc_url($comment_author_img_url); ?>" width="40" height="40" layout="fixed" class="cmt-author-img"></amp-img>
60
- <?php } ?>
61
- <div class="cmt-author vcard">
62
- <?php
63
- printf('<b class="fn">%s</b> <span class="says">'.esc_html(ampforwp_translation(ampforwp_get_setting('amp-translator-says-text'),'says')).':</span>', get_comment_author_link()) ?>
64
- </div>
65
- <div class="cmt-metadata">
66
- <a href="<?php echo htmlspecialchars( trailingslashit( get_comment_link( $comment->comment_ID ) ) ) ?>">
67
- <?php printf( ampforwp_translation( ('%1$s '. ampforwp_translation($redux_builder_amp['amp-translator-at-text'],'at').' %2$s'), '%1$s at %2$s') , get_comment_date(), get_comment_time())?>
68
- </a>
69
- <?php edit_comment_link( ampforwp_translation( $redux_builder_amp['amp-translator-Edit-text'], 'Edit' ) ) ?>
70
- </div>
71
- </footer>
72
- <div class="cmt-content">
73
- <?php
74
- $comment_content = get_comment_text();
75
- $comment_content = wpautop( $comment_content );
76
- $sanitizer = new AMPFORWP_Content( $comment_content, array(), apply_filters( 'ampforwp_content_sanitizers', array(
77
- 'AMP_Img_Sanitizer' => array(),
78
- 'AMP_Video_Sanitizer' => array(),
79
- 'AMP_Style_Sanitizer' => array(),
80
- 'AMP_Iframe_Sanitizer' =>
81
- array(
82
- 'add_placeholder' => true,
83
- ) ) ) );
84
- $sanitized_comment_content = $sanitizer->get_amp_content();
85
- echo make_clickable( $sanitized_comment_content ); ?>
86
- </div>
87
- <?php do_action('ampforwp_reply_comment_form', $comment, $args, $depth); ?>
88
- </article>
89
- <?php
90
- }
91
- wp_list_comments( array(
92
- //Allow comment pagination
93
- 'per_page' => AMPFORWP_COMMENTS_PER_PAGE ,
94
- 'style' => 'li',
95
- 'type' => 'comment',
96
- 'max_depth' => 5,
97
- 'avatar_size' => 0,
98
- 'callback' => 'ampforwp_custom_translated_comment',
99
- 'reverse_top_level' => false //Show the latest comments at the top of the list
100
- ), $comments); ?>
101
- </ul> <?php
102
- $max_page = get_comment_pages_count($comments, AMPFORWP_COMMENTS_PER_PAGE);
103
- $args = array(
104
- 'base' => add_query_arg( array('cpage' => '%#%', 'amp' => '1'), get_permalink() ),
105
- 'format' => '',
106
- 'total' => $max_page,
107
- 'echo' => false,
108
- 'add_fragment' => '#comments',
109
- );
110
- if(true == ampforwp_get_setting('ampforwp-amp-takeover')){
111
- $args['base'] = get_the_permalink().'comment-page-%#%';
112
- }
113
- if ( paginate_comments_links($args) ) { ?>
114
- <div class="cmts-wrap">
115
- <?php echo paginate_comments_links( $args ); ?>
116
- </div>
117
- <?php } ?>
118
- </div> <!-- .amp-comments-wrapper -->
119
- <?php // if amp-comments extension is enabled then hide this button
120
- } // if ( $comments )
121
- if ( ! defined( 'AMP_COMMENTS_VERSION' ) && comments_open($postID) ) { ?>
122
- <div class="amp-comment-button">
123
- <?php if ( comments_open($postID) ) {
124
- $nofollow = '';
125
- if(true ==ampforwp_get_setting('ampforwp-nofollow-comment-btn')){
126
- $nofollow = 'rel=nofollow';
127
- }
128
- ?>
129
- <a href="<?php echo ampforwp_comment_button_url(); ?>" title="<?php echo ampforwp_get_setting('amp-translator-leave-a-comment-text')?>" <?php echo esc_html($nofollow) ?> ><?php echo esc_html(ampforwp_translation( ampforwp_get_setting('amp-translator-leave-a-comment-text'), 'Leave a Comment' ) ); ?></a> <?php } ?>
130
- </div>
131
- <?php } ?>
132
- </div>
133
- <?php do_action('ampforwp_after_comment_hook');
134
- }
135
- } // end $display_comments_on
136
- do_action('ampforwp_comment_end_hook');
137
- }
138
-
139
- //Facebook Comments
140
- function ampforwp_framework_get_facebook_comments(){
141
- global $redux_builder_amp;
142
- $facebook_comments_markup = $lang = $locale = '';
143
- $lang = ampforwp_get_setting('ampforwp-fb-comments-lang');
144
- if ( $redux_builder_amp['ampforwp-facebook-comments-support'] ) {
145
- if( ampforwp_is_non_amp() && isset($redux_builder_amp['ampforwp-amp-convert-to-wp']) && $redux_builder_amp['ampforwp-amp-convert-to-wp']) {
146
- $facebook_comments_markup = '<div class="fb-comments" data-href="' . get_permalink() . '" data-width="800px" data-numposts="'.$redux_builder_amp['ampforwp-number-of-fb-no-of-comments'].'"></div>';
147
- }
148
- else {
149
- $facebook_comments_markup = '<section class="amp-facebook-comments">';
150
- if(true == ampforwp_get_setting('ampforwp-facebook-comments-title')){
151
- $facebook_comments_markup .= '<h5>'. esc_html__(ampforwp_translation(ampforwp_get_setting('ampforwp-facebook-comments-title'), 'Leave a Comment'),'accelerated-mobile-pages') .'</h5>';
152
- }
153
- $facebook_comments_markup .= '<amp-facebook-comments width=486 height=357
154
- layout="responsive" '.'data-locale = "'.esc_attr($lang).'"'.' data-numposts=';
155
- $facebook_comments_markup .= '"'. esc_attr($redux_builder_amp['ampforwp-number-of-fb-no-of-comments']). '"';
156
- if(ampforwp_get_data_consent()){
157
- $facebook_comments_markup .= ' data-block-on-consent ';
158
- }
159
- $facebook_comments_markup .= 'data-href="' . esc_html(get_permalink()) . '"';
160
- $facebook_comments_markup .= '></amp-facebook-comments></section>';
161
- }
162
- return $facebook_comments_markup;
163
- }
164
- }
165
-
166
- //Disqus Comments
167
- function ampforwp_framework_get_disqus_comments(){
168
- global $redux_builder_amp;
169
- $width = $height = 420;
170
-
171
- $layout = "";
172
- $layout = 'responsive';
173
- if ( isset($redux_builder_amp['ampforwp-disqus-layout']) && 'fixed' == $redux_builder_amp['ampforwp-disqus-layout'] ) {
174
- $layout = 'fixed';
175
- }
176
- $height = ampforwp_get_setting('ampforwp-disqus-height');
177
- if( $redux_builder_amp['ampforwp-disqus-comments-name'] !== '' ) {
178
- global $post; $post_slug = rawurlencode($post->post_name);
179
-
180
- $disqus_script_host_url = "https://ampforwp.appspot.com/?api=". AMPFORWP_DISQUS_URL;
181
-
182
- if( $redux_builder_amp['ampforwp-disqus-host-position'] == 0 ) {
183
- $disqus_script_host_url = esc_url( $redux_builder_amp['ampforwp-disqus-host-file'] );
184
- }
185
-
186
- $disqus_url = $disqus_script_host_url.'?disqus_title='.$post_slug.'&url='.rawurlencode(get_permalink()).'&disqus_name='. esc_url( ampforwp_get_setting('ampforwp-disqus-comments-name') ) ."/embed.js" ;
187
- ?>
188
- <section class="amp-disqus-comments">
189
- <amp-iframe
190
- height=<?php echo esc_attr($height); ?>
191
- width=<?php echo esc_attr($width); ?>
192
- layout="<?php echo esc_attr($layout); ?>"
193
- sandbox="allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts"
194
- resizable
195
- frameborder="0"
196
- <?php if(ampforwp_get_data_consent()){?>data-block-on-consent <?php } ?>
197
- src="<?php echo esc_url($disqus_url); ?>" title="<?php echo esc_html__('Disqus Comments.','accelerated-mobile-pages'); ?>">
198
- <div overflow tabindex="0" role="button" aria-label="Read more"><?php echo esc_html__('Disqus Comments Loading...','accelerated-mobile-pages') ?></div>
199
- </amp-iframe>
200
- </section>
201
- <?php
202
- }
203
- }
204
- function ampforwp_framework_get_vuukle_comments(){
205
- echo ampforwp_vuukle_comments_markup();
206
- }
207
- function ampforwp_framework_get_spotim_comments(){
208
- global $post;
209
- $spotId ='';
210
- if( true == ampforwp_get_setting('ampforwp-spotim-comments-apiKey') && ampforwp_get_setting('ampforwp-spotim-comments-apiKey') !== ""){
211
- $spotId = ampforwp_get_setting('ampforwp-spotim-comments-apiKey');
212
- }
213
- $srcUrl = 'https://amp.spot.im/production.html?spot_im_highlight_immediate=true';
214
- $srcUrl = add_query_arg('spotId' ,$spotId, $srcUrl);
215
- $srcUrl = add_query_arg('postId' , $post->ID, $srcUrl);
216
- $spotim_html = '<amp-iframe width="375" height="815" resizable sandbox="allow-scripts allow-same-origin allow-popups allow-top-navigation" layout="responsive"
217
- frameborder="0" src="'.esc_url($srcUrl).'">
218
- <amp-img placeholder height="815" layout="fill" src="//amp.spot.im/loader.png"></amp-img>
219
- <div overflow class="spot-im-amp-overflow" tabindex="0" role="button" aria-label="Read more">'.esc_html__('Load more...','accelerated-mobile-pages').'</div>
220
- </amp-iframe>';
221
- echo $spotim_html; // escaped above
222
- }
223
-
224
- // Comments Scripts
225
- add_filter( 'ampforwp_post_template_data', 'ampforwp_framework_comments_scripts' );
226
- function ampforwp_framework_comments_scripts( $data ) {
227
-
228
- $facebook_comments_check = ampforwp_framework_get_facebook_comments();
229
- global $redux_builder_amp;
230
- $is_pb_enabled = '';
231
- $is_pb_enabled = checkAMPforPageBuilderStatus(get_the_ID());
232
- $display_comments_on = "";
233
- $display_comments_on = ampforwp_get_comments_status();
234
- $isBBPress = (function_exists('is_bbpress') ? is_bbpress() : false );
235
- if ( $facebook_comments_check && true == ampforwp_get_setting('ampforwp-facebook-comments-support') && $display_comments_on && !is_front_page() && !$is_pb_enabled && !$isBBPress ) {
236
- if ( empty( $data['amp_component_scripts']['amp-facebook-comments'] ) ) {
237
- $data['amp_component_scripts']['amp-facebook-comments'] = 'https://cdn.ampproject.org/v0/amp-facebook-comments-0.1.js';
238
- }
239
- }
240
- if ( $redux_builder_amp['ampforwp-disqus-comments-support'] && $display_comments_on && comments_open() && !$is_pb_enabled ) {
241
- if( $redux_builder_amp['ampforwp-disqus-comments-name'] !== '' ) {
242
- if ( empty( $data['amp_component_scripts']['amp-iframe'] ) ) {
243
- $data['amp_component_scripts']['amp-iframe'] = 'https://cdn.ampproject.org/v0/amp-iframe-0.1.js';
244
- }
245
- }
246
- }
247
- if ( isset($redux_builder_amp['ampforwp-vuukle-comments-support'])
248
- && $redux_builder_amp['ampforwp-vuukle-comments-support']
249
- && $display_comments_on && comments_open() && !$is_pb_enabled
250
- ) {
251
- if ( empty( $data['amp_component_scripts']['amp-iframe'] ) ) {
252
- $data['amp_component_scripts']['amp-iframe'] = 'https://cdn.ampproject.org/v0/amp-iframe-0.1.js';
253
- }
254
- if (ampforwp_get_setting('ampforwp-vuukle-Ads-before-comments') && empty( $data['amp_component_scripts']['amp-ad'] ) ) {
255
- $data['amp_component_scripts']['amp-ad'] = 'https://cdn.ampproject.org/v0/amp-ad-0.1.js';
256
- }
257
- }
258
- //spotim
259
- if ( isset($redux_builder_amp['ampforwp-spotim-comments-support'])
260
- && $redux_builder_amp['ampforwp-spotim-comments-support']
261
- && $display_comments_on && comments_open() ) {
262
- if ( empty( $data['amp_component_scripts']['amp-iframe'] ) ) {
263
- $data['amp_component_scripts']['amp-iframe'] = 'https://cdn.ampproject.org/v0/amp-iframe-0.1.js';
264
- }
265
-
266
- }
267
- return $data;
268
  }
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+ function ampforwp_framework_get_comments(){
6
+ global $redux_builder_amp;
7
+ $display_comments_on = "";
8
+ $display_comments_on = ampforwp_get_comments_status();
9
+ do_action('ampforwp_comment_start_hook');
10
+ if ( $display_comments_on ) {
11
+ if ( $redux_builder_amp['ampforwp-facebook-comments-support'] ) {
12
+ echo ampforwp_framework_get_facebook_comments();
13
+ }
14
+
15
+ if ( $redux_builder_amp['ampforwp-disqus-comments-support'] ) {
16
+ ampforwp_framework_get_disqus_comments();
17
+ }
18
+ if ( $redux_builder_amp['ampforwp-vuukle-comments-support'] ) {
19
+ ampforwp_framework_get_vuukle_comments();
20
+ }
21
+ if ( $redux_builder_amp['ampforwp-spotim-comments-support'] ) {
22
+ ampforwp_framework_get_spotim_comments();
23
+ }
24
+
25
+ if ( isset($redux_builder_amp['wordpress-comments-support']) && true == $redux_builder_amp['wordpress-comments-support'] ) {
26
+ do_action('ampforwp_before_comment_hook'); ?>
27
+ <div class="amp-comments">
28
+ <?php
29
+ // Gather comments for a specific page/post
30
+ $postID = $comments = $max_page = "";
31
+ $postID = get_the_ID();
32
+ if ( ampforwp_is_front_page() ) {
33
+ $postID = ampforwp_get_frontpage_id();
34
+ }
35
+ $comment_order = get_option( 'comment_order' );
36
+ $comments = get_comments(array(
37
+ 'post_id' => $postID,
38
+ 'order' => esc_attr($comment_order),
39
+ 'status' => 'approve' //Change this to the type of comments to be displayed
40
+ ));
41
+
42
+ if ( $comments ) { ?>
43
+ <div id="comments" class="amp-comments-wrapper">
44
+ <h3><span><?php echo esc_html(ampforwp_translation($redux_builder_amp['amp-translator-view-comments-text'], 'View Comments' ));?></span></h3>
45
+ <ul><?php
46
+ // Display the list of comments
47
+ function ampforwp_custom_translated_comment($comment, $args, $depth){
48
+ $GLOBALS['comment'] = $comment;
49
+ global $redux_builder_amp;
50
+ $comment_author_img_url = "";
51
+ $comment_author_img_url = ampforwp_get_comments_gravatar( $comment );
52
+
53
+ ?>
54
+ <li id="li-comment-<?php comment_ID() ?>"
55
+ <?php comment_class(); ?> >
56
+ <article id="comment-<?php comment_ID(); ?>" class="cmt-body">
57
+ <footer class="cmt-meta">
58
+ <?php if($comment_author_img_url){ ?>
59
+ <amp-img src="<?php echo esc_url($comment_author_img_url); ?>" width="40" height="40" layout="fixed" class="cmt-author-img"></amp-img>
60
+ <?php } ?>
61
+ <div class="cmt-author vcard">
62
+ <?php
63
+ printf('<b class="fn">%s</b> <span class="says">'.esc_html(ampforwp_translation(ampforwp_get_setting('amp-translator-says-text'),'says')).':</span>', get_comment_author_link()) ?>
64
+ </div>
65
+ <div class="cmt-metadata">
66
+ <a href="<?php echo htmlspecialchars( trailingslashit( get_comment_link( $comment->comment_ID ) ) ) ?>">
67
+ <?php printf( ampforwp_translation( ('%1$s '. ampforwp_translation($redux_builder_amp['amp-translator-at-text'],'at').' %2$s'), '%1$s at %2$s') , get_comment_date(), get_comment_time())?>
68
+ </a>
69
+ <?php edit_comment_link( ampforwp_translation( $redux_builder_amp['amp-translator-Edit-text'], 'Edit' ) ) ?>
70
+ </div>
71
+ </footer>
72
+ <div class="cmt-content">
73
+ <?php
74
+ $comment_content = get_comment_text();
75
+ $comment_content = wpautop( $comment_content );
76
+ $sanitizer = new AMPFORWP_Content( $comment_content, array(), apply_filters( 'ampforwp_content_sanitizers', array(
77
+ 'AMP_Img_Sanitizer' => array(),
78
+ 'AMP_Video_Sanitizer' => array(),
79
+ 'AMP_Style_Sanitizer' => array(),
80
+ 'AMP_Iframe_Sanitizer' =>
81
+ array(
82
+ 'add_placeholder' => true,
83
+ ) ) ) );
84
+ $sanitized_comment_content = $sanitizer->get_amp_content();
85
+ echo make_clickable( $sanitized_comment_content ); ?>
86
+ </div>
87
+ <?php do_action('ampforwp_reply_comment_form', $comment, $args, $depth); ?>
88
+ </article>
89
+ <?php
90
+ }
91
+ wp_list_comments( array(
92
+ //Allow comment pagination
93
+ 'per_page' => AMPFORWP_COMMENTS_PER_PAGE ,
94
+ 'style' => 'li',
95
+ 'type' => 'comment',
96
+ 'max_depth' => 5,
97
+ 'avatar_size' => 0,
98
+ 'callback' => 'ampforwp_custom_translated_comment',
99
+ 'reverse_top_level' => false //Show the latest comments at the top of the list
100
+ ), $comments); ?>
101
+ </ul> <?php
102
+ $max_page = get_comment_pages_count($comments, AMPFORWP_COMMENTS_PER_PAGE);
103
+ $args = array(
104
+ 'base' => add_query_arg( array('cpage' => '%#%', 'amp' => '1'), get_permalink() ),
105
+ 'format' => '',
106
+ 'total' => $max_page,
107
+ 'echo' => false,
108
+ 'add_fragment' => '#comments',
109
+ );
110
+ if(true == ampforwp_get_setting('ampforwp-amp-takeover')){
111
+ $args['base'] = get_the_permalink().'comment-page-%#%';
112
+ }
113
+ if ( paginate_comments_links($args) ) { ?>
114
+ <div class="cmts-wrap">
115
+ <?php echo paginate_comments_links( $args ); ?>
116
+ </div>
117
+ <?php } ?>
118
+ </div> <!-- .amp-comments-wrapper -->
119
+ <?php // if amp-comments extension is enabled then hide this button
120
+ } // if ( $comments )
121
+ if ( ! defined( 'AMP_COMMENTS_VERSION' ) && comments_open($postID) ) { ?>
122
+ <div class="amp-comment-button">
123
+ <?php if ( comments_open($postID) ) {
124
+ $nofollow = '';
125
+ if(true ==ampforwp_get_setting('ampforwp-nofollow-comment-btn')){
126
+ $nofollow = 'rel=nofollow';
127
+ }
128
+ ?>
129
+ <a href="<?php echo ampforwp_comment_button_url(); ?>" title="<?php echo ampforwp_get_setting('amp-translator-leave-a-comment-text')?>" <?php echo esc_html($nofollow) ?> ><?php echo esc_html(ampforwp_translation( ampforwp_get_setting('amp-translator-leave-a-comment-text'), 'Leave a Comment' ) ); ?></a> <?php } ?>
130
+ </div>
131
+ <?php } ?>
132
+ </div>
133
+ <?php do_action('ampforwp_after_comment_hook');
134
+ }
135
+ } // end $display_comments_on
136
+ do_action('ampforwp_comment_end_hook');
137
+ }
138
+
139
+ //Facebook Comments
140
+ function ampforwp_framework_get_facebook_comments(){
141
+ global $redux_builder_amp;
142
+ $facebook_comments_markup = $lang = $locale = '';
143
+ $lang = ampforwp_get_setting('ampforwp-fb-comments-lang');
144
+ if ( $redux_builder_amp['ampforwp-facebook-comments-support'] ) {
145
+ if( ampforwp_is_non_amp() && isset($redux_builder_amp['ampforwp-amp-convert-to-wp']) && $redux_builder_amp['ampforwp-amp-convert-to-wp']) {
146
+ $facebook_comments_markup = '<div class="fb-comments" data-href="' . get_permalink() . '" data-width="800px" data-numposts="'.$redux_builder_amp['ampforwp-number-of-fb-no-of-comments'].'"></div>';
147
+ }
148
+ else {
149
+ $facebook_comments_markup = '<section class="amp-facebook-comments">';
150
+ if(true == ampforwp_get_setting('ampforwp-facebook-comments-title')){
151
+ $facebook_comments_markup .= '<h5>'. esc_html__(ampforwp_translation(ampforwp_get_setting('ampforwp-facebook-comments-title'), 'Leave a Comment'),'accelerated-mobile-pages') .'</h5>';
152
+ }
153
+ $facebook_comments_markup .= '<amp-facebook-comments width=486 height=357
154
+ layout="responsive" '.'data-locale = "'.esc_attr($lang).'"'.' data-numposts=';
155
+ $facebook_comments_markup .= '"'. esc_attr($redux_builder_amp['ampforwp-number-of-fb-no-of-comments']). '"';
156
+ if(ampforwp_get_data_consent()){
157
+ $facebook_comments_markup .= ' data-block-on-consent ';
158
+ }
159
+ $facebook_comments_markup .= 'data-href="' . esc_html(get_permalink()) . '"';
160
+ $facebook_comments_markup .= '></amp-facebook-comments></section>';
161
+ }
162
+ return $facebook_comments_markup;
163
+ }
164
+ }
165
+
166
+ //Disqus Comments
167
+ function ampforwp_framework_get_disqus_comments(){
168
+ global $redux_builder_amp;
169
+ $width = $height = 420;
170
+
171
+ $layout = "";
172
+ $layout = 'responsive';
173
+ if ( isset($redux_builder_amp['ampforwp-disqus-layout']) && 'fixed' == $redux_builder_amp['ampforwp-disqus-layout'] ) {
174
+ $layout = 'fixed';
175
+ }
176
+ $height = ampforwp_get_setting('ampforwp-disqus-height');
177
+ if( $redux_builder_amp['ampforwp-disqus-comments-name'] !== '' ) {
178
+ global $post; $post_slug = rawurlencode($post->post_name);
179
+
180
+ $disqus_script_host_url = "https://ampforwp.appspot.com/?api=". AMPFORWP_DISQUS_URL;
181
+
182
+ if( $redux_builder_amp['ampforwp-disqus-host-position'] == 0 ) {
183
+ $disqus_script_host_url = esc_url( $redux_builder_amp['ampforwp-disqus-host-file'] );
184
+ }
185
+
186
+ $disqus_url = $disqus_script_host_url.'?disqus_title='.$post_slug.'&url='.rawurlencode(get_permalink()).'&disqus_name='. esc_url( ampforwp_get_setting('ampforwp-disqus-comments-name') ) ."/embed.js" ;
187
+ ?>
188
+ <section class="amp-disqus-comments">
189
+ <amp-iframe
190
+ height=<?php echo esc_attr($height); ?>
191
+ width=<?php echo esc_attr($width); ?>
192
+ layout="<?php echo esc_attr($layout); ?>"
193
+ sandbox="allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts"
194
+ resizable
195
+ frameborder="0"
196
+ <?php if(ampforwp_get_data_consent()){?>data-block-on-consent <?php } ?>
197
+ src="<?php echo esc_url($disqus_url); ?>" title="<?php echo esc_html__('Disqus Comments.','accelerated-mobile-pages'); ?>">
198
+ <div overflow tabindex="0" role="button" aria-label="Read more"><?php echo esc_html__('Disqus Comments Loading...','accelerated-mobile-pages') ?></div>
199
+ </amp-iframe>
200
+ </section>
201
+ <?php
202
+ }
203
+ }
204
+ function ampforwp_framework_get_vuukle_comments(){
205
+ echo ampforwp_vuukle_comments_markup();
206
+ }
207
+ function ampforwp_framework_get_spotim_comments(){
208
+ global $post;
209
+ $spotId ='';
210
+ if( true == ampforwp_get_setting('ampforwp-spotim-comments-apiKey') && ampforwp_get_setting('ampforwp-spotim-comments-apiKey') !== ""){
211
+ $spotId = ampforwp_get_setting('ampforwp-spotim-comments-apiKey');
212
+ }
213
+ $srcUrl = 'https://amp.spot.im/production.html?spot_im_highlight_immediate=true';
214
+ $srcUrl = add_query_arg('spotId' ,$spotId, $srcUrl);
215
+ $srcUrl = add_query_arg('postId' , $post->ID, $srcUrl);
216
+ $spotim_html = '<amp-iframe width="375" height="815" resizable sandbox="allow-scripts allow-same-origin allow-popups allow-top-navigation" layout="responsive"
217
+ frameborder="0" src="'.esc_url($srcUrl).'">
218
+ <amp-img placeholder height="815" layout="fill" src="//amp.spot.im/loader.png"></amp-img>
219
+ <div overflow class="spot-im-amp-overflow" tabindex="0" role="button" aria-label="Read more">'.esc_html__('Load more...','accelerated-mobile-pages').'</div>
220
+ </amp-iframe>';
221
+ echo $spotim_html; // escaped above
222
+ }
223
+
224
+ // Comments Scripts
225
+ add_filter( 'ampforwp_post_template_data', 'ampforwp_framework_comments_scripts' );
226
+ function ampforwp_framework_comments_scripts( $data ) {
227
+
228
+ $facebook_comments_check = ampforwp_framework_get_facebook_comments();
229
+ global $redux_builder_amp;
230
+ $is_pb_enabled = '';
231
+ $is_pb_enabled = checkAMPforPageBuilderStatus(get_the_ID());
232
+ $display_comments_on = "";
233
+ $display_comments_on = ampforwp_get_comments_status();
234
+ $isBBPress = (function_exists('is_bbpress') ? is_bbpress() : false );
235
+ if ( $facebook_comments_check && true == ampforwp_get_setting('ampforwp-facebook-comments-support') && $display_comments_on && !is_front_page() && !$is_pb_enabled && !$isBBPress ) {
236
+ if ( empty( $data['amp_component_scripts']['amp-facebook-comments'] ) ) {
237
+ $data['amp_component_scripts']['amp-facebook-comments'] = 'https://cdn.ampproject.org/v0/amp-facebook-comments-0.1.js';
238
+ }
239
+ }
240
+ if ( $redux_builder_amp['ampforwp-disqus-comments-support'] && $display_comments_on && comments_open() && !$is_pb_enabled ) {
241
+ if( $redux_builder_amp['ampforwp-disqus-comments-name'] !== '' ) {
242
+ if ( empty( $data['amp_component_scripts']['amp-iframe'] ) ) {
243
+ $data['amp_component_scripts']['amp-iframe'] = 'https://cdn.ampproject.org/v0/amp-iframe-0.1.js';
244
+ }
245
+ }
246
+ }
247
+ if ( isset($redux_builder_amp['ampforwp-vuukle-comments-support'])
248
+ && $redux_builder_amp['ampforwp-vuukle-comments-support']
249
+ && $display_comments_on && comments_open() && !$is_pb_enabled
250
+ ) {
251
+ if ( empty( $data['amp_component_scripts']['amp-iframe'] ) ) {
252
+ $data['amp_component_scripts']['amp-iframe'] = 'https://cdn.ampproject.org/v0/amp-iframe-0.1.js';
253
+ }
254
+ if (ampforwp_get_setting('ampforwp-vuukle-Ads-before-comments') && empty( $data['amp_component_scripts']['amp-ad'] ) ) {
255
+ $data['amp_component_scripts']['amp-ad'] = 'https://cdn.ampproject.org/v0/amp-ad-0.1.js';
256
+ }
257
+ }
258
+ //spotim
259
+ if ( isset($redux_builder_amp['ampforwp-spotim-comments-support'])
260
+ && $redux_builder_amp['ampforwp-spotim-comments-support']
261
+ && $display_comments_on && comments_open() ) {
262
+ if ( empty( $data['amp_component_scripts']['amp-iframe'] ) ) {
263
+ $data['amp_component_scripts']['amp-iframe'] = 'https://cdn.ampproject.org/v0/amp-iframe-0.1.js';
264
+ }
265
+
266
+ }
267
+ return $data;
268
  }
components/components-core.php CHANGED
@@ -1,1043 +1,1043 @@
1
- <?php
2
- use AMPforWP\AMPVendor\AMP_Post_Template;
3
- use AMPforWP\AMPVendor\AMP_HTML_Utils;
4
- if ( ! defined( 'ABSPATH' ) ) {
5
- exit;
6
- }
7
- global $redux_builder_amp;
8
- $ampforwpTemplate = '';
9
- $loadComponent = array();
10
- $scriptComponent = array();
11
- $search_found = false;
12
- $supportComponent = array('AMP-search','AMP-menu','AMP-alter-menu','AMP-logo','AMP-social-icons','AMP-sidebar','AMP-featured-image','AMP-author-box','AMP-loop','AMP-categories-tags','AMP-comments','AMP-post-navigation','AMP-related-posts','AMP-post-pagination','AMP-call-now', 'AMP-breadcrumb','AMP-gdpr', 'AMP-google-font', 'AMP-google-font');
13
-
14
- add_filter( 'amp_post_template_data', 'ampforwp_framework_add_and_form_scripts',20);
15
- function ampforwp_framework_add_and_form_scripts($data) {
16
- global $scriptComponent, $loadComponent;
17
-
18
- if(count($scriptComponent)>0){
19
- foreach ($scriptComponent as $key => $value) {
20
- if ( empty( $data['amp_component_scripts'][$key] ) ) {
21
- $data['amp_component_scripts'][$key] = $value;
22
- }
23
- }
24
- }
25
- return $data;
26
- }
27
-
28
- //Component Loader
29
- function add_amp_theme_support($componentName){
30
- global $wpdb;
31
- global $loadComponent,$supportComponent;
32
- if($supportComponent){
33
- if(in_array($componentName, $supportComponent)){
34
- $loadComponent[$componentName] = true;
35
- ampforwp_loadComponents($componentName);
36
- return true;
37
- }
38
- }
39
- return false;
40
- }
41
- //Include the Component file
42
- function ampforwp_loadComponents($componentName){
43
- global $wpdb;
44
- if(empty($componentName)) return '';
45
- $componentName = str_replace("AMP-", "", $componentName);
46
-
47
- $file = AMP_FRAMEWORK_COMOPNENT_DIR_PATH.'/'.esc_attr($componentName).'/'.esc_attr($componentName).".php";
48
- if(!file_exists($file)){
49
- return '';
50
- }
51
- include_once( esc_attr($file));
52
- }
53
-
54
- // Icons
55
- $amp_icons_css = array();
56
- function add_amp_icon($args=array()){
57
- global $amp_icons_css, $redux_builder_amp;
58
- $amp_icons_css_array = include AMPFORWP_PLUGIN_DIR .'includes/icons/amp-icons.php';
59
- foreach ($args as $key ) {
60
- if(isset($amp_icons_css_array[$key]))
61
- $amp_icons_css[$key] = $amp_icons_css_array[$key];
62
- }
63
- // Design-1,2,3
64
- if ( 1 == $redux_builder_amp['amp-design-selector'] || 2 == $redux_builder_amp['amp-design-selector'] || 3 == $redux_builder_amp['amp-design-selector'] ) {
65
- add_action('amp_post_template_css', 'amp_icon_css',999);
66
-
67
- }
68
- else
69
- add_action('amp_css', 'amp_icon_css');
70
-
71
- }
72
- function amp_icon_css(){
73
- global $amp_icons_css, $redux_builder_amp;
74
- foreach ($amp_icons_css as $key => $value) {
75
- // TODO: https://github.com/ahmedkaludi/accelerated-mobile-pages/issues/2651
76
- echo $value;
77
- }
78
- $icon_url = plugin_dir_url(__FILE__);
79
- $icon_url = ampforwp_font_url($icon_url);
80
- // Add @font-face for Design-1,2,3
81
- if ( 1 == $redux_builder_amp['amp-design-selector'] || 2 == $redux_builder_amp['amp-design-selector'] || 3 == $redux_builder_amp['amp-design-selector'] ) { ?>
82
- @font-face {font-family: 'icomoon';font-style: normal;font-weight: normal;font-display: swap;src: local('icomoon'), local('icomoon'), url('<?php echo esc_url($icon_url) ?>icomoon/icomoon.ttf');}
83
- [class^="icon-"], [class*=" icon-"] {font-family: 'icomoon';speak: none;font-style: normal;font-weight: normal;font-variant: normal;text-transform: none;line-height: 1;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;}
84
- <?php }
85
- }
86
-
87
- /**
88
- * Component Functions
89
- **/
90
-
91
- //Search Component Utilities
92
- function amp_search(){
93
- global $loadComponent;
94
- if(isset($loadComponent['AMP-search']) && $loadComponent['AMP-search']==true){
95
- ampforwp_framework_get_search_form();
96
- }
97
- }
98
-
99
- // Logo Component Utilitis
100
- function amp_logo(){
101
- global $loadComponent;
102
- if(isset($loadComponent['AMP-logo']) && $loadComponent['AMP-logo']==true){
103
- ampforwp_framework_get_logo();
104
- }
105
- }
106
-
107
- // Title
108
- function amp_title(){
109
- global $post;
110
- $ID = ampforwp_get_the_ID();
111
- if ( ampforwp_polylang_front_page() ) {
112
- $ID = pll_get_post(get_option('page_on_front'));
113
- }
114
- elseif( ampforwp_is_front_page() && ampforwp_get_setting('ampforwp-title-on-front-page') == false) {
115
- $ID = null;
116
- }
117
- if( $ID!=null ){
118
- do_action('ampforwp_above_the_title');
119
- $ampforwp_title = get_the_title($ID);
120
- $ampforwp_title = apply_filters('ampforwp_filter_single_title', $ampforwp_title);
121
- if(!empty($ampforwp_title) && ampforwp_default_logo() && ampforwp_get_setting('opt-media','url')!=''){
122
- $title_tag = '<h1 class="amp-post-title">' . wp_kses_data( $ampforwp_title ) . '</h1>';
123
- }else{
124
- $title_tag = '<h2 class="amp-post-title">' . wp_kses_data( $ampforwp_title ) . '</h2>';
125
- }
126
- $title_tag = apply_filters('ampforwp_modify_title_tag',$title_tag,$ampforwp_title);
127
- echo $title_tag; // Escaped above
128
- do_action('ampforwp_below_the_title');
129
- }
130
- }
131
-
132
- // Excerpt
133
- function amp_excerpt( $no_of_words=260 ) {
134
- global $post;
135
- $post_id = $content = '';
136
- $no_of_words = (int) $no_of_words;
137
- $post_id = ampforwp_get_the_ID();
138
- if ( $post_id != null && true == ampforwp_get_setting('enable-excerpt-single') ) { ?>
139
- <p><?php
140
- if ( has_excerpt() ) {
141
- $content = get_the_excerpt();
142
- }
143
- /* `wp_trim_words` will strip all the tags
144
- as it has `wp_strip_all_tags` inside to clean */
145
- echo wp_trim_words( strip_shortcodes( $content ) , $no_of_words );
146
- ?></p><?php
147
- }
148
- }
149
-
150
-
151
- //Menus
152
- function amp_menu($echo=true, $menu_args=array(), $type='header'){
153
- if ( ($type == 'header' && ! has_nav_menu( 'amp-menu' )) || ( 'footer' == $type && ! has_nav_menu( 'amp-footer-menu' ) ) ) {
154
- return false;
155
- }
156
- global $loadComponent;
157
- if(isset($loadComponent['AMP-menu']) && $loadComponent['AMP-menu']==true){
158
- $amp_menu = "";
159
- $header_menu = get_transient('ampforwp_header_menu');
160
- $footer_menu = get_transient('ampforwp_footer_menu');
161
- if ( 'header' == $type && false != $header_menu ){
162
- $amp_menu = $header_menu;
163
- }
164
- elseif ('footer' == $type && false != $footer_menu) {
165
- $amp_menu = $footer_menu;
166
- }
167
- else{
168
- $amp_menu = amp_menu_html($echo, $menu_args, $type);
169
- }
170
- if ( false == $echo ) {
171
- return $amp_menu;
172
- }
173
- else
174
- echo $amp_menu; // escaped above
175
- }
176
- }
177
- // Alternative Menus
178
- function amp_alter_menu($echo=true){
179
- global $loadComponent;
180
- if ( ! has_nav_menu('amp-alternative-menu') ) {
181
- return false;
182
- }
183
- if(isset($loadComponent['AMP-alter-menu']) && $loadComponent['AMP-alter-menu']==true){
184
- if ( false == $echo ) {
185
- return amp_menu_html($echo, array(),'amp-alternative-menu');
186
- }
187
- else
188
- echo amp_menu_html($echo, array(), 'amp-alternative-menu');
189
- }
190
- }
191
-
192
- // Social Icons component
193
- function amp_social( $social_icons="" ) {
194
- global $loadComponent;
195
- $amp_social = array();
196
- //Supported social icons
197
- $amp_social = array( 'twitter', 'facebook', 'pinterest', 'google-plus', 'linkedin', 'youtube', 'instagram', 'reddit', 'VKontakte', 'Odnoklassniki', 'snapchat', 'tumblr' );
198
- if ( isset($loadComponent['AMP-social-icons']) && true == $loadComponent['AMP-social-icons'] ) {
199
- if ( null != $social_icons ) {
200
- ampforwp_framework_get_social_icons($social_icons);
201
- }
202
- else
203
- ampforwp_framework_get_social_icons($amp_social);
204
- }
205
- }
206
-
207
- //Sidebar
208
- function amp_sidebar($tag='start',$data=array()){
209
- global $loadComponent;
210
- if(isset($loadComponent['AMP-sidebar']) && $loadComponent['AMP-sidebar']==true){
211
- ampforwp_framework_get_sideabr($tag,$data);
212
- }
213
- }
214
-
215
- //Featured Image
216
- function amp_featured_image( ){
217
- global $loadComponent;
218
- if(isset($loadComponent['AMP-featured-image']) && $loadComponent['AMP-featured-image']==true){
219
- ampforwp_framework_get_featured_image( );
220
- }
221
- }
222
-
223
- // Author Box
224
- function amp_author_box($args=array() ){
225
- global $loadComponent;
226
- if(isset($loadComponent['AMP-author-box']) && $loadComponent['AMP-author-box']==true){
227
- ampforwp_framework_get_author_box($args);
228
- }
229
- }
230
-
231
- // Categories List
232
- function amp_categories_list( $separator = '' ){
233
- global $loadComponent;
234
- if(isset($loadComponent['AMP-categories-tags']) && $loadComponent['AMP-categories-tags']==true){
235
- ampforwp_framework_get_categories_list( $separator );
236
- }
237
- }
238
- // Tags List
239
- function amp_tags_list( $separator = '' ){
240
- global $loadComponent;
241
- if(isset($loadComponent['AMP-categories-tags']) && $loadComponent['AMP-categories-tags']==true){
242
- ampforwp_framework_get_tags_list( $separator );
243
- }
244
- }
245
-
246
- // Comments
247
- function amp_comments( ){
248
- global $loadComponent;
249
- if(isset($loadComponent['AMP-comments']) && $loadComponent['AMP-comments']==true){
250
- ampforwp_framework_get_comments( );
251
- }
252
- }
253
-
254
- // Post Navigation
255
- function amp_post_navigation( ){
256
- global $loadComponent;
257
- if(isset($loadComponent['AMP-post-navigation']) && $loadComponent['AMP-post-navigation']==true){
258
- echo ampforwp_framework_get_post_navigation();
259
- }
260
- }
261
-
262
- // Related Posts
263
- function amp_related_posts($argsdata = array()){
264
- global $loadComponent;
265
- if(isset($loadComponent['AMP-related-posts']) && $loadComponent['AMP-related-posts']==true){
266
- echo ampforwp_framework_get_related_posts( $argsdata);
267
- }
268
- }
269
-
270
- // Post Pagination
271
- function amp_post_pagination($args='' ){
272
- global $loadComponent;
273
- if(isset($loadComponent['AMP-post-pagination']) && $loadComponent['AMP-post-pagination']==true){
274
- ampforwp_framework_get_post_pagination($args);
275
- }
276
- }
277
-
278
- // Breadcrumb
279
- function amp_breadcrumb(){
280
- global $loadComponent;
281
- if ( isset($loadComponent['AMP-breadcrumb']) && true == $loadComponent['AMP-breadcrumb'] ) {
282
- echo amp_breadcrumb_output();
283
- }
284
- }
285
-
286
- // GDPR component
287
- function amp_gdpr(){
288
- global $loadComponent;
289
- $gdpr = apply_filters('ampforwp_on_off_gdpr', true);
290
- if ( isset($loadComponent['AMP-gdpr']) && true == $loadComponent['AMP-gdpr'] && $gdpr) {
291
- echo amp_gdpr_output();
292
- }
293
- }
294
-
295
- //Get Core of AMP HTML
296
- function amp_header_core(){
297
- global $ampforwpTemplate;
298
- $post_id = ampforwp_get_the_ID();
299
- if ( ampforwp_polylang_front_page() ) {
300
- $post_id = pll_get_post(get_option('page_on_front'));
301
- }
302
- $thisTemplate = $ampforwpTemplate;
303
- $html_tag_attributes = AMP_HTML_Utils::build_attributes_string( $thisTemplate->get( 'html_tag_attributes' ) );
304
-
305
- $bodyClass = '';
306
- if ( is_single() || is_page() ) {
307
- $bodyClass = 'single-post';
308
- $bodyClass .= ( is_page()? ' amp-single-page ' : ' amp-single ');
309
-
310
- }
311
- // Archive
312
- if ( is_archive() ) {
313
- $bodyClass = 'amp-archive';
314
- }
315
- $ampforwp_custom_post_page = ampforwp_custom_post_page();
316
-
317
- add_action('amp_post_template_head','ampforwp_sanitize_archive_desc');
318
- if ( !function_exists('ampforwp_sanitize_archive_desc') ) {
319
- function ampforwp_sanitize_archive_desc(){
320
- $description = get_the_archive_description();
321
- if ($description) {
322
- $sanitizer = new AMPFORWP_Content( $description, array(),
323
- apply_filters( 'ampforwp_content_sanitizers',
324
- array(
325
- 'AMP_Style_Sanitizer' => array(),
326
- 'AMP_Blacklist_Sanitizer' => array(),
327
- 'AMP_Img_Sanitizer' => array(),
328
- 'AMP_Video_Sanitizer' => array(),
329
- 'AMP_Audio_Sanitizer' => array(),
330
- 'AMP_Iframe_Sanitizer' => array(
331
- 'add_placeholder' => true,
332
- )
333
- ) ) );
334
-
335
- $amp_component_scripts = $sanitizer->amp_scripts;
336
-
337
- if ( $sanitizer && $amp_component_scripts) {
338
- foreach ($amp_component_scripts as $ampforwp_service => $ampforwp_js_file) { ?>
339
- <script custom-element="<?php echo esc_attr($ampforwp_service); ?>" src="<?php echo esc_url($ampforwp_js_file); ?>" async></script> <?php
340
- }
341
- }
342
- }
343
- }
344
- }
345
- // Homepage
346
- if ( is_home() ) {
347
-
348
- $bodyClass = 'amp-index amp-home'.esc_attr( $thisTemplate->get( 'body_class' ) );
349
- if (ampforwp_get_setting('amp-frontpage-select-option') == 1) {
350
- $bodyClass = 'single-post design_3_wrapper';
351
- }
352
- if ( $ampforwp_custom_post_page == "page" && ampforwp_name_blog_page() ) {
353
- $current_url = home_url( $GLOBALS['wp']->request );
354
- $current_url_in_pieces = explode( '/', $current_url );
355
-
356
- if( in_array( ampforwp_name_blog_page() , $current_url_in_pieces ) ) {
357
- $bodyClass = 'amp-index' .esc_attr( $thisTemplate->get( 'body_class' ) );
358
- }
359
- }
360
-
361
- }
362
- // is_search
363
- if ( is_search() ) {
364
- $bodyClass = 'amp_home_body archives_body design_3_wrapper';
365
- }
366
- if( true == ampforwp_get_setting('amp-rtl-select-option') ){
367
- $bodyClass .= ' rtl ';
368
- }
369
- $lightbox = '';
370
- if( false == ampforwp_get_setting('ampforwp-amp-img-lightbox') ){
371
- $lightbox = 'data-amp-auto-lightbox-disable';
372
- }
373
- ?><!doctype html>
374
- <html <?php echo esc_attr(ampforwp_amp_nonamp_convert('amp ')); ?><?php echo AMP_HTML_Utils::build_attributes_string( $thisTemplate->get( 'html_tag_attributes' ) ); ?>>
375
- <head>
376
- <meta charset="utf-8">
377
- <?php do_action('amp_experiment_meta', $thisTemplate); ?>
378
- <link rel="preconnect" href="//cdn.ampproject.org">
379
- <?php do_action( 'amp_meta', $thisTemplate ); ?>
380
- <?php
381
- if(ampforwp_amp_nonamp_convert("", "check")){
382
- echo '<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=2,user-scalable=yes">';
383
- wp_head();
384
-
385
- }else{
386
- if(is_search() && false == ampforwp_get_setting('amp-inspection-tool') && false == ampforwp_get_setting('ampforwp-robots-search-pages')){?>
387
- <meta name="robots" content="noindex,nofollow"/>
388
- <?php }
389
- do_action( 'amp_post_template_head', $thisTemplate );
390
- } ?>
391
- <style amp-custom>
392
- <?php $thisTemplate->load_parts( array( 'style' ) ); ?>
393
- <?php do_action( 'amp_post_template_css', $thisTemplate ); ?>
394
- <?php do_action( 'amp_css', $thisTemplate ); ?>
395
- <?php $custom_css = ampforwp_get_setting('css_editor');
396
- if (function_exists('heateor_sss_run') && ampforwp_get_setting('ampforwp_css_tree_shaking') ) {
397
- global $wp_filesystem;
398
- if(!is_object($wp_filesystem)){
399
- require_once ABSPATH . '/wp-admin/includes/class-wp-filesystem-base.php';
400
- require_once ABSPATH . '/wp-admin/includes/class-wp-filesystem-direct.php';
401
- $wp_filesystem = new WP_Filesystem_Direct( array() );
402
- }
403
- $custom_css .= $wp_filesystem->get_contents(AMPFORWP_PLUGIN_DIR."/includes/sassy-style-optimized.css");
404
- }
405
- $custom_css = str_replace(array('.accordion-mod'), array('.apac'), $custom_css);
406
- $sanitized_css = ampforwp_sanitize_i_amphtml($custom_css);
407
- echo $sanitized_css; // sanitized above ?>
408
- </style>
409
- <?php do_action('ampforwp_before_head', $thisTemplate); ?>
410
- </head>
411
- <body <?php echo esc_attr($lightbox); ?> <?php ampforwp_body_class($bodyClass); ?>>
412
- <?php do_action('amp_start', $thisTemplate); ?>
413
- <?php do_action('ampforwp_admin_menu_bar_front'); ?>
414
- <?php do_action('ampforwp_body_beginning', $thisTemplate);
415
- }
416
-
417
- function amp_header(){
418
- global $ampforwpTemplate;
419
- $post_id = ampforwp_get_the_ID();
420
- if ( ampforwp_polylang_front_page() ) {
421
- $post_id = pll_get_post(get_option('page_on_front'));
422
- }
423
- $thisTemplate = $ampforwpTemplate;
424
- $thisTemplate->load_parts( array( 'header' ) );
425
- do_action( 'amp_after_header', $thisTemplate );
426
- do_action( 'ampforwp_after_header', $thisTemplate );
427
- do_action('ampforwp_post_before_design_elements') ?>
428
- <?php }
429
-
430
- function amp_footer(){
431
- global $ampforwpTemplate;
432
- $post_id = ampforwp_get_the_ID();
433
- if ( ampforwp_polylang_front_page() ) {
434
- $post_id = pll_get_post(get_option('page_on_front'));
435
- }
436
- $thisTemplate = $ampforwpTemplate;
437
- do_action( 'amp_before_footer', $thisTemplate );
438
- do_action( 'amp_post_template_above_footer', $thisTemplate );
439
-
440
- $thisTemplate->load_parts( array( 'footer' ) );
441
-
442
- }
443
-
444
- function amp_footer_core(){
445
- global $ampforwpTemplate;
446
- $post_id = ampforwp_get_the_ID();
447
- if ( ampforwp_polylang_front_page() ) {
448
- $post_id = pll_get_post(get_option('page_on_front'));
449
- }
450
- $thisTemplate = $ampforwpTemplate;
451
- if(ampforwp_amp_nonamp_convert("", "check")){
452
- wp_footer();
453
- }
454
- else {
455
- do_action( 'amp_post_template_footer', $thisTemplate );
456
- do_action('ampforwp_global_after_footer');
457
- do_action('amp_end',$thisTemplate);
458
- }
459
- // Close the body and Html tags ?>
460
- </body>
461
- </html><?php
462
- }
463
-
464
- function amp_non_amp_link(){
465
- $allowed_tags = '<p><a><b><strong><i><u><ul><ol><li><h1><h2><h3><h4><h5><h6><table><tr><th><td><em><span>';
466
- if (function_exists('pll__')) {
467
- echo '<span>' . strip_tags(pll__(ampforwp_get_setting('amp-translator-footer-text'),'All Rights Reserved'),$allowed_tags) . '</span>';
468
- }else {
469
- echo '<span>' . strip_tags(ampforwp_translation(do_shortcode(ampforwp_get_setting('amp-translator-footer-text')),'All Rights Reserved'),$allowed_tags) . '</span>';
470
- }
471
- if(ampforwp_get_setting('amp-footer-link-non-amp-page')=='1') { ampforwp_view_nonamp(); }
472
- }
473
-
474
- // Back to Top
475
- function amp_back_to_top_link(){
476
- if(true == ampforwp_get_setting('ampforwp-footer-top')){?>
477
- <a id="scrollToTopButton" title="back to top" on="tap:backtotop.scrollTo(duration=500)" class="btt" href="#" ></a>
478
- <?php
479
- if(ampforwp_get_setting('ampforwp-amp-convert-to-wp') == true){?>
480
- <script>
481
- var elem = document.getElementById('scrollToTopButton');
482
- elem.addEventListener("click", function(){
483
- window.scrollTo({
484
- top: 0,
485
- behavior: 'smooth'
486
- });
487
- });
488
- </script>
489
- <?php
490
- }
491
- }
492
- }
493
-
494
- function amp_loop_template(){
495
- global $ampforwpTemplate;
496
- $post_id = get_queried_object_id();
497
- $thisTemplate = $ampforwpTemplate;
498
- do_action('amp_before_loop',$thisTemplate);
499
- $thisTemplate->load_parts( array( 'loop' ) );
500
- do_action('amp_after_loop',$thisTemplate);
501
- }
502
-
503
- // The Content
504
- function amp_content($post_id= ''){
505
- global $redux_builder_amp, $post, $ampforwpTemplate;
506
-
507
- if ( empty( $post_id )) {
508
- $post_id = ampforwp_get_the_ID();
509
- if ( ampforwp_polylang_front_page() ) {
510
- $post_id = pll_get_post(get_option('page_on_front'));
511
- }
512
- }
513
-
514
- $thisTemplate = $ampforwpTemplate;
515
- if ( 1 == ampforwp_get_setting('amp-design-selector') ) {
516
- do_action('ampforwp_inside_post_content_before',$thisTemplate);
517
- }
518
- else{
519
- do_action('ampforwp_before_post_content',$thisTemplate);
520
- }
521
- $amp_custom_content_enable = get_post_meta( $thisTemplate->get( 'post_id' ) , 'ampforwp_custom_content_editor_checkbox', true);
522
- // Normal Content
523
- if ( ! $amp_custom_content_enable ) {
524
- $ampforwp_the_content = $thisTemplate->get( 'post_amp_content' ); // amphtml content; no kses
525
- } else {
526
- // Custom/Alternative AMP content added through post meta
527
- $ampforwp_the_content = $thisTemplate->get( 'ampforwp_amp_content' );
528
- }
529
- $ampforwp_pb = get_post_meta(ampforwp_get_the_ID(),'ampforwp_page_builder_enable', true);
530
- // Muffin Builder Compatibility #1455 #1893 #4983
531
- if ( isset($ampforwp_pb) && $ampforwp_pb != "yes" && class_exists('Mfn_Builder_Front') && ! $amp_custom_content_enable ) {
532
- $mfn_page = get_post_field( 'mfn-page-items-seo', ampforwp_get_the_ID());
533
- if (!empty($mfn_page)) {
534
- $mfn_builder = $content = '';
535
- $mfn_builder = new Mfn_Builder_Front(ampforwp_get_the_ID());
536
- if (! empty($mfn_builder) ) {
537
- $content = $mfn_builder->show();
538
- }
539
- $sanitizer_obj = new AMPFORWP_Content( $content,
540
- array(),
541
- apply_filters( 'ampforwp_content_sanitizers',
542
- array( 'AMP_Img_Sanitizer' => array(),
543
- 'AMP_Blacklist_Sanitizer' => array(),
544
- 'AMP_Style_Sanitizer' => array(),
545
- 'AMP_Video_Sanitizer' => array(),
546
- 'AMP_Audio_Sanitizer' => array(),
547
- 'AMP_Iframe_Sanitizer' => array(
548
- 'add_placeholder' => true,
549
- ),
550
- )
551
- )
552
- );
553
- if ( ! get_post_meta( $post_id, 'mfn-post-hide-content', true ) && ampforwp_is_front_page() ) {
554
- $ampforwp_custom_amp_editor_content = '';
555
- $ampforwp_custom_amp_editor_content = $ampforwp_the_content;
556
- $ampforwp_the_content = $sanitizer_obj->get_amp_content();
557
- $ampforwp_the_content .= $ampforwp_custom_amp_editor_content;
558
- }
559
- else{
560
- $ampforwp_the_content = $sanitizer_obj->get_amp_content();
561
- }
562
- }
563
- }
564
- if(function_exists('ampforwp_sassy_share_icons')){
565
- $ampforwp_the_content = ampforwp_sassy_share_icons($ampforwp_the_content);
566
- }
567
- $ampforwp_the_content = apply_filters('ampforwp_modify_the_content',$ampforwp_the_content);
568
- echo $ampforwp_the_content; // amphtml content, no kses
569
- do_action('ampforwp_after_post_content',$thisTemplate);
570
- }
571
-
572
- function amp_date( $args=array() ) {
573
- if ( 2 == ampforwp_get_setting('ampforwp-post-date-format') ) {
574
- $args = array('format' => 'traditional');
575
- }
576
- if ( true == ampforwp_get_setting('ampforwp-post-time') && (isset($args['format']) && $args['format'] == 'traditional') && 2 == ampforwp_get_setting('ampforwp-post-date-global') ) {
577
- $post_date = get_the_modified_date( get_option( 'date_format' )). ' '. get_the_modified_time();
578
- }
579
- elseif ( false == ampforwp_get_setting('ampforwp-post-time') && (isset($args['format']) && $args['format'] == 'traditional') && 2 == ampforwp_get_setting('ampforwp-post-date-global') ){
580
- $post_date = get_the_modified_date( get_option( 'date_format' ));
581
- }
582
- elseif ( true == ampforwp_get_setting('ampforwp-post-time') && (isset($args['format']) && $args['format'] == 'traditional') || 'time' == $args ){
583
- $post_date = get_the_date(). ' '. get_the_time();
584
- }
585
- elseif ( false == ampforwp_get_setting('ampforwp-post-time') ){
586
- $post_date = get_the_date();
587
- }else{
588
- $epoch = get_the_time('U', get_the_ID() );
589
- $post_date = human_time_diff(
590
- get_the_time('U', get_the_ID() ),
591
- current_time('timestamp') ) .' '. ampforwp_translation(ampforwp_get_setting('amp-translator-ago-date-text'),
592
- 'ago');
593
- }
594
- $post_date = apply_filters('ampforwp_modify_post_date', $post_date);
595
-
596
- if(isset($args['custom_format']) && $args['custom_format']!=""){
597
- $post_date = date($args['custom_format'],get_the_time('U', get_the_ID() ));
598
- }
599
- if ( 'date' == $args || 'time' == $args ) {
600
- echo esc_html( $post_date ) .' ';
601
- }
602
- else
603
- echo '<div class="loop-date">'.esc_html( $post_date ).'</div>';
604
- }
605
-
606
- //Load font Compoment
607
- $fontComponent = array();
608
- function amp_post_load_custom_fonts(){
609
- global $fontComponent;
610
- if(count($fontComponent)){
611
- $fontComponent = array_unique($fontComponent);
612
- foreach ($fontComponent as $key => $value) {
613
- ?>
614
- <link rel="stylesheet" href="<?php echo esc_url( $value ); ?>">
615
- <?php
616
- }
617
- }
618
-
619
- }
620
- add_action( 'amp_meta', 'amp_post_load_custom_fonts');
621
- function amp_font($fontName){
622
- global $fontComponent;
623
- $fontComponent[] = $fontName;
624
- }
625
-
626
- // RTL Styling
627
- add_action('amp_css', 'amp_theme_framework_rtl_styles');
628
- if( ! function_exists('amp_theme_framework_rtl_styles') ){
629
- function amp_theme_framework_rtl_styles(){
630
- if( true === ampforwp_get_setting('amp-rtl-select-option') ){ ?>
631
- body.rtl {direction: rtl;}
632
- body amp-carousel{ direction: ltr;}
633
- <?php }
634
- }
635
- }
636
-
637
- // Author Meta
638
- function amp_author_meta( $args ) {
639
- global $post;
640
- $author_name = false;
641
- $avatar = false;
642
- $avatar_size = 40;
643
- if ( isset($args['name']) ) {
644
- $author_name = $args['name'];
645
- }
646
- if ( 'name' === $args ) {
647
- $author_name = true;
648
- }
649
- if ( 'avatar' === $args || 'image' === $args ) {
650
- $avatar = true;
651
- }
652
- if ( isset($args['image']) ) {
653
- $avatar = $args['image'];
654
- }
655
- if ( isset($args['image_size']) ) {
656
- $avatar_size = $args['image_size'];
657
- }
658
- $post_author = get_userdata($post->post_author);
659
- $author_link = get_author_posts_url($post_author->ID);
660
- if ( $author_name ) {
661
- echo ' <a href="'. ampforwp_url_controller($author_link).'"> ' .esc_html( $post_author->display_name ).'</a>';
662
- }
663
- if ( $avatar && true == ampforwp_gravatar_checker($post_author->user_email) ) {
664
- $author_avatar_url = get_avatar_url( $post_author->ID, array( 'size' => $avatar_size ) );
665
- ?>
666
- <amp-img <?php if(ampforwp_get_data_consent()){?>data-block-on-consent <?php } ?> src="<?php echo esc_url($author_avatar_url); ?>" width="<?php echo esc_attr($avatar_size); ?>" height="<?php echo esc_attr($avatar_size); ?>" layout="fixed"></amp-img>
667
- <?php }
668
- elseif ( $avatar && false == ampforwp_gravatar_checker($post_author->user_email ) ) {
669
- $avatar_img = get_avatar( $post_author->user_email, $avatar_size );
670
- $amp_html_sanitizer = new AMPFORWP_Content( $avatar_img, array(), apply_filters( 'ampforwp_content_sanitizers', array( 'AMP_Img_Sanitizer' => array() ) ) );
671
- $amp_html = $amp_html_sanitizer->get_amp_content();
672
- echo $amp_html; // amphtml content, no kses
673
- }
674
-
675
- }
676
-
677
- // amp-animation CSS #2819
678
- add_action('amp_post_template_css','ampforwp_backtotop_global_css');
679
- function ampforwp_backtotop_global_css(){?>
680
- .amp-wp-content table , .cntn-wrp.artl-cnt table{height: auto;}
681
- amp-img.amp-wp-enforced-sizes[layout=intrinsic] > img, .amp-wp-unknown-size > img { object-fit: contain; }
682
- .rtl amp-carousel {direction: ltr;}
683
- .rtl .amp-menu .toggle:after{left:0;right:unset;}
684
- .sharedaddy li{display:none}
685
- sub {vertical-align: sub;font-size: small;}
686
- sup {vertical-align: super;font-size: small;}
687
- amp-call-tracking a {display: none;}
688
- @media only screen and (max-width: 480px) {
689
- svg {max-width: 250px;max-height: 250px;}
690
- }
691
- h2.amp-post-title {
692
- word-break: break-word;
693
- word-wrap: break-word;
694
- }
695
- <?php if (function_exists('wp_pagenavi')) {?>
696
- .wp-pagenavi {
697
- border: 1px solid #BFBFBF;
698
- padding: 10px;
699
- }
700
- .wp-pagenavi span.pages {
701
- margin-right: 10px;
702
- }
703
- .wp-pagenavi a.previouspostslink {
704
- margin-left: 20px;
705
- }
706
- .wp-pagenavi a.page.smaller, .wp-pagenavi a.page.larger, .wp-pagenavi span.current
707
- {
708
- padding: 0 5px;
709
- }
710
- .wp-pagenavi span.extend {
711
- display: none;
712
- }
713
- .wp-pagenavi a.last , .amp-archive a.first {
714
- margin-left: 10px;
715
- }
716
- <?php } ?>
717
- <?php if (true == ampforwp_get_setting('ampforwp-right-click-disable')) {?>
718
- .*{
719
- -moz-user-select:none;
720
- -webkit-user-select:none;
721
- cursor: default;
722
- }
723
- html{
724
- -webkit-touch-callout: none;
725
- -webkit-user-select: none;
726
- -khtml-user-select: none;
727
- -moz-user-select: none;
728
- -ms-user-select: none;
729
- user-select: none;
730
- -webkit-tap-highlight-color: rgba(0,0,0,0);
731
- }
732
- <?php } ?>
733
- <?php if (class_exists('UAGB_Admin')) {?>
734
- .wp-block-uagb-faq svg {display: none;}
735
- <?php } ?>
736
- <?php if (function_exists('irp_block_category')) {?>
737
- h3.uagb-post__title a {
738
- color: #000;
739
- font-weight: 500;
740
- }
741
- .uagb-post__items article {
742
- width: 50%;
743
- float: left;
744
- padding: 2px;
745
- }
746
- p.has-background {
747
- padding: 25px 10px 25px;
748
- background-color: #1e73be;
749
- color: #fff;
750
- margin: 40px 0px;
751
- }
752
- @media only screen and (max-width: 600px) {
753
- .uagb-post__items article {
754
- width: 100%;
755
- float: inherit;
756
- padding: 2px;
757
- }
758
- .cntn-wrp.artl-cnt p.has-background {
759
- margin: 100px 0px 20px;
760
- }
761
- }
762
- <?php } ?>
763
- <?php if (function_exists('on_bsf_aiosrs_pro_activate')) {?>
764
- span.wpsp-icon.wpsp-faq-icon-wrap svg , span.wpsp-icon-active.wpsp-faq-icon-wrap svg{
765
- display: none;}
766
- <?php } ?>
767
- <?php if (class_exists('Jetpack_Gallery_Settings')) {?>
768
- .wp-block-jetpack-slideshow_container.swiper-container amp-selector {
769
- display: none;
770
- }
771
- .wp-block-jetpack-slideshow_slide.amp-carousel-slide {
772
- height: auto;
773
- margin-bottom: 20px;
774
- }
775
- <?php } ?>
776
- <?php if (function_exists('generateblocks_load_plugin_textdomain')) {?>
777
- .gb-container .wp-block-image img{vertical-align:middle;}.gb-container .gb-shape{position:absolute;overflow:hidden;pointer-events:none;line-height:0;}.gb-container .gb-shape svg{fill:currentColor;}.gb-container-cc6b793f{background-color:var(--contrast-3);position:relative;overflow:hidden;}.gb-container-cc6b793f:before{content:"";background-image:url(https://testing.digitalsquare.be/wp-content/uploads/2021/01/kanwardeep-kaur-HjfkPgfg0XY-unsplash-1-min.jpg);background-repeat:no-repeat;background-position:30% center;background-size:cover;z-index:0;position:absolute;top:0;right:0;bottom:0;left:0;transition:inherit;opacity:0.8;}.gb-container-cc6b793f > .gb-inside-container{padding:200px 0 475px;max-width:1440px;margin-left:auto;margin-right:auto;z-index:1;position:relative;}.gb-container-cc6b793f.gb-has-dynamic-bg:before{background-image:var(--background-url);}.gb-container-cc6b793f.gb-no-dynamic-bg:before{background-image:none;}.gb-container-c243e5b5{margin-top:-100px;max-width:1440px;margin-left:auto;margin-right:auto;position:relative;z-index:1;border-style: solid;border-width:0;}.gb-container-c243e5b5 > .gb-inside-container{padding:0;max-width:1440px;margin-left:auto;margin-right:auto;}.gb-container-7eda8503{background-color:var(--base-3);border-bottom-style: solid;border-bottom-width:5px;border-left-style: solid;border-left-width:5px;border-color:var(--accent);}.gb-container-7eda8503 > .gb-inside-container{padding:60px;}.gb-grid-wrapper > .gb-grid-column-7eda8503{width:50%;}.gb-container-d910fc66{border-radius:0;border-style: solid;border-width:0;}.gb-container-d910fc66 > .gb-inside-container{padding:0;}.gb-grid-wrapper > .gb-grid-column-d910fc66{width:25%;}.gb-container-575f7b5e > .gb-inside-container{padding:0;}.gb-grid-wrapper > .gb-grid-column-575f7b5e{width:75%;}.gb-container-90ba54e2 > .gb-inside-container{padding:0;}.gb-grid-wrapper > .gb-grid-column-90ba54e2{width:100%;}.gb-container-37100832{background-color:var(--contrast);color:var(--base-3);position:relative;overflow:hidden;}.gb-container-37100832:before{content:"";background-image:url(https://testing.digitalsquare.be/wp-content/uploads/2021/01/briana-tozour-3ao0ld_ude0-unsplash-1-min.jpg);background-repeat:no-repeat;background-position:center center;background-size:cover;z-index:0;position:absolute;top:0;right:0;bottom:0;left:0;transition:inherit;opacity:0.2;}.gb-container-37100832 > .gb-inside-container{padding:60px;z-index:1;position:relative;}.gb-grid-wrapper > .gb-grid-column-37100832{width:50%;}.gb-container-37100832.gb-has-dynamic-bg:before{background-image:var(--background-url);}.gb-container-37100832.gb-no-dynamic-bg:before{background-image:none;}.gb-container-5cbbf9a2{margin-top:150px;}.gb-container-5cbbf9a2 > .gb-inside-container{padding:0 40px 40px 0;max-width:1440px;margin-left:auto;margin-right:auto;z-index:4;position:relative;}.gb-container-c6220c51{color:var(--base-3);}.gb-container-c6220c51 > .gb-inside-container{padding:0;max-width:1440px;margin-left:auto;margin-right:auto;}.gb-container-c6220c51 a, .gb-container-c6220c51 a:visited{color:var(--base-3);}.gb-container-c6220c51 a:hover{color:var(--accent);}.gb-container-119df869{background-color:var(--contrast);position:relative;overflow:hidden;border-radius:0;border-right-style: solid;border-right-width:1px;border-left-style: solid;border-left-width:0;border-color:var(--accent);}.gb-container-119df869:before{content:"";background-image:url(https://testing.digitalsquare.be/wp-content/uploads/2021/01/brigitte-tohm-yRH0JI2S2KA-unsplash-min-scaled-1.jpg);background-repeat:no-repeat;background-position:center center;background-size:cover;z-index:0;position:absolute;top:0;right:0;bottom:0;left:0;transition:inherit;border-radius:0;opacity:0.4;}.gb-container-119df869 > .gb-inside-container{padding:380px 20px 20px;z-index:1;position:relative;}.gb-grid-wrapper > .gb-grid-column-119df869{width:25%;}.gb-container-119df869.gb-has-dynamic-bg:before{background-image:var(--background-url);}.gb-container-119df869.gb-no-dynamic-bg:before{background-image:none;}.gb-container-016766a3{background-color:var(--contrast);position:relative;overflow:hidden;border-radius:0;border-right-style: solid;border-right-width:1px;border-left-style: solid;border-left-width:1px;border-color:var(--accent);}.gb-container-016766a3:before{content:"";background-image:url(https://testing.digitalsquare.be/wp-content/uploads/2021/01/loverna-journey-5p83zEQlJV0-unsplash-min-scaled-1.jpg);background-repeat:no-repeat;background-position:center center;background-size:cover;z-index:0;position:absolute;top:0;right:0;bottom:0;left:0;transition:inherit;border-radius:0;opacity:0.4;}.gb-container-016766a3 > .gb-inside-container{padding:380px 20px 20px;z-index:1;position:relative;}.gb-grid-wrapper > .gb-grid-column-016766a3{width:25%;}.gb-container-016766a3.gb-has-dynamic-bg:before{background-image:var(--background-url);}.gb-container-016766a3.gb-no-dynamic-bg:before{background-image:none;}.gb-container-9b5246c4{background-color:var(--contrast);position:relative;overflow:hidden;border-radius:0;border-right-style: solid;border-right-width:1px;border-left-style: solid;border-left-width:1px;border-color:var(--accent);}.gb-container-9b5246c4:before{content:"";background-image:url(https://testing.digitalsquare.be/wp-content/uploads/2021/01/alex-loup-UxMUMFgUxos-unsplash-min-scaled-1.jpg);background-repeat:no-repeat;background-position:center center;background-size:cover;z-index:0;position:absolute;top:0;right:0;bottom:0;left:0;transition:inherit;border-radius:0;opacity:0.4;}.gb-container-9b5246c4 > .gb-inside-container{padding:380px 20px 20px;z-index:1;position:relative;}.gb-grid-wrapper > .gb-grid-column-9b5246c4{width:25%;}.gb-container-9b5246c4.gb-has-dynamic-bg:before{background-image:var(--background-url);}.gb-container-9b5246c4.gb-no-dynamic-bg:before{background-image:none;}.gb-container-4b60d420{background-color:var(--contrast);position:relative;overflow:hidden;border-radius:0;border-left-style: solid;border-left-width:1px;border-color:var(--accent);}.gb-container-4b60d420:before{content:"";background-image:url(https://testing.digitalsquare.be/wp-content/uploads/2021/01/kilarov-zaneit-YUiCiMuOdtY-unsplash-min-scaled-1.jpg);background-repeat:no-repeat;background-position:center center;background-size:cover;z-index:0;position:absolute;top:0;right:0;bottom:0;left:0;transition:inherit;border-radius:0;opacity:0.4;}.gb-container-4b60d420 > .gb-inside-container{padding:380px 20px 20px;z-index:1;position:relative;}.gb-grid-wrapper > .gb-grid-column-4b60d420{width:25%;}.gb-container-4b60d420.gb-has-dynamic-bg:before{background-image:var(--background-url);}.gb-container-4b60d420.gb-no-dynamic-bg:before{background-image:none;}.gb-container-7fd6aa2d{margin-top:150px;}.gb-container-7fd6aa2d > .gb-inside-container{padding:0 40px 40px 0;max-width:1440px;margin-left:auto;margin-right:auto;z-index:4;position:relative;}.gb-container-30069074 > .gb-inside-container{padding:0;max-width:1440px;margin-left:auto;margin-right:auto;}.gb-container-3e262987{margin-top:150px;max-width:1440px;margin-left:auto;margin-right:auto;color:#ffffff;position:relative;overflow:hidden;border-radius:10px;}.gb-container-3e262987:before{content:"";background-image:url(https://testing.digitalsquare.be/wp-content/uploads/2021/01/wherda-arsianto-KS0WsajSK4E-unsplash-min-scaled-1.jpg);background-repeat:no-repeat;background-position:center center;background-size:cover;z-index:0;position:absolute;top:0;right:0;bottom:0;left:0;transition:inherit;border-radius:10px;}.gb-container-3e262987 > .gb-inside-container{padding:0;max-width:1440px;margin-left:auto;margin-right:auto;z-index:1;position:relative;}.gb-container-3e262987 a, .gb-container-3e262987 a:visited{color:#ffffff;}.gb-container-3e262987.gb-has-dynamic-bg:before{background-image:var(--background-url);}.gb-container-3e262987.gb-no-dynamic-bg:before{background-image:none;}.gb-container-13ee4214{background-color:rgba(0, 0, 0, 0.4);}.gb-container-13ee4214 > .gb-inside-container{padding:100px 0 100px 70px;}.gb-grid-wrapper > .gb-grid-column-13ee4214{width:50%;}.gb-container-cb7831a7{margin-left:-3px;border-left-style: solid;border-left-width:6px;border-color:var(--accent);}.gb-container-cb7831a7 > .gb-inside-container{padding:0 70px 0 0;}.gb-grid-wrapper > .gb-grid-column-cb7831a7{width:50%;}.gb-container-3bdf6c9f{margin-top:150px;}.gb-container-3bdf6c9f > .gb-inside-container{padding:0 40px 40px 0;max-width:1440px;margin-left:auto;margin-right:auto;z-index:4;position:relative;}.gb-container-9b8d79d5 > .gb-inside-container{padding:0;max-width:1440px;margin-left:auto;margin-right:auto;}.gb-container-d414f3d6{margin-top:150px;}.gb-container-d414f3d6 > .gb-inside-container{padding:0 40px 40px 0;max-width:1440px;margin-left:auto;margin-right:auto;z-index:4;position:relative;}.gb-container-a1195352{margin-top:50px;background-color:var(--base-2);position:relative;}.gb-container-a1195352 > .gb-inside-container{padding:80px 0;max-width:1440px;margin-left:auto;margin-right:auto;}.gb-container-a1195352 > .gb-shapes .gb-shape-1{color:var(--base-3);left:0;right:0;top:-1px;transform:scaleY(-1);}.gb-container-a1195352 > .gb-shapes .gb-shape-1 svg{height:47px;width:calc(100% + 1.3px);position:relative;left:50%;transform:translateX(-50%);min-width:100%;}.gb-container-68f95b0d{background-color:var(--base-3);border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-style: solid;border-bottom-width:10px;border-color:var(--accent);}.gb-container-68f95b0d > .gb-inside-container{padding:30px;}.gb-grid-wrapper > .gb-grid-column-68f95b0d{width:33.33%;}.gb-container-b213d7c9 > .gb-inside-container{padding:0;max-width:1440px;margin-left:auto;margin-right:auto;}.gb-container-c373ec39 > .gb-inside-container{padding:0;}.gb-grid-wrapper > .gb-grid-column-c373ec39{width:25%;}.gb-container-46b8f51d > .gb-inside-container{padding:0;}.gb-grid-wrapper > .gb-grid-column-46b8f51d{width:75%;}.gb-container-148d55cb{background-color:var(--base-3);border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-style: solid;border-bottom-width:10px;border-color:var(--accent);}.gb-container-148d55cb > .gb-inside-container{padding:30px;}.gb-grid-wrapper > .gb-grid-column-148d55cb{width:33.33%;}.gb-container-571ef50b > .gb-inside-container{padding:0;max-width:1440px;margin-left:auto;margin-right:auto;}.gb-container-1f43e011 > .gb-inside-container{padding:0;}.gb-grid-wrapper > .gb-grid-column-1f43e011{width:25%;}.gb-container-daa4e669 > .gb-inside-container{padding:0;}.gb-grid-wrapper > .gb-grid-column-daa4e669{width:75%;}.gb-container-a8927d00{background-color:var(--base-3);border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-style: solid;border-bottom-width:10px;border-color:var(--accent);}.gb-container-a8927d00 > .gb-inside-container{padding:30px;}.gb-grid-wrapper > .gb-grid-column-a8927d00{width:33.33%;}.gb-container-b38c9489 > .gb-inside-container{padding:0;max-width:1440px;margin-left:auto;margin-right:auto;}.gb-container-a89373cf > .gb-inside-container{padding:0;}.gb-grid-wrapper > .gb-grid-column-a89373cf{width:25%;}.gb-container-0f7f37a3 > .gb-inside-container{padding:0;}.gb-grid-wrapper > .gb-grid-column-0f7f37a3{width:75%;}.gb-container-1e37de14{background-color:var(--contrast-2);}.gb-container-1e37de14 > .gb-inside-container{padding:0 30px;max-width:1440px;margin-left:auto;margin-right:auto;}.gb-container-1e37de14 a, .gb-container-1e37de14 a:visited{color:var(--base);}.gb-container-1e37de14 a:hover{color:var(--accent);}.gb-container-b3e34c3c > .gb-inside-container{padding:0;}.gb-grid-wrapper > .gb-grid-column-b3e34c3c{width:50%;}.gb-container-fcfab6f6 > .gb-inside-container{padding:0;}.gb-grid-wrapper > .gb-grid-column-fcfab6f6{width:50%;}.gb-container-73cd57e1{background-color:var(--contrast);color:var(--base-3);}.gb-container-73cd57e1 > .gb-inside-container{padding:60px 30px;max-width:1440px;margin-left:auto;margin-right:auto;}.gb-container-73cd57e1 a, .gb-container-73cd57e1 a:visited{color:var(--base-3);}.gb-container-73cd57e1 a:hover{color:var(--accent);}.gb-container-53cb46e2 > .gb-inside-container{padding:0;}.gb-grid-wrapper > .gb-grid-column-53cb46e2{width:66.66%;}.gb-container-e1bd60bb{text-align:right;}.gb-container-e1bd60bb > .gb-inside-container{padding:0;}.gb-grid-wrapper > .gb-grid-column-e1bd60bb{width:33.33%;}.gb-container-0f87c806{margin-top:60px;border-top-style: solid;border-top-width:1px;border-color:var(--base-3);}.gb-container-0f87c806 > .gb-inside-container{padding:60px 0 0;max-width:1440px;margin-left:auto;margin-right:auto;}.gb-container-e6861bde > .gb-inside-container{padding:0;}.gb-grid-wrapper > .gb-grid-column-e6861bde{width:50%;}.gb-container-7c528044 > .gb-inside-container{padding:0;}.gb-grid-wrapper > .gb-grid-column-7c528044{width:50%;}.gb-grid-wrapper{display:flex;flex-wrap:wrap;}.gb-grid-wrapper > .gb-grid-column > .gb-container{display:flex;flex-direction:column;height:100%;}.gb-grid-column{box-sizing:border-box;}.gb-grid-wrapper .wp-block-image{margin-bottom:0;}.gb-grid-wrapper-7e06c8d5 > .gb-grid-column{padding-left:0px;}.gb-grid-wrapper-371c8e31{align-items:center;margin-left:-30px;}.gb-grid-wrapper-371c8e31 > .gb-grid-column{padding-left:30px;padding-bottom:20px;}.gb-grid-wrapper-2208a82e > .gb-grid-column{padding-left:0px;}.gb-grid-wrapper-b244dd7b{align-items:center;}.gb-grid-wrapper-b244dd7b > .gb-grid-column{padding-left:0px;}.gb-grid-wrapper-75aee70c{margin-left:-50px;}.gb-grid-wrapper-75aee70c > .gb-grid-column{padding-left:50px;}.gb-grid-wrapper-5d463c83{align-items:center;margin-left:-30px;}.gb-grid-wrapper-5d463c83 > .gb-grid-column{padding-left:30px;}.gb-grid-wrapper-f33bb32e{align-items:center;margin-left:-30px;}.gb-grid-wrapper-f33bb32e > .gb-grid-column{padding-left:30px;}.gb-grid-wrapper-0e54e814{align-items:center;margin-left:-30px;}.gb-grid-wrapper-0e54e814 > .gb-grid-column{padding-left:30px;}.gb-grid-wrapper-fe2866ee{align-items:center;margin-left:-30px;}.gb-grid-wrapper-fe2866ee > .gb-grid-column{padding-left:30px;}.gb-grid-wrapper-b76f312f{align-items:flex-start;margin-left:-40px;}.gb-grid-wrapper-b76f312f > .gb-grid-column{padding-left:40px;}.gb-grid-wrapper-9cc30ed9{margin-left:-30px;}.gb-grid-wrapper-9cc30ed9 > .gb-grid-column{padding-left:30px;}.gb-icon{display:inline-flex;line-height:0;}.gb-icon svg{height:1em;width:1em;fill:currentColor;}.gb-highlight{background:none;color:unset;}h6.gb-headline-7a2bf4ed{margin-bottom:5px;}p.gb-headline-4a926537{margin-bottom:0;}h2.gb-headline-2305eeb2{text-align:center;text-transform:uppercase;padding-top:17%;margin-bottom:20px;}p.gb-headline-d750c5ec{text-align:center;}h2.gb-headline-12cdc19e{text-align:left;color:var(--base-2);font-size:180px;font-weight:bold;text-transform:capitalize;line-height:0.9em;margin-bottom:5px;}p.gb-headline-469c3887{text-align:right;color:var(--contrast-3);font-size:26px;padding:0 10px;margin-top:-92px;margin-bottom:0;border-right-style: solid;border-right-width:10px;border-color:var(--accent);}p.gb-headline-e9550e29{font-size:17px;margin-bottom:0;}p.gb-headline-535218b9{font-size:17px;margin-bottom:0;}p.gb-headline-f4d34bb3{font-size:17px;margin-bottom:0;}p.gb-headline-c6ac5e85{font-size:17px;margin-bottom:0;}h2.gb-headline-6dde0834{text-align:left;color:var(--base-2);font-size:180px;font-weight:bold;text-transform:capitalize;line-height:0.9em;margin-bottom:5px;}p.gb-headline-da47bd9e{text-align:right;color:var(--contrast-3);font-size:26px;padding:0 10px;margin-top:-92px;margin-bottom:0;border-right-style: solid;border-right-width:10px;border-color:var(--accent);}h2.gb-headline-0fb829d3{text-transform:capitalize;}h2.gb-headline-febd1c35{text-align:right;font-size:180px;margin-bottom:0;}h2.gb-headline-e8c44a0e{text-align:left;color:var(--base-2);font-size:180px;font-weight:bold;text-transform:capitalize;line-height:0.9em;margin-bottom:5px;}p.gb-headline-5beba68e{text-align:right;color:var(--contrast-3);font-size:26px;padding:0 10px;margin-top:-92px;margin-bottom:0;border-right-style: solid;border-right-width:10px;border-color:var(--accent);}h2.gb-headline-22a2d754{text-align:left;color:var(--base-2);font-size:180px;font-weight:bold;text-transform:capitalize;line-height:0.9em;margin-bottom:5px;}p.gb-headline-765dd33c{text-align:right;color:var(--contrast-3);font-size:26px;padding:0 10px;margin-top:-92px;margin-bottom:0;border-right-style: solid;border-right-width:10px;border-color:var(--accent);}h5.gb-headline-cf24c2bc{margin-bottom:0;}h5.gb-headline-5d2b017c{margin-bottom:0;}h5.gb-headline-5d31c3ed{margin-bottom:0;}h5.gb-headline-d1d015b1{margin-bottom:0;}h5.gb-headline-eb08b8c7{margin-bottom:0;}h5.gb-headline-d81c16e6{margin-bottom:0;}p.gb-headline-41582601{padding-right:100px;}p.gb-headline-95746454{margin-bottom:20px;}p.gb-headline-bf8e162e{text-align:right;margin-bottom:0;display:flex;justify-content:flex-end;align-items:center;}p.gb-headline-bf8e162e .gb-icon{padding-top:.1em;padding-right:0.5em;}p.gb-headline-bf8e162e .gb-icon svg{width:1em;height:1em;}p.gb-headline-97c10964{font-size:17px;margin-bottom:0;}.gb-button-wrapper{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:flex-start;clear:both;}.gb-button-wrapper-b2ef5dc5{margin-bottom:50px;justify-content:center;}.gb-button-wrapper-17b6ddfb{justify-content:flex-end;}.gb-button-wrapper-d060803e{justify-content:flex-end;}.gb-button-wrapper .gb-button{display:inline-flex;align-items:center;justify-content:center;text-align:center;text-decoration:none;transition:.2s background-color ease-in-out, .2s color ease-in-out, .2s border-color ease-in-out, .2s opacity ease-in-out, .2s box-shadow ease-in-out;}.gb-button-wrapper .gb-button .gb-icon{align-items:center;}.gb-button-wrapper a.gb-button-75c71516,.gb-button-wrapper a.gb-button-75c71516:visited{background-color:var(--accent);color:var(--base-3);font-size:17px;padding:8.5px 17px;border-radius:5px;border-style: solid;border-width:0;}.gb-button-wrapper a.gb-button-75c71516:hover,.gb-button-wrapper a.gb-button-75c71516:active,.gb-button-wrapper a.gb-button-75c71516:focus{background-color:var(--accent-2);}.gb-button-wrapper a.gb-button-871dac18,.gb-button-wrapper a.gb-button-871dac18:visited{background-color:#ffffff;color:#4e4e4e;font-size:15px;padding:15px 20px;border-radius:5px;border-style: solid;border-width:0;}.gb-button-wrapper a.gb-button-871dac18:hover,.gb-button-wrapper a.gb-button-871dac18:active,.gb-button-wrapper a.gb-button-871dac18:focus{background-color:#4d4d4d;color:#ffffff;}.gb-button-wrapper a.gb-button-54543b97,.gb-button-wrapper a.gb-button-54543b97:visited{padding:15px 8px;display:inline-flex;align-items:center;}a.gb-button-54543b97 .gb-icon{font-size:1em;}.gb-button-wrapper a.gb-button-4e922aff,.gb-button-wrapper a.gb-button-4e922aff:visited{padding:15px 8px;display:inline-flex;align-items:center;}a.gb-button-4e922aff .gb-icon{font-size:1em;}.gb-button-wrapper a.gb-button-e673a98b,.gb-button-wrapper a.gb-button-e673a98b:visited{padding:15px 8px;display:inline-flex;align-items:center;}a.gb-button-e673a98b .gb-icon{font-size:1em;}.gb-button-wrapper a.gb-button-fda4ad1f,.gb-button-wrapper a.gb-button-fda4ad1f:visited{padding:15px 8px;display:inline-flex;align-items:center;}a.gb-button-fda4ad1f .gb-icon{font-size:1em;}.gb-button-wrapper a.gb-button-f063470d,.gb-button-wrapper a.gb-button-f063470d:visited{font-size:14px;padding:15px 8px;}.gb-button-wrapper a.gb-button-aa1acb51,.gb-button-wrapper a.gb-button-aa1acb51:visited{font-size:14px;padding:15px 8px;}.gb-button-wrapper a.gb-button-dad7e0bf,.gb-button-wrapper a.gb-button-dad7e0bf:visited{font-size:14px;padding:15px 8px;}.gb-button-wrapper a.gb-button-907cc664,.gb-button-wrapper a.gb-button-907cc664:visited{font-size:17px;margin-right:30px;}.gb-button-wrapper a.gb-button-907cc664:hover,.gb-button-wrapper a.gb-button-907cc664:active,.gb-button-wrapper a.gb-button-907cc664:focus{color:#f2f5fa;}.gb-button-wrapper a.gb-button-a6a340bc,.gb-button-wrapper a.gb-button-a6a340bc:visited{font-size:17px;}.gb-button-wrapper a.gb-button-a6a340bc:hover,.gb-button-wrapper a.gb-button-a6a340bc:active,.gb-button-wrapper a.gb-button-a6a340bc:focus{color:#f2f5fa;}.gb-button-wrapper a.gb-button-22bfa10d,.gb-button-wrapper a.gb-button-22bfa10d:visited{padding:15px 14px;display:inline-flex;align-items:center;}.gb-button-wrapper a.gb-button-22bfa10d:hover,.gb-button-wrapper a.gb-button-22bfa10d:active,.gb-button-wrapper a.gb-button-22bfa10d:focus{color:var(--accent);}a.gb-button-22bfa10d .gb-icon{font-size:1.1em;}.gb-button-wrapper a.gb-button-5f028951,.gb-button-wrapper a.gb-button-5f028951:visited{padding:15px 14px;display:inline-flex;align-items:center;}.gb-button-wrapper a.gb-button-5f028951:hover,.gb-button-wrapper a.gb-button-5f028951:active,.gb-button-wrapper a.gb-button-5f028951:focus{background-color:rgba(34, 34, 34, 0);color:var(--accent);}a.gb-button-5f028951 .gb-icon{font-size:1.1em;}.gb-button-wrapper a.gb-button-f37cc1b6,.gb-button-wrapper a.gb-button-f37cc1b6:visited{padding:15px 14px;display:inline-flex;align-items:center;}.gb-button-wrapper a.gb-button-f37cc1b6:hover,.gb-button-wrapper a.gb-button-f37cc1b6:active,.gb-button-wrapper a.gb-button-f37cc1b6:focus{background-color:rgba(34, 34, 34, 0);color:var(--accent);}a.gb-button-f37cc1b6 .gb-icon{font-size:1.1em;}.gb-button-wrapper a.gb-button-c3a240b5,.gb-button-wrapper a.gb-button-c3a240b5:visited{padding:15px 14px;display:inline-flex;align-items:center;}.gb-button-wrapper a.gb-button-c3a240b5:hover,.gb-button-wrapper a.gb-button-c3a240b5:active,.gb-button-wrapper a.gb-button-c3a240b5:focus{background-color:rgba(34, 34, 34, 0);color:var(--accent);}a.gb-button-c3a240b5 .gb-icon{font-size:1.1em;}.gb-button-wrapper a.gb-button-44c4c3d6,.gb-button-wrapper a.gb-button-44c4c3d6:visited{padding:15px 14px;display:inline-flex;align-items:center;}.gb-button-wrapper a.gb-button-44c4c3d6:hover,.gb-button-wrapper a.gb-button-44c4c3d6:active,.gb-button-wrapper a.gb-button-44c4c3d6:focus{background-color:rgba(34, 34, 34, 0);color:var(--accent);}a.gb-button-44c4c3d6 .gb-icon{font-size:1.1em;}@media (min-width: 1025px) {.gb-grid-wrapper > div.gb-grid-column-90ba54e2{padding-bottom:0;}}@media (max-width: 1024px) {.gb-container-cc6b793f > .gb-inside-container{padding:100px 20px 200px;}.gb-container-c243e5b5{margin-top:0;}.gb-container-7eda8503 > .gb-inside-container{padding:40px 20px;}.gb-grid-wrapper > .gb-grid-column-7eda8503 > .gb-container{justify-content:center;}.gb-container-37100832 > .gb-inside-container{padding:40px 20px;}.gb-grid-wrapper > .gb-grid-column-37100832 > .gb-container{justify-content:center;}.gb-container-5cbbf9a2{margin-top:60px;}.gb-container-119df869 > .gb-inside-container{padding-top:150px;padding-bottom:20px;}.gb-container-016766a3 > .gb-inside-container{padding-top:150px;}.gb-container-9b5246c4 > .gb-inside-container{padding-top:150px;padding-bottom:20px;}.gb-container-4b60d420 > .gb-inside-container{padding-top:150px;padding-bottom:20px;}.gb-container-7fd6aa2d{margin-top:60px;}.gb-container-3e262987{margin-top:60px;}.gb-container-13ee4214 > .gb-inside-container{padding-right:30px;padding-left:30px;}.gb-container-cb7831a7 > .gb-inside-container{padding-right:30px;padding-left:30px;}.gb-container-3bdf6c9f{margin-top:60px;}.gb-container-d414f3d6{margin-top:60px;}.gb-container-a1195352 > .gb-inside-container{padding-right:20px;padding-left:20px;}.gb-container-148d55cb{margin-top:0;}.gb-grid-wrapper > .gb-grid-column-53cb46e2{width:100%;}.gb-grid-wrapper > .gb-grid-column-e1bd60bb{width:50%;}.gb-grid-wrapper-371c8e31{align-items:center;}.gb-grid-wrapper-75aee70c{margin-left:-30px;}.gb-grid-wrapper-75aee70c > .gb-grid-column{padding-left:30px;}.gb-grid-wrapper-b76f312f > .gb-grid-column{padding-bottom:40px;}h2.gb-headline-b60612dd{text-align:left;font-size:35px;margin-bottom:10px;}h2.gb-headline-2305eeb2{text-align:right;font-size:35px;}p.gb-headline-d750c5ec{text-align:right;}h2.gb-headline-12cdc19e{font-size:90px;}p.gb-headline-469c3887{font-size:17px;}h2.gb-headline-6dde0834{font-size:90px;}p.gb-headline-da47bd9e{font-size:17px;}h2.gb-headline-febd1c35{font-size:130px;}h2.gb-headline-e8c44a0e{font-size:90px;}p.gb-headline-5beba68e{font-size:17px;}h2.gb-headline-22a2d754{font-size:90px;}p.gb-headline-765dd33c{font-size:17px;}p.gb-headline-41582601{padding-right:0;}p.gb-headline-95746454{text-align:left;}p.gb-headline-bf8e162e{text-align:left;justify-content:flex-start;}.gb-button-wrapper-b2ef5dc5{justify-content:flex-end;}.gb-button-wrapper a.gb-button-22bfa10d{padding-right:10px;padding-left:10px;}}@media (max-width: 1024px) and (min-width: 768px) {.gb-grid-wrapper > div.gb-grid-column-e1bd60bb{padding-bottom:0;}}@media (max-width: 767px) {.gb-container-cc6b793f > .gb-inside-container{padding:80px 20px 100px;}.gb-container-c243e5b5{margin-top:0;}.gb-container-7eda8503{margin-top:0;}.gb-container-7eda8503 > .gb-inside-container{padding:40px 20px;}.gb-grid-wrapper > .gb-grid-column-7eda8503{width:100%;}.gb-grid-wrapper > .gb-grid-column-d910fc66{width:25%;}.gb-grid-wrapper > .gb-grid-column-575f7b5e{width:75%;}.gb-grid-wrapper > .gb-grid-column-90ba54e2{width:100%;order:-1;}.gb-container-37100832 > .gb-inside-container{padding:40px 20px;}.gb-grid-wrapper > .gb-grid-column-37100832{width:100%;}.gb-container-5cbbf9a2 > .gb-inside-container{padding-right:0;padding-bottom:20px;}.gb-container-119df869{border-style: solid;border-width:0 0 1px;}.gb-grid-wrapper > .gb-grid-column-119df869{width:100%;}.gb-container-016766a3{border-style: solid;border-width:1px 0;}.gb-grid-wrapper > .gb-grid-column-016766a3{width:100%;}.gb-container-9b5246c4{border-style: solid;border-width:1px 0;}.gb-grid-wrapper > .gb-grid-column-9b5246c4{width:100%;}.gb-container-4b60d420{border-style: solid;border-width:1px 0 0;}.gb-grid-wrapper > .gb-grid-column-4b60d420{width:100%;}.gb-container-7fd6aa2d > .gb-inside-container{padding-right:0;padding-bottom:20px;}.gb-container-3e262987 > .gb-inside-container{padding:20px;}.gb-container-13ee4214 > .gb-inside-container{padding-top:30px;padding-bottom:30px;}.gb-grid-wrapper > .gb-grid-column-13ee4214{width:100%;}.gb-container-cb7831a7{margin-left:0;}.gb-grid-wrapper > .gb-grid-column-cb7831a7{width:100%;order:-1;}.gb-container-3bdf6c9f > .gb-inside-container{padding-right:0;padding-bottom:20px;}.gb-container-d414f3d6 > .gb-inside-container{padding-right:0;padding-bottom:20px;padding-left:0;}.gb-container-a1195352{margin-top:25px;}.gb-container-a1195352 > .gb-inside-container{padding-top:80px;padding-bottom:40px;}.gb-container-68f95b0d{margin-top:0;}.gb-grid-wrapper > .gb-grid-column-68f95b0d{width:100%;}.gb-grid-wrapper > .gb-grid-column-c373ec39{width:33.33%;}.gb-grid-wrapper > .gb-grid-column-46b8f51d{width:66.66%;}.gb-container-148d55cb{margin-top:0;}.gb-grid-wrapper > .gb-grid-column-148d55cb{width:100%;}.gb-grid-wrapper > .gb-grid-column-1f43e011{width:33.33%;}.gb-grid-wrapper > .gb-grid-column-daa4e669{width:66.66%;}.gb-container-a8927d00{margin-top:0;}.gb-grid-wrapper > .gb-grid-column-a8927d00{width:100%;}.gb-grid-wrapper > .gb-grid-column-a89373cf{width:33.33%;}.gb-grid-wrapper > .gb-grid-column-0f7f37a3{width:66.66%;}.gb-grid-wrapper > .gb-grid-column-b3e34c3c{width:100%;}.gb-container-fcfab6f6{text-align:center;}.gb-grid-wrapper > .gb-grid-column-fcfab6f6{width:100%;}.gb-grid-wrapper > .gb-grid-column-53cb46e2{width:100%;}.gb-grid-wrapper > .gb-grid-column-e1bd60bb{width:100%;}.gb-grid-wrapper > .gb-grid-column-e6861bde{width:100%;}.gb-grid-wrapper > .gb-grid-column-7c528044{width:100%;}.gb-grid-wrapper-7e06c8d5 > .gb-grid-column{padding-bottom:0px;}.gb-grid-wrapper-2208a82e > .gb-grid-column{padding-bottom:0px;}.gb-grid-wrapper-b244dd7b > .gb-grid-column{padding-bottom:20px;}.gb-grid-wrapper-75aee70c > .gb-grid-column{padding-bottom:20px;}p.gb-headline-4a926537{font-size:15px;}h2.gb-headline-b60612dd{font-size:30px;}h2.gb-headline-2305eeb2{font-size:30px;padding-top:0;}p.gb-headline-d750c5ec{font-size:17px;}h2.gb-headline-12cdc19e{font-size:58px;}p.gb-headline-469c3887{font-size:15px;margin-top:-70px;padding-right:0;}p.gb-headline-e9550e29{font-size:17px;}p.gb-headline-535218b9{font-size:17px;}p.gb-headline-f4d34bb3{font-size:17px;}p.gb-headline-c6ac5e85{font-size:17px;}h2.gb-headline-6dde0834{font-size:60px;}p.gb-headline-da47bd9e{font-size:15px;margin-top:-70px;padding-right:0;}p.gb-headline-34272f97{font-size:15px;}h2.gb-headline-febd1c35{text-align:center;font-size:100px;}h2.gb-headline-e8c44a0e{font-size:60px;}p.gb-headline-5beba68e{font-size:15px;margin-top:-70px;padding-right:0;}h2.gb-headline-22a2d754{font-size:57px;}p.gb-headline-765dd33c{font-size:15px;margin-top:-70px;padding-right:0;}.gb-button-wrapper-b2ef5dc5{margin-bottom:0;}.gb-button-wrapper-3a5c1d30{justify-content:center;}.gb-button-wrapper-17b6ddfb{justify-content:center;flex-direction:column;align-items:center;}.gb-button-wrapper-d060803e{justify-content:flex-start;}.gb-button-wrapper-0a1d34a0{margin-left:10px;}.gb-button-wrapper a.gb-button-22bfa10d{padding-right:10px;padding-left:10px;}.gb-button-wrapper a.gb-button-5f028951{padding-right:10px;padding-left:10px;}.gb-button-wrapper a.gb-button-f37cc1b6{padding-right:10px;padding-left:10px;}.gb-button-wrapper a.gb-button-c3a240b5{padding-right:10px;padding-left:10px;}.gb-button-wrapper a.gb-button-44c4c3d6{padding-right:10px;padding-left:10px;}}
778
- <?php } ?>
779
- <?php if (ampforwp_get_setting('amp-quantcast-notice-switch')) {?>
780
- #postPromptUI button {
781
- background: #368bd6;
782
- color: white;
783
- padding: 5px 15px;
784
- border: none;
785
- outline: none;
786
- display: flex;
787
- align-items: center;
788
- position: fixed;
789
- right: 0;
790
- bottom: 0;
791
- border-radius: 3px 0 0 3px;
792
- max-height: 30px;
793
- max-width: 110px;
794
- cursor: pointer;
795
- }
796
- <?php } ?>
797
-
798
- <?php if( ampforwp_get_setting('amp_font_selector_heading')) { ?>
799
- h1,h2,h3,h4,h5,h6{
800
- font-family:<?php echo ampforwp_get_setting('amp_font_selector_heading'); ?>
801
- }
802
- <?php } ?>
803
- <?php if( ampforwp_get_setting('ampforwp-infinite-scroll-new-features')) { ?>
804
- footer.footer {
805
- margin: 0;
806
- }
807
- footer .f-w-f2 {
808
- padding: 0;
809
- }
810
- <?php } ?>
811
- <?php if( function_exists('rehub_framework_plugin_activate') ) { ?>
812
- .table_view_charts{ margin: 10px 0; overflow: hidden;}
813
- .top_chart_wrap, .top_chart .swiper-container{float: left; width: calc(100% - 160px); position: relative; }
814
- .top_chart_controls{ float: right; margin-bottom: 10px}
815
- .top_chart_controls .controls {text-decoration: none; width: 30px;height: 30px;cursor: pointer;opacity: 0.8;text-align: center;float: left;border: 1px solid #ddd;color: #444;}
816
- .top_chart_controls .controls.next:after, .top_chart_controls .controls.prev:after{line-height: 30px;font-size: 18px;}
817
- .top_chart_controls .controls.next:after {content: "\f105"; }
818
- .top_chart_controls .controls.prev:after {content: "\f104";}
819
- .top_chart_pagination a span{ display: none;}
820
- .top_chart_pagination a{width: 8px;height: 8px;margin: 11px 2px;float: left; background-color: #ccc; cursor: pointer; border-radius: 50%}
821
- .top_chart_pagination a.selected {cursor: default;}
822
- .top_chart_pagination{ float: left; margin: 0 7px}
823
- .table_view_charts .top_chart_item, .table_view_charts .top_chart_first{border-top:1px solid #ddd; float: left; position: relative;}
824
- .table_view_charts .top_chart_item li:first-child, .table_view_charts .top_chart_first li:first-child{background-color: #fff}
825
- .table_view_charts .top_chart_first { width: 160px; clear: both;}
826
- .table_view_charts .top_chart_item{width: 220px; background: #fff;display: inline; max-width: 260px }
827
- .table_view_charts li { border-bottom: 1px solid #e8e8e8; border-right:1px solid #e8e8e8; border-left:1px solid transparent; list-style: none !important; margin:0; padding: 8px; overflow: hidden; font-size: 14px;line-height: 20px;}
828
- .table_view_charts li p, .post .table_view_charts ul li{margin: 0}
829
- .table_view_charts .top_chart_first ul li{ background-color: #f8f8f8; text-align: right; border-left: 1px solid #e8e8e8;}
830
- .table_view_charts li.heading_row_chart { font-weight: bold; font-size: 15px; line-height: 18px; background-color: #fff !important; border-right-color: #fff !important;border-left-color: #fff !important; padding: 17px 0 17px 4px}
831
- .table_view_charts .top_chart_item li{text-align: center;}
832
- .table_view_charts .top_chart_item li.meta_value_left{text-align: inherit;}
833
- .table_view_charts .top_chart_item figure{height: auto; margin: 0 auto; text-align: center; width: auto; padding: 0; height: 150px}
834
- .table_view_charts .top_chart_item figure a{width: auto; height: auto; display: block; border:none;}
835
- .table_view_charts .top_chart_item figure > a img{ height:auto; width: auto; max-height: 150px; max-width: 100%; border: none; vertical-align: middle; padding: 0}
836
- .table_view_charts .top_chart_item .star { margin: 0 auto !important}
837
- .table_view_charts .top_chart_item .rehub_meta_field_icon{ font-size: 18px; color: #41BD28}
838
- .table_view_charts .top_chart_item .rehub_meta_field_icon .rhi-ban{color: #dc0000}
839
- .table_view_charts .top_chart_item .title_row_chart a{color: #111;text-decoration: none; }
840
- .table_view_charts ul{ padding: 0; margin: 0}
841
- .table_view_charts h2{ font-size: 17px; line-height: 17px; margin: 10px 0 0 0; padding: 0}
842
- .meta_value_row_chart ul li{border: none;text-align: left;margin: 0 0 12px 0;padding: 0;}
843
- .table_view_charts .is-sticky li{z-index: 999999;background-color: #fff}
844
- .table_view_charts .sticky-wrapper li { transition: all 1s ease 0.5s; top: 0; position: relative; }
845
- .table_view_charts div.sticky-wrapper.is-sticky li { transition: all 1.5s ease; z-index: 100; max-height: 200px }
846
- .table_view_charts .sticky-wrapper.is-sticky .sticky-cell .price-in-compare-flip { display:none }
847
- .table_view_charts .sticky-wrapper.is-sticky .row_chart_0.image_row_chart.row-is-different { height:170px !important; }
848
- .table_view_charts .top_chart_item .sticky-wrapper.is-sticky figure{height: 100px}
849
- .table_view_charts .top_chart_item .sticky-wrapper.is-sticky figure > a img{max-height: 100px}
850
- .top_chart_item:not(.activecol) .is-sticky {opacity: 0}
851
- .re-compare-show-diff, .diff-label{cursor: pointer;}
852
- .re-compare-show-diff{padding: 4px; margin-right: 5px}
853
- .table_view_charts li.low-opacity{opacity: 0.1}
854
- .imagefull_row_chart del{display: none;}
855
- .imagefull_row_chart .greencolor{display: block;}
856
- .table_view_charts .rh-star-ajax .title_star_ajax small { display: block;}
857
- .table_view_charts .user-rate{ float: none;margin: 0 auto}
858
- .table_view_charts .rehub_offer_coupon:not(.coupon_btn){ margin: 0 auto 10px auto;}
859
- .loading.table_view_charts:before{ font-size: 45px; color: #ccc}
860
- .top_chart_controls {display: none;}
861
- .loading.table_view_charts{ text-align: center; border: 1px solid #f9f9f9; background-color: #f9f9f9}
862
- .table_view_charts ul li ul li{border: none !important}
863
- .top_chart_wrap.woocommerce .rev-in-compare-flip{left: 15px; right: auto;}
864
- .price-woo-compare-chart{font-size: 19px; display: block; }
865
- .price-woo-compare-chart del{display: none;}
866
- @media screen and (max-width: 767px) {
867
- .table_view_charts .is-sticky h2{font-size: 14px}
868
- .top_chart_item{ width: 186px}}
869
- @media (max-width: 468px) {
870
- .table_view_charts li.heading_row_chart{font-size: 14px}
871
- .rev-in-compare-flip{display: none;}
872
- .table_view_charts h2, .top_chart_item .price-woo-compare-chart{font-size: 15px; margin-top: 5px}
873
- .table_view_charts .top_chart_item figure, .table_view_charts .top_chart_item .sticky-wrapper.is-sticky figure{height: 80px}
874
- .table_view_charts .top_chart_item figure > a img{max-height: 80px}
875
- .table_view_charts{margin: 10px -15px}
876
- .table_view_charts .top_chart_item .sticky-wrapper.is-sticky figure > a img{max-height: 80px}
877
- .table_view_charts .top_chart_wrap, .top_chart .swiper-container{float: left; width: calc(100% - 90px);}
878
- .table_view_charts .top_chart_first{ width: 90px; overflow: hidden;}
879
- .table_view_charts .top_chart_first li { font-size: 12px}
880
- .table_view_charts li{font-size: 13px;}
881
- .top_chart:not(.loading) .chart_helper{display: inline-block;}
882
- .table_view_charts .top_chart_item {max-width: 150px;}
883
- .single-post main .amp-wp-article-content h2 {font-size: 12px;}
884
- }
885
- <?php } ?>
886
- <?php if( function_exists('wptb_render_table')) { ?>
887
- @-webkit-keyframes show{0%{opacity:0}to{opacity:1}}@keyframes show{0%{opacity:0}to{opacity:1}}@-webkit-keyframes wptb-flip{0%{transform:rotateY(0deg)}to{transform:rotateY(360deg)}}@keyframes wptb-flip{0%{transform:rotateY(0deg)}to{transform:rotateY(360deg)}}@-webkit-keyframes wptb-jump{0%{transform:translateY(25%)}to{transform:translateY(-25%)}}@keyframes wptb-jump{0%{transform:translateY(25%)}to{transform:translateY(-25%)}}@-webkit-keyframes wptb-rotate-simple{0%{transform:rotateZ(0deg)}to{transform:rotateZ(360deg)}}@keyframes wptb-rotate-simple{0%{transform:rotateZ(0deg)}to{transform:rotateZ(360deg)}}@-webkit-keyframes wptb-beat{0%,30%,to{transform:scale(1)}15%{transform:scale(1.5)}}@keyframes wptb-beat{0%,30%,to{transform:scale(1)}15%{transform:scale(1.5)}}.wptb-table-container{overflow:auto;position:relative;width:100%;margin:30px auto}.wptb-table-container[data-wptb-horizontal-scroll-status=true]{width:100%;overflow-x:auto!important}.wptb-table-container[data-wptb-horizontal-scroll-status=true] .wptb-table-container-matrix{padding:10px 0}.wptb-table-container-matrix{margin:auto}.wptb-frontend-table-after .wptb-frontend-table-edit-link,.wptb-frontend-table-after .wptb-frontend-table-powered-by,.wptb-rating-stars-box ul li{display:inline-block}.wptb-frontend-table-powered-by{float:right}.wptb-frontend-table-edit-link{clear:both}.wptb-table-container table{table-layout:fixed;font-size:15px;width:auto;display:table;border-collapse:collapse}.wptb-table-container-matrix table{margin:auto}.wptb-table-container-matrix.wptb-matrix-hide{visibility:visible;opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;overflow:hidden}table.wptb-preview-table-mobile{width:100%}.wptb-preview-table-mobile.wptb-mobile-hide{display:none}table.wptb-preview-table{opacity:0;-webkit-animation:show .3s 1;animation:show .3s 1;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-delay:.7s;animation-delay:.7s;overflow:visible}.wptb-preview-table tr:nth-of-type(2n+1),.wptb-table-container table.wptb-preview-table-mobile tr td:nth-of-type(2n+1){background-color:#eee}.wptb-table-container table.wptb-preview-table-mobile tr:nth-of-type(2n+1){background-color:inherit}.wptb-table-container table td{padding:15px;position:relative;box-sizing:content-box;vertical-align:middle}.wptb-table-container-matrix.wptb-matrix-hide .wptb-preview-table td{width:auto!important}.wptb-table-container table td p{word-wrap:break-word;overflow-wrap:break-word;margin:0!important;word-break:break-word}.wptb-table-container table tr td ul{margin:0!important;padding:1em .2em .4em}.wptb-table-container table tr td ul li p{font-size:15px}.wptb-row td:empty::before{content:" ";display:block;min-height:19px;box-sizing:border-box;border:0}.wptb-ph-element{position:relative;border:1px solid #fff0}.wptb-elem-placeholder{display:none}.wptb-image-wrapper::after{content:"";display:block;height:0;width:100%;clear:both}.wptb-image-wrapper a{display:block;max-width:100%;position:relative;margin:auto}.wptb-cell .wptb-ph-element a{box-shadow:none}.wptb-image-wrapper img{width:100%;height:auto}.wptb-text-container>div,.wptb-text-container>div>p{font-size:inherit;color:inherit}.wptb-button-wrapper{display:flex;align-items:center;justify-content:center}.wptb-button-container .wptb-button-wrapper a{text-decoration:none!important}.wptb-button-wrapper>a,.wptb-cell img,.wptb-table img{max-width:100%}.wptb-size-s .wptb-button{border-radius:.2rem;padding:.35rem .6rem;max-width:100%}.wptb-size-s .wptb-button p{font-size:.875rem;line-height:1.5}.wptb-size-l .wptb-button,.wptb-size-m .wptb-button{border-radius:.3rem;padding:.475rem .85rem;max-width:100%}.wptb-size-m .wptb-button p{font-size:1.125rem;line-height:1.5}.wptb-size-l .wptb-button{padding:.6rem 1.2rem}.wptb-size-l .wptb-button p{font-size:inherit;line-height:1.5}.wptb-size-xl .wptb-button{border-radius:.4rem;padding:.8rem 1.35rem;max-width:100%}.wptb-size-xl .wptb-button p{font-size:1.35rem;line-height:1.5}.wptb-button,.wptb-button .wptb-button-icon{display:flex;justify-content:center;align-items:center}.wptb-button{background:#329d3f;color:#fff;transition:all .2s ease-out;cursor:pointer}.wptb-button .wptb-button-icon{margin:0 5px;order:-1;width:25px;height:25px}.wptb-button .wptb-button-icon svg{fill:currentColor;width:100%;height:100%}.wptb-button-icon[data-wptb-button-icon-src=""]{display:none}.wptb-plugin-button-order-right .wptb-button-icon,[data-wptb-button-icon-position=right] .wptb-button-icon{order:2}.wptb-ph-element .wptb-button p{color:inherit}[class*=wptb-element-text-] p{color:inherit!important;font-size:inherit!important}.wptb-list-container.wptb-ph-element ul li{list-style:none;margin:0 0 10px;position:relative}.wptb-list-container.wptb-ph-element ul li:last-child{margin-bottom:0}.wptb-list-container li p{word-wrap:break-word;line-height:inherit;padding-left:20px}.wptb-list-container li p::before{content:attr(data-list-style-type-index);display:inline-block;line-height:20px;padding:0 5px 0 0;font-size:15px;font-family:verdana,sans-serif;cursor:text;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;margin-left:-20px}.wptb-list-container li p.wptb-list-style-type-disc::before{content:'\25CF'}.wptb-list-container li p.wptb-list-style-type-circle::before{content:'\25CB'}.wptb-list-container li p.wptb-list-style-type-square::before{content:'\25A0'}.wptb-list-container li p.wptb-list-style-type-none::before{content:'';padding-right:0}.wptb-star_rating-container{text-align:center}.wptb-rating-stars-box{text-align:center;display:inline-block;padding:7px}.wptb-rating-stars-box ul{list-style-type:none;-moz-user-select:none;-webkit-user-select:none;padding:.5em .2em .2em}.wptb-rating-stars-box ul>li.wptb-rating-star{color:#ccc;margin:0;position:relative;width:20px;height:20px}.wptb-rating-stars-box ul>li.wptb-rating-star span{position:absolute;height:100%;width:100%;top:0;left:0;z-index:10;display:block}.wptb-rating-stars-box ul>li.wptb-rating-star span.wptb-rating-star-left-signal-part,.wptb-rating-stars-box ul>li.wptb-rating-star span.wptb-rating-star-right-signal-part{height:100%;width:50%;z-index:20}.wptb-rating-stars-box ul>li.wptb-rating-star span.wptb-rating-star-left-signal-part{left:0}.wptb-rating-stars-box ul>li.wptb-rating-star span.wptb-rating-star-left-signal-part span.wptb-rating-star-zero-set{left:0;width:40%;height:100%;top:0;z-index:30px}.wptb-rating-stars-box ul>li.wptb-rating-star span.wptb-rating-star-right-signal-part{right:0;left:auto}.wptb-rating-stars-box ul>li.wptb-rating-star span.wptb-filled-rating-star,.wptb-rating-stars-box ul>li.wptb-rating-star span.wptb-half-filled-rating-star,.wptb-rating-stars-box ul>li.wptb-rating-star.wptb-rating-star-selected-half span.wptb-filled-rating-star,.wptb-rating-stars-box ul>li.wptb-rating-star.wptb-rating-star-selected-half span.wptb-not-filled-rating-star{display:none}.wptb-rating-stars-box ul>li.wptb-rating-star span.wptb-not-filled-rating-star{fill:#ccc}.wptb-rating-stars-box ul>li.wptb-rating-star.wptb-rating-star-selected-full span.wptb-filled-rating-star,.wptb-rating-stars-box ul>li.wptb-rating-star.wptb-rating-star-selected-half span.wptb-half-filled-rating-star{display:block;fill:#ff912c}.wptb-rating-stars-box ul>li.wptb-rating-star.wptb-rating-star-selected-full span.wptb-half-filled-rating-star,.wptb-rating-stars-box ul>li.wptb-rating-star.wptb-rating-star-selected-full span.wptb-not-filled-rating-star{display:none}.wptb-number-rating-box{text-align:center;font-size:20px}.wptb-number-rating-box>div{vertical-align:top;display:inline-block;color:#888;text-align:center;height:25px;font-size:25px;line-height:25px}.wptb-column-title-mobile-container{display:none;position:absolute;top:0;bottom:0;left:0;right:50%}.wptb-column-title-mobile-container.wptb-column-title-mobile-container-clone{position:relative;width:50%;right:auto;left:auto;top:auto;bottom:auto}.wptb-column-title-mobile-container .wptb-column-title-mobile{display:table;width:100%;table-layout:fixed;height:100%;word-wrap:break-word;overflow-wrap:break-word}.wptb-table-container.wptb-section-small table{min-width:auto}.wptb-cell ul{padding:0}.wptb-table-container.wptb-section-small table tr td{display:block;width:100%;box-sizing:border-box;position:relative;min-height:60px;overflow:hidden}.wptb-table-container.wptb-section-small table.wptb-table-preview-head td .wptb-column-title-mobile-container{display:block}.wptb-table-container table.wptb-table-preview-head td .wptb-column-title-mobile-container .wptb-column-title-mobile::before{content:attr(data-wptb-title-column);display:table-cell;width:50%;vertical-align:middle;padding:inherit}.wptb-table-container.wptb-section-small table.wptb-table-preview-head td.wptb-column-title-mobile-not-elements{padding:0!important}.wptb-table-container table.wptb-table-preview-head td .wptb-column-title-mobile-container.wptb-column-title-mobile-not-elements .wptb-column-title-mobile::before{padding-left:0}.wptb-table-container.wptb-section-small table.wptb-table-preview-head td .wptb-ph-element{display:inline-block;width:50%;margin-left:50%;padding-left:inherit;box-sizing:border-box}.wptb-table-container.wptb-section-small table td{border-width:0 1px 1px!important}.wptb-table-container.wptb-section-small table tr td:nth-of-type(1){border-top-width:3px!important}.wptb-table-container.wptb-section-small table tr td:nth-last-of-type(1){border-top-width:0!important}.wptb-table-container.wptb-section-small table.wptb-table-preview-head tr:first-child{display:none}@media only screen and (max-width:600px){.wptb-table-container table{min-width:auto}.wptb-table-container table.wptb-table-preview-head.wptb-table-preview-static-indic tr td{display:block;width:100%!important;box-sizing:border-box;position:relative;min-height:60px;overflow:hidden}.wptb-table-container table.wptb-table-preview-head.wptb-table-preview-static-indic td.wptb-column-title-mobile-not-elements{padding:0!important}.wptb-table-container table.wptb-table-preview-head.wptb-table-preview-static-indic td .wptb-column-title-mobile-container{display:block}.wptb-table-container table.wptb-table-preview-head.wptb-table-preview-static-indic td .wptb-ph-element{display:inline-block;width:50%;margin-left:50%;padding-left:inherit}.wptb-table-container table.wptb-table-preview-head.wptb-table-preview-static-indic td{border-width:0 1px 1px!important}.wptb-table-container table.wptb-table-preview-head.wptb-table-preview-static-indic tr td:nth-of-type(1){border-top-width:1px!important}.wptb-table-container table.wptb-table-preview-head.wptb-table-preview-static-indic tr:first-child{display:none}}.wptb-plugin-responsive-base{min-width:auto!important;width:100%!important}.wptb-plugin-box-shadow-md{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.wptb-plugin-filter-box-shadow-md{filter:drop-shadow(4px 6px 2px rgba(0,0,0,.1))}.wptb-plugin-filter-box-shadow-md-close{filter:drop-shadow(4px 1px 2px rgba(0,0,0,.1))}.wptb-cell[data-wptb-cell-vertical-alignment=top]{vertical-align:baseline}.wptb-cell[data-wptb-cell-vertical-alignment=center]{vertical-align:middle}.wptb-cell[data-wptb-cell-vertical-alignment=bottom]{vertical-align:bottom}.wptb-preview-table-mobile[data-wptb-sortable-table-horizontal="1"] td[data-x-index="0"]::after,.wptb-preview-table-mobile[data-wptb-sortable-table-vertical="1"] td[data-sorted-vertical]::after,.wptb-preview-table[data-wptb-sortable-table-horizontal="1"] td[data-x-index="0"]::after,.wptb-preview-table[data-wptb-sortable-table-vertical="1"] td[data-sorted-vertical]::after{position:absolute;top:0;bottom:0;z-index:100;display:grid;font-family:dashicons;font-size:35px;align-content:center;text-align:center}.wptb-preview-table-mobile[data-wptb-sortable-table-vertical="1"] td[data-sorted-vertical=ask]::after,.wptb-preview-table[data-wptb-sortable-table-vertical="1"] td[data-sorted-vertical=ask]::after{content:"\f142";right:0}.wptb-preview-table-mobile[data-wptb-sortable-table-vertical="1"] td[data-sorted-vertical=desk].sortable-hover::after,.wptb-preview-table[data-wptb-sortable-table-vertical="1"] td[data-sorted-vertical=desk].sortable-hover::after{content:"\f142";cursor:pointer;opacity:.7}.wptb-preview-table-mobile[data-wptb-sortable-table-vertical="1"] td[data-sorted-vertical=desk]::after,.wptb-preview-table[data-wptb-sortable-table-vertical="1"] td[data-sorted-vertical=desk]::after{content:"\f140";right:0}.wptb-preview-table-mobile[data-wptb-sortable-table-vertical="1"] td[data-sorted-vertical=ask].sortable-hover::after,.wptb-preview-table[data-wptb-sortable-table-vertical="1"] td[data-sorted-vertical=ask].sortable-hover::after{content:"\f140";cursor:pointer;opacity:.7}.wptb-preview-table-mobile[data-wptb-sortable-table-horizontal="1"] td[data-sorted-horizontal=ask]::after,.wptb-preview-table[data-wptb-sortable-table-horizontal="1"] td[data-sorted-horizontal=ask]::after{content:"\f141";left:0}.wptb-preview-table-mobile[data-wptb-sortable-table-horizontal="1"] td[data-sorted-horizontal=desk].sortable-hover::after,.wptb-preview-table[data-wptb-sortable-table-horizontal="1"] td[data-sorted-horizontal=desk].sortable-hover::after{content:"\f141";cursor:pointer;opacity:.7}.wptb-preview-table-mobile[data-wptb-sortable-table-horizontal="1"] td[data-sorted-horizontal=desk]::after,.wptb-preview-table[data-wptb-sortable-table-horizontal="1"] td[data-sorted-horizontal=desk]::after{content:"\f139"}.wptb-preview-table-mobile[data-wptb-sortable-table-horizontal="1"] td[data-sorted-horizontal=ask].sortable-hover::after,.wptb-preview-table[data-wptb-sortable-table-horizontal="1"] td[data-sorted-horizontal=ask].sortable-hover::after{content:"\f139";cursor:pointer;opacity:.7}.wptb-lazy-load-img[data-wptb-lazy-load-status=false]{opacity:0}.wptb-lazy-load-img[data-wptb-lazy-load-status=true]{opacity:1}.wptb-lazy-load-buffer-element-container{position:relative}.wptb-lazy-load-buffer-element{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:5px}.wptb-lazy-load-buffer-element,.wptb-lazy-load-buffer-icon-wrapper{display:flex;justify-content:center;align-items:center}.wptb-lazy-load-buffer-icon-wrapper[data-wptb-lazy-load-icon-animation=heartBeat] svg{-webkit-animation:wptb-beat 1.3s ease-out forwards infinite;animation:wptb-beat 1.3s ease-out forwards infinite}.wptb-lazy-load-buffer-icon-wrapper[data-wptb-lazy-load-icon-animation=rotate] svg{-webkit-animation:wptb-rotate-simple 1s ease-out forwards infinite;animation:wptb-rotate-simple 1s ease-out forwards infinite}.wptb-lazy-load-buffer-icon-wrapper[data-wptb-lazy-load-icon-animation=jump] svg{-webkit-animation:wptb-jump .5s ease-out alternate infinite;animation:wptb-jump .5s ease-out alternate infinite}.wptb-lazy-load-buffer-icon-wrapper[data-wptb-lazy-load-icon-animation=flip] svg{-webkit-animation:wptb-flip 1s ease-out forwards infinite;animation:wptb-flip 1s ease-out forwards infinite}.wptb-plugin-width-full{width:100%!important}.wptb-scroll-indicator-container{position:absolute;width:50px;height:100%;background-color:red;top:0}
888
- <?php } ?>
889
- <?php if( true == ampforwp_get_setting('ampforwp-footer-top') ) { ?>
890
- .btt{
891
- position: fixed;
892
- <?php if( (is_single() && ampforwp_get_setting('enable-single-social-icons')) || (is_page() && true == ampforwp_get_setting('ampforwp-page-sticky-social')) ){ ?>
893
- bottom: 55px;
894
- <?php } else { ?>
895
- bottom: 20px;
896
- <?php } ?>
897
- right: 20px;
898
- background: rgba(71, 71, 71, 0.5);
899
- color: #fff;
900
- border-radius: 100%;
901
- width: 50px;
902
- height: 50px;
903
- text-decoration: none;
904
- }
905
- .btt:hover{color:#fff;background:#474747;}
906
- .btt:before{
907
- content: '\25be';
908
- display: block;
909
- font-size: 35px;
910
- font-weight: 600;
911
- color: #fff;
912
- transform: rotate(180deg);
913
- text-align: center;
914
- line-height: 1.5;
915
- }
916
- <?php }
917
- if ( ! ampforwp_woocommerce_conditional_check() ) {
918
- if ( is_singular() || is_home() && true == ampforwp_get_setting( 'amp-frontpage-select-option' ) && ampforwp_get_blog_details() == false && ! checkAMPforPageBuilderStatus( ampforwp_get_the_ID() ) ) { ?>
919
- /* Tables */
920
- .wp-block-table{ min-width :240px;}
921
- table.wp-block-table.alignright,table.wp-block-table.alignleft,table.wp-block-table.aligncenter{width: auto;}
922
- table.wp-block-table.aligncenter{width: 50%;}
923
- table.wp-block-table.alignfull,table.wp-block-table.alignwide{display: table;}
924
- table { overflow-x: auto; }
925
- table a:link { font-weight: bold; text-decoration: none; }
926
- table a:visited { color: #999999; font-weight: bold; text-decoration: none; }
927
- table a:active, table a:hover { color: #bd5a35; text-decoration: underline; }
928
- table { font-family: Arial, Helvetica, sans-serif; color: #666; font-size: 15px; text-shadow: 1px 1px 0px #fff; background: inherit; margin: 0px; width: 95%; }