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 | 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 +357 -357
- README.md +250 -244
- accelerated-moblie-pages.php +1604 -1604
- base_remover/base_remover.php +110 -110
- changelog.txt +4246 -4240
- classes/ampforwp-fields.php +8 -8
- classes/class-ampforwp-embedly-sanitizer.php +51 -51
- classes/class-ampforwp-fields.php +475 -475
- classes/class-ampforwp-infinite-scroll.php +232 -232
- classes/class-ampforwp-instagram-sanitizer.php +67 -67
- classes/class-ampforwp-photo-gallery-embed.php +298 -298
- classes/class-ampforwp-rev-slider.php +527 -527
- classes/class-ampforwp-slide-anything-embed.php +320 -320
- classes/class-ampforwp-walker-nav-menu.php +98 -98
- classes/class-ampforwp-youtube-embed.php +172 -172
- classes/class-init.php +15 -15
- components/author-box/author-box.php +182 -182
- components/breadcrumb/breadcrumb.php +276 -276
- components/categories-tags/categories-tags.php +109 -109
- components/comments/comments.php +267 -267
- components/components-core.php +0 -887
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.
|
7 |
-
Stable tag: 1.0.77.
|
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.
|
201 |
-
* Fixed:
|
202 |
-
* Fixed:
|
203 |
-
* Fixed:
|
204 |
-
*
|
205 |
-
|
206 |
-
= 1.0.77.
|
207 |
-
* Fixed:
|
208 |
-
* Fixed:
|
209 |
-
* Fixed:
|
210 |
-
* Fixed:
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
* Fixed:
|
216 |
-
* Fixed:
|
217 |
-
* Fixed:
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
* Fixed:
|
222 |
-
*
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
* Improvements:
|
229 |
-
|
230 |
-
|
231 |
-
* Fixed:
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
*
|
236 |
-
* Fixed:
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
* Fixed:
|
242 |
-
* Fixed:
|
243 |
-
|
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.
|
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.
|
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]&=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]&=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]&=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]&=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]&=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 & 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 & 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]&=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]&=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]&=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]&=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]&=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 & 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 & 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.
|
4 |
-
* Fixed:
|
5 |
-
* Fixed:
|
6 |
-
* Fixed:
|
7 |
-
*
|
8 |
-
|
9 |
-
= 1.0.77.
|
10 |
-
* Fixed:
|
11 |
-
* Fixed:
|
12 |
-
* Fixed:
|
13 |
-
* Fixed:
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
* Fixed:
|
19 |
-
* Fixed:
|
20 |
-
* Fixed:
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
* Fixed:
|
25 |
-
*
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
* Improvements:
|
32 |
-
|
33 |
-
|
34 |
-
* Fixed:
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
*
|
39 |
-
* Fixed:
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
* Fixed:
|
45 |
-
* Fixed:
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
* Fixed:
|
50 |
-
* Fixed:
|
51 |
-
* Fixed:
|
52 |
-
* Fixed: Debug Warnings -
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
*
|
57 |
-
*
|
58 |
-
*
|
59 |
-
* Fixed:
|
60 |
-
|
61 |
-
|
62 |
-
*
|
63 |
-
*
|
64 |
-
|
65 |
-
|
66 |
-
*
|
67 |
-
* Fixed:
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
* Improvements:
|
77 |
-
* Fixed:
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
*
|
82 |
-
*
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
*
|
88 |
-
* Fixed:
|
89 |
-
|
90 |
-
|
91 |
-
*
|
92 |
-
*
|
93 |
-
*
|
94 |
-
|
95 |
-
|
96 |
-
*
|
97 |
-
* Fixed:
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
* Improvements: Added
|
107 |
-
*
|
108 |
-
|
109 |
-
|
110 |
-
*
|
111 |
-
*
|
112 |
-
|
113 |
-
|
114 |
-
* Fixed:
|
115 |
-
* Fixed:
|
116 |
-
* Fixed:
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
* Fixed:
|
121 |
-
* Fixed:
|
122 |
-
* Fixed:
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
* Fixed:
|
128 |
-
* Fixed:
|
129 |
-
* Fixed:
|
130 |
-
* Fixed:
|
131 |
-
|
132 |
-
= 1.0.77.
|
133 |
-
* Fixed:
|
134 |
-
* Fixed:
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
* Fixed:
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
* Fixed:
|
147 |
-
* Fixed:
|
148 |
-
* Fixed:
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
Fixed:
|
155 |
-
Fixed:
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
Fixed:
|
161 |
-
Fixed:
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
*
|
181 |
-
*
|
182 |
-
* Fixed:
|
183 |
-
* Fixed:
|
184 |
-
|
185 |
-
|
186 |
-
*
|
187 |
-
*
|
188 |
-
|
189 |
-
|
190 |
-
*
|
191 |
-
*
|
192 |
-
*
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
*
|
199 |
-
|
200 |
-
|
201 |
-
* Fixed:
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
* Fixed:
|
206 |
-
* Fixed:
|
207 |
-
* Fixed:
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
* Fixed:
|
212 |
-
* Fixed:
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
*
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
*
|
225 |
-
*
|
226 |
-
|
227 |
-
= 1.0.77.
|
228 |
-
* Improvements: Added
|
229 |
-
* Fixed:
|
230 |
-
* Fixed:
|
231 |
-
* Fixed:
|
232 |
-
|
233 |
-
= 1.0.77.
|
234 |
-
*
|
235 |
-
* Fixed:
|
236 |
-
* Fixed:
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
* Fixed:
|
241 |
-
* Fixed:
|
242 |
-
* Fixed:
|
243 |
-
|
244 |
-
= 1.0.77.
|
245 |
-
* Fixed:
|
246 |
-
* Fixed:
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
* Fixed:
|
252 |
-
* Fixed:
|
253 |
-
|
254 |
-
= 1.0.77.
|
255 |
-
* Improvements:
|
256 |
-
*
|
257 |
-
* Fixed:
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
*
|
262 |
-
*
|
263 |
-
* Fixed:
|
264 |
-
|
265 |
-
|
266 |
-
*
|
267 |
-
|
268 |
-
|
269 |
-
*
|
270 |
-
*
|
271 |
-
*
|
272 |
-
* Fixed:
|
273 |
-
|
274 |
-
|
275 |
-
*
|
276 |
-
*
|
277 |
-
*
|
278 |
-
* Fixed:
|
279 |
-
|
280 |
-
|
281 |
-
*
|
282 |
-
|
283 |
-
|
284 |
-
* Fixed:
|
285 |
-
|
286 |
-
= 1.0.77.
|
287 |
-
*
|
288 |
-
|
289 |
-
|
290 |
-
* Fixed:
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
*
|
296 |
-
*
|
297 |
-
* Fixed:
|
298 |
-
* Fixed:
|
299 |
-
|
300 |
-
|
301 |
-
*
|
302 |
-
*
|
303 |
-
* Fixed:
|
304 |
-
|
305 |
-
|
306 |
-
*
|
307 |
-
*
|
308 |
-
*
|
309 |
-
* Fixed:
|
310 |
-
|
311 |
-
|
312 |
-
*
|
313 |
-
*
|
314 |
-
*
|
315 |
-
* Fixed:
|
316 |
-
|
317 |
-
|
318 |
-
* Fixed:
|
319 |
-
|
320 |
-
|
321 |
-
*
|
322 |
-
|
323 |
-
|
324 |
-
* Fixed:
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
*
|
330 |
-
|
331 |
-
|
332 |
-
*
|
333 |
-
|
334 |
-
|
335 |
-
* Fixed:
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
* Fixed:
|
341 |
-
* Fixed:
|
342 |
-
* Fixed:
|
343 |
-
* Fixed:
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
*
|
348 |
-
*
|
349 |
-
*
|
350 |
-
*
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
* Improvements: Added an option to
|
356 |
-
* Improvements: Added
|
357 |
-
*
|
358 |
-
*
|
359 |
-
|
360 |
-
|
361 |
-
* Improvements: Added
|
362 |
-
*
|
363 |
-
*
|
364 |
-
*
|
365 |
-
*
|
366 |
-
|
367 |
-
|
368 |
-
*
|
369 |
-
*
|
370 |
-
*
|
371 |
-
*
|
372 |
-
|
373 |
-
|
374 |
-
*
|
375 |
-
|
376 |
-
|
377 |
-
*
|
378 |
-
|
379 |
-
|
380 |
-
*
|
381 |
-
|
382 |
-
|
383 |
-
* Fixed:
|
384 |
-
|
385 |
-
|
386 |
-
*
|
387 |
-
|
388 |
-
|
389 |
-
*
|
390 |
-
*
|
391 |
-
*
|
392 |
-
*
|
393 |
-
|
394 |
-
|
395 |
-
*
|
396 |
-
*
|
397 |
-
|
398 |
-
|
399 |
-
*
|
400 |
-
*
|
401 |
-
* Fixed:
|
402 |
-
* Fixed:
|
403 |
-
|
404 |
-
|
405 |
-
* Fixed:
|
406 |
-
* Fixed:
|
407 |
-
* Fixed:
|
408 |
-
* Fixed:
|
409 |
-
|
410 |
-
|
411 |
-
* Fixed:
|
412 |
-
* Fixed:
|
413 |
-
* Fixed:
|
414 |
-
* Fixed:
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
* Fixed:
|
420 |
-
|
421 |
-
|
422 |
-
*
|
423 |
-
|
424 |
-
|
425 |
-
* Fixed:
|
426 |
-
|
427 |
-
|
428 |
-
*
|
429 |
-
|
430 |
-
|
431 |
-
*
|
432 |
-
* Fixed:
|
433 |
-
* Fixed:
|
434 |
-
* Fixed:
|
435 |
-
|
436 |
-
= 1.0.76.
|
437 |
-
*
|
438 |
-
|
439 |
-
|
440 |
-
*
|
441 |
-
|
442 |
-
|
443 |
-
* Fixed: AMP
|
444 |
-
|
445 |
-
|
446 |
-
*
|
447 |
-
|
448 |
-
|
449 |
-
* Fixed:
|
450 |
-
|
451 |
-
|
452 |
-
* Fixed:
|
453 |
-
|
454 |
-
|
455 |
-
* Fixed:
|
456 |
-
|
457 |
-
= 1.0.76 (
|
458 |
-
*
|
459 |
-
* Fixed:
|
460 |
-
* Fixed:
|
461 |
-
* Fixed:
|
462 |
-
|
463 |
-
|
464 |
-
*
|
465 |
-
* Fixed:
|
466 |
-
* Fixed:
|
467 |
-
* Fixed:
|
468 |
-
|
469 |
-
|
470 |
-
* Fixed:
|
471 |
-
* Fixed:
|
472 |
-
* Fixed:
|
473 |
-
* Fixed:
|
474 |
-
|
475 |
-
|
476 |
-
* Fixed:
|
477 |
-
|
478 |
-
|
479 |
-
*
|
480 |
-
*
|
481 |
-
* Fixed:
|
482 |
-
* Fixed:
|
483 |
-
|
484 |
-
= 1.0.
|
485 |
-
*
|
486 |
-
*
|
487 |
-
* Fixed:
|
488 |
-
* Fixed: AMP
|
489 |
-
|
490 |
-
|
491 |
-
* Fixed:
|
492 |
-
* Fixed:
|
493 |
-
|
494 |
-
|
495 |
-
*
|
496 |
-
*
|
497 |
-
*
|
498 |
-
*
|
499 |
-
|
500 |
-
|
501 |
-
*
|
502 |
-
*
|
503 |
-
|
504 |
-
|
505 |
-
*
|
506 |
-
|
507 |
-
|
508 |
-
* Fixed:
|
509 |
-
|
510 |
-
= 1.0.71 (
|
511 |
-
* Fixed:
|
512 |
-
|
513 |
-
|
514 |
-
* Fixed:
|
515 |
-
|
516 |
-
|
517 |
-
* Fixed:
|
518 |
-
* Fixed:
|
519 |
-
* Fixed:
|
520 |
-
|
521 |
-
|
522 |
-
*
|
523 |
-
*
|
524 |
-
* Fixed:
|
525 |
-
* Fixed:
|
526 |
-
|
527 |
-
|
528 |
-
*
|
529 |
-
*
|
530 |
-
* Fixed:
|
531 |
-
* Fixed:
|
532 |
-
* Fixed:
|
533 |
-
* Fixed:
|
534 |
-
* Fixed:
|
535 |
-
* Fixed:
|
536 |
-
* Fixed:
|
537 |
-
|
538 |
-
|
539 |
-
* Fixed:
|
540 |
-
|
541 |
-
|
542 |
-
* Fixed:
|
543 |
-
|
544 |
-
= 1.0.69 (
|
545 |
-
* Fixed:
|
546 |
-
|
547 |
-
|
548 |
-
* Fixed:
|
549 |
-
|
550 |
-
|
551 |
-
* Fixed:
|
552 |
-
* Fixed:
|
553 |
-
|
554 |
-
|
555 |
-
* Fixed:
|
556 |
-
* Fixed:
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
* Fixed:
|
562 |
-
* Fixed:
|
563 |
-
|
564 |
-
|
565 |
-
* Fixed:
|
566 |
-
* Fixed:
|
567 |
-
* Fixed:
|
568 |
-
|
569 |
-
|
570 |
-
*
|
571 |
-
*
|
572 |
-
*
|
573 |
-
*
|
574 |
-
|
575 |
-
|
576 |
-
*
|
577 |
-
*
|
578 |
-
*
|
579 |
-
*
|
580 |
-
*
|
581 |
-
|
582 |
-
|
583 |
-
* Fixed:
|
584 |
-
|
585 |
-
|
586 |
-
* Fixed:
|
587 |
-
|
588 |
-
= 1.0.66.
|
589 |
-
* Fixed:
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
*
|
596 |
-
*
|
597 |
-
|
598 |
-
|
599 |
-
*
|
600 |
-
*
|
601 |
-
*
|
602 |
-
*
|
603 |
-
*
|
604 |
-
* Fixed:
|
605 |
-
* Fixed:
|
606 |
-
|
607 |
-
|
608 |
-
* Fixed:
|
609 |
-
* Fixed:
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
*
|
616 |
-
|
617 |
-
|
618 |
-
*
|
619 |
-
|
620 |
-
|
621 |
-
*
|
622 |
-
*
|
623 |
-
*
|
624 |
-
*
|
625 |
-
*
|
626 |
-
* Fixed:
|
627 |
-
* Fixed:
|
628 |
-
* Fixed:
|
629 |
-
* Fixed:
|
630 |
-
* Fixed:
|
631 |
-
* Fixed:
|
632 |
-
|
633 |
-
|
634 |
-
* Fixed:
|
635 |
-
|
636 |
-
|
637 |
-
* Fixed:
|
638 |
-
|
639 |
-
|
640 |
-
* Fixed:
|
641 |
-
|
642 |
-
|
643 |
-
* Fixed:
|
644 |
-
* Fixed:
|
645 |
-
* Fixed:
|
646 |
-
* Fixed:
|
647 |
-
* Fixed:
|
648 |
-
* Fixed:
|
649 |
-
* Fixed:
|
650 |
-
* Fixed:
|
651 |
-
* Fixed:
|
652 |
-
* Fixed:
|
653 |
-
* Fixed:
|
654 |
-
* Fixed:
|
655 |
-
* Fixed:
|
656 |
-
* Fixed:
|
657 |
-
* Fixed: In
|
658 |
-
* Fixed:
|
659 |
-
|
660 |
-
|
661 |
-
*
|
662 |
-
*
|
663 |
-
*
|
664 |
-
*
|
665 |
-
|
666 |
-
|
667 |
-
* Improvement: Added
|
668 |
-
* Improvement: Added
|
669 |
-
* Improvement:
|
670 |
-
* Improvement: Added filter for
|
671 |
-
*
|
672 |
-
*
|
673 |
-
*
|
674 |
-
*
|
675 |
-
*
|
676 |
-
*
|
677 |
-
* Fixed:
|
678 |
-
* Fixed:
|
679 |
-
* Fixed:
|
680 |
-
|
681 |
-
|
682 |
-
* Fixed:
|
683 |
-
* Fixed:
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
* Fixed:
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
* Improvement:
|
693 |
-
*
|
694 |
-
*
|
695 |
-
|
696 |
-
|
697 |
-
*
|
698 |
-
*
|
699 |
-
*
|
700 |
-
|
701 |
-
|
702 |
-
* Fixed:
|
703 |
-
|
704 |
-
|
705 |
-
* Fixed:
|
706 |
-
|
707 |
-
= 1.0.61 (
|
708 |
-
*
|
709 |
-
|
710 |
-
|
711 |
-
* Fixed:
|
712 |
-
|
713 |
-
|
714 |
-
*
|
715 |
-
* Fixed:
|
716 |
-
* Fixed:
|
717 |
-
* Fixed:
|
718 |
-
* Fixed:
|
719 |
-
|
720 |
-
|
721 |
-
*
|
722 |
-
* Fixed:
|
723 |
-
* Fixed:
|
724 |
-
* Fixed:
|
725 |
-
|
726 |
-
|
727 |
-
*
|
728 |
-
* Fixed:
|
729 |
-
* Fixed:
|
730 |
-
|
731 |
-
|
732 |
-
*
|
733 |
-
*
|
734 |
-
*
|
735 |
-
*
|
736 |
-
|
737 |
-
|
738 |
-
*
|
739 |
-
*
|
740 |
-
*
|
741 |
-
*
|
742 |
-
*
|
743 |
-
* Fixed:
|
744 |
-
* Fixed:
|
745 |
-
* Fixed:
|
746 |
-
|
747 |
-
|
748 |
-
* Fixed:
|
749 |
-
* Fixed:
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
* Fixed:
|
756 |
-
|
757 |
-
= 1.0.58.
|
758 |
-
* Fixed:
|
759 |
-
|
760 |
-
= 1.0.58.
|
761 |
-
* Fixed:
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
* Fixed:
|
768 |
-
* Fixed:
|
769 |
-
|
770 |
-
|
771 |
-
*
|
772 |
-
* Fixed:
|
773 |
-
* Fixed:
|
774 |
-
* Fixed:
|
775 |
-
* Fixed:
|
776 |
-
* Fixed:
|
777 |
-
|
778 |
-
|
779 |
-
* Fixed:
|
780 |
-
* Fixed:
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
*
|
787 |
-
|
788 |
-
|
789 |
-
* Fixed:
|
790 |
-
|
791 |
-
|
792 |
-
*
|
793 |
-
*
|
794 |
-
* Fixed:
|
795 |
-
* Fixed:
|
796 |
-
|
797 |
-
|
798 |
-
* Fixed:
|
799 |
-
|
800 |
-
|
801 |
-
* Fixed:
|
802 |
-
|
803 |
-
|
804 |
-
* Fixed:
|
805 |
-
|
806 |
-
|
807 |
-
* Fixed:
|
808 |
-
* Fixed:
|
809 |
-
* Fixed:
|
810 |
-
* Fixed:
|
811 |
-
* Fixed:
|
812 |
-
* Fixed:
|
813 |
-
* Fixed:
|
814 |
-
* Fixed:
|
815 |
-
* Fixed:
|
816 |
-
* Fixed:
|
817 |
-
* Fixed:
|
818 |
-
|
819 |
-
|
820 |
-
* Fixed:
|
821 |
-
|
822 |
-
|
823 |
-
*
|
824 |
-
|
825 |
-
|
826 |
-
*
|
827 |
-
|
828 |
-
|
829 |
-
*
|
830 |
-
*
|
831 |
-
*
|
832 |
-
*
|
833 |
-
* Fixed:
|
834 |
-
* Fixed:
|
835 |
-
* Fixed:
|
836 |
-
* Fixed:
|
837 |
-
* Fixed:
|
838 |
-
* Fixed:
|
839 |
-
* Fixed:
|
840 |
-
* Fixed:
|
841 |
-
* Fixed:
|
842 |
-
|
843 |
-
|
844 |
-
* Fixed:
|
845 |
-
|
846 |
-
|
847 |
-
*
|
848 |
-
|
849 |
-
|
850 |
-
* Fixed:
|
851 |
-
|
852 |
-
|
853 |
-
*
|
854 |
-
*
|
855 |
-
* Fixed:
|
856 |
-
* Fixed:
|
857 |
-
* Fixed:
|
858 |
-
|
859 |
-
|
860 |
-
*
|
861 |
-
*
|
862 |
-
*
|
863 |
-
*
|
864 |
-
|
865 |
-
|
866 |
-
*
|
867 |
-
*
|
868 |
-
*
|
869 |
-
*
|
870 |
-
* Fixed:
|
871 |
-
* Fixed:
|
872 |
-
* Fixed:
|
873 |
-
* Fixed:
|
874 |
-
* Fixed:
|
875 |
-
|
876 |
-
|
877 |
-
* Fixed:
|
878 |
-
|
879 |
-
|
880 |
-
* Fixed:
|
881 |
-
|
882 |
-
|
883 |
-
* Fixed:
|
884 |
-
|
885 |
-
|
886 |
-
* Fixed:
|
887 |
-
* Fixed:
|
888 |
-
* Fixed:
|
889 |
-
* Fixed:
|
890 |
-
* Fixed:
|
891 |
-
|
892 |
-
|
893 |
-
* Fixed:
|
894 |
-
|
895 |
-
|
896 |
-
* Fixed:
|
897 |
-
|
898 |
-
|
899 |
-
* Fixed:
|
900 |
-
|
901 |
-
|
902 |
-
* Fixed:
|
903 |
-
* Fixed:
|
904 |
-
* Fixed:
|
905 |
-
* Fixed:
|
906 |
-
* Fixed:
|
907 |
-
|
908 |
-
|
909 |
-
* Fixed:
|
910 |
-
* Fixed:
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
*
|
917 |
-
|
918 |
-
|
919 |
-
*
|
920 |
-
|
921 |
-
|
922 |
-
*
|
923 |
-
*
|
924 |
-
*
|
925 |
-
*
|
926 |
-
|
927 |
-
|
928 |
-
*
|
929 |
-
*
|
930 |
-
*
|
931 |
-
*
|
932 |
-
|
933 |
-
|
934 |
-
*
|
935 |
-
*
|
936 |
-
*
|
937 |
-
*
|
938 |
-
|
939 |
-
|
940 |
-
*
|
941 |
-
|
942 |
-
|
943 |
-
*
|
944 |
-
|
945 |
-
|
946 |
-
* Improvement:
|
947 |
-
|
948 |
-
|
949 |
-
* Improvement: Added
|
950 |
-
* Improvement: Added
|
951 |
-
*
|
952 |
-
*
|
953 |
-
*
|
954 |
-
*
|
955 |
-
*
|
956 |
-
*
|
957 |
-
* Fixed:
|
958 |
-
* Fixed:
|
959 |
-
* Fixed:
|
960 |
-
* Fixed:
|
961 |
-
* Fixed:
|
962 |
-
|
963 |
-
|
964 |
-
*
|
965 |
-
* Fixed:
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
-
*
|
971 |
-
* Fixed:
|
972 |
-
|
973 |
-
|
974 |
-
|
975 |
-
|
976 |
-
*
|
977 |
-
*
|
978 |
-
*
|
979 |
-
*
|
980 |
-
|
981 |
-
|
982 |
-
*
|
983 |
-
*
|
984 |
-
*
|
985 |
-
*
|
986 |
-
*
|
987 |
-
|
988 |
-
|
989 |
-
*
|
990 |
-
*
|
991 |
-
*
|
992 |
-
* Fixed:
|
993 |
-
|
994 |
-
|
995 |
-
*
|
996 |
-
*
|
997 |
-
*
|
998 |
-
|
999 |
-
|
1000 |
-
* Fixed:
|
1001 |
-
* Fixed:
|
1002 |
-
* Fixed:
|
1003 |
-
* Fixed:
|
1004 |
-
|
1005 |
-
|
1006 |
-
* Fixed:
|
1007 |
-
* Fixed:
|
1008 |
-
|
1009 |
-
|
1010 |
-
*
|
1011 |
-
*
|
1012 |
-
*
|
1013 |
-
* Fixed:
|
1014 |
-
|
1015 |
-
|
1016 |
-
*
|
1017 |
-
*
|
1018 |
-
*
|
1019 |
-
* Fixed:
|
1020 |
-
* Fixed:
|
1021 |
-
* Fixed:
|
1022 |
-
* Fixed:
|
1023 |
-
* Fixed:
|
1024 |
-
* Fixed:
|
1025 |
-
* Fixed:
|
1026 |
-
|
1027 |
-
|
1028 |
-
* Fixed:
|
1029 |
-
* Fixed:
|
1030 |
-
* Fixed:
|
1031 |
-
* Fixed:
|
1032 |
-
|
1033 |
-
|
1034 |
-
* Fixed:
|
1035 |
-
* Fixed:
|
1036 |
-
* Fixed:
|
1037 |
-
* Fixed:
|
1038 |
-
* Fixed:
|
1039 |
-
|
1040 |
-
|
1041 |
-
* Fixed:
|
1042 |
-
* Fixed:
|
1043 |
-
* Fixed:
|
1044 |
-
* Fixed:
|
1045 |
-
|
1046 |
-
|
1047 |
-
* Fixed:
|
1048 |
-
* Fixed:
|
1049 |
-
* Fixed:
|
1050 |
-
* Fixed:
|
1051 |
-
* Fixed:
|
1052 |
-
* Fixed:
|
1053 |
-
* Fixed:
|
1054 |
-
* Fixed:
|
1055 |
-
* Fixed:
|
1056 |
-
* Fixed:
|
1057 |
-
|
1058 |
-
|
1059 |
-
*
|
1060 |
-
*
|
1061 |
-
*
|
1062 |
-
* Fixed:
|
1063 |
-
|
1064 |
-
|
1065 |
-
*
|
1066 |
-
*
|
1067 |
-
*
|
1068 |
-
* Fixed:
|
1069 |
-
* Fixed:
|
1070 |
-
* Fixed:
|
1071 |
-
|
1072 |
-
|
1073 |
-
*
|
1074 |
-
* Fixed:
|
1075 |
-
* Fixed:
|
1076 |
-
* Fixed:
|
1077 |
-
|
1078 |
-
|
1079 |
-
|
1080 |
-
*
|
1081 |
-
* Fixed:
|
1082 |
-
* Fixed:
|
1083 |
-
* Fixed:
|
1084 |
-
|
1085 |
-
|
1086 |
-
*
|
1087 |
-
* Fixed:
|
1088 |
-
* Fixed:
|
1089 |
-
* Fixed:
|
1090 |
-
* Fixed:
|
1091 |
-
* Fixed:
|
1092 |
-
* Fixed:
|
1093 |
-
* Fixed:
|
1094 |
-
* Fixed:
|
1095 |
-
* Fixed:
|
1096 |
-
* Fixed:
|
1097 |
-
|
1098 |
-
|
1099 |
-
*
|
1100 |
-
|
1101 |
-
|
1102 |
-
* Fixed:
|
1103 |
-
|
1104 |
-
|
1105 |
-
*
|
1106 |
-
|
1107 |
-
|
1108 |
-
* Fixed:
|
1109 |
-
* Fixed:
|
1110 |
-
* Fixed:
|
1111 |
-
|
1112 |
-
|
1113 |
-
*
|
1114 |
-
* Fixed:
|
1115 |
-
* Fixed:
|
1116 |
-
|
1117 |
-
|
1118 |
-
|
1119 |
-
|
1120 |
-
|
1121 |
-
*
|
1122 |
-
|
1123 |
-
|
1124 |
-
* Fixed:
|
1125 |
-
|
1126 |
-
|
1127 |
-
*
|
1128 |
-
* Fixed:
|
1129 |
-
* Fixed:
|
1130 |
-
|
1131 |
-
|
1132 |
-
* Fixed:
|
1133 |
-
* Fixed:
|
1134 |
-
* Fixed:
|
1135 |
-
* Fixed:
|
1136 |
-
|
1137 |
-
|
1138 |
-
*
|
1139 |
-
*
|
1140 |
-
*
|
1141 |
-
*
|
1142 |
-
*
|
1143 |
-
|
1144 |
-
|
1145 |
-
*
|
1146 |
-
*
|
1147 |
-
*
|
1148 |
-
*
|
1149 |
-
|
1150 |
-
|
1151 |
-
* Fixed:
|
1152 |
-
* Fixed:
|
1153 |
-
|
1154 |
-
|
1155 |
-
* Fixed:
|
1156 |
-
|
1157 |
-
|
1158 |
-
*
|
1159 |
-
|
1160 |
-
|
1161 |
-
* Fixed:
|
1162 |
-
|
1163 |
-
|
1164 |
-
|
1165 |
-
* Improvement:
|
1166 |
-
*
|
1167 |
-
* Fixed: AMP
|
1168 |
-
* Fixed:
|
1169 |
-
|
1170 |
-
|
1171 |
-
*
|
1172 |
-
* Fixed:
|
1173 |
-
* Fixed:
|
1174 |
-
* Fixed:
|
1175 |
-
* Fixed:
|
1176 |
-
|
1177 |
-
|
1178 |
-
* Fixed:
|
1179 |
-
|
1180 |
-
|
1181 |
-
*
|
1182 |
-
|
1183 |
-
|
1184 |
-
* Fixed:
|
1185 |
-
|
1186 |
-
|
1187 |
-
*
|
1188 |
-
*
|
1189 |
-
|
1190 |
-
|
1191 |
-
*
|
1192 |
-
*
|
1193 |
-
* Fixed:
|
1194 |
-
* Fixed:
|
1195 |
-
|
1196 |
-
|
1197 |
-
*
|
1198 |
-
*
|
1199 |
-
* Fixed:
|
1200 |
-
* Fixed:
|
1201 |
-
* Fixed:
|
1202 |
-
* Fixed:
|
1203 |
-
* Fixed:
|
1204 |
-
|
1205 |
-
|
1206 |
-
* Fixed:
|
1207 |
-
* Fixed:
|
1208 |
-
* Fixed:
|
1209 |
-
* Fixed:
|
1210 |
-
|
1211 |
-
|
1212 |
-
* Fixed:
|
1213 |
-
* Fixed: Need to
|
1214 |
-
* Fixed:
|
1215 |
-
* Fixed:
|
1216 |
-
* Fixed:
|
1217 |
-
|
1218 |
-
|
1219 |
-
* Fixed:
|
1220 |
-
* Fixed:
|
1221 |
-
|
1222 |
-
|
1223 |
-
|
1224 |
-
|
1225 |
-
* Fixed:
|
1226 |
-
* Fixed:
|
1227 |
-
|
1228 |
-
|
1229 |
-
* Fixed:
|
1230 |
-
* Fixed:
|
1231 |
-
* Fixed:
|
1232 |
-
* Fixed:
|
1233 |
-
* Fixed:
|
1234 |
-
* Fixed:
|
1235 |
-
|
1236 |
-
|
1237 |
-
* Fixed:
|
1238 |
-
|
1239 |
-
|
1240 |
-
* Fixed:
|
1241 |
-
|
1242 |
-
= 1.0.
|
1243 |
-
*
|
1244 |
-
|
1245 |
-
|
1246 |
-
|
1247 |
-
|
1248 |
-
|
1249 |
-
*
|
1250 |
-
* Fixed:
|
1251 |
-
* Fixed:
|
1252 |
-
|
1253 |
-
|
1254 |
-
|
1255 |
-
* Fixed:
|
1256 |
-
|
1257 |
-
|
1258 |
-
*
|
1259 |
-
|
1260 |
-
|
1261 |
-
* Fixed:
|
1262 |
-
|
1263 |
-
|
1264 |
-
|
1265 |
-
|
1266 |
-
*
|
1267 |
-
*
|
1268 |
-
*
|
1269 |
-
*
|
1270 |
-
|
1271 |
-
|
1272 |
-
*
|
1273 |
-
*
|
1274 |
-
*
|
1275 |
-
*
|
1276 |
-
*
|
1277 |
-
* Fixed:
|
1278 |
-
* Fixed:
|
1279 |
-
* Fixed:
|
1280 |
-
* Fixed:
|
1281 |
-
|
1282 |
-
|
1283 |
-
* Fixed:
|
1284 |
-
* Fixed:
|
1285 |
-
|
1286 |
-
|
1287 |
-
|
1288 |
-
|
1289 |
-
|
1290 |
-
*
|
1291 |
-
|
1292 |
-
|
1293 |
-
* Fixed:
|
1294 |
-
|
1295 |
-
|
1296 |
-
*
|
1297 |
-
*
|
1298 |
-
*
|
1299 |
-
* Fixed:
|
1300 |
-
* Fixed:
|
1301 |
-
* Fixed:
|
1302 |
-
* Fixed:
|
1303 |
-
* Fixed:
|
1304 |
-
* Fixed:
|
1305 |
-
* Fixed:
|
1306 |
-
|
1307 |
-
|
1308 |
-
*
|
1309 |
-
*
|
1310 |
-
*
|
1311 |
-
*
|
1312 |
-
|
1313 |
-
|
1314 |
-
*
|
1315 |
-
*
|
1316 |
-
*
|
1317 |
-
*
|
1318 |
-
*
|
1319 |
-
|
1320 |
-
|
1321 |
-
* Fixed:
|
1322 |
-
* Fixed:
|
1323 |
-
* Fixed:
|
1324 |
-
* Fixed:
|
1325 |
-
|
1326 |
-
|
1327 |
-
* Fixed:
|
1328 |
-
* Fixed:
|
1329 |
-
* Fixed:
|
1330 |
-
* Fixed:
|
1331 |
-
* Fixed:
|
1332 |
-
* Fixed:
|
1333 |
-
|
1334 |
-
|
1335 |
-
*
|
1336 |
-
*
|
1337 |
-
* Fixed:
|
1338 |
-
* Fixed:
|
1339 |
-
|
1340 |
-
|
1341 |
-
*
|
1342 |
-
*
|
1343 |
-
* Fixed:
|
1344 |
-
* Fixed:
|
1345 |
-
* Fixed: Need to
|
1346 |
-
* Fixed:
|
1347 |
-
* Fixed:
|
1348 |
-
|
1349 |
-
|
1350 |
-
*
|
1351 |
-
* Fixed: Need to
|
1352 |
-
* Fixed:
|
1353 |
-
* Fixed:
|
1354 |
-
|
1355 |
-
|
1356 |
-
*
|
1357 |
-
* Fixed:
|
1358 |
-
* Fixed:
|
1359 |
-
* Fixed:
|
1360 |
-
* Fixed:
|
1361 |
-
* Fixed:
|
1362 |
-
* Fixed:
|
1363 |
-
|
1364 |
-
|
1365 |
-
*
|
1366 |
-
*
|
1367 |
-
*
|
1368 |
-
*
|
1369 |
-
|
1370 |
-
|
1371 |
-
*
|
1372 |
-
*
|
1373 |
-
*
|
1374 |
-
*
|
1375 |
-
*
|
1376 |
-
* Fixed:
|
1377 |
-
* Fixed:
|
1378 |
-
* Fixed:
|
1379 |
-
* Fixed:
|
1380 |
-
* Fixed:
|
1381 |
-
* Fixed:
|
1382 |
-
|
1383 |
-
|
1384 |
-
* Fixed:
|
1385 |
-
* Fixed:
|
1386 |
-
* Fixed:
|
1387 |
-
* Fixed:
|
1388 |
-
|
1389 |
-
|
1390 |
-
* Fixed:
|
1391 |
-
* Fixed:
|
1392 |
-
* Fixed:
|
1393 |
-
* Fixed:
|
1394 |
-
* Fixed:
|
1395 |
-
* Fixed:
|
1396 |
-
* Fixed:
|
1397 |
-
* Fixed:
|
1398 |
-
* Fixed:
|
1399 |
-
* Fixed:
|
1400 |
-
* Fixed:
|
1401 |
-
* Fixed:
|
1402 |
-
* Fixed: Yoast
|
1403 |
-
* Fixed:
|
1404 |
-
* Fixed:
|
1405 |
-
|
1406 |
-
|
1407 |
-
* Fixed:
|
1408 |
-
* Fixed:
|
1409 |
-
* Fixed:
|
1410 |
-
* Fixed:
|
1411 |
-
|
1412 |
-
|
1413 |
-
* Fixed:
|
1414 |
-
* Fixed:
|
1415 |
-
* Fixed:
|
1416 |
-
* Fixed:
|
1417 |
-
* Fixed:
|
1418 |
-
* Fixed:
|
1419 |
-
|
1420 |
-
|
1421 |
-
*
|
1422 |
-
* Fixed:
|
1423 |
-
* Fixed:
|
1424 |
-
* Fixed:
|
1425 |
-
|
1426 |
-
|
1427 |
-
*
|
1428 |
-
* Fixed: Need to
|
1429 |
-
* Fixed:
|
1430 |
-
* Fixed:
|
1431 |
-
* Fixed:
|
1432 |
-
* Fixed:
|
1433 |
-
|
1434 |
-
|
1435 |
-
* Fixed:
|
1436 |
-
* Fixed:
|
1437 |
-
* Fixed:
|
1438 |
-
* Fixed:
|
1439 |
-
|
1440 |
-
|
1441 |
-
* Fixed:
|
1442 |
-
* Fixed:
|
1443 |
-
* Fixed:
|
1444 |
-
* Fixed:
|
1445 |
-
* Fixed:
|
1446 |
-
|
1447 |
-
|
1448 |
-
*
|
1449 |
-
*
|
1450 |
-
* Fixed:
|
1451 |
-
* Fixed:
|
1452 |
-
|
1453 |
-
|
1454 |
-
*
|
1455 |
-
*
|
1456 |
-
* Fixed:
|
1457 |
-
* Fixed:
|
1458 |
-
* Fixed:
|
1459 |
-
* Fixed:
|
1460 |
-
* Fixed:
|
1461 |
-
* Fixed:
|
1462 |
-
* Fixed:
|
1463 |
-
* Fixed:
|
1464 |
-
|
1465 |
-
|
1466 |
-
* Fixed:
|
1467 |
-
* Fixed:
|
1468 |
-
* Fixed:
|
1469 |
-
* Fixed:
|
1470 |
-
|
1471 |
-
= 0.9.98.
|
1472 |
-
*
|
1473 |
-
*
|
1474 |
-
* Fixed:
|
1475 |
-
* Fixed:
|
1476 |
-
|
1477 |
-
|
1478 |
-
|
1479 |
-
|
1480 |
-
*
|
1481 |
-
*
|
1482 |
-
*
|
1483 |
-
*
|
1484 |
-
|
1485 |
-
|
1486 |
-
*
|
1487 |
-
*
|
1488 |
-
*
|
1489 |
-
*
|
1490 |
-
* Fixed:
|
1491 |
-
* Fixed:
|
1492 |
-
* Fixed:
|
1493 |
-
* Fixed:
|
1494 |
-
* Fixed:
|
1495 |
-
* Fixed:
|
1496 |
-
* Fixed:
|
1497 |
-
* Fixed:
|
1498 |
-
* Fixed:
|
1499 |
-
* Fixed:
|
1500 |
-
* Fixed:
|
1501 |
-
* Fixed: Pretty Permalinks for Twitter Share?
|
1502 |
-
|
1503 |
-
|
1504 |
-
*
|
1505 |
-
* Fixed:
|
1506 |
-
* Fixed:
|
1507 |
-
|
1508 |
-
|
1509 |
-
|
1510 |
-
* Improvements:
|
1511 |
-
* Fixed:
|
1512 |
-
* Fixed:
|
1513 |
-
|
1514 |
-
|
1515 |
-
*
|
1516 |
-
*
|
1517 |
-
* Fixed:
|
1518 |
-
* Fixed:
|
1519 |
-
* Fixed:
|
1520 |
-
* Fixed:
|
1521 |
-
|
1522 |
-
|
1523 |
-
*
|
1524 |
-
*
|
1525 |
-
*
|
1526 |
-
*
|
1527 |
-
|
1528 |
-
|
1529 |
-
* Improvements: Need to
|
1530 |
-
* Improvements:
|
1531 |
-
* Improvements:
|
1532 |
-
* Improvements: Need to
|
1533 |
-
* Improvements: Need to
|
1534 |
-
* Improvements:
|
1535 |
-
* Improvements:
|
1536 |
-
* Improvements:
|
1537 |
-
* Improvements:
|
1538 |
-
* Improvements:
|
1539 |
-
*
|
1540 |
-
*
|
1541 |
-
*
|
1542 |
-
*
|
1543 |
-
*
|
1544 |
-
*
|
1545 |
-
* Fixed:
|
1546 |
-
* Fixed:
|
1547 |
-
* Fixed: Need to
|
1548 |
-
* Fixed: Need to
|
1549 |
-
* Fixed:
|
1550 |
-
* Fixed:
|
1551 |
-
* Fixed:
|
1552 |
-
* Fixed:
|
1553 |
-
|
1554 |
-
|
1555 |
-
*
|
1556 |
-
*
|
1557 |
-
*
|
1558 |
-
*
|
1559 |
-
|
1560 |
-
|
1561 |
-
*
|
1562 |
-
*
|
1563 |
-
*
|
1564 |
-
*
|
1565 |
-
*
|
1566 |
-
*
|
1567 |
-
* Fixed:
|
1568 |
-
* Fixed:
|
1569 |
-
* Fixed:
|
1570 |
-
* Fixed:
|
1571 |
-
* Fixed:
|
1572 |
-
* Fixed:
|
1573 |
-
* Fixed:
|
1574 |
-
* Fixed:
|
1575 |
-
* Fixed:
|
1576 |
-
* Fixed:
|
1577 |
-
* Fixed:
|
1578 |
-
* Fixed:
|
1579 |
-
* Fixed:
|
1580 |
-
* Fixed:
|
1581 |
-
* Fixed:
|
1582 |
-
* Fixed:
|
1583 |
-
* Fixed:
|
1584 |
-
* Fixed:
|
1585 |
-
* Fixed:
|
1586 |
-
* Fixed:
|
1587 |
-
|
1588 |
-
|
1589 |
-
*
|
1590 |
-
*
|
1591 |
-
* Fixed:
|
1592 |
-
* Fixed:
|
1593 |
-
|
1594 |
-
|
1595 |
-
*
|
1596 |
-
*
|
1597 |
-
|
1598 |
-
|
1599 |
-
*
|
1600 |
-
*
|
1601 |
-
*
|
1602 |
-
*
|
1603 |
-
|
1604 |
-
|
1605 |
-
* Improvements:
|
1606 |
-
*
|
1607 |
-
*
|
1608 |
-
*
|
1609 |
-
*
|
1610 |
-
*
|
1611 |
-
*
|
1612 |
-
* Fixed:
|
1613 |
-
* Fixed:
|
1614 |
-
* Fixed:
|
1615 |
-
* Fixed:
|
1616 |
-
* Fixed:
|
1617 |
-
* Fixed:
|
1618 |
-
* Fixed:
|
1619 |
-
* Fixed:
|
1620 |
-
* Fixed:
|
1621 |
-
* Fixed:
|
1622 |
-
* Fixed:
|
1623 |
-
* Fixed:
|
1624 |
-
* Fixed:
|
1625 |
-
* Fixed:
|
1626 |
-
|
1627 |
-
|
1628 |
-
*
|
1629 |
-
* Fixed:
|
1630 |
-
* Fixed:
|
1631 |
-
* Fixed:
|
1632 |
-
|
1633 |
-
|
1634 |
-
|
1635 |
-
|
1636 |
-
*
|
1637 |
-
*
|
1638 |
-
*
|
1639 |
-
*
|
1640 |
-
|
1641 |
-
|
1642 |
-
*
|
1643 |
-
*
|
1644 |
-
*
|
1645 |
-
*
|
1646 |
-
* Fixed:
|
1647 |
-
* Fixed:
|
1648 |
-
* Fixed:
|
1649 |
-
* Fixed:
|
1650 |
-
* Fixed:
|
1651 |
-
* Fixed:
|
1652 |
-
* Fixed:
|
1653 |
-
* Fixed:
|
1654 |
-
* Fixed:
|
1655 |
-
* Fixed:
|
1656 |
-
* Fixed:
|
1657 |
-
* Fixed:
|
1658 |
-
* Fixed:
|
1659 |
-
* Fixed:
|
1660 |
-
|
1661 |
-
|
1662 |
-
* Fixed:
|
1663 |
-
* Fixed:
|
1664 |
-
* Fixed:
|
1665 |
-
* Fixed:
|
1666 |
-
|
1667 |
-
|
1668 |
-
* Fixed:
|
1669 |
-
|
1670 |
-
|
1671 |
-
* Fixed:
|
1672 |
-
* Fixed:
|
1673 |
-
|
1674 |
-
|
1675 |
-
|
1676 |
-
|
1677 |
-
*
|
1678 |
-
*
|
1679 |
-
|
1680 |
-
|
1681 |
-
* Improvements:
|
1682 |
-
* Improvements:
|
1683 |
-
* Improvements:
|
1684 |
-
* Improvements:
|
1685 |
-
* Improvements:
|
1686 |
-
* Improvements:
|
1687 |
-
* Improvements:
|
1688 |
-
* Improvements:
|
1689 |
-
* Improvements:
|
1690 |
-
*
|
1691 |
-
*
|
1692 |
-
*
|
1693 |
-
*
|
1694 |
-
*
|
1695 |
-
*
|
1696 |
-
* Fixed:
|
1697 |
-
* Fixed:
|
1698 |
-
* Fixed:
|
1699 |
-
* Fixed:
|
1700 |
-
* Fixed:
|
1701 |
-
* Fixed:
|
1702 |
-
* Fixed:
|
1703 |
-
* Fixed:
|
1704 |
-
|
1705 |
-
|
1706 |
-
* Fixed:
|
1707 |
-
* Fixed:
|
1708 |
-
* Fixed:
|
1709 |
-
* Fixed:
|
1710 |
-
|
1711 |
-
|
1712 |
-
|
1713 |
-
*
|
1714 |
-
*
|
1715 |
-
*
|
1716 |
-
*
|
1717 |
-
|
1718 |
-
|
1719 |
-
*
|
1720 |
-
*
|
1721 |
-
*
|
1722 |
-
*
|
1723 |
-
*
|
1724 |
-
* Fixed:
|
1725 |
-
* Fixed:
|
1726 |
-
* Fixed:
|
1727 |
-
* Fixed:
|
1728 |
-
* Fixed:
|
1729 |
-
* Fixed:
|
1730 |
-
* Fixed:
|
1731 |
-
* Fixed:
|
1732 |
-
* Fixed:
|
1733 |
-
* Fixed:
|
1734 |
-
* Fixed:
|
1735 |
-
* Fixed:
|
1736 |
-
* Fixed:
|
1737 |
-
|
1738 |
-
|
1739 |
-
*
|
1740 |
-
*
|
1741 |
-
*
|
1742 |
-
*
|
1743 |
-
|
1744 |
-
|
1745 |
-
* Improvements:
|
1746 |
-
* Improvements:
|
1747 |
-
* Improvements:
|
1748 |
-
* Improvements:
|
1749 |
-
*
|
1750 |
-
*
|
1751 |
-
*
|
1752 |
-
*
|
1753 |
-
*
|
1754 |
-
*
|
1755 |
-
* Fixed:
|
1756 |
-
* Fixed:
|
1757 |
-
* Fixed:
|
1758 |
-
* Fixed:
|
1759 |
-
* Fixed:
|
1760 |
-
* Fixed:
|
1761 |
-
* Fixed:
|
1762 |
-
* Fixed:
|
1763 |
-
* Fixed:
|
1764 |
-
* Fixed:
|
1765 |
-
|
1766 |
-
|
1767 |
-
*
|
1768 |
-
* Fixed:
|
1769 |
-
* Fixed:
|
1770 |
-
* Fixed:
|
1771 |
-
|
1772 |
-
|
1773 |
-
|
1774 |
-
*
|
1775 |
-
*
|
1776 |
-
*
|
1777 |
-
*
|
1778 |
-
|
1779 |
-
|
1780 |
-
* Improvements:
|
1781 |
-
* Improvements:
|
1782 |
-
* Improvements:
|
1783 |
-
* Improvements:
|
1784 |
-
*
|
1785 |
-
*
|
1786 |
-
*
|
1787 |
-
*
|
1788 |
-
*
|
1789 |
-
*
|
1790 |
-
* Fixed:
|
1791 |
-
* Fixed:
|
1792 |
-
* Fixed:
|
1793 |
-
* Fixed:
|
1794 |
-
* Fixed: Fatal
|
1795 |
-
* Fixed:
|
1796 |
-
* Fixed:
|
1797 |
-
* Fixed:
|
1798 |
-
* Fixed:
|
1799 |
-
* Fixed:
|
1800 |
-
* Fixed:
|
1801 |
-
* Fixed:
|
1802 |
-
* Fixed:
|
1803 |
-
* Fixed:
|
1804 |
-
* Fixed:
|
1805 |
-
* Fixed:
|
1806 |
-
* Fixed:
|
1807 |
-
* Fixed:
|
1808 |
-
* Fixed:
|
1809 |
-
* Fixed:
|
1810 |
-
* Fixed:
|
1811 |
-
* Fixed:
|
1812 |
-
* Fixed:
|
1813 |
-
* Fixed:
|
1814 |
-
* Fixed:
|
1815 |
-
* Fixed:
|
1816 |
-
* Fixed:
|
1817 |
-
* Fixed:
|
1818 |
-
* Fixed:
|
1819 |
-
|
1820 |
-
|
1821 |
-
*
|
1822 |
-
* Fixed:
|
1823 |
-
* Fixed:
|
1824 |
-
|
1825 |
-
|
1826 |
-
|
1827 |
-
*
|
1828 |
-
*
|
1829 |
-
*
|
1830 |
-
|
1831 |
-
|
1832 |
-
*
|
1833 |
-
*
|
1834 |
-
*
|
1835 |
-
*
|
1836 |
-
*
|
1837 |
-
*
|
1838 |
-
* Fixed:
|
1839 |
-
* Fixed:
|
1840 |
-
* Fixed:
|
1841 |
-
* Fixed:
|
1842 |
-
* Fixed: When
|
1843 |
-
* Fixed:
|
1844 |
-
* Fixed:
|
1845 |
-
* Fixed:
|
1846 |
-
* Fixed:
|
1847 |
-
* Fixed:
|
1848 |
-
* Fixed:
|
1849 |
-
* Fixed:
|
1850 |
-
* Fixed:
|
1851 |
-
* Fixed:
|
1852 |
-
* Fixed:
|
1853 |
-
* Fixed:
|
1854 |
-
* Fixed:
|
1855 |
-
* Fixed:
|
1856 |
-
* Fixed:
|
1857 |
-
* Fixed:
|
1858 |
-
|
1859 |
-
|
1860 |
-
*
|
1861 |
-
*
|
1862 |
-
*
|
1863 |
-
*
|
1864 |
-
|
1865 |
-
|
1866 |
-
*
|
1867 |
-
*
|
1868 |
-
*
|
1869 |
-
*
|
1870 |
-
* Fixed:
|
1871 |
-
* Fixed:
|
1872 |
-
* Fixed:
|
1873 |
-
* Fixed:
|
1874 |
-
* Fixed:
|
1875 |
-
* Fixed:
|
1876 |
-
* Fixed:
|
1877 |
-
* Fixed:
|
1878 |
-
* Fixed:
|
1879 |
-
* Fixed:
|
1880 |
-
* Fixed:
|
1881 |
-
* Fixed:
|
1882 |
-
* Fixed:
|
1883 |
-
* Fixed:
|
1884 |
-
* Fixed:
|
1885 |
-
* Fixed:
|
1886 |
-
* Fixed:
|
1887 |
-
* Fixed:
|
1888 |
-
* Fixed:
|
1889 |
-
* Fixed:
|
1890 |
-
|
1891 |
-
|
1892 |
-
*
|
1893 |
-
*
|
1894 |
-
*
|
1895 |
-
*
|
1896 |
-
|
1897 |
-
|
1898 |
-
* Improvements: Need
|
1899 |
-
* Improvements:
|
1900 |
-
* Improvements:
|
1901 |
-
*
|
1902 |
-
*
|
1903 |
-
*
|
1904 |
-
*
|
1905 |
-
*
|
1906 |
-
*
|
1907 |
-
* Fixed:
|
1908 |
-
* Fixed:
|
1909 |
-
* Fixed:
|
1910 |
-
* Fixed:
|
1911 |
-
* Fixed:
|
1912 |
-
* Fixed:
|
1913 |
-
* Fixed:
|
1914 |
-
* Fixed:
|
1915 |
-
* Fixed:
|
1916 |
-
* Fixed:
|
1917 |
-
* Fixed:
|
1918 |
-
|
1919 |
-
|
1920 |
-
* Fixed:
|
1921 |
-
|
1922 |
-
|
1923 |
-
*
|
1924 |
-
|
1925 |
-
|
1926 |
-
*
|
1927 |
-
|
1928 |
-
|
1929 |
-
* Improvement:
|
1930 |
-
* Improvement:
|
1931 |
-
* Improvement:
|
1932 |
-
* Improvement:
|
1933 |
-
* Improvement:
|
1934 |
-
* Improvement:
|
1935 |
-
* Improvement:
|
1936 |
-
* Improvement:
|
1937 |
-
* Improvement:
|
1938 |
-
*
|
1939 |
-
*
|
1940 |
-
*
|
1941 |
-
*
|
1942 |
-
*
|
1943 |
-
*
|
1944 |
-
* Fixed:
|
1945 |
-
* Fixed:
|
1946 |
-
* Fixed:
|
1947 |
-
* Fixed:
|
1948 |
-
* Fixed:
|
1949 |
-
* Fixed:
|
1950 |
-
* Fixed:
|
1951 |
-
* Fixed:
|
1952 |
-
* Fixed:
|
1953 |
-
* Fixed:
|
1954 |
-
* Fixed:
|
1955 |
-
* Fixed:
|
1956 |
-
* Fixed:
|
1957 |
-
|
1958 |
-
|
1959 |
-
* Fixed:
|
1960 |
-
* Fixed:
|
1961 |
-
* Fixed:
|
1962 |
-
* Fixed:
|
1963 |
-
|
1964 |
-
|
1965 |
-
* Fixed:
|
1966 |
-
|
1967 |
-
|
1968 |
-
* Fixed:
|
1969 |
-
* Fixed:
|
1970 |
-
* Fixed:
|
1971 |
-
* Fixed:
|
1972 |
-
|
1973 |
-
|
1974 |
-
* Fixed:
|
1975 |
-
* Fixed:
|
1976 |
-
|
1977 |
-
|
1978 |
-
*
|
1979 |
-
*
|
1980 |
-
*
|
1981 |
-
*
|
1982 |
-
|
1983 |
-
|
1984 |
-
* Added:
|
1985 |
-
* Added:
|
1986 |
-
* Added:
|
1987 |
-
* Added:
|
1988 |
-
* Added:
|
1989 |
-
*
|
1990 |
-
*
|
1991 |
-
*
|
1992 |
-
*
|
1993 |
-
*
|
1994 |
-
*
|
1995 |
-
* Fixed:
|
1996 |
-
* Fixed:
|
1997 |
-
* Fixed:
|
1998 |
-
* Fixed:
|
1999 |
-
* Fixed:
|
2000 |
-
* Fixed:
|
2001 |
-
* Fixed:
|
2002 |
-
* Fixed:
|
2003 |
-
* Fixed:
|
2004 |
-
* Fixed:
|
2005 |
-
* Fixed:
|
2006 |
-
* Fixed:
|
2007 |
-
* Fixed:
|
2008 |
-
* Fixed:
|
2009 |
-
* Fixed:
|
2010 |
-
* Fixed:
|
2011 |
-
* Fixed:
|
2012 |
-
* Fixed:
|
2013 |
-
* Fixed:
|
2014 |
-
* Fixed:
|
2015 |
-
* Fixed:
|
2016 |
-
* Fixed:
|
2017 |
-
* Fixed:
|
2018 |
-
|
2019 |
-
|
2020 |
-
* Fixed:
|
2021 |
-
|
2022 |
-
|
2023 |
-
* Fixed:
|
2024 |
-
|
2025 |
-
|
2026 |
-
|
2027 |
-
|
2028 |
-
|
2029 |
-
*
|
2030 |
-
*
|
2031 |
-
|
2032 |
-
|
2033 |
-
*
|
2034 |
-
*
|
2035 |
-
*
|
2036 |
-
*
|
2037 |
-
*
|
2038 |
-
* Fixed:
|
2039 |
-
* Fixed:
|
2040 |
-
* Fixed:
|
2041 |
-
* Fixed:
|
2042 |
-
* Fixed:
|
2043 |
-
* Fixed:
|
2044 |
-
* Fixed:
|
2045 |
-
* Fixed:
|
2046 |
-
* Fixed:
|
2047 |
-
* Fixed:
|
2048 |
-
* Fixed:
|
2049 |
-
* Fixed:
|
2050 |
-
* Fixed:
|
2051 |
-
* Fixed:
|
2052 |
-
* Fixed:
|
2053 |
-
* Fixed:
|
2054 |
-
* Fixed:
|
2055 |
-
* Fixed:
|
2056 |
-
* Fixed:
|
2057 |
-
* Fixed:
|
2058 |
-
* Fixed:
|
2059 |
-
|
2060 |
-
|
2061 |
-
* Fixed:
|
2062 |
-
|
2063 |
-
|
2064 |
-
*
|
2065 |
-
|
2066 |
-
|
2067 |
-
*
|
2068 |
-
|
2069 |
-
|
2070 |
-
*
|
2071 |
-
*
|
2072 |
-
*
|
2073 |
-
*
|
2074 |
-
*
|
2075 |
-
* Fixed:
|
2076 |
-
* Fixed:
|
2077 |
-
* Fixed:
|
2078 |
-
* Fixed:
|
2079 |
-
|
2080 |
-
|
2081 |
-
*
|
2082 |
-
*
|
2083 |
-
*
|
2084 |
-
* Fixed:
|
2085 |
-
|
2086 |
-
|
2087 |
-
*
|
2088 |
-
*
|
2089 |
-
*
|
2090 |
-
* Fixed:
|
2091 |
-
* Fixed:
|
2092 |
-
* Fixed:
|
2093 |
-
* Fixed:
|
2094 |
-
* Fixed:
|
2095 |
-
* Fixed:
|
2096 |
-
|
2097 |
-
|
2098 |
-
*
|
2099 |
-
*
|
2100 |
-
*
|
2101 |
-
* Fixed:
|
2102 |
-
|
2103 |
-
|
2104 |
-
*
|
2105 |
-
*
|
2106 |
-
*
|
2107 |
-
* Fixed:
|
2108 |
-
* Fixed:
|
2109 |
-
* Fixed:
|
2110 |
-
* Fixed:
|
2111 |
-
* Fixed:
|
2112 |
-
* Fixed:
|
2113 |
-
* Fixed:
|
2114 |
-
|
2115 |
-
|
2116 |
-
*
|
2117 |
-
*
|
2118 |
-
*
|
2119 |
-
* Fixed:
|
2120 |
-
|
2121 |
-
|
2122 |
-
*
|
2123 |
-
*
|
2124 |
-
|
2125 |
-
|
2126 |
-
* Fixed:
|
2127 |
-
|
2128 |
-
|
2129 |
-
*
|
2130 |
-
|
2131 |
-
|
2132 |
-
* Fixed:
|
2133 |
-
|
2134 |
-
|
2135 |
-
*
|
2136 |
-
*
|
2137 |
-
*
|
2138 |
-
* Fixed:
|
2139 |
-
* Fixed:
|
2140 |
-
* Fixed:
|
2141 |
-
* Fixed:
|
2142 |
-
* Fixed:
|
2143 |
-
* Fixed:
|
2144 |
-
* Fixed:
|
2145 |
-
|
2146 |
-
|
2147 |
-
*
|
2148 |
-
*
|
2149 |
-
*
|
2150 |
-
*
|
2151 |
-
|
2152 |
-
|
2153 |
-
*
|
2154 |
-
*
|
2155 |
-
*
|
2156 |
-
*
|
2157 |
-
|
2158 |
-
|
2159 |
-
*
|
2160 |
-
*
|
2161 |
-
* Fixed:
|
2162 |
-
* Fixed:
|
2163 |
-
|
2164 |
-
|
2165 |
-
*
|
2166 |
-
*
|
2167 |
-
* Fixed:
|
2168 |
-
* Fixed:
|
2169 |
-
|
2170 |
-
|
2171 |
-
*
|
2172 |
-
* Fixed:
|
2173 |
-
* Fixed:
|
2174 |
-
|
2175 |
-
|
2176 |
-
|
2177 |
-
* Added:
|
2178 |
-
*
|
2179 |
-
*
|
2180 |
-
|
2181 |
-
|
2182 |
-
*
|
2183 |
-
*
|
2184 |
-
*
|
2185 |
-
*
|
2186 |
-
*
|
2187 |
-
|
2188 |
-
|
2189 |
-
* Fixed:
|
2190 |
-
* Fixed:
|
2191 |
-
* Fixed:
|
2192 |
-
|
2193 |
-
|
2194 |
-
|
2195 |
-
|
2196 |
-
|
2197 |
-
*
|
2198 |
-
|
2199 |
-
|
2200 |
-
* Fixed:
|
2201 |
-
|
2202 |
-
|
2203 |
-
*
|
2204 |
-
|
2205 |
-
|
2206 |
-
*
|
2207 |
-
*
|
2208 |
-
* Fixed:
|
2209 |
-
* Fixed:
|
2210 |
-
|
2211 |
-
|
2212 |
-
*
|
2213 |
-
*
|
2214 |
-
* Fixed:
|
2215 |
-
|
2216 |
-
|
2217 |
-
*
|
2218 |
-
*
|
2219 |
-
*
|
2220 |
-
*
|
2221 |
-
|
2222 |
-
|
2223 |
-
*
|
2224 |
-
*
|
2225 |
-
*
|
2226 |
-
*
|
2227 |
-
*
|
2228 |
-
|
2229 |
-
|
2230 |
-
*
|
2231 |
-
* Fixed:
|
2232 |
-
* Fixed:
|
2233 |
-
* Fixed:
|
2234 |
-
|
2235 |
-
|
2236 |
-
|
2237 |
-
|
2238 |
-
*
|
2239 |
-
* Fixed:
|
2240 |
-
* Fixed:
|
2241 |
-
* Fixed:
|
2242 |
-
|
2243 |
-
|
2244 |
-
*
|
2245 |
-
* Fixed:
|
2246 |
-
* Fixed:
|
2247 |
-
|
2248 |
-
|
2249 |
-
*
|
2250 |
-
*
|
2251 |
-
*
|
2252 |
-
* Fixed:
|
2253 |
-
|
2254 |
-
|
2255 |
-
*
|
2256 |
-
*
|
2257 |
-
*
|
2258 |
-
* Fixed:
|
2259 |
-
|
2260 |
-
|
2261 |
-
*
|
2262 |
-
*
|
2263 |
-
*
|
2264 |
-
* Fixed:
|
2265 |
-
|
2266 |
-
|
2267 |
-
|
2268 |
-
|
2269 |
-
*
|
2270 |
-
|
2271 |
-
|
2272 |
-
* Fixed:
|
2273 |
-
|
2274 |
-
|
2275 |
-
* Fixed:
|
2276 |
-
|
2277 |
-
|
2278 |
-
* Fixed:
|
2279 |
-
* Fixed:
|
2280 |
-
* Fixed:
|
2281 |
-
|
2282 |
-
|
2283 |
-
*
|
2284 |
-
*
|
2285 |
-
* Fixed:
|
2286 |
-
* Fixed:
|
2287 |
-
|
2288 |
-
|
2289 |
-
*
|
2290 |
-
*
|
2291 |
-
|
2292 |
-
|
2293 |
-
*
|
2294 |
-
*
|
2295 |
-
* Fixed:
|
2296 |
-
* Fixed:
|
2297 |
-
|
2298 |
-
|
2299 |
-
*
|
2300 |
-
*
|
2301 |
-
* Fixed:
|
2302 |
-
* Fixed:
|
2303 |
-
* Fixed:
|
2304 |
-
|
2305 |
-
|
2306 |
-
* Fixed:
|
2307 |
-
* Fixed:
|
2308 |
-
|
2309 |
-
|
2310 |
-
|
2311 |
-
|
2312 |
-
* Fixed:
|
2313 |
-
* Fixed:
|
2314 |
-
|
2315 |
-
|
2316 |
-
|
2317 |
-
*
|
2318 |
-
*
|
2319 |
-
* Fixed:
|
2320 |
-
* Fixed:
|
2321 |
-
|
2322 |
-
|
2323 |
-
*
|
2324 |
-
*
|
2325 |
-
* Fixed:
|
2326 |
-
* Fixed:
|
2327 |
-
|
2328 |
-
|
2329 |
-
*
|
2330 |
-
* Fixed:
|
2331 |
-
* Fixed:
|
2332 |
-
|
2333 |
-
|
2334 |
-
|
2335 |
-
*
|
2336 |
-
|
2337 |
-
|
2338 |
-
|
2339 |
-
|
2340 |
-
* Added:
|
2341 |
-
*
|
2342 |
-
|
2343 |
-
|
2344 |
-
*
|
2345 |
-
*
|
2346 |
-
*
|
2347 |
-
*
|
2348 |
-
*
|
2349 |
-
* Fixed:
|
2350 |
-
* Fixed:
|
2351 |
-
* Fixed:
|
2352 |
-
* Fixed:
|
2353 |
-
* Fixed:
|
2354 |
-
* Fixed:
|
2355 |
-
* Fixed:
|
2356 |
-
|
2357 |
-
|
2358 |
-
*
|
2359 |
-
* Fixed:
|
2360 |
-
* Fixed:
|
2361 |
-
* Fixed:
|
2362 |
-
|
2363 |
-
|
2364 |
-
*
|
2365 |
-
* Fixed:
|
2366 |
-
* Fixed:
|
2367 |
-
* Fixed:
|
2368 |
-
* Fixed:
|
2369 |
-
* Fixed:
|
2370 |
-
* Fixed:
|
2371 |
-
* Fixed:
|
2372 |
-
* Fixed:
|
2373 |
-
* Fixed:
|
2374 |
-
|
2375 |
-
|
2376 |
-
* Fixed:
|
2377 |
-
* Fixed:
|
2378 |
-
* Fixed:
|
2379 |
-
* Fixed:
|
2380 |
-
|
2381 |
-
|
2382 |
-
|
2383 |
-
|
2384 |
-
*
|
2385 |
-
*
|
2386 |
-
* Fixed:
|
2387 |
-
* Fixed:
|
2388 |
-
|
2389 |
-
|
2390 |
-
*
|
2391 |
-
*
|
2392 |
-
* Fixed:
|
2393 |
-
* Fixed:
|
2394 |
-
* Fixed:
|
2395 |
-
* Fixed:
|
2396 |
-
* Fixed:
|
2397 |
-
* Fixed:
|
2398 |
-
* Fixed:
|
2399 |
-
* Fixed:
|
2400 |
-
* Fixed:
|
2401 |
-
* Fixed:
|
2402 |
-
* Fixed:
|
2403 |
-
* Fixed:
|
2404 |
-
* Fixed:
|
2405 |
-
* Fixed:
|
2406 |
-
* Fixed:
|
2407 |
-
* Fixed:
|
2408 |
-
* Fixed:
|
2409 |
-
* Fixed:
|
2410 |
-
* Fixed:
|
2411 |
-
* Fixed:
|
2412 |
-
* Fixed:
|
2413 |
-
* Fixed:
|
2414 |
-
* Fixed:
|
2415 |
-
* Fixed:
|
2416 |
-
|
2417 |
-
|
2418 |
-
* Fixed:
|
2419 |
-
* Fixed:
|
2420 |
-
* Fixed:
|
2421 |
-
* Fixed:
|
2422 |
-
|
2423 |
-
|
2424 |
-
|
2425 |
-
* Fixed:
|
2426 |
-
|
2427 |
-
|
2428 |
-
* Fixed:
|
2429 |
-
|
2430 |
-
|
2431 |
-
|
2432 |
-
|
2433 |
-
|
2434 |
-
|
2435 |
-
|
2436 |
-
*
|
2437 |
-
|
2438 |
-
|
2439 |
-
* Fixed:
|
2440 |
-
|
2441 |
-
|
2442 |
-
*
|
2443 |
-
*
|
2444 |
-
* Fixed:
|
2445 |
-
* Fixed:
|
2446 |
-
* Fixed:
|
2447 |
-
* Fixed:
|
2448 |
-
* Fixed:
|
2449 |
-
* Fixed:
|
2450 |
-
* Fixed:
|
2451 |
-
|
2452 |
-
|
2453 |
-
*
|
2454 |
-
*
|
2455 |
-
*
|
2456 |
-
*
|
2457 |
-
|
2458 |
-
|
2459 |
-
*
|
2460 |
-
*
|
2461 |
-
*
|
2462 |
-
*
|
2463 |
-
* Fixed:
|
2464 |
-
*
|
2465 |
-
*
|
2466 |
-
*
|
2467 |
-
* Fixed:
|
2468 |
-
* Fixed:
|
2469 |
-
* Fixed:
|
2470 |
-
* Fixed:
|
2471 |
-
*
|
2472 |
-
|
2473 |
-
|
2474 |
-
* Fixed:
|
2475 |
-
*
|
2476 |
-
* Fixed:
|
2477 |
-
*
|
2478 |
-
|
2479 |
-
|
2480 |
-
* Fixed:
|
2481 |
-
*
|
2482 |
-
* Fixed:
|
2483 |
-
*
|
2484 |
-
* Fixed:
|
2485 |
-
* Added:
|
2486 |
-
*
|
2487 |
-
*
|
2488 |
-
*
|
2489 |
-
*
|
2490 |
-
*
|
2491 |
-
* Added:
|
2492 |
-
* Added:
|
2493 |
-
*
|
2494 |
-
* Added:
|
2495 |
-
*
|
2496 |
-
|
2497 |
-
|
2498 |
-
* Added:
|
2499 |
-
* Fixed:
|
2500 |
-
*
|
2501 |
-
* Fixed:
|
2502 |
-
|
2503 |
-
|
2504 |
-
*
|
2505 |
-
* Fixed:
|
2506 |
-
*
|
2507 |
-
* Fixed: Retina
|
2508 |
-
* Fixed:
|
2509 |
-
*
|
2510 |
-
* Fixed:
|
2511 |
-
*
|
2512 |
-
*
|
2513 |
-
* Fixed:
|
2514 |
-
* Fixed:
|
2515 |
-
* Fixed:
|
2516 |
-
*
|
2517 |
-
* Added:
|
2518 |
-
|
2519 |
-
|
2520 |
-
* Fixed:
|
2521 |
-
|
2522 |
-
|
2523 |
-
*
|
2524 |
-
|
2525 |
-
|
2526 |
-
* Fixed:
|
2527 |
-
|
2528 |
-
|
2529 |
-
* Fixed:
|
2530 |
-
* Added:
|
2531 |
-
*
|
2532 |
-
* Fixed:
|
2533 |
-
* Fixed:
|
2534 |
-
*
|
2535 |
-
* Fixed:
|
2536 |
-
*
|
2537 |
-
|
2538 |
-
|
2539 |
-
*
|
2540 |
-
|
2541 |
-
|
2542 |
-
* Fixed:
|
2543 |
-
|
2544 |
-
|
2545 |
-
*
|
2546 |
-
|
2547 |
-
|
2548 |
-
* Fixed:
|
2549 |
-
*
|
2550 |
-
*
|
2551 |
-
* Fixed:
|
2552 |
-
* Added:
|
2553 |
-
*
|
2554 |
-
*
|
2555 |
-
*
|
2556 |
-
|
2557 |
-
|
2558 |
-
*
|
2559 |
-
|
2560 |
-
|
2561 |
-
*
|
2562 |
-
|
2563 |
-
|
2564 |
-
*
|
2565 |
-
|
2566 |
-
|
2567 |
-
* Fixed:
|
2568 |
-
|
2569 |
-
|
2570 |
-
* Fixed:
|
2571 |
-
* Fixed:
|
2572 |
-
* Fixed:
|
2573 |
-
* Fixed:
|
2574 |
-
|
2575 |
-
= 0.9.97.
|
2576 |
-
* Fixed:
|
2577 |
-
* Fixed:
|
2578 |
-
|
2579 |
-
|
2580 |
-
|
2581 |
-
|
2582 |
-
* Fixed:
|
2583 |
-
* Fixed:
|
2584 |
-
|
2585 |
-
|
2586 |
-
|
2587 |
-
* Fixed:
|
2588 |
-
* Fixed:
|
2589 |
-
* Fixed:
|
2590 |
-
* Fixed:
|
2591 |
-
|
2592 |
-
|
2593 |
-
* Fixed:
|
2594 |
-
* Fixed:
|
2595 |
-
|
2596 |
-
|
2597 |
-
*
|
2598 |
-
* Fixed:
|
2599 |
-
* Fixed:
|
2600 |
-
*
|
2601 |
-
|
2602 |
-
|
2603 |
-
*
|
2604 |
-
*
|
2605 |
-
* Fixed:
|
2606 |
-
* Added:
|
2607 |
-
* Fixed:
|
2608 |
-
*
|
2609 |
-
* Fixed:
|
2610 |
-
*
|
2611 |
-
* Fixed:
|
2612 |
-
*
|
2613 |
-
* Fixed:
|
2614 |
-
* Fixed:
|
2615 |
-
* Fixed:
|
2616 |
-
*
|
2617 |
-
*
|
2618 |
-
*
|
2619 |
-
* Fixed:
|
2620 |
-
* Fixed:
|
2621 |
-
* Fixed:
|
2622 |
-
* Added:
|
2623 |
-
* Added:
|
2624 |
-
* Added:
|
2625 |
-
* Fixed:
|
2626 |
-
* Fixed:
|
2627 |
-
* Fixed:
|
2628 |
-
* Added:
|
2629 |
-
* Added:
|
2630 |
-
* Added:
|
2631 |
-
*
|
2632 |
-
*
|
2633 |
-
* Fixed:
|
2634 |
-
*
|
2635 |
-
*
|
2636 |
-
* Added:
|
2637 |
-
* Added:
|
2638 |
-
*
|
2639 |
-
* Fixed:
|
2640 |
-
*
|
2641 |
-
* Fixed:
|
2642 |
-
*
|
2643 |
-
*
|
2644 |
-
*
|
2645 |
-
*
|
2646 |
-
* Added:
|
2647 |
-
* Fixed:
|
2648 |
-
* Fixed:
|
2649 |
-
* Fixed:
|
2650 |
-
*
|
2651 |
-
*
|
2652 |
-
* Added:
|
2653 |
-
* Fixed:
|
2654 |
-
*
|
2655 |
-
* Fixed:
|
2656 |
-
*
|
2657 |
-
* Fixed:
|
2658 |
-
* Added:
|
2659 |
-
* Fixed:
|
2660 |
-
*
|
2661 |
-
*
|
2662 |
-
* Added:
|
2663 |
-
*
|
2664 |
-
*
|
2665 |
-
* Fixed:
|
2666 |
-
*
|
2667 |
-
*
|
2668 |
-
* Added:
|
2669 |
-
* Added:
|
2670 |
-
* Fixed:
|
2671 |
-
* Fixed:
|
2672 |
-
*
|
2673 |
-
* Fixed:
|
2674 |
-
* Added:
|
2675 |
-
*
|
2676 |
-
*
|
2677 |
-
* Fixed:
|
2678 |
-
*
|
2679 |
-
*
|
2680 |
-
*
|
2681 |
-
*
|
2682 |
-
*
|
2683 |
-
*
|
2684 |
-
*
|
2685 |
-
* Added:
|
2686 |
-
*
|
2687 |
-
* Added:
|
2688 |
-
* Fixed:
|
2689 |
-
*
|
2690 |
-
* Fixed:
|
2691 |
-
*
|
2692 |
-
* Added:
|
2693 |
-
|
2694 |
-
|
2695 |
-
*
|
2696 |
-
* Fixed:
|
2697 |
-
|
2698 |
-
|
2699 |
-
|
2700 |
-
|
2701 |
-
|
2702 |
-
*
|
2703 |
-
|
2704 |
-
|
2705 |
-
*
|
2706 |
-
|
2707 |
-
|
2708 |
-
*
|
2709 |
-
* Added:
|
2710 |
-
* Added:
|
2711 |
-
*
|
2712 |
-
*
|
2713 |
-
* Added:
|
2714 |
-
*
|
2715 |
-
* Added:
|
2716 |
-
*
|
2717 |
-
* Fixed:
|
2718 |
-
*
|
2719 |
-
*
|
2720 |
-
* Fixed:
|
2721 |
-
*
|
2722 |
-
*
|
2723 |
-
*
|
2724 |
-
* Fixed:
|
2725 |
-
* Fixed:
|
2726 |
-
* Fixed:
|
2727 |
-
* Fixed:
|
2728 |
-
*
|
2729 |
-
* Added:
|
2730 |
-
*
|
2731 |
-
*
|
2732 |
-
* Fixed:
|
2733 |
-
* Fixed:
|
2734 |
-
* Fixed:
|
2735 |
-
*
|
2736 |
-
*
|
2737 |
-
*
|
2738 |
-
*
|
2739 |
-
* Fixed:
|
2740 |
-
* Fixed:
|
2741 |
-
*
|
2742 |
-
* Fixed:
|
2743 |
-
* Fixed:
|
2744 |
-
*
|
2745 |
-
* Fixed:
|
2746 |
-
*
|
2747 |
-
*
|
2748 |
-
* Fixed:
|
2749 |
-
* Fixed:
|
2750 |
-
* Fixed:
|
2751 |
-
* Fixed:
|
2752 |
-
*
|
2753 |
-
*
|
2754 |
-
* Fixed:
|
2755 |
-
* Fixed:
|
2756 |
-
* Fixed:
|
2757 |
-
*
|
2758 |
-
* Fixed:
|
2759 |
-
* Added:
|
2760 |
-
* Fixed:
|
2761 |
-
* Fixed:
|
2762 |
-
* Fixed:
|
2763 |
-
*
|
2764 |
-
* Fixed:
|
2765 |
-
*
|
2766 |
-
* Fixed:
|
2767 |
-
* Fixed:
|
2768 |
-
* Fixed:
|
2769 |
-
* Fixed:
|
2770 |
-
* Fixed:
|
2771 |
-
* Fixed:
|
2772 |
-
* Fixed:
|
2773 |
-
* Fixed:
|
2774 |
-
*
|
2775 |
-
* Fixed:
|
2776 |
-
*
|
2777 |
-
* Fixed:
|
2778 |
-
*
|
2779 |
-
*
|
2780 |
-
* Added:
|
2781 |
-
* Fixed:
|
2782 |
-
*
|
2783 |
-
* Fixed:
|
2784 |
-
*
|
2785 |
-
|
2786 |
-
|
2787 |
-
*
|
2788 |
-
*
|
2789 |
-
*
|
2790 |
-
|
2791 |
-
|
2792 |
-
|
2793 |
-
*
|
2794 |
-
*
|
2795 |
-
*
|
2796 |
-
|
2797 |
-
|
2798 |
-
|
2799 |
-
*
|
2800 |
-
|
2801 |
-
|
2802 |
-
*
|
2803 |
-
|
2804 |
-
= 0.9.85
|
2805 |
-
*
|
2806 |
-
|
2807 |
-
|
2808 |
-
*
|
2809 |
-
|
2810 |
-
|
2811 |
-
*
|
2812 |
-
*
|
2813 |
-
* Fixed:
|
2814 |
-
*
|
2815 |
-
*
|
2816 |
-
*
|
2817 |
-
*
|
2818 |
-
*
|
2819 |
-
*
|
2820 |
-
* Fixed:
|
2821 |
-
*
|
2822 |
-
*
|
2823 |
-
*
|
2824 |
-
*
|
2825 |
-
*
|
2826 |
-
* Fixed:
|
2827 |
-
*
|
2828 |
-
*
|
2829 |
-
* Fixed:
|
2830 |
-
*
|
2831 |
-
* Fixed:
|
2832 |
-
* Fixed:
|
2833 |
-
*
|
2834 |
-
* Added:
|
2835 |
-
* Fixed:
|
2836 |
-
* Fixed:
|
2837 |
-
* Fixed:
|
2838 |
-
*
|
2839 |
-
* Added:
|
2840 |
-
* Added:
|
2841 |
-
*
|
2842 |
-
*
|
2843 |
-
*
|
2844 |
-
* Added:
|
2845 |
-
*
|
2846 |
-
* Added:
|
2847 |
-
* Added:
|
2848 |
-
* Added:
|
2849 |
-
*
|
2850 |
-
* Added:
|
2851 |
-
* Fixed:
|
2852 |
-
* Added:
|
2853 |
-
* Added:
|
2854 |
-
* Added:
|
2855 |
-
*
|
2856 |
-
* Added:
|
2857 |
-
* Fixed:
|
2858 |
-
*
|
2859 |
-
* Added:
|
2860 |
-
*
|
2861 |
-
*
|
2862 |
-
*
|
2863 |
-
* Fixed:
|
2864 |
-
*
|
2865 |
-
*
|
2866 |
-
*
|
2867 |
-
* Fixed:
|
2868 |
-
* Fixed:
|
2869 |
-
* Fixed:
|
2870 |
-
*
|
2871 |
-
*
|
2872 |
-
*
|
2873 |
-
* Fixed:
|
2874 |
-
* Fixed:
|
2875 |
-
*
|
2876 |
-
* Fixed:
|
2877 |
-
*
|
2878 |
-
*
|
2879 |
-
*
|
2880 |
-
*
|
2881 |
-
*
|
2882 |
-
*
|
2883 |
-
* Fixed:
|
2884 |
-
*
|
2885 |
-
*
|
2886 |
-
*
|
2887 |
-
*
|
2888 |
-
* Added:
|
2889 |
-
* Fixed:
|
2890 |
-
* Fixed:
|
2891 |
-
* Fixed:
|
2892 |
-
|
2893 |
-
|
2894 |
-
* Added:
|
2895 |
-
* Fixed:
|
2896 |
-
* Fixed:
|
2897 |
-
* Fixed:
|
2898 |
-
|
2899 |
-
|
2900 |
-
*
|
2901 |
-
* Fixed:
|
2902 |
-
* Fixed:
|
2903 |
-
* Fixed:
|
2904 |
-
* Fixed:
|
2905 |
-
* Fixed:
|
2906 |
-
* Fixed:
|
2907 |
-
* Fixed:
|
2908 |
-
* Fixed:
|
2909 |
-
*
|
2910 |
-
* Fixed:
|
2911 |
-
* Fixed:
|
2912 |
-
*
|
2913 |
-
* Fixed:
|
2914 |
-
* Fixed:
|
2915 |
-
*
|
2916 |
-
* Fixed:
|
2917 |
-
*
|
2918 |
-
*
|
2919 |
-
*
|
2920 |
-
* Fixed:
|
2921 |
-
* Fixed:
|
2922 |
-
*
|
2923 |
-
* Added: Page specific option to add
|
2924 |
-
*
|
2925 |
-
* Added:
|
2926 |
-
* Fixed:
|
2927 |
-
*
|
2928 |
-
* Added:
|
2929 |
-
|
2930 |
-
|
2931 |
-
*
|
2932 |
-
*
|
2933 |
-
*
|
2934 |
-
*
|
2935 |
-
|
2936 |
-
|
2937 |
-
* Fixed:
|
2938 |
-
*
|
2939 |
-
*
|
2940 |
-
* Fixed:
|
2941 |
-
* Fixed:
|
2942 |
-
* Fixed:
|
2943 |
-
* Fixed:
|
2944 |
-
* Fixed:
|
2945 |
-
|
2946 |
-
|
2947 |
-
*
|
2948 |
-
* Fixed:
|
2949 |
-
*
|
2950 |
-
* Fixed:
|
2951 |
-
|
2952 |
-
|
2953 |
-
*
|
2954 |
-
* Fixed:
|
2955 |
-
*
|
2956 |
-
* Fixed:
|
2957 |
-
* Fixed:
|
2958 |
-
*
|
2959 |
-
* Fixed:
|
2960 |
-
* Fixed:
|
2961 |
-
* Fixed:
|
2962 |
-
* Fixed:
|
2963 |
-
* Fixed:
|
2964 |
-
*
|
2965 |
-
* Fixed:
|
2966 |
-
* Fixed:
|
2967 |
-
* Fixed:
|
2968 |
-
* Fixed:
|
2969 |
-
*
|
2970 |
-
* Fixed:
|
2971 |
-
* Fixed:
|
2972 |
-
* Fixed:
|
2973 |
-
* Fixed:
|
2974 |
-
* Fixed:
|
2975 |
-
* Added:
|
2976 |
-
* Fixed:
|
2977 |
-
* Fixed:
|
2978 |
-
* Fixed:
|
2979 |
-
|
2980 |
-
|
2981 |
-
*
|
2982 |
-
|
2983 |
-
|
2984 |
-
*
|
2985 |
-
|
2986 |
-
|
2987 |
-
*
|
2988 |
-
|
2989 |
-
|
2990 |
-
*
|
2991 |
-
*
|
2992 |
-
*
|
2993 |
-
*
|
2994 |
-
*
|
2995 |
-
*
|
2996 |
-
*
|
2997 |
-
*
|
2998 |
-
*
|
2999 |
-
*
|
3000 |
-
*
|
3001 |
-
*
|
3002 |
-
*
|
3003 |
-
*
|
3004 |
-
|
3005 |
-
|
3006 |
-
|
3007 |
-
*
|
3008 |
-
*
|
3009 |
-
*
|
3010 |
-
|
3011 |
-
|
3012 |
-
|
3013 |
-
*
|
3014 |
-
*
|
3015 |
-
*
|
3016 |
-
|
3017 |
-
|
3018 |
-
*
|
3019 |
-
*
|
3020 |
-
*
|
3021 |
-
*
|
3022 |
-
*
|
3023 |
-
*
|
3024 |
-
*
|
3025 |
-
*
|
3026 |
-
*
|
3027 |
-
*
|
3028 |
-
*
|
3029 |
-
*
|
3030 |
-
*
|
3031 |
-
*
|
3032 |
-
*
|
3033 |
-
|
3034 |
-
|
3035 |
-
|
3036 |
-
*
|
3037 |
-
*
|
3038 |
-
*
|
3039 |
-
|
3040 |
-
|
3041 |
-
|
3042 |
-
*
|
3043 |
-
*
|
3044 |
-
* Added:
|
3045 |
-
*
|
3046 |
-
*
|
3047 |
-
*
|
3048 |
-
* Fixed:
|
3049 |
-
* Added:
|
3050 |
-
*
|
3051 |
-
*
|
3052 |
-
*
|
3053 |
-
*
|
3054 |
-
*
|
3055 |
-
*
|
3056 |
-
*
|
3057 |
-
* Added:
|
3058 |
-
* Fixed:
|
3059 |
-
*
|
3060 |
-
*
|
3061 |
-
*
|
3062 |
-
*
|
3063 |
-
|
3064 |
-
|
3065 |
-
*
|
3066 |
-
*
|
3067 |
-
* Added:
|
3068 |
-
* Fixed:
|
3069 |
-
|
3070 |
-
|
3071 |
-
*
|
3072 |
-
* Added:
|
3073 |
-
*
|
3074 |
-
* Fixed:
|
3075 |
-
* Fixed:
|
3076 |
-
*
|
3077 |
-
*
|
3078 |
-
* Added:
|
3079 |
-
* Fixed:
|
3080 |
-
|
3081 |
-
|
3082 |
-
*
|
3083 |
-
*
|
3084 |
-
*
|
3085 |
-
*
|
3086 |
-
|
3087 |
-
|
3088 |
-
*
|
3089 |
-
*
|
3090 |
-
*
|
3091 |
-
*
|
3092 |
-
*
|
3093 |
-
*
|
3094 |
-
*
|
3095 |
-
*
|
3096 |
-
*
|
3097 |
-
*
|
3098 |
-
*
|
3099 |
-
*
|
3100 |
-
|
3101 |
-
|
3102 |
-
*
|
3103 |
-
*
|
3104 |
-
|
3105 |
-
|
3106 |
-
|
3107 |
-
|
3108 |
-
*
|
3109 |
-
*
|
3110 |
-
|
3111 |
-
|
3112 |
-
*
|
3113 |
-
*
|
3114 |
-
*
|
3115 |
-
*
|
3116 |
-
*
|
3117 |
-
*
|
3118 |
-
*
|
3119 |
-
*
|
3120 |
-
*
|
3121 |
-
*
|
3122 |
-
*
|
3123 |
-
*
|
3124 |
-
*
|
3125 |
-
*
|
3126 |
-
*
|
3127 |
-
*
|
3128 |
-
*
|
3129 |
-
*
|
3130 |
-
*
|
3131 |
-
*
|
3132 |
-
*
|
3133 |
-
|
3134 |
-
|
3135 |
-
|
3136 |
-
*
|
3137 |
-
*
|
3138 |
-
*
|
3139 |
-
|
3140 |
-
|
3141 |
-
|
3142 |
-
*
|
3143 |
-
*
|
3144 |
-
*
|
3145 |
-
*
|
3146 |
-
*
|
3147 |
-
*
|
3148 |
-
*
|
3149 |
-
*
|
3150 |
-
*
|
3151 |
-
*
|
3152 |
-
*
|
3153 |
-
*
|
3154 |
-
*
|
3155 |
-
*
|
3156 |
-
*
|
3157 |
-
*
|
3158 |
-
*
|
3159 |
-
*
|
3160 |
-
*
|
3161 |
-
*
|
3162 |
-
*
|
3163 |
-
|
3164 |
-
|
3165 |
-
|
3166 |
-
*
|
3167 |
-
*
|
3168 |
-
*
|
3169 |
-
|
3170 |
-
|
3171 |
-
|
3172 |
-
*
|
3173 |
-
*
|
3174 |
-
*
|
3175 |
-
*
|
3176 |
-
*
|
3177 |
-
*
|
3178 |
-
*
|
3179 |
-
*
|
3180 |
-
*
|
3181 |
-
*
|
3182 |
-
*
|
3183 |
-
*
|
3184 |
-
*
|
3185 |
-
*
|
3186 |
-
*
|
3187 |
-
*
|
3188 |
-
*
|
3189 |
-
*
|
3190 |
-
*
|
3191 |
-
*
|
3192 |
-
*
|
3193 |
-
*
|
3194 |
-
|
3195 |
-
|
3196 |
-
*
|
3197 |
-
*
|
3198 |
-
*
|
3199 |
-
*
|
3200 |
-
|
3201 |
-
|
3202 |
-
*
|
3203 |
-
*
|
3204 |
-
*
|
3205 |
-
*
|
3206 |
-
*
|
3207 |
-
*
|
3208 |
-
*
|
3209 |
-
*
|
3210 |
-
*
|
3211 |
-
*
|
3212 |
-
*
|
3213 |
-
*
|
3214 |
-
*
|
3215 |
-
*
|
3216 |
-
*
|
3217 |
-
*
|
3218 |
-
*
|
3219 |
-
*
|
3220 |
-
|
3221 |
-
|
3222 |
-
*
|
3223 |
-
*
|
3224 |
-
*
|
3225 |
-
|
3226 |
-
|
3227 |
-
|
3228 |
-
*
|
3229 |
-
*
|
3230 |
-
*
|
3231 |
-
|
3232 |
-
|
3233 |
-
*
|
3234 |
-
*
|
3235 |
-
*
|
3236 |
-
*
|
3237 |
-
*
|
3238 |
-
*
|
3239 |
-
*
|
3240 |
-
*
|
3241 |
-
*
|
3242 |
-
*
|
3243 |
-
*
|
3244 |
-
*
|
3245 |
-
*
|
3246 |
-
*
|
3247 |
-
*
|
3248 |
-
*
|
3249 |
-
*
|
3250 |
-
*
|
3251 |
-
*
|
3252 |
-
*
|
3253 |
-
*
|
3254 |
-
*
|
3255 |
-
*
|
3256 |
-
*
|
3257 |
-
*
|
3258 |
-
*
|
3259 |
-
*
|
3260 |
-
*
|
3261 |
-
*
|
3262 |
-
*
|
3263 |
-
*
|
3264 |
-
*
|
3265 |
-
*
|
3266 |
-
*
|
3267 |
-
*
|
3268 |
-
* Page
|
3269 |
-
*
|
3270 |
-
*
|
3271 |
-
*
|
3272 |
-
*
|
3273 |
-
*
|
3274 |
-
*
|
3275 |
-
*
|
3276 |
-
*
|
3277 |
-
*
|
3278 |
-
*
|
3279 |
-
*
|
3280 |
-
*
|
3281 |
-
|
3282 |
-
|
3283 |
-
*
|
3284 |
-
*
|
3285 |
-
|
3286 |
-
|
3287 |
-
|
3288 |
-
|
3289 |
-
|
3290 |
-
*
|
3291 |
-
|
3292 |
-
|
3293 |
-
*
|
3294 |
-
|
3295 |
-
|
3296 |
-
*
|
3297 |
-
*
|
3298 |
-
*
|
3299 |
-
*
|
3300 |
-
*
|
3301 |
-
*
|
3302 |
-
*
|
3303 |
-
*
|
3304 |
-
*
|
3305 |
-
*
|
3306 |
-
*
|
3307 |
-
*
|
3308 |
-
*
|
3309 |
-
*
|
3310 |
-
*
|
3311 |
-
*
|
3312 |
-
*
|
3313 |
-
*
|
3314 |
-
*
|
3315 |
-
*
|
3316 |
-
|
3317 |
-
|
3318 |
-
*
|
3319 |
-
*
|
3320 |
-
*
|
3321 |
-
*
|
3322 |
-
|
3323 |
-
|
3324 |
-
*
|
3325 |
-
*
|
3326 |
-
*
|
3327 |
-
*
|
3328 |
-
*
|
3329 |
-
*
|
3330 |
-
*
|
3331 |
-
*
|
3332 |
-
*
|
3333 |
-
*
|
3334 |
-
*
|
3335 |
-
*
|
3336 |
-
*
|
3337 |
-
*
|
3338 |
-
*
|
3339 |
-
*
|
3340 |
-
*
|
3341 |
-
*
|
3342 |
-
|
3343 |
-
|
3344 |
-
*
|
3345 |
-
*
|
3346 |
-
*
|
3347 |
-
*
|
3348 |
-
|
3349 |
-
|
3350 |
-
*
|
3351 |
-
*
|
3352 |
-
*
|
3353 |
-
*
|
3354 |
-
*
|
3355 |
-
*
|
3356 |
-
*
|
3357 |
-
*
|
3358 |
-
*
|
3359 |
-
*
|
3360 |
-
*
|
3361 |
-
*
|
3362 |
-
*
|
3363 |
-
*
|
3364 |
-
*
|
3365 |
-
*
|
3366 |
-
*
|
3367 |
-
*
|
3368 |
-
*
|
3369 |
-
*
|
3370 |
-
*
|
3371 |
-
*
|
3372 |
-
*
|
3373 |
-
*
|
3374 |
-
*
|
3375 |
-
*
|
3376 |
-
*
|
3377 |
-
*
|
3378 |
-
*
|
3379 |
-
*
|
3380 |
-
*
|
3381 |
-
*
|
3382 |
-
*
|
3383 |
-
*
|
3384 |
-
*
|
3385 |
-
*
|
3386 |
-
*
|
3387 |
-
*
|
3388 |
-
*
|
3389 |
-
*
|
3390 |
-
*
|
3391 |
-
*
|
3392 |
-
*
|
3393 |
-
*
|
3394 |
-
*
|
3395 |
-
*
|
3396 |
-
*
|
3397 |
-
|
3398 |
-
|
3399 |
-
*
|
3400 |
-
*
|
3401 |
-
*
|
3402 |
-
*
|
3403 |
-
|
3404 |
-
|
3405 |
-
|
3406 |
-
|
3407 |
-
*
|
3408 |
-
*
|
3409 |
-
*
|
3410 |
-
*
|
3411 |
-
|
3412 |
-
|
3413 |
-
|
3414 |
-
|
3415 |
-
*
|
3416 |
-
*
|
3417 |
-
*
|
3418 |
-
*
|
3419 |
-
|
3420 |
-
|
3421 |
-
*
|
3422 |
-
*
|
3423 |
-
*
|
3424 |
-
*
|
3425 |
-
*
|
3426 |
-
*
|
3427 |
-
*
|
3428 |
-
*
|
3429 |
-
*
|
3430 |
-
*
|
3431 |
-
*
|
3432 |
-
|
3433 |
-
|
3434 |
-
*
|
3435 |
-
*
|
3436 |
-
*
|
3437 |
-
*
|
3438 |
-
|
3439 |
-
|
3440 |
-
*
|
3441 |
-
*
|
3442 |
-
*
|
3443 |
-
*
|
3444 |
-
*
|
3445 |
-
*
|
3446 |
-
*
|
3447 |
-
*
|
3448 |
-
*
|
3449 |
-
*
|
3450 |
-
*
|
3451 |
-
|
3452 |
-
|
3453 |
-
*
|
3454 |
-
*
|
3455 |
-
*
|
3456 |
-
*
|
3457 |
-
|
3458 |
-
= 0.9.58 (9th August 2017) =
|
3459 |
-
*
|
3460 |
-
* Genesis SEO
|
3461 |
-
*
|
3462 |
-
*
|
3463 |
-
|
3464 |
-
|
3465 |
-
*
|
3466 |
-
*
|
3467 |
-
|
3468 |
-
|
3469 |
-
*
|
3470 |
-
|
3471 |
-
|
3472 |
-
*
|
3473 |
-
|
3474 |
-
|
3475 |
-
*
|
3476 |
-
|
3477 |
-
|
3478 |
-
*
|
3479 |
-
*
|
3480 |
-
*
|
3481 |
-
*
|
3482 |
-
*
|
3483 |
-
*
|
3484 |
-
*
|
3485 |
-
|
3486 |
-
|
3487 |
-
*
|
3488 |
-
*
|
3489 |
-
*
|
3490 |
-
*
|
3491 |
-
|
3492 |
-
|
3493 |
-
*
|
3494 |
-
*
|
3495 |
-
* Unnecessary: Adding the Markup for AMP Woocommerce latest Products #929
|
3496 |
-
*
|
3497 |
-
*
|
3498 |
-
*
|
3499 |
-
*
|
3500 |
-
*
|
3501 |
-
|
3502 |
-
|
3503 |
-
|
3504 |
-
*
|
3505 |
-
|
3506 |
-
|
3507 |
-
|
3508 |
-
|
3509 |
-
|
3510 |
-
*
|
3511 |
-
|
3512 |
-
|
3513 |
-
*
|
3514 |
-
*
|
3515 |
-
*
|
3516 |
-
|
3517 |
-
|
3518 |
-
* View
|
3519 |
-
*
|
3520 |
-
*
|
3521 |
-
*
|
3522 |
-
|
3523 |
-
|
3524 |
-
*
|
3525 |
-
*
|
3526 |
-
*
|
3527 |
-
*
|
3528 |
-
*
|
3529 |
-
*
|
3530 |
-
* Design
|
3531 |
-
*
|
3532 |
-
*
|
3533 |
-
*
|
3534 |
-
*
|
3535 |
-
*
|
3536 |
-
|
3537 |
-
|
3538 |
-
*
|
3539 |
-
*
|
3540 |
-
|
3541 |
-
|
3542 |
-
|
3543 |
-
|
3544 |
-
*
|
3545 |
-
*
|
3546 |
-
|
3547 |
-
|
3548 |
-
*
|
3549 |
-
*
|
3550 |
-
*
|
3551 |
-
*
|
3552 |
-
*
|
3553 |
-
*
|
3554 |
-
*
|
3555 |
-
*
|
3556 |
-
*
|
3557 |
-
*
|
3558 |
-
*
|
3559 |
-
*
|
3560 |
-
*
|
3561 |
-
*
|
3562 |
-
*
|
3563 |
-
*
|
3564 |
-
*
|
3565 |
-
*
|
3566 |
-
*
|
3567 |
-
*
|
3568 |
-
*
|
3569 |
-
|
3570 |
-
|
3571 |
-
*
|
3572 |
-
*
|
3573 |
-
*
|
3574 |
-
*
|
3575 |
-
|
3576 |
-
|
3577 |
-
*
|
3578 |
-
*
|
3579 |
-
*
|
3580 |
-
*
|
3581 |
-
*
|
3582 |
-
*
|
3583 |
-
*
|
3584 |
-
*
|
3585 |
-
*
|
3586 |
-
*
|
3587 |
-
|
3588 |
-
|
3589 |
-
|
3590 |
-
*
|
3591 |
-
*
|
3592 |
-
*
|
3593 |
-
|
3594 |
-
|
3595 |
-
|
3596 |
-
*
|
3597 |
-
*
|
3598 |
-
*
|
3599 |
-
*
|
3600 |
-
*
|
3601 |
-
* Social
|
3602 |
-
*
|
3603 |
-
*
|
3604 |
-
*
|
3605 |
-
*
|
3606 |
-
*
|
3607 |
-
*
|
3608 |
-
*
|
3609 |
-
*
|
3610 |
-
*
|
3611 |
-
*
|
3612 |
-
*
|
3613 |
-
*
|
3614 |
-
*
|
3615 |
-
*
|
3616 |
-
*
|
3617 |
-
*
|
3618 |
-
*
|
3619 |
-
|
3620 |
-
|
3621 |
-
|
3622 |
-
*
|
3623 |
-
*
|
3624 |
-
*
|
3625 |
-
|
3626 |
-
|
3627 |
-
|
3628 |
-
*
|
3629 |
-
*
|
3630 |
-
*
|
3631 |
-
*
|
3632 |
-
*
|
3633 |
-
*
|
3634 |
-
*
|
3635 |
-
*
|
3636 |
-
*
|
3637 |
-
*
|
3638 |
-
*
|
3639 |
-
*
|
3640 |
-
*
|
3641 |
-
*
|
3642 |
-
*
|
3643 |
-
*
|
3644 |
-
*
|
3645 |
-
*
|
3646 |
-
*
|
3647 |
-
*
|
3648 |
-
*
|
3649 |
-
*
|
3650 |
-
*
|
3651 |
-
*
|
3652 |
-
|
3653 |
-
|
3654 |
-
*
|
3655 |
-
*
|
3656 |
-
|
3657 |
-
|
3658 |
-
|
3659 |
-
|
3660 |
-
|
3661 |
-
|
3662 |
-
|
3663 |
-
|
3664 |
-
*
|
3665 |
-
*
|
3666 |
-
|
3667 |
-
|
3668 |
-
*
|
3669 |
-
*
|
3670 |
-
*
|
3671 |
-
*
|
3672 |
-
*
|
3673 |
-
*
|
3674 |
-
*
|
3675 |
-
*
|
3676 |
-
*
|
3677 |
-
*
|
3678 |
-
*
|
3679 |
-
*
|
3680 |
-
*
|
3681 |
-
*
|
3682 |
-
*
|
3683 |
-
*
|
3684 |
-
*
|
3685 |
-
|
3686 |
-
|
3687 |
-
*
|
3688 |
-
*
|
3689 |
-
*
|
3690 |
-
|
3691 |
-
|
3692 |
-
|
3693 |
-
*
|
3694 |
-
|
3695 |
-
|
3696 |
-
|
3697 |
-
|
3698 |
-
|
3699 |
-
*
|
3700 |
-
|
3701 |
-
= 0.9.45 (
|
3702 |
-
*
|
3703 |
-
|
3704 |
-
|
3705 |
-
*
|
3706 |
-
|
3707 |
-
|
3708 |
-
*
|
3709 |
-
*
|
3710 |
-
*
|
3711 |
-
*
|
3712 |
-
*
|
3713 |
-
*
|
3714 |
-
*
|
3715 |
-
*
|
3716 |
-
*
|
3717 |
-
*
|
3718 |
-
*
|
3719 |
-
*
|
3720 |
-
*
|
3721 |
-
*
|
3722 |
-
*
|
3723 |
-
*
|
3724 |
-
*
|
3725 |
-
*
|
3726 |
-
*
|
3727 |
-
*
|
3728 |
-
*
|
3729 |
-
*
|
3730 |
-
*
|
3731 |
-
|
3732 |
-
|
3733 |
-
|
3734 |
-
*
|
3735 |
-
*
|
3736 |
-
*
|
3737 |
-
|
3738 |
-
|
3739 |
-
|
3740 |
-
*
|
3741 |
-
*
|
3742 |
-
*
|
3743 |
-
*
|
3744 |
-
*
|
3745 |
-
*
|
3746 |
-
*
|
3747 |
-
*
|
3748 |
-
* Search
|
3749 |
-
*
|
3750 |
-
*
|
3751 |
-
*
|
3752 |
-
*
|
3753 |
-
*
|
3754 |
-
*
|
3755 |
-
*
|
3756 |
-
*
|
3757 |
-
*
|
3758 |
-
*
|
3759 |
-
*
|
3760 |
-
*
|
3761 |
-
*
|
3762 |
-
*
|
3763 |
-
*
|
3764 |
-
*
|
3765 |
-
*
|
3766 |
-
*
|
3767 |
-
|
3768 |
-
*
|
3769 |
-
*
|
3770 |
-
*
|
3771 |
-
*
|
3772 |
-
*
|
3773 |
-
|
3774 |
-
*
|
3775 |
-
|
3776 |
-
|
3777 |
-
*
|
3778 |
-
*
|
3779 |
-
*
|
3780 |
-
*
|
3781 |
-
|
3782 |
-
|
3783 |
-
|
3784 |
-
*
|
3785 |
-
*
|
3786 |
-
*
|
3787 |
-
*
|
3788 |
-
|
3789 |
-
|
3790 |
-
*
|
3791 |
-
*
|
3792 |
-
*
|
3793 |
-
*
|
3794 |
-
*
|
3795 |
-
*
|
3796 |
-
*
|
3797 |
-
*
|
3798 |
-
*
|
3799 |
-
*
|
3800 |
-
*
|
3801 |
-
*
|
3802 |
-
*
|
3803 |
-
*
|
3804 |
-
*
|
3805 |
-
*
|
3806 |
-
*
|
3807 |
-
*
|
3808 |
-
|
3809 |
-
|
3810 |
-
|
3811 |
-
*
|
3812 |
-
*
|
3813 |
-
*
|
3814 |
-
|
3815 |
-
|
3816 |
-
|
3817 |
-
*
|
3818 |
-
*
|
3819 |
-
*
|
3820 |
-
|
3821 |
-
|
3822 |
-
*
|
3823 |
-
*
|
3824 |
-
*
|
3825 |
-
*
|
3826 |
-
|
3827 |
-
|
3828 |
-
|
3829 |
-
* View
|
3830 |
-
*
|
3831 |
-
*
|
3832 |
-
*
|
3833 |
-
|
3834 |
-
|
3835 |
-
*
|
3836 |
-
*
|
3837 |
-
*
|
3838 |
-
*
|
3839 |
-
*
|
3840 |
-
|
3841 |
-
|
3842 |
-
*
|
3843 |
-
*
|
3844 |
-
*
|
3845 |
-
*
|
3846 |
-
|
3847 |
-
|
3848 |
-
*
|
3849 |
-
*
|
3850 |
-
*
|
3851 |
-
*
|
3852 |
-
*
|
3853 |
-
*
|
3854 |
-
*
|
3855 |
-
*
|
3856 |
-
*
|
3857 |
-
|
3858 |
-
|
3859 |
-
*
|
3860 |
-
*
|
3861 |
-
*
|
3862 |
-
*
|
3863 |
-
|
3864 |
-
= 0.9.
|
3865 |
-
* View full details at https://ampforwp.com/
|
3866 |
-
*
|
3867 |
-
*
|
3868 |
-
*
|
3869 |
-
|
3870 |
-
|
3871 |
-
*
|
3872 |
-
*
|
3873 |
-
*
|
3874 |
-
*
|
3875 |
-
*
|
3876 |
-
*
|
3877 |
-
*
|
3878 |
-
*
|
3879 |
-
*
|
3880 |
-
*
|
3881 |
-
*
|
3882 |
-
*
|
3883 |
-
*
|
3884 |
-
*
|
3885 |
-
*
|
3886 |
-
|
3887 |
-
|
3888 |
-
*
|
3889 |
-
*
|
3890 |
-
*
|
3891 |
-
*
|
3892 |
-
|
3893 |
-
|
3894 |
-
|
3895 |
-
*
|
3896 |
-
*
|
3897 |
-
*
|
3898 |
-
*
|
3899 |
-
|
3900 |
-
|
3901 |
-
*
|
3902 |
-
*
|
3903 |
-
*
|
3904 |
-
*
|
3905 |
-
*
|
3906 |
-
*
|
3907 |
-
*
|
3908 |
-
*
|
3909 |
-
*
|
3910 |
-
|
3911 |
-
|
3912 |
-
*
|
3913 |
-
|
3914 |
-
|
3915 |
-
*
|
3916 |
-
|
3917 |
-
|
3918 |
-
*
|
3919 |
-
|
3920 |
-
|
3921 |
-
*
|
3922 |
-
*
|
3923 |
-
*
|
3924 |
-
*
|
3925 |
-
*
|
3926 |
-
*
|
3927 |
-
*
|
3928 |
-
*
|
3929 |
-
*
|
3930 |
-
|
3931 |
-
|
3932 |
-
*
|
3933 |
-
*
|
3934 |
-
*
|
3935 |
-
*
|
3936 |
-
|
3937 |
-
|
3938 |
-
*
|
3939 |
-
*
|
3940 |
-
*
|
3941 |
-
*
|
3942 |
-
*
|
3943 |
-
*
|
3944 |
-
*
|
3945 |
-
*
|
3946 |
-
*
|
3947 |
-
*
|
3948 |
-
*
|
3949 |
-
|
3950 |
-
|
3951 |
-
*
|
3952 |
-
*
|
3953 |
-
*
|
3954 |
-
*
|
3955 |
-
|
3956 |
-
|
3957 |
-
|
3958 |
-
* Proper
|
3959 |
-
*
|
3960 |
-
*
|
3961 |
-
*
|
3962 |
-
|
3963 |
-
= 0.9.
|
3964 |
-
* Proper Details at https://ampforwp.com/
|
3965 |
-
*
|
3966 |
-
*
|
3967 |
-
*
|
3968 |
-
|
3969 |
-
|
3970 |
-
*
|
3971 |
-
*
|
3972 |
-
|
3973 |
-
|
3974 |
-
*
|
3975 |
-
*
|
3976 |
-
*
|
3977 |
-
*
|
3978 |
-
|
3979 |
-
|
3980 |
-
|
3981 |
-
*
|
3982 |
-
*
|
3983 |
-
*
|
3984 |
-
*
|
3985 |
-
|
3986 |
-
|
3987 |
-
|
3988 |
-
|
3989 |
-
*
|
3990 |
-
*
|
3991 |
-
*
|
3992 |
-
*
|
3993 |
-
|
3994 |
-
|
3995 |
-
*
|
3996 |
-
*
|
3997 |
-
*
|
3998 |
-
*
|
3999 |
-
*
|
4000 |
-
*
|
4001 |
-
*
|
4002 |
-
* AMP
|
4003 |
-
*
|
4004 |
-
*
|
4005 |
-
*
|
4006 |
-
|
4007 |
-
|
4008 |
-
*
|
4009 |
-
*
|
4010 |
-
*
|
4011 |
-
*
|
4012 |
-
|
4013 |
-
|
4014 |
-
*
|
4015 |
-
*
|
4016 |
-
*
|
4017 |
-
*
|
4018 |
-
*
|
4019 |
-
*
|
4020 |
-
*
|
4021 |
-
*
|
4022 |
-
*
|
4023 |
-
*
|
4024 |
-
*
|
4025 |
-
*
|
4026 |
-
*
|
4027 |
-
*
|
4028 |
-
*
|
4029 |
-
*
|
4030 |
-
*
|
4031 |
-
*
|
4032 |
-
*
|
4033 |
-
*
|
4034 |
-
*
|
4035 |
-
*
|
4036 |
-
|
4037 |
-
|
4038 |
-
*
|
4039 |
-
*
|
4040 |
-
*
|
4041 |
-
*
|
4042 |
-
|
4043 |
-
|
4044 |
-
*
|
4045 |
-
*
|
4046 |
-
*
|
4047 |
-
*
|
4048 |
-
*
|
4049 |
-
*
|
4050 |
-
*
|
4051 |
-
*
|
4052 |
-
*
|
4053 |
-
*
|
4054 |
-
|
4055 |
-
|
4056 |
-
*
|
4057 |
-
*
|
4058 |
-
*
|
4059 |
-
*
|
4060 |
-
|
4061 |
-
|
4062 |
-
*
|
4063 |
-
*
|
4064 |
-
*
|
4065 |
-
*
|
4066 |
-
*
|
4067 |
-
*
|
4068 |
-
*
|
4069 |
-
*
|
4070 |
-
*
|
4071 |
-
*
|
4072 |
-
|
4073 |
-
|
4074 |
-
*
|
4075 |
-
*
|
4076 |
-
*
|
4077 |
-
*
|
4078 |
-
|
4079 |
-
|
4080 |
-
*
|
4081 |
-
*
|
4082 |
-
*
|
4083 |
-
*
|
4084 |
-
*
|
4085 |
-
* Added
|
4086 |
-
*
|
4087 |
-
*
|
4088 |
-
|
4089 |
-
|
4090 |
-
|
4091 |
-
*
|
4092 |
-
*
|
4093 |
-
|
4094 |
-
|
4095 |
-
|
4096 |
-
|
4097 |
-
*
|
4098 |
-
*
|
4099 |
-
|
4100 |
-
|
4101 |
-
*
|
4102 |
-
*
|
4103 |
-
*
|
4104 |
-
*
|
4105 |
-
|
4106 |
-
|
4107 |
-
|
4108 |
-
*
|
4109 |
-
|
4110 |
-
|
4111 |
-
|
4112 |
-
|
4113 |
-
= 0.8.5.
|
4114 |
-
*
|
4115 |
-
|
4116 |
-
|
4117 |
-
*
|
4118 |
-
|
4119 |
-
|
4120 |
-
*
|
4121 |
-
*
|
4122 |
-
*
|
4123 |
-
|
4124 |
-
|
4125 |
-
*
|
4126 |
-
*
|
4127 |
-
*
|
4128 |
-
*
|
4129 |
-
|
4130 |
-
|
4131 |
-
|
4132 |
-
*
|
4133 |
-
* Structured Data Validation
|
4134 |
-
*
|
4135 |
-
*
|
4136 |
-
|
4137 |
-
|
4138 |
-
*
|
4139 |
-
|
4140 |
-
|
4141 |
-
*
|
4142 |
-
*
|
4143 |
-
|
4144 |
-
|
4145 |
-
|
4146 |
-
|
4147 |
-
*
|
4148 |
-
*
|
4149 |
-
|
4150 |
-
|
4151 |
-
*
|
4152 |
-
*
|
4153 |
-
*
|
4154 |
-
*
|
4155 |
-
*
|
4156 |
-
*
|
4157 |
-
*
|
4158 |
-
|
4159 |
-
|
4160 |
-
*
|
4161 |
-
*
|
4162 |
-
*
|
4163 |
-
|
4164 |
-
|
4165 |
-
|
4166 |
-
*
|
4167 |
-
*
|
4168 |
-
*
|
4169 |
-
|
4170 |
-
|
4171 |
-
*
|
4172 |
-
*
|
4173 |
-
*
|
4174 |
-
*
|
4175 |
-
*
|
4176 |
-
*
|
4177 |
-
* Better
|
4178 |
-
|
4179 |
-
|
4180 |
-
*
|
4181 |
-
*
|
4182 |
-
*
|
4183 |
-
*
|
4184 |
-
|
4185 |
-
|
4186 |
-
*
|
4187 |
-
*
|
4188 |
-
*
|
4189 |
-
|
4190 |
-
|
4191 |
-
*
|
4192 |
-
*
|
4193 |
-
|
4194 |
-
|
4195 |
-
|
4196 |
-
|
4197 |
-
*
|
4198 |
-
*
|
4199 |
-
|
4200 |
-
|
4201 |
-
|
4202 |
-
|
4203 |
-
*
|
4204 |
-
*
|
4205 |
-
*
|
4206 |
-
|
4207 |
-
|
4208 |
-
|
4209 |
-
*
|
4210 |
-
*
|
4211 |
-
*
|
4212 |
-
|
4213 |
-
|
4214 |
-
|
4215 |
-
*
|
4216 |
-
*
|
4217 |
-
*
|
4218 |
-
*
|
4219 |
-
|
4220 |
-
|
4221 |
-
|
4222 |
-
*
|
4223 |
-
|
4224 |
-
|
4225 |
-
*
|
4226 |
-
|
4227 |
-
= 0.
|
4228 |
-
*
|
4229 |
-
|
4230 |
-
|
4231 |
-
|
4232 |
-
|
4233 |
-
|
4234 |
-
|
4235 |
-
|
4236 |
-
|
4237 |
-
|
4238 |
-
|
4239 |
-
|
4240 |
-
|
|
|
|
|
|
|
|
|
|
|
|
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 3 #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 script’ appears 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('<', '<', $returnCompleteHtml);
|
312 |
-
//$returnCompleteHtml = str_replace('>', '>', $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('<', '<', $returnCompleteHtml);
|
312 |
+
//$returnCompleteHtml = str_replace('>', '>', $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-horizont
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|