Dynamic Featured Image - Version 3.5.0

Version Description

  • Unit Tests.
  • Added support for github updater. Issue #44
  • Fix get_the_ID issue in WordPress below 4.0.
  • Remove extra quotation mark that was making the html invalid.
  • Added uninstall script.
Download this release

Release Info

Developer ankitpokhrel
Plugin Icon wp plugin Dynamic Featured Image
Version 3.5.0
Comparing to
See all releases

Code changes from version 3.4.0 to 3.5.0

css/dashicons.css CHANGED
@@ -1,760 +1,760 @@
1
- @font-face {
2
- font-family: "dashicons";
3
- src: url("fonts/dashicons.eot");
4
- }
5
-
6
- @font-face {
7
- font-family: "dashicons";
8
- src: url(data:application/x-font-woff;charset=utf-8;base64,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) format('woff'),
9
- url("fonts/dashicons.ttf") format("truetype"),
10
- url("fonts/dashicons.svg#dashicons") format("svg");
11
- font-weight: normal;
12
- font-style: normal;
13
- }
14
-
15
- .dashicons {
16
- display: inline-block;
17
- width: 20px;
18
- height: 20px;
19
- -webkit-font-smoothing: antialiased;
20
- font-size: 20px;
21
- line-height: 1;
22
- font-family: "dashicons";
23
- text-decoration: inherit;
24
- font-weight: normal;
25
- font-style: normal;
26
- vertical-align: top;
27
- -moz-transition: color .1s ease-in 0;
28
- -webkit-transition: color .1s ease-in 0;
29
- text-align: center;
30
- }
31
-
32
-
33
- /* Admin Menu Icons */
34
-
35
- .dashicons-menu:before {
36
- content:"\f333";
37
- }
38
-
39
- .dashicons-admin-site:before {
40
- content:"\f319";
41
- }
42
-
43
- .dashicons-dashboard:before {
44
- content:"\f226";
45
- }
46
-
47
- .dashicons-admin-media:before {
48
- content: "\f104";
49
- }
50
-
51
- .dashicons-admin-page:before {
52
- content: "\f105";
53
- }
54
-
55
- .dashicons-admin-comments:before {
56
- content: "\f101";
57
- }
58
-
59
- .dashicons-admin-appearance:before {
60
- content: "\f100";
61
- }
62
-
63
- .dashicons-admin-plugins:before {
64
- content: "\f106";
65
- }
66
-
67
- .dashicons-admin-users:before {
68
- content: "\f110";
69
- }
70
-
71
- .dashicons-admin-tools:before {
72
- content: "\f107";
73
- }
74
-
75
- .dashicons-admin-settings:before {
76
- content: "\f108";
77
- }
78
-
79
- .dashicons-admin-network:before {
80
- content: "\f112";
81
- }
82
-
83
- .dashicons-admin-generic:before {
84
- content: "\f111";
85
- }
86
-
87
- .dashicons-admin-home:before {
88
- content: "\f102";
89
- }
90
-
91
- .dashicons-admin-collapse:before {
92
- content:"\f148";
93
- }
94
-
95
-
96
- /* Both Admin Menu and Post Formats */
97
-
98
- .dashicons-admin-links:before,
99
- .dashicons-format-links:before {
100
- content: "\f103";
101
- }
102
-
103
- .dashicons-admin-post:before,
104
- .dashicons-format-standard:before {
105
- content: "\f109";
106
- }
107
-
108
-
109
- /* Post Format Icons */
110
-
111
- .dashicons-format-image:before {
112
- content: "\f128";
113
- }
114
-
115
- .dashicons-format-gallery:before {
116
- content: "\f161";
117
- }
118
-
119
- .dashicons-format-audio:before {
120
- content: "\f127";
121
- }
122
-
123
- .dashicons-format-video:before {
124
- content: "\f126";
125
- }
126
-
127
- .dashicons-format-chat:before {
128
- content: "\f125";
129
- }
130
-
131
- .dashicons-format-status:before {
132
- content: "\f130";
133
- }
134
-
135
- .dashicons-format-aside:before {
136
- content: "\f123";
137
- }
138
-
139
- .dashicons-format-quote:before {
140
- content: "\f122";
141
- }
142
-
143
-
144
- /* Welcome Screen Icons */
145
-
146
- .dashicons-welcome-write-blog:before,
147
- .dashicons-welcome-edit-page:before {
148
- content:"\f119";
149
- }
150
-
151
- .dashicons-welcome-add-page:before {
152
- content:"\f133";
153
- }
154
-
155
- .dashicons-welcome-view-site:before {
156
- content:"\f115";
157
- }
158
-
159
- .dashicons-welcome-widgets-menus:before {
160
- content:"\f116";
161
- }
162
-
163
- .dashicons-welcome-comments:before {
164
- content:"\f117";
165
- }
166
-
167
- .dashicons-welcome-learn-more:before {
168
- content:"\f118";
169
- }
170
-
171
-
172
- /* Image Editing Icons */
173
-
174
- .dashicons-image-crop:before {
175
- content:"\f165";
176
- }
177
-
178
- .dashicons-image-rotate-left:before {
179
- content:"\f166";
180
- }
181
-
182
- .dashicons-image-rotate-right:before {
183
- content:"\f167";
184
- }
185
-
186
- .dashicons-image-flip-vertical:before {
187
- content:"\f168";
188
- }
189
-
190
- .dashicons-image-flip-horizontal:before {
191
- content:"\f169";
192
- }
193
-
194
-
195
- /* Both Image Editing and TinyMCE */
196
-
197
- .dashicons-undo:before {
198
- content:"\f171";
199
- }
200
-
201
- .dashicons-redo:before {
202
- content:"\f172";
203
- }
204
-
205
- /* TinyMCE Icons */
206
-
207
- .dashicons-editor-bold:before {
208
- content:"\f200";
209
- }
210
-
211
- .dashicons-editor-italic:before {
212
- content:"\f201";
213
- }
214
-
215
- .dashicons-editor-ul:before {
216
- content:"\f203";
217
- }
218
-
219
- .dashicons-editor-ol:before {
220
- content:"\f204";
221
- }
222
-
223
- .dashicons-editor-quote:before {
224
- content:"\f205";
225
- }
226
-
227
- .dashicons-editor-alignleft:before {
228
- content:"\f206";
229
- }
230
-
231
- .dashicons-editor-aligncenter:before {
232
- content:"\f207";
233
- }
234
-
235
- .dashicons-editor-alignright:before {
236
- content:"\f208";
237
- }
238
-
239
- .dashicons-editor-insertmore:before {
240
- content:"\f209";
241
- }
242
-
243
- .dashicons-editor-spellcheck:before {
244
- content:"\f210";
245
- }
246
-
247
- .dashicons-editor-distractionfree:before {
248
- content:"\f211";
249
- }
250
-
251
- .dashicons-editor-kitchensink:before {
252
- content:"\f212";
253
- }
254
-
255
- .dashicons-editor-underline:before {
256
- content:"\f213";
257
- }
258
-
259
- .dashicons-editor-justify:before {
260
- content:"\f214";
261
- }
262
-
263
- .dashicons-editor-textcolor:before {
264
- content:"\f215";
265
- }
266
-
267
- .dashicons-editor-paste-word:before {
268
- content:"\f216";
269
- }
270
-
271
- .dashicons-editor-paste-text:before {
272
- content:"\f217";
273
- }
274
-
275
- .dashicons-editor-removeformatting:before {
276
- content:"\f218";
277
- }
278
-
279
- .dashicons-editor-video:before {
280
- content:"\f219";
281
- }
282
-
283
- .dashicons-editor-customchar:before {
284
- content:"\f220";
285
- }
286
-
287
- .dashicons-editor-outdent:before {
288
- content:"\f221";
289
- }
290
-
291
- .dashicons-editor-indent:before {
292
- content:"\f222";
293
- }
294
-
295
- .dashicons-editor-help:before {
296
- content:"\f223";
297
- }
298
-
299
- .dashicons-editor-strikethrough:before {
300
- content:"\f224";
301
- }
302
-
303
- .dashicons-editor-unlink:before {
304
- content:"\f225";
305
- }
306
-
307
- .dashicons-editor-rtl:before {
308
- content:"\f320";
309
- }
310
-
311
- .dashicons-editor-break:before {
312
- content:"\f474";
313
- }
314
-
315
- .dashicons-editor-code:before {
316
- content:"\f475";
317
- }
318
-
319
- .dashicons-editor-paragraph:before {
320
- content:"\f476";
321
- }
322
-
323
- /* Post Icons */
324
-
325
- .dashicons-align-left:before {
326
- content:"\f135";
327
- }
328
-
329
- .dashicons-align-right:before {
330
- content:"\f136";
331
- }
332
-
333
- .dashicons-align-center:before {
334
- content:"\f134";
335
- }
336
-
337
- .dashicons-align-none:before {
338
- content:"\f138";
339
- }
340
-
341
- .dashicons-lock:before {
342
- content:"\f160";
343
- }
344
-
345
- .dashicons-calendar:before {
346
- content:"\f145";
347
- }
348
-
349
- .dashicons-visibility:before {
350
- content:"\f177";
351
- }
352
-
353
- .dashicons-post-status:before {
354
- content:"\f173";
355
- }
356
-
357
- .dashicons-edit:before {
358
- content:"\f464";
359
- }
360
-
361
- .dashicons-trash:before {
362
- content:"\f182";
363
- }
364
-
365
-
366
- /* Sorting */
367
-
368
- .dashicons-arrow-up:before {
369
- content:"\f142";
370
- }
371
-
372
- .dashicons-arrow-down:before {
373
- content:"\f140";
374
- }
375
-
376
- .dashicons-arrow-left:before {
377
- content:"\f141";
378
- }
379
-
380
- .dashicons-arrow-right:before {
381
- content:"\f139";
382
- }
383
-
384
- .dashicons-arrow-up-alt:before {
385
- content:"\f342";
386
- }
387
-
388
- .dashicons-arrow-down-alt:before {
389
- content:"\f346";
390
- }
391
-
392
- .dashicons-arrow-left-alt:before {
393
- content:"\f340";
394
- }
395
-
396
- .dashicons-arrow-right-alt:before {
397
- content:"\f344";
398
- }
399
-
400
- .dashicons-arrow-up-alt2:before {
401
- content:"\f343";
402
- }
403
-
404
- .dashicons-arrow-down-alt2:before {
405
- content:"\f347";
406
- }
407
-
408
- .dashicons-arrow-left-alt2:before {
409
- content:"\f341";
410
- }
411
-
412
- .dashicons-arrow-right-alt2:before {
413
- content:"\f345";
414
- }
415
-
416
- .dashicons-leftright:before {
417
- content:"\f229";
418
- }
419
-
420
- .dashicons-sort:before {
421
- content:"\f156";
422
- }
423
-
424
- .dashicons-list-view:before {
425
- content:"\f163";
426
- }
427
-
428
- .dashicons-exerpt-view:before {
429
- content:"\f164";
430
- }
431
-
432
-
433
- /* Social Icons */
434
-
435
- .dashicons-share:before {
436
- content:"\f237";
437
- }
438
-
439
- .dashicons-share1:before {
440
- content:"\f237";
441
- }
442
-
443
- .dashicons-share-alt:before {
444
- content:"\f240";
445
- }
446
-
447
- .dashicons-share-alt2:before {
448
- content:"\f242";
449
- }
450
-
451
- .dashicons-twitter:before {
452
- content:"\f301";
453
- }
454
-
455
- .dashicons-rss:before {
456
- content:"\f303";
457
- }
458
-
459
- .dashicons-email:before {
460
- content:"\f465";
461
- }
462
-
463
- .dashicons-email-alt:before {
464
- content:"\f466";
465
- }
466
-
467
- .dashicons-facebook:before {
468
- content:"\f304";
469
- }
470
-
471
- .dashicons-facebook-alt:before {
472
- content:"\f305";
473
- }
474
-
475
- .dashicons-networking:before {
476
- content:"\f325";
477
- }
478
-
479
- .dashicons-googleplus:before {
480
- content:"\f462";
481
- }
482
-
483
-
484
- /* Jobs Icons */
485
-
486
- .dashicons-hammer:before {
487
- content:"\f308";
488
- }
489
-
490
- .dashicons-art:before {
491
- content:"\f309";
492
- }
493
-
494
- .dashicons-migrate:before {
495
- content:"\f310";
496
- }
497
-
498
- .dashicons-performance:before {
499
- content:"\f311";
500
- }
501
-
502
-
503
- /* Internal/Products */
504
-
505
- .dashicons-wordpress:before {
506
- content:"\f120";
507
- }
508
-
509
- .dashicons-wordpress-alt:before {
510
- content:"\f324";
511
- }
512
-
513
- .dashicons-pressthis:before {
514
- content:"\f157";
515
- }
516
-
517
- .dashicons-update:before {
518
- content:"\f463";
519
- }
520
-
521
- .dashicons-screenoptions:before {
522
- content:"\f180";
523
- }
524
-
525
- .dashicons-info:before {
526
- content:"\f348";
527
- }
528
-
529
- .dashicons-cart:before {
530
- content:"\f174";
531
- }
532
-
533
- .dashicons-feedback:before {
534
- content:"\f175";
535
- }
536
-
537
- .dashicons-cloud:before {
538
- content:"\f176";
539
- }
540
-
541
- .dashicons-translation:before {
542
- content:"\f326";
543
- }
544
-
545
-
546
- /* Taxonomies */
547
-
548
- .dashicons-tag:before {
549
- content:"\f323";
550
- }
551
-
552
- .dashicons-category:before {
553
- content:"\f318";
554
- }
555
-
556
-
557
- /* Alerts/Notifications/Flags */
558
-
559
- .dashicons-yes:before {
560
- content:"\f147";
561
- }
562
-
563
- .dashicons-no:before {
564
- content:"\f158";
565
- }
566
-
567
- .dashicons-no-alt:before {
568
- content:"\f335";
569
- }
570
-
571
- .dashicons-plus:before {
572
- content:"\f132";
573
- }
574
-
575
- .dashicons-minus:before {
576
- content:"\f460";
577
- }
578
-
579
- .dashicons-dismiss:before {
580
- content:"\f153";
581
- }
582
-
583
- .dashicons-marker:before {
584
- content:"\f159";
585
- }
586
-
587
- .dashicons-star-filled:before {
588
- content:"\f155";
589
- }
590
-
591
- .dashicons-star-half:before {
592
- content:"\f459";
593
- }
594
-
595
- .dashicons-star-empty:before {
596
- content:"\f154";
597
- }
598
-
599
- .dashicons-flag:before {
600
- content:"\f227";
601
- }
602
-
603
-
604
- /* Misc/CPT */
605
-
606
- .dashicons-location:before {
607
- content:"\f230";
608
- }
609
-
610
- .dashicons-location-alt:before {
611
- content:"\f231";
612
- }
613
-
614
- .dashicons-camera:before {
615
- content:"\f306";
616
- }
617
-
618
- .dashicons-images-alt:before {
619
- content:"\f232";
620
- }
621
-
622
- .dashicons-images-alt2:before {
623
- content:"\f233";
624
- }
625
-
626
- .dashicons-video-alt:before {
627
- content:"\f234";
628
- }
629
-
630
- .dashicons-video-alt2:before {
631
- content:"\f235";
632
- }
633
-
634
- .dashicons-video-alt3:before {
635
- content:"\f236";
636
- }
637
-
638
- .dashicons-vault:before {
639
- content:"\f178";
640
- }
641
-
642
- .dashicons-shield:before {
643
- content:"\f332";
644
- }
645
-
646
- .dashicons-shield-alt:before {
647
- content:"\f334";
648
- }
649
-
650
- .dashicons-sos:before {
651
- content:"\f468";
652
- }
653
-
654
- .dashicons-search:before {
655
- content:"\f179";
656
- }
657
-
658
- .dashicons-slides:before {
659
- content:"\f181";
660
- }
661
-
662
- .dashicons-analytics:before {
663
- content:"\f183";
664
- }
665
-
666
- .dashicons-chart-pie:before {
667
- content:"\f184";
668
- }
669
-
670
- .dashicons-chart-bar:before {
671
- content:"\f185";
672
- }
673
-
674
- .dashicons-chart-line:before {
675
- content:"\f238";
676
- }
677
-
678
- .dashicons-chart-area:before {
679
- content:"\f239";
680
- }
681
-
682
- .dashicons-groups:before {
683
- content:"\f307";
684
- }
685
-
686
- .dashicons-businessman:before {
687
- content:"\f338";
688
- }
689
-
690
- .dashicons-id:before {
691
- content:"\f336";
692
- }
693
-
694
- .dashicons-id-alt:before {
695
- content:"\f337";
696
- }
697
-
698
- .dashicons-products:before {
699
- content:"\f312";
700
- }
701
-
702
- .dashicons-awards:before {
703
- content:"\f313";
704
- }
705
-
706
- .dashicons-forms:before {
707
- content:"\f314";
708
- }
709
-
710
- .dashicons-testimonial:before {
711
- content:"\f473";
712
- }
713
-
714
- .dashicons-portfolio:before {
715
- content:"\f322";
716
- }
717
-
718
- .dashicons-book:before {
719
- content:"\f330";
720
- }
721
-
722
- .dashicons-book-alt:before {
723
- content:"\f331";
724
- }
725
-
726
- .dashicons-download:before {
727
- content:"\f316";
728
- }
729
-
730
- .dashicons-upload:before {
731
- content:"\f317";
732
- }
733
-
734
- .dashicons-backup:before {
735
- content:"\f321";
736
- }
737
-
738
- .dashicons-clock:before {
739
- content:"\f469";
740
- }
741
-
742
- .dashicons-lightbulb:before {
743
- content:"\f339";
744
- }
745
-
746
- .dashicons-desktop:before {
747
- content:"\f472";
748
- }
749
-
750
- .dashicons-tablet:before {
751
- content:"\f471";
752
- }
753
-
754
- .dashicons-smartphone:before {
755
- content:"\f470";
756
- }
757
-
758
- .dashicons-smiley:before {
759
- content:"\f328";
760
- }
1
+ @font-face {
2
+ font-family: "dashicons";
3
+ src: url("fonts/dashicons.eot");
4
+ }
5
+
6
+ @font-face {
7
+ font-family: "dashicons";
8
+ src: url(data:application/x-font-woff;charset=utf-8;base64,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) format('woff'),
9
+ url("fonts/dashicons.ttf") format("truetype"),
10
+ url("fonts/dashicons.svg#dashicons") format("svg");
11
+ font-weight: normal;
12
+ font-style: normal;
13
+ }
14
+
15
+ .dashicons {
16
+ display: inline-block;
17
+ width: 20px;
18
+ height: 20px;
19
+ -webkit-font-smoothing: antialiased;
20
+ font-size: 20px;
21
+ line-height: 1;
22
+ font-family: "dashicons";
23
+ text-decoration: inherit;
24
+ font-weight: normal;
25
+ font-style: normal;
26
+ vertical-align: top;
27
+ -moz-transition: color .1s ease-in 0;
28
+ -webkit-transition: color .1s ease-in 0;
29
+ text-align: center;
30
+ }
31
+
32
+
33
+ /* Admin Menu Icons */
34
+
35
+ .dashicons-menu:before {
36
+ content:"\f333";
37
+ }
38
+
39
+ .dashicons-admin-site:before {
40
+ content:"\f319";
41
+ }
42
+
43
+ .dashicons-dashboard:before {
44
+ content:"\f226";
45
+ }
46
+
47
+ .dashicons-admin-media:before {
48
+ content: "\f104";
49
+ }
50
+
51
+ .dashicons-admin-page:before {
52
+ content: "\f105";
53
+ }
54
+
55
+ .dashicons-admin-comments:before {
56
+ content: "\f101";
57
+ }
58
+
59
+ .dashicons-admin-appearance:before {
60
+ content: "\f100";
61
+ }
62
+
63
+ .dashicons-admin-plugins:before {
64
+ content: "\f106";
65
+ }
66
+
67
+ .dashicons-admin-users:before {
68
+ content: "\f110";
69
+ }
70
+
71
+ .dashicons-admin-tools:before {
72
+ content: "\f107";
73
+ }
74
+
75
+ .dashicons-admin-settings:before {
76
+ content: "\f108";
77
+ }
78
+
79
+ .dashicons-admin-network:before {
80
+ content: "\f112";
81
+ }
82
+
83
+ .dashicons-admin-generic:before {
84
+ content: "\f111";
85
+ }
86
+
87
+ .dashicons-admin-home:before {
88
+ content: "\f102";
89
+ }
90
+
91
+ .dashicons-admin-collapse:before {
92
+ content:"\f148";
93
+ }
94
+
95
+
96
+ /* Both Admin Menu and Post Formats */
97
+
98
+ .dashicons-admin-links:before,
99
+ .dashicons-format-links:before {
100
+ content: "\f103";
101
+ }
102
+
103
+ .dashicons-admin-post:before,
104
+ .dashicons-format-standard:before {
105
+ content: "\f109";
106
+ }
107
+
108
+
109
+ /* Post Format Icons */
110
+
111
+ .dashicons-format-image:before {
112
+ content: "\f128";
113
+ }
114
+
115
+ .dashicons-format-gallery:before {
116
+ content: "\f161";
117
+ }
118
+
119
+ .dashicons-format-audio:before {
120
+ content: "\f127";
121
+ }
122
+
123
+ .dashicons-format-video:before {
124
+ content: "\f126";
125
+ }
126
+
127
+ .dashicons-format-chat:before {
128
+ content: "\f125";
129
+ }
130
+
131
+ .dashicons-format-status:before {
132
+ content: "\f130";
133
+ }
134
+
135
+ .dashicons-format-aside:before {
136
+ content: "\f123";
137
+ }
138
+
139
+ .dashicons-format-quote:before {
140
+ content: "\f122";
141
+ }
142
+
143
+
144
+ /* Welcome Screen Icons */
145
+
146
+ .dashicons-welcome-write-blog:before,
147
+ .dashicons-welcome-edit-page:before {
148
+ content:"\f119";
149
+ }
150
+
151
+ .dashicons-welcome-add-page:before {
152
+ content:"\f133";
153
+ }
154
+
155
+ .dashicons-welcome-view-site:before {
156
+ content:"\f115";
157
+ }
158
+
159
+ .dashicons-welcome-widgets-menus:before {
160
+ content:"\f116";
161
+ }
162
+
163
+ .dashicons-welcome-comments:before {
164
+ content:"\f117";
165
+ }
166
+
167
+ .dashicons-welcome-learn-more:before {
168
+ content:"\f118";
169
+ }
170
+
171
+
172
+ /* Image Editing Icons */
173
+
174
+ .dashicons-image-crop:before {
175
+ content:"\f165";
176
+ }
177
+
178
+ .dashicons-image-rotate-left:before {
179
+ content:"\f166";
180
+ }
181
+
182
+ .dashicons-image-rotate-right:before {
183
+ content:"\f167";
184
+ }
185
+
186
+ .dashicons-image-flip-vertical:before {
187
+ content:"\f168";
188
+ }
189
+
190
+ .dashicons-image-flip-horizontal:before {
191
+ content:"\f169";
192
+ }
193
+
194
+
195
+ /* Both Image Editing and TinyMCE */
196
+
197
+ .dashicons-undo:before {
198
+ content:"\f171";
199
+ }
200
+
201
+ .dashicons-redo:before {
202
+ content:"\f172";
203
+ }
204
+
205
+ /* TinyMCE Icons */
206
+
207
+ .dashicons-editor-bold:before {
208
+ content:"\f200";
209
+ }
210
+
211
+ .dashicons-editor-italic:before {
212
+ content:"\f201";
213
+ }
214
+
215
+ .dashicons-editor-ul:before {
216
+ content:"\f203";
217
+ }
218
+
219
+ .dashicons-editor-ol:before {
220
+ content:"\f204";
221
+ }
222
+
223
+ .dashicons-editor-quote:before {
224
+ content:"\f205";
225
+ }
226
+
227
+ .dashicons-editor-alignleft:before {
228
+ content:"\f206";
229
+ }
230
+
231
+ .dashicons-editor-aligncenter:before {
232
+ content:"\f207";
233
+ }
234
+
235
+ .dashicons-editor-alignright:before {
236
+ content:"\f208";
237
+ }
238
+
239
+ .dashicons-editor-insertmore:before {
240
+ content:"\f209";
241
+ }
242
+
243
+ .dashicons-editor-spellcheck:before {
244
+ content:"\f210";
245
+ }
246
+
247
+ .dashicons-editor-distractionfree:before {
248
+ content:"\f211";
249
+ }
250
+
251
+ .dashicons-editor-kitchensink:before {
252
+ content:"\f212";
253
+ }
254
+
255
+ .dashicons-editor-underline:before {
256
+ content:"\f213";
257
+ }
258
+
259
+ .dashicons-editor-justify:before {
260
+ content:"\f214";
261
+ }
262
+
263
+ .dashicons-editor-textcolor:before {
264
+ content:"\f215";
265
+ }
266
+
267
+ .dashicons-editor-paste-word:before {
268
+ content:"\f216";
269
+ }
270
+
271
+ .dashicons-editor-paste-text:before {
272
+ content:"\f217";
273
+ }
274
+
275
+ .dashicons-editor-removeformatting:before {
276
+ content:"\f218";
277
+ }
278
+
279
+ .dashicons-editor-video:before {
280
+ content:"\f219";
281
+ }
282
+
283
+ .dashicons-editor-customchar:before {
284
+ content:"\f220";
285
+ }
286
+
287
+ .dashicons-editor-outdent:before {
288
+ content:"\f221";
289
+ }
290
+
291
+ .dashicons-editor-indent:before {
292
+ content:"\f222";
293
+ }
294
+
295
+ .dashicons-editor-help:before {
296
+ content:"\f223";
297
+ }
298
+
299
+ .dashicons-editor-strikethrough:before {
300
+ content:"\f224";
301
+ }
302
+
303
+ .dashicons-editor-unlink:before {
304
+ content:"\f225";
305
+ }
306
+
307
+ .dashicons-editor-rtl:before {
308
+ content:"\f320";
309
+ }
310
+
311
+ .dashicons-editor-break:before {
312
+ content:"\f474";
313
+ }
314
+
315
+ .dashicons-editor-code:before {
316
+ content:"\f475";
317
+ }
318
+
319
+ .dashicons-editor-paragraph:before {
320
+ content:"\f476";
321
+ }
322
+
323
+ /* Post Icons */
324
+
325
+ .dashicons-align-left:before {
326
+ content:"\f135";
327
+ }
328
+
329
+ .dashicons-align-right:before {
330
+ content:"\f136";
331
+ }
332
+
333
+ .dashicons-align-center:before {
334
+ content:"\f134";
335
+ }
336
+
337
+ .dashicons-align-none:before {
338
+ content:"\f138";
339
+ }
340
+
341
+ .dashicons-lock:before {
342
+ content:"\f160";
343
+ }
344
+
345
+ .dashicons-calendar:before {
346
+ content:"\f145";
347
+ }
348
+
349
+ .dashicons-visibility:before {
350
+ content:"\f177";
351
+ }
352
+
353
+ .dashicons-post-status:before {
354
+ content:"\f173";
355
+ }
356
+
357
+ .dashicons-edit:before {
358
+ content:"\f464";
359
+ }
360
+
361
+ .dashicons-trash:before {
362
+ content:"\f182";
363
+ }
364
+
365
+
366
+ /* Sorting */
367
+
368
+ .dashicons-arrow-up:before {
369
+ content:"\f142";
370
+ }
371
+
372
+ .dashicons-arrow-down:before {
373
+ content:"\f140";
374
+ }
375
+
376
+ .dashicons-arrow-left:before {
377
+ content:"\f141";
378
+ }
379
+
380
+ .dashicons-arrow-right:before {
381
+ content:"\f139";
382
+ }
383
+
384
+ .dashicons-arrow-up-alt:before {
385
+ content:"\f342";
386
+ }
387
+
388
+ .dashicons-arrow-down-alt:before {
389
+ content:"\f346";
390
+ }
391
+
392
+ .dashicons-arrow-left-alt:before {
393
+ content:"\f340";
394
+ }
395
+
396
+ .dashicons-arrow-right-alt:before {
397
+ content:"\f344";
398
+ }
399
+
400
+ .dashicons-arrow-up-alt2:before {
401
+ content:"\f343";
402
+ }
403
+
404
+ .dashicons-arrow-down-alt2:before {
405
+ content:"\f347";
406
+ }
407
+
408
+ .dashicons-arrow-left-alt2:before {
409
+ content:"\f341";
410
+ }
411
+
412
+ .dashicons-arrow-right-alt2:before {
413
+ content:"\f345";
414
+ }
415
+
416
+ .dashicons-leftright:before {
417
+ content:"\f229";
418
+ }
419
+
420
+ .dashicons-sort:before {
421
+ content:"\f156";
422
+ }
423
+
424
+ .dashicons-list-view:before {
425
+ content:"\f163";
426
+ }
427
+
428
+ .dashicons-exerpt-view:before {
429
+ content:"\f164";
430
+ }
431
+
432
+
433
+ /* Social Icons */
434
+
435
+ .dashicons-share:before {
436
+ content:"\f237";
437
+ }
438
+
439
+ .dashicons-share1:before {
440
+ content:"\f237";
441
+ }
442
+
443
+ .dashicons-share-alt:before {
444
+ content:"\f240";
445
+ }
446
+
447
+ .dashicons-share-alt2:before {
448
+ content:"\f242";
449
+ }
450
+
451
+ .dashicons-twitter:before {
452
+ content:"\f301";
453
+ }
454
+
455
+ .dashicons-rss:before {
456
+ content:"\f303";
457
+ }
458
+
459
+ .dashicons-email:before {
460
+ content:"\f465";
461
+ }
462
+
463
+ .dashicons-email-alt:before {
464
+ content:"\f466";
465
+ }
466
+
467
+ .dashicons-facebook:before {
468
+ content:"\f304";
469
+ }
470
+
471
+ .dashicons-facebook-alt:before {
472
+ content:"\f305";
473
+ }
474
+
475
+ .dashicons-networking:before {
476
+ content:"\f325";
477
+ }
478
+
479
+ .dashicons-googleplus:before {
480
+ content:"\f462";
481
+ }
482
+
483
+
484
+ /* Jobs Icons */
485
+
486
+ .dashicons-hammer:before {
487
+ content:"\f308";
488
+ }
489
+
490
+ .dashicons-art:before {
491
+ content:"\f309";
492
+ }
493
+
494
+ .dashicons-migrate:before {
495
+ content:"\f310";
496
+ }
497
+
498
+ .dashicons-performance:before {
499
+ content:"\f311";
500
+ }
501
+
502
+
503
+ /* Internal/Products */
504
+
505
+ .dashicons-wordpress:before {
506
+ content:"\f120";
507
+ }
508
+
509
+ .dashicons-wordpress-alt:before {
510
+ content:"\f324";
511
+ }
512
+
513
+ .dashicons-pressthis:before {
514
+ content:"\f157";
515
+ }
516
+
517
+ .dashicons-update:before {
518
+ content:"\f463";
519
+ }
520
+
521
+ .dashicons-screenoptions:before {
522
+ content:"\f180";
523
+ }
524
+
525
+ .dashicons-info:before {
526
+ content:"\f348";
527
+ }
528
+
529
+ .dashicons-cart:before {
530
+ content:"\f174";
531
+ }
532
+
533
+ .dashicons-feedback:before {
534
+ content:"\f175";
535
+ }
536
+
537
+ .dashicons-cloud:before {
538
+ content:"\f176";
539
+ }
540
+
541
+ .dashicons-translation:before {
542
+ content:"\f326";
543
+ }
544
+
545
+
546
+ /* Taxonomies */
547
+
548
+ .dashicons-tag:before {
549
+ content:"\f323";
550
+ }
551
+
552
+ .dashicons-category:before {
553
+ content:"\f318";
554
+ }
555
+
556
+
557
+ /* Alerts/Notifications/Flags */
558
+
559
+ .dashicons-yes:before {
560
+ content:"\f147";
561
+ }
562
+
563
+ .dashicons-no:before {
564
+ content:"\f158";
565
+ }
566
+
567
+ .dashicons-no-alt:before {
568
+ content:"\f335";
569
+ }
570
+
571
+ .dashicons-plus:before {
572
+ content:"\f132";
573
+ }
574
+
575
+ .dashicons-minus:before {
576
+ content:"\f460";
577
+ }
578
+
579
+ .dashicons-dismiss:before {
580
+ content:"\f153";
581
+ }
582
+
583
+ .dashicons-marker:before {
584
+ content:"\f159";
585
+ }
586
+
587
+ .dashicons-star-filled:before {
588
+ content:"\f155";
589
+ }
590
+
591
+ .dashicons-star-half:before {
592
+ content:"\f459";
593
+ }
594
+
595
+ .dashicons-star-empty:before {
596
+ content:"\f154";
597
+ }
598
+
599
+ .dashicons-flag:before {
600
+ content:"\f227";
601
+ }
602
+
603
+
604
+ /* Misc/CPT */
605
+
606
+ .dashicons-location:before {
607
+ content:"\f230";
608
+ }
609
+
610
+ .dashicons-location-alt:before {
611
+ content:"\f231";
612
+ }
613
+
614
+ .dashicons-camera:before {
615
+ content:"\f306";
616
+ }
617
+
618
+ .dashicons-images-alt:before {
619
+ content:"\f232";
620
+ }
621
+
622
+ .dashicons-images-alt2:before {
623
+ content:"\f233";
624
+ }
625
+
626
+ .dashicons-video-alt:before {
627
+ content:"\f234";
628
+ }
629
+
630
+ .dashicons-video-alt2:before {
631
+ content:"\f235";
632
+ }
633
+
634
+ .dashicons-video-alt3:before {
635
+ content:"\f236";
636
+ }
637
+
638
+ .dashicons-vault:before {
639
+ content:"\f178";
640
+ }
641
+
642
+ .dashicons-shield:before {
643
+ content:"\f332";
644
+ }
645
+
646
+ .dashicons-shield-alt:before {
647
+ content:"\f334";
648
+ }
649
+
650
+ .dashicons-sos:before {
651
+ content:"\f468";
652
+ }
653
+
654
+ .dashicons-search:before {
655
+ content:"\f179";
656
+ }
657
+
658
+ .dashicons-slides:before {
659
+ content:"\f181";
660
+ }
661
+
662
+ .dashicons-analytics:before {
663
+ content:"\f183";
664
+ }
665
+
666
+ .dashicons-chart-pie:before {
667
+ content:"\f184";
668
+ }
669
+
670
+ .dashicons-chart-bar:before {
671
+ content:"\f185";
672
+ }
673
+
674
+ .dashicons-chart-line:before {
675
+ content:"\f238";
676
+ }
677
+
678
+ .dashicons-chart-area:before {
679
+ content:"\f239";
680
+ }
681
+
682
+ .dashicons-groups:before {
683
+ content:"\f307";
684
+ }
685
+
686
+ .dashicons-businessman:before {
687
+ content:"\f338";
688
+ }
689
+
690
+ .dashicons-id:before {
691
+ content:"\f336";
692
+ }
693
+
694
+ .dashicons-id-alt:before {
695
+ content:"\f337";
696
+ }
697
+
698
+ .dashicons-products:before {
699
+ content:"\f312";
700
+ }
701
+
702
+ .dashicons-awards:before {
703
+ content:"\f313";
704
+ }
705
+
706
+ .dashicons-forms:before {
707
+ content:"\f314";
708
+ }
709
+
710
+ .dashicons-testimonial:before {
711
+ content:"\f473";
712
+ }
713
+
714
+ .dashicons-portfolio:before {
715
+ content:"\f322";
716
+ }
717
+
718
+ .dashicons-book:before {
719
+ content:"\f330";
720
+ }
721
+
722
+ .dashicons-book-alt:before {
723
+ content:"\f331";
724
+ }
725
+
726
+ .dashicons-download:before {
727
+ content:"\f316";
728
+ }
729
+
730
+ .dashicons-upload:before {
731
+ content:"\f317";
732
+ }
733
+
734
+ .dashicons-backup:before {
735
+ content:"\f321";
736
+ }
737
+
738
+ .dashicons-clock:before {
739
+ content:"\f469";
740
+ }
741
+
742
+ .dashicons-lightbulb:before {
743
+ content:"\f339";
744
+ }
745
+
746
+ .dashicons-desktop:before {
747
+ content:"\f472";
748
+ }
749
+
750
+ .dashicons-tablet:before {
751
+ content:"\f471";
752
+ }
753
+
754
+ .dashicons-smartphone:before {
755
+ content:"\f470";
756
+ }
757
+
758
+ .dashicons-smiley:before {
759
+ content:"\f328";
760
+ }
css/style-dfi.css CHANGED
@@ -1,91 +1,91 @@
1
- /**
2
- * @file style-dfi.css
3
- *
4
- * Style for dynamic featured image plugin
5
- *
6
- * Copyright (c) 2013, Ankit Pokhrel <ankitpokhrel@gmail.com, http://ankitpokhrel.com.np>
7
- */
8
-
9
- .dfiAddNew {
10
- float: left;
11
- margin-top: 3px;
12
- }
13
-
14
- .dfiRemove {
15
- float: right;
16
- }
17
-
18
- .dfiLinks{
19
- padding: 2px 0;
20
- }
21
-
22
- .dfiClearFloat {
23
- clear: both;
24
- }
25
-
26
- .featured-meta-box a:not(.hasFeaturedImage):not(.dfiAddNew) {
27
- display: inline-block !important;
28
- margin: 3px 0;
29
- }
30
-
31
- img.dfiImg {
32
- max-width: 258px;
33
- }
34
-
35
- img.dfiImg[src=""]{
36
- display: none;
37
- }
38
-
39
- img.dfiImgEmpty {
40
- display: none;
41
- }
42
-
43
- .dfiLoading {
44
- background: url("../img/spinner.gif") no-repeat;
45
- display: inline-block;
46
- height: 20px;
47
- position: relative;
48
- top: 2px;
49
- width: 20px;
50
- }
51
-
52
- .dfiFeaturedImage {
53
- border: 2px dashed #AAA;
54
- color: #CCC;
55
- height: 130px;
56
- margin: 10px 0 !important;
57
- padding: 10px;
58
- text-align: center;
59
- width: 235px;
60
- }
61
-
62
- .dfiFeaturedImage:hover{
63
- border-color: #999;
64
- }
65
-
66
- .dfiFeaturedImage > span {
67
- display: inline-block;
68
- font-size: 54px;
69
- margin-top: 17%;
70
- margin-right: 11%;
71
- }
72
-
73
- .hasFeaturedImage {
74
- border: none;
75
- width: auto;
76
- height: auto;
77
- margin: 0 !important;
78
- position: absolute;
79
- top: 30%;
80
- left: 37%;
81
- display: none;
82
- z-index: 999;
83
- }
84
-
85
- .dashicons {
86
- text-decoration: none !important;
87
- }
88
-
89
- .dashicons:hover, .dfiFeaturedImage:hover {
90
- color: #2ea2cc !important;
91
  }
1
+ /**
2
+ * @file style-dfi.css
3
+ *
4
+ * Style for dynamic featured image plugin
5
+ *
6
+ * Copyright (c) 2013, Ankit Pokhrel <ankitpokhrel@gmail.com, http://ankitpokhrel.com.np>
7
+ */
8
+
9
+ .dfiAddNew {
10
+ float: left;
11
+ margin-top: 3px;
12
+ }
13
+
14
+ .dfiRemove {
15
+ float: right;
16
+ }
17
+
18
+ .dfiLinks{
19
+ padding: 2px 0;
20
+ }
21
+
22
+ .dfiClearFloat {
23
+ clear: both;
24
+ }
25
+
26
+ .featured-meta-box a:not(.hasFeaturedImage):not(.dfiAddNew) {
27
+ display: inline-block !important;
28
+ margin: 3px 0;
29
+ }
30
+
31
+ img.dfiImg {
32
+ max-width: 258px;
33
+ }
34
+
35
+ img.dfiImg[src=""]{
36
+ display: none;
37
+ }
38
+
39
+ img.dfiImgEmpty {
40
+ display: none;
41
+ }
42
+
43
+ .dfiLoading {
44
+ background: url("../img/spinner.gif") no-repeat;
45
+ display: inline-block;
46
+ height: 20px;
47
+ position: relative;
48
+ top: 2px;
49
+ width: 20px;
50
+ }
51
+
52
+ .dfiFeaturedImage {
53
+ border: 2px dashed #AAA;
54
+ color: #CCC;
55
+ height: 130px;
56
+ margin: 10px 0 !important;
57
+ padding: 10px;
58
+ text-align: center;
59
+ width: 235px;
60
+ }
61
+
62
+ .dfiFeaturedImage:hover{
63
+ border-color: #999;
64
+ }
65
+
66
+ .dfiFeaturedImage > span {
67
+ display: inline-block;
68
+ font-size: 54px;
69
+ margin-top: 17%;
70
+ margin-right: 11%;
71
+ }
72
+
73
+ .hasFeaturedImage {
74
+ border: none;
75
+ width: auto;
76
+ height: auto;
77
+ margin: 0 !important;
78
+ position: absolute;
79
+ top: 30%;
80
+ left: 37%;
81
+ display: none;
82
+ z-index: 999;
83
+ }
84
+
85
+ .dashicons {
86
+ text-decoration: none !important;
87
+ }
88
+
89
+ .dashicons:hover, .dfiFeaturedImage:hover {
90
+ color: #2ea2cc !important;
91
  }
dynamic-featured-image.php CHANGED
@@ -1,954 +1,1006 @@
1
- <?php
2
- /***
3
- Plugin Name: Dynamic Featured Image
4
- Plugin URI: http://wordpress.org/plugins/dynamic-featured-image/
5
- Description: Dynamically adds multiple featured image or post thumbnail functionality to your posts, pages and custom post types.
6
- Version: 3.4.0
7
- Author: Ankit Pokhrel
8
- Author URI: http://ankitpokhrel.com.np
9
- License: GPL2 or later
10
- License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
- Text Domain: dynamic-featured-image
12
- Domain Path: /languages
13
-
14
- Copyright (C) 2013 Ankit Pokhrel <ankitpokhrel@gmail.com, http://ankitpokhrel.com.np>,
15
-
16
- This program is free software; you can redistribute it and/or modify
17
- it under the terms of the GNU General Public License as published by
18
- the Free Software Foundation; either version 3 of the License, or
19
- (at your option) any later version.
20
-
21
- This program is distributed in the hope that it will be useful,
22
- but WITHOUT ANY WARRANTY; without even the implied warranty of
23
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24
- GNU General Public License for more details.
25
-
26
- You should have received a copy of the GNU General Public License
27
- along with this program. If not, see <http://www.gnu.org/licenses/>.
28
- */
29
-
30
- // Avoid direct calls to this file
31
- if ( !defined( 'ABSPATH' ) ) {
32
- header( 'Status: 403 Forbidden' );
33
- header( 'HTTP/1.1 403 Forbidden' );
34
- exit();
35
- }
36
-
37
- /**
38
- * Dynamic Featured Image plugin main class
39
- *
40
- * @package dynamic-featured-image
41
- * @author Ankit Pokhrel <ankitpokhrel@gmail.com>
42
- * @version 3.0.1
43
- */
44
- class Dynamic_Featured_Image
45
- {
46
- /**
47
- * Current version of the plugin.
48
- *
49
- * @since 3.0.0
50
- */
51
- const VERSION = '3.4.0';
52
- private $upload_dir, $upload_url, $db, $textDomain, $_metabox_title, $_userFilter;
53
-
54
- /**
55
- * Constructor. Hooks all interactions to initialize the class.
56
- *
57
- * @since 1.0.0
58
- * @access public
59
- * @global object $wpdb
60
- *
61
- * @see add_action()
62
- */
63
- public function __construct()
64
- {
65
- $this->textDomain = 'dynamic-featured-image';
66
-
67
- if ( is_admin() ) {
68
- add_action( 'in_plugin_update_message-' . plugin_basename(__FILE__), array( $this, 'update_notice' ) );
69
- }
70
-
71
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) );
72
- add_action( 'add_meta_boxes', array( $this, 'initialize_featured_box' ) );
73
- add_action( 'save_post', array( $this, 'save_meta' ) );
74
- add_action( 'plugins_loaded', array( $this, 'load_plugin_textdomain' ) );
75
-
76
- //handle ajax request
77
- add_action( 'wp_ajax_dfiMetaBox_callback', array( $this, 'ajax_callback' ) );
78
-
79
- //media uploader custom fields
80
- add_filter( 'attachment_fields_to_edit', array($this, 'media_attachment_custom_fields'), 10, 2 );
81
- add_filter( 'attachment_fields_to_save', array($this, 'media_attachment_custom_fields_save'), 10, 2 );
82
-
83
- //get the site protocol
84
- $protocol = ( (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ||
85
- $_SERVER['SERVER_PORT'] == 443 ) ? "https://" : "http://";
86
-
87
- $this->upload_dir = wp_upload_dir();
88
- $this->upload_url = preg_replace('#^https?://#', '', $this->upload_dir['baseurl']);
89
-
90
- //add protocol to the upload url
91
- $this->upload_url = $protocol . $this->upload_url;
92
-
93
- //post type filter added by user
94
- $this->_userFilter = array();
95
-
96
- global $wpdb;
97
- $this->db = $wpdb;
98
-
99
- } // END __construct()
100
-
101
- /**
102
- * Add required admin scripts
103
- *
104
- * @since 1.0.0
105
- * @access public
106
- *
107
- * @see wp_enque_style()
108
- * @see wp_register_script()
109
- * @see wp_enqueue_script()
110
- *
111
- * @return Void
112
- */
113
- public function enqueue_admin_scripts()
114
- {
115
- //enqueue styles
116
- wp_enqueue_style( 'style-dfi', plugins_url( '/css/style-dfi.css', __FILE__ ), array(), self::VERSION );
117
- wp_enqueue_style( 'dashicons', plugins_url( '/css/dashicons.css', __FILE__ ), array(), self::VERSION );
118
-
119
- //register script
120
- wp_register_script( 'scripts-dfi', plugins_url( '/js/script-dfi.js', __FILE__), array( 'jquery' ), self::VERSION );
121
-
122
- //localize the script with required data
123
- wp_localize_script(
124
- 'scripts-dfi',
125
- 'WP_SPECIFIC',
126
- array(
127
- 'upload_url' => $this->upload_url,
128
- 'metabox_title' => __($this->_metabox_title, $this->textDomain),
129
- 'mediaSelector_title' => __('Dynamic Featured Image - Media Selector', $this->textDomain),
130
- 'mediaSelector_buttonText' => __('Set Featured Image', $this->textDomain)
131
- )
132
- );
133
-
134
- //enqueue scripts
135
- wp_enqueue_script( 'scripts-dfi' );
136
-
137
- } // END initialize_components()
138
-
139
- /**
140
- * Add featured meta boxes dynamically
141
- *
142
- * @since 1.0.0
143
- * @access public
144
- * @global object $post
145
- *
146
- * @see get_post_meta()
147
- * @see get_post_types()
148
- * @see add_meta_box()
149
- * @see add_filter()
150
- *
151
- * @return Void
152
- */
153
- public function initialize_featured_box()
154
- {
155
- global $post;
156
-
157
- //make metabox title dynamic
158
- $this->_metabox_title = apply_filters('dfi_set_metabox_title', __("Featured Image"));
159
-
160
- $featuredData = get_post_meta( $post->ID, 'dfiFeatured', true );
161
- $totalFeatured = count( $featuredData );
162
-
163
- $defaultFilter = array( 'attachment', 'revision', 'nav_menu_item' );
164
- $this->_userFilter = apply_filters('dfi_post_type_user_filter', $this->_userFilter);
165
- $filter = array_merge($defaultFilter, $this->_userFilter);
166
-
167
- $postTypes = get_post_types();
168
- $postTypes = array_diff( $postTypes, $filter );
169
-
170
- $postTypes = apply_filters('dfi_post_types', $postTypes);
171
-
172
- if ( !empty($featuredData) && $totalFeatured >= 1 ) {
173
- $i = 2;
174
- foreach ($featuredData as $featured) {
175
- self::_dfi_add_meta_box($postTypes, $featured, $i);
176
- $i++;
177
- }
178
- } else {
179
- self::_dfi_add_meta_box($postTypes);
180
- }
181
-
182
- } // END initialize_featured_box()
183
-
184
- /**
185
- * Translates more than one digit number digit by digit.
186
- * @param Integer $number Integer to be translated
187
- * @return String Translated number
188
- */
189
- private function _get_number_translation($number)
190
- {
191
- if ($number <= 9) {
192
- return __($number, $this->textDomain);
193
- } else {
194
- $pieces = str_split($number, 1);
195
- $buffer = '';
196
- foreach ($pieces as $piece) {
197
- $buffer .= __($piece, $this->textDomain);
198
- }
199
-
200
- return $buffer;
201
- }
202
- }
203
-
204
- /**
205
- * adds meta boxes
206
- * @param Array $postTypes post types to show featured image box
207
- * @param Object $featured callback arguments
208
- * @param Integer $i index of the featured image
209
- * @return Void
210
- */
211
- private function _dfi_add_meta_box($postTypes, $featured = null, $i = null)
212
- {
213
- if ( !is_null($i) ) {
214
- foreach ($postTypes as $type) {
215
- add_meta_box(
216
- 'dfiFeaturedMetaBox-' . $i,
217
- __($this->_metabox_title, $this->textDomain) . " " . self::_get_number_translation($i),
218
- array( $this, 'featured_meta_box' ),
219
- $type,
220
- 'side',
221
- 'low',
222
- array( $featured, $i + 1 )
223
- );
224
- add_filter( "postbox_classes_{$type}_dfiFeaturedMetaBox-" . $i, array( $this, 'add_metabox_classes' ) );
225
- }
226
-
227
- } else {
228
- foreach ($postTypes as $type) {
229
- add_meta_box(
230
- 'dfiFeaturedMetaBox',
231
- __( $this->_metabox_title, $this->textDomain ) . " " . __(2, $this->textDomain),
232
- array( $this, 'featured_meta_box' ),
233
- $type,
234
- 'side',
235
- 'low',
236
- array( null, null )
237
- );
238
- add_filter( "postbox_classes_{$type}_dfiFeaturedMetaBox", array( $this, 'add_metabox_classes' ) );
239
- }
240
- }
241
-
242
- }
243
-
244
- /**
245
- * Separate thumb and full image url from given URL string
246
- *
247
- * @since 3.3.1
248
- *
249
- * @param string $urlString [description]
250
- * @param string $state Thumb or full
251
- *
252
- * @return string|null
253
- */
254
- private function _separate($urlString, $state = 'thumb')
255
- {
256
- $imagePiece = explode( ',', $urlString );
257
-
258
- if( $state == 'thumb' ) {
259
- return isset($imagePiece[0]) ? $imagePiece[0] : null;
260
- }
261
-
262
- return isset($imagePiece[1]) ? $imagePiece[1] : null;
263
- }
264
-
265
- /**
266
- * Featured meta box as seen in the admin
267
- *
268
- * @since 1.0.0
269
- * @access public
270
- *
271
- * @see wp_nonce_field()
272
- * @see plugin_basename()
273
- *
274
- * @param Object $post global post object
275
- * @param Array $featured array containing featured image count
276
- *
277
- * @return Void
278
- */
279
- public function featured_meta_box($post, $featured)
280
- {
281
- $featuredImg = $featured['args'][0];
282
- $featuredId = is_null( $featured['args'][1]) ? 2 : --$featured['args'][1];
283
-
284
- $featuredImgTrimmed = $featuredImgFull = $featuredImg;
285
- if ( !is_null( $featuredImg ) ) {
286
- $featuredImgTrimmed = self::_separate($featuredImg);
287
- $featuredImgFull = self::_separate($featuredImg, 'full');
288
- }
289
-
290
- try {
291
-
292
- $thumbnail = $this->get_image_thumb( $this->upload_url . $featuredImgFull, 'medium' );
293
- if ( is_null($thumbnail) ) {
294
-
295
- //medium sized thumbnail image is missing
296
- throw new Exception("Medium size image not found", 1);
297
-
298
- }
299
-
300
- } catch (Exception $e) {
301
-
302
- //since medium sized thumbnail image was not found,
303
- //let's set full image url as thumbnail
304
- $thumbnail = $featuredImgFull;
305
-
306
- }
307
-
308
- //Add a nonce field
309
- wp_nonce_field(plugin_basename(__FILE__), 'dfi_fimageplug-' . $featuredId);
310
- echo self::_get_featured_box($featuredImgTrimmed, $featuredImg, $featuredId, $thumbnail);
311
-
312
- } // END featured_meta_box()
313
-
314
- /**
315
- * Returns featured box html content
316
- * @since 3.1.0
317
- * @access private
318
- *
319
- * @param String $featuredImgTrimmed Medium sized image
320
- * @param String $featuredImg Full sized image
321
- * @param String $featuredId Attachment Id
322
- * @param String $thumbnail Thumb sized image
323
- *
324
- * @return String Html content
325
- */
326
- private function _get_featured_box($featuredImgTrimmed, $featuredImg, $featuredId, $thumbnail)
327
- {
328
- $hasFeaturedImage = !empty($featuredImgTrimmed) ? 'hasFeaturedImage' : '';
329
- $thumbnail = !is_null($thumbnail) ? $thumbnail : '';
330
- $dfiEmpty = is_null($featuredImgTrimmed) ? 'dfiImgEmpty' : '';
331
-
332
- return "<a href='javascript:void(0)' class='dfiFeaturedImage {$hasFeaturedImage}' title='". __('Set Featured Image', $this->textDomain) . "' data-post-id='" . get_the_ID() . "'><span class='dashicons dashicons-camera'></span></a><br/>
333
- <img src='" . $thumbnail . "' class='dfiImg {$dfiEmpty}'/>
334
- <div class='dfiLinks'>
335
- <a href='javascript:void(0)'' data-id='{$featuredId}' data-id-local='" . self::_get_number_translation( ($featuredId + 1) ) . "' class='dfiAddNew dashicons dashicons-plus' title='" . __('Add New', $this->textDomain) ."'></a>
336
- <a href='javascript:void(0)' class='dfiRemove dashicons dashicons-minus' title='" . __('Remove', $this->textDomain) . "'></a>
337
- </div>
338
- <div class='dfiClearFloat'></div>
339
- <input type='hidden' name='dfiFeatured[]' value='{$featuredImg}' class='dfiImageHolder' />";
340
- }
341
-
342
- /**
343
- * Load new featured meta box via ajax
344
- *
345
- * @since 1.0.0
346
- * @access public
347
- *
348
- * @see wp_nonce_field()
349
- * @see plugin_basename()
350
- *
351
- * @return Void
352
- */
353
- public function ajax_callback()
354
- {
355
- $featuredId = isset($_POST['id']) ? (int) strip_tags( trim( $_POST['id'] ) ) : null;
356
-
357
- if ( is_null( $featuredId ) ) {
358
- return;
359
- }
360
-
361
- wp_nonce_field( plugin_basename(__FILE__), 'dfi_fimageplug-' . $featuredId );
362
- ?>
363
- <a href="javascript:void(0)" class='dfiFeaturedImage' title="<?php echo __('Set Featured Image', $this->textDomain) ?>"><span class="dashicons dashicons-camera"></span></a><br/>
364
- <img src="" class='dfiImg dfiImgEmpty'/>
365
- <div class='dfiLinks'>
366
- <a href="javascript:void(0)" data-id='<?php echo $featuredId ?>' data-id-local='<?php echo self::_get_number_translation( ($featuredId + 1) ) ?>' class='dfiAddNew dashicons dashicons-plus' title="<?php echo __('Add New', $this->textDomain) ?>"></a>
367
- <a href="javascript:void(0)" class='dfiRemove dashicons dashicons-minus' title="<?php echo __('Remove', $this->textDomain) ?>"></a>
368
- </div>
369
- <div class='dfiClearFloat'></div>
370
- <input type='hidden' name="dfiFeatured[]" value="" class="dfiImageHolder" />
371
- <?php
372
- die();
373
-
374
- } // END MetaBox_callback())
375
-
376
- /**
377
- * Add custom class 'featured-meta-box' to meta box
378
- *
379
- * @since 1.0.0
380
- * @access public
381
- *
382
- * @see add_metabox_classes
383
- *
384
- * @param $classes classes to add in the meta box
385
- *
386
- * @return string
387
- */
388
- public function add_metabox_classes($classes)
389
- {
390
- array_push( $classes, 'featured-meta-box' );
391
-
392
- return $classes;
393
-
394
- } // END add_metabox_classes()
395
-
396
- /**
397
- * Add custom fields in media uploader
398
- *
399
- * @since 3.4.0
400
- *
401
- * @param $form_fields Array Fields to include in media attachment form
402
- * @param $post Array Post data
403
- *
404
- * @return Array
405
- */
406
- public function media_attachment_custom_fields( $form_fields, $post )
407
- {
408
- $form_fields['dfi-link-to-image'] = array(
409
- 'label' => _('Link to Image'),
410
- 'input' => 'text',
411
- 'value' => get_post_meta( $post->ID, '_dfi_link_to_image', true )
412
- );
413
-
414
- return $form_fields;
415
-
416
- } // END media_attachment_custom_fields()
417
-
418
- /**
419
- * Save values of media uploader custom fields
420
- *
421
- * @since 3.4.0
422
- *
423
- * @param $post Array The post data for database
424
- * @param $attachment Array Attachment fields from $_POST form
425
- *
426
- * @return Array
427
- */
428
- public function media_attachment_custom_fields_save( $post, $attachment )
429
- {
430
- if( isset( $attachment['dfi-link-to-image'] ) ) {
431
- update_post_meta( $post['ID'], '_dfi_link_to_image', $attachment['dfi-link-to-image'] );
432
- }
433
-
434
- return $post;
435
-
436
- } // END media_attachment_custom_fields_save()
437
-
438
- /**
439
- * Update featured images in the database
440
- *
441
- * @since 1.0.0
442
- * @access public
443
- *
444
- * @see wp_verify_nonce()
445
- * @see plugin_basename()
446
- * @see update_post_meta()
447
- * @see current_user_can()
448
- *
449
- * @param Integer $post_id current post id
450
- *
451
- * @return Void
452
- */
453
- public function save_meta($post_id)
454
- {
455
- //Check autosave
456
- if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
457
- return;
458
- }
459
-
460
- $keys = array_keys( $_POST );
461
- foreach ($keys as $key) {
462
- if ( preg_match( '/dfi_fimageplug-\d+$/', $key ) ) {
463
- //Verify nonce
464
- if ( !wp_verify_nonce( $_POST[$key], plugin_basename(__FILE__) ) ) {
465
- return;
466
- }
467
- }
468
- }
469
-
470
- //Check permission before saving data
471
- if ( current_user_can( 'edit_posts', $post_id ) && isset( $_POST['dfiFeatured'] ) ) {
472
- update_post_meta( $post_id, 'dfiFeatured', $_POST['dfiFeatured'] );
473
- }
474
-
475
- } // END save_meta()
476
-
477
- /**
478
- * Add update notice. Displayed in plugin update page.
479
- *
480
- * @since 2.0.0
481
- * @access public
482
- * @ignore
483
- *
484
- * @return Void
485
- */
486
- public function update_notice()
487
- {
488
- $info = __( 'ATTENTION! Please read the <a href="https://github.com/ankitpokhrel/Dynamic-Featured-Image/wiki" target="_blank">DOCUMENTATION</a> properly before update.', $this->textDomain );
489
- echo '<div style="color:red; padding:7px 0;">' . strip_tags( $info, '<a><b><i><span>' ) . '</div>';
490
-
491
- } // END update_notice()
492
-
493
- /** Helper functions */
494
-
495
- private function execute_query($query)
496
- {
497
- return $this->db->get_var( $query );
498
- }
499
-
500
- /**
501
- * Get attachment id of the image by image url
502
- *
503
- * @since 3.1.7
504
- * @access private
505
- * @global object $wpdb
506
- *
507
- * @param String $image_url url of the image
508
- *
509
- * @return string
510
- */
511
- private function _get_attachment_id($image_url)
512
- {
513
- return self::execute_query($this->db->prepare( "SELECT ID FROM " . $this->db->posts . " WHERE guid = %s", $image_url ));
514
-
515
- } // END _get_attachment_id()
516
-
517
- /**
518
- * Get image url of the image by attachment id
519
- *
520
- * @since 2.0.0
521
- * @access public
522
- *
523
- * @see wp_get_attachment_image_src()
524
- *
525
- * @param Integer $attachment_id attachment id of an image
526
- * @param String $size size of the image to fetch (thumbnail, medium, full)
527
- *
528
- * @return String
529
- */
530
- public function get_image_url($attachment_id, $size = 'full')
531
- {
532
- $image_thumb = wp_get_attachment_image_src( $attachment_id, $size );
533
-
534
- return empty( $image_thumb ) ? null : $image_thumb[0];
535
-
536
- } // END get_image_url()
537
-
538
- /**
539
- * Get image thumbnail url of specific size by image url
540
- *
541
- * @since 2.0.0
542
- * @access public
543
- *
544
- * @see get_image_id()
545
- * @see wp_get_attachment_image_src()
546
- *
547
- * @param String $image_url url of an image
548
- * @param String $size size of the image to fetch (thumbnail, medium, full)
549
- *
550
- * @return String
551
- */
552
- public function get_image_thumb($image_url, $size = 'thumbnail')
553
- {
554
- $attachment_id = self::get_image_id( $image_url );
555
- $image_thumb = wp_get_attachment_image_src( $attachment_id, $size );
556
-
557
- return empty( $image_thumb ) ? null : $image_thumb[0];
558
-
559
- } // END get_image_thumb()
560
-
561
- /**
562
- * Gets attachment id from given image url
563
- * @param String $image_url url of an image
564
- * @return Integer|Null attachment id of an image
565
- *
566
- * @since 2.0.0
567
- * @access public
568
- */
569
- public function get_image_id($image_url)
570
- {
571
- $attachment_id = self::_get_attachment_id( $image_url );
572
- if ( is_null($attachment_id) ) {
573
- //check if the image is edited image
574
- //and try to get the attachment id
575
- $image_url = str_replace($this->upload_url . "/", '', $image_url);
576
- $row = self::execute_query( $this->db->prepare( "SELECT post_id FROM " . $this->db->postmeta . " WHERE meta_value = %s", $image_url ) );
577
- if ( !is_null($row) ) {
578
- $attachment_id = $row;
579
- }
580
- }
581
-
582
- return $attachment_id;
583
- }
584
-
585
- /**
586
- * Get image title
587
- *
588
- * @since 2.0.0
589
- * @access public
590
- *
591
- * @param String $image_url url of an image
592
- *
593
- * @return String
594
- */
595
- public function get_image_title($image_url)
596
- {
597
- return self::execute_query( $this->db->prepare( "SELECT post_title FROM " . $this->db->posts . " WHERE guid = %s", $image_url ) );
598
-
599
- } // END get_image_title()
600
-
601
- /**
602
- * Get image title by id
603
- *
604
- * @since 2.0.0
605
- * @access public
606
- *
607
- * @param Integer $attachment_id attachment id of an image
608
- *
609
- * @return String
610
- */
611
- public function get_image_title_by_id($attachment_id)
612
- {
613
- return self::execute_query( $this->db->prepare( "SELECT post_title FROM " . $this->db->posts . " WHERE ID = %d", $attachment_id ) );
614
-
615
- } // END get_image_title_by_id()
616
-
617
- /**
618
- * Get image caption
619
- *
620
- * @since 2.0.0
621
- * @access public
622
- *
623
- * @param String $image_url url of an image
624
- *
625
- * @return String
626
- */
627
- public function get_image_caption($image_url)
628
- {
629
- return self::execute_query( $this->db->prepare("SELECT post_excerpt FROM " . $this->db->posts . " WHERE guid = %s", $image_url ) );
630
-
631
- } // END get_image_caption()
632
-
633
- /**
634
- * Get image caption by id
635
- *
636
- * @since 2.0.0
637
- * @access public
638
- *
639
- * @param Integer $attachment_id attachment id of an image
640
- *
641
- * @return String
642
- */
643
- public function get_image_caption_by_id($attachment_id)
644
- {
645
- return self::execute_query( $this->db->prepare("SELECT post_excerpt FROM " . $this->db->posts . " WHERE ID = %d", $attachment_id) );
646
-
647
- } // END get_image_caption_by_id()
648
-
649
- /**
650
- * Get image alternate text
651
- *
652
- * @since 2.0.0
653
- * @access public
654
- *
655
- * @see get_post_meta()
656
- *
657
- * @param String $image_url url of an image
658
- *
659
- * @return String
660
- */
661
- public function get_image_alt($image_url)
662
- {
663
- $attachment = $this->db->get_col( $this->db->prepare( "SELECT ID FROM " . $this->db->posts . " WHERE guid = %s", $image_url ) );
664
-
665
- $alt = null;
666
- if ( !empty( $attachment ) ) {
667
- $alt = get_post_meta( $attachment[0], '_wp_attachment_image_alt' );
668
- }
669
-
670
- return ( is_null( $alt ) || empty( $alt ) ) ? null : $alt[0];
671
-
672
- } // END get_image_alt()
673
-
674
- /**
675
- * Get image alternate text by attachment id
676
- *
677
- * @since 2.0.0
678
- * @access public
679
- *
680
- * @see get_post_meta()
681
- *
682
- * @param Integer $attachment_id attachment id of an image
683
- *
684
- * @return String
685
- */
686
- public function get_image_alt_by_id($attachment_id)
687
- {
688
- $alt = get_post_meta($attachment_id, '_wp_attachment_image_alt');
689
-
690
- return empty($alt) ? null : $alt[0];
691
-
692
- } // END get_image_alt_by_id()
693
-
694
- /**
695
- * Get image description
696
- *
697
- * @since 3.0.0
698
- * @access public
699
- *
700
- * @param String $image_url url of an image
701
- *
702
- * @return String
703
- */
704
- public function get_image_description($image_url)
705
- {
706
- return self::execute_query( $this->db->prepare( "SELECT post_content FROM " . $this->db->posts . " WHERE guid = %s", $image_url ) );
707
-
708
- } // END get_image_description()
709
-
710
- /**
711
- * Get image description by id
712
- *
713
- * @since 3.0.0
714
- * @access public
715
- *
716
- * @param Integer $attachment_id attachment id of an image
717
- *
718
- * @return String
719
- */
720
- public function get_image_description_by_id($attachment_id)
721
- {
722
- return self::execute_query( $this->db->prepare( "SELECT post_content FROM " . $this->db->posts . " WHERE ID = %d", $attachment_id ) );
723
-
724
- } // END get_image_description_by_id()
725
-
726
- /**
727
- * Get link to image
728
- *
729
- * @since 3.4.0
730
- * @access public
731
- *
732
- * @param Integer $attachment_id attachment id of an image
733
- *
734
- * @return string|null
735
- */
736
- public function get_link_to_image($attachment_id)
737
- {
738
- return get_post_meta( $attachment_id, '_dfi_link_to_image', true );
739
-
740
- } // END get_link_to_image()
741
-
742
- /**
743
- * Get all attachment ids of the post
744
- *
745
- * @since 2.0.0
746
- * @access public
747
- *
748
- * @see get_post_meta()
749
- *
750
- * @param Integer $post_id id of the current post
751
- *
752
- * @return Array
753
- */
754
- public function get_post_attachment_ids($post_id)
755
- {
756
- $dfiImages = get_post_meta($post_id, 'dfiFeatured', true);
757
-
758
- $retVal = array();
759
- if ( !empty( $dfiImages ) && is_array( $dfiImages ) ) {
760
- foreach ($dfiImages as $dfiImage) {
761
- $dfiImageFull = self::_separate($dfiImage, 'full');
762
- $retVal[] = $this->get_image_id( $this->upload_url . $dfiImageFull );
763
- }
764
- }
765
-
766
- return $retVal;
767
-
768
- } // END get_post_attachment_ids()
769
-
770
- /**
771
- * Fetches featured image data of nth position
772
- *
773
- * @since 3.0.0
774
- * @access public
775
- *
776
- * @see get_featured_images()
777
- *
778
- * @param Integer $position position of the featured image
779
- * @param Integer $post_id id of the current post
780
- *
781
- * @return Array if found, null otherwise
782
- */
783
- public function get_nth_featured_image($position, $post_id = null)
784
- {
785
- if ( is_null( $post_id ) ) {
786
- global $post;
787
- $post_id = $post->ID;
788
- }
789
-
790
- $featured_images = $this->get_featured_images( $post_id );
791
-
792
- return isset($featured_images[$position - 2 ]) ? $featured_images[$position - 2] : null;
793
-
794
- } // END get_nth_featured_image()
795
-
796
- /**
797
- * Check if the image is attached with the particular post
798
- *
799
- * @since 2.0.0
800
- * @access public
801
- *
802
- * @see get_post_attachment_ids()
803
- *
804
- * @param $attachment_id attachment id of an image
805
- * @param $post_id id of the current post
806
- *
807
- * @return boolean
808
- */
809
- public function is_attached($attachment_id, $post_id)
810
- {
811
- $attachment_ids = $this->get_post_attachment_ids( $post_id );
812
-
813
- return in_array( $attachment_id, $attachment_ids ) ? true : false;
814
-
815
- } // END is_attached()
816
-
817
- /**
818
- * Retrieve featured images for specific post(s)
819
- *
820
- * @since 2.0.0
821
- * @access public
822
- *
823
- * @see get_post_meta()
824
- *
825
- * @param Integer $post_id id of the current post
826
- *
827
- * @return Array
828
- */
829
- public function get_featured_images($post_id = null)
830
- {
831
- if ( is_null( $post_id ) ) {
832
- global $post;
833
- $post_id = $post->ID;
834
- }
835
-
836
- $dfiImages = get_post_meta($post_id, 'dfiFeatured', true);
837
-
838
- $retImages = array();
839
- if ( !empty( $dfiImages ) && is_array( $dfiImages ) ) {
840
- $dfiImages = array_filter($dfiImages);
841
-
842
- $count = 0;
843
- foreach ($dfiImages as $dfiImage) {
844
- $dfiImageTrimmed = self::_separate($dfiImage);
845
- $dfiImageFull = self::_separate($dfiImage, 'full');
846
-
847
- try {
848
-
849
- $retImages[$count]['thumb'] = self::_get_real_upload_path( $dfiImageTrimmed );
850
- $retImages[$count]['full'] = self::_get_real_upload_path( $dfiImageFull );
851
- $retImages[$count]['attachment_id'] = $this->get_image_id( $retImages[$count]['full'] );
852
-
853
- } catch (Exception $e) { /* Ignore the exception and continue with other featured images */ }
854
-
855
- $count++;
856
- }
857
- }
858
-
859
- return $retImages;
860
-
861
- } // END get_featured_images()
862
-
863
- /**
864
- * Check to see if the upload url is already available in path.
865
- *
866
- * @since 3.1.14
867
- * @access protected
868
- *
869
- * @param string $img
870
- * @return string
871
- */
872
- protected function _get_real_upload_path( $img ) {
873
- //check if upload path is already attached
874
- if ( strpos($img, $this->upload_url) !== false ) {
875
- return $img;
876
- }
877
-
878
- return $this->upload_url . $img;
879
- } // END _get_real_upload_path()
880
-
881
- /**
882
- * Retrieve featured images for specific post(s) including the default Featured Image
883
- *
884
- * @since 3.1.7
885
- * @access public
886
- *
887
- * @see $this->get_featured_images()
888
- *
889
- * @param Integer $post_id id of the current post
890
- *
891
- * @return Array An array of images or an empty array on failure
892
- */
893
- public function get_all_featured_images($post_id = null)
894
- {
895
- if ( is_null( $post_id ) ) {
896
- global $post;
897
- $post_id = $post->ID;
898
- }
899
-
900
- $thumbnail_id = get_post_thumbnail_id( $post_id );
901
-
902
- $featured_image_array = array();
903
- if ( ! empty( $thumbnail_id ) ) {
904
- $featured_image = array(
905
- 'thumb' => wp_get_attachment_thumb_url( $thumbnail_id ),
906
- 'full' => wp_get_attachment_url( $thumbnail_id ),
907
- 'attachment_id' => $thumbnail_id
908
- );
909
- $featured_image_array[] = $featured_image;
910
- }
911
-
912
- $dfiImages = $this->get_featured_images( $post_id );
913
-
914
- $all_featured_images = array_merge( $featured_image_array, $dfiImages );
915
-
916
- return $all_featured_images;
917
-
918
- }
919
-
920
- /**
921
- * Load the plugin's textdomain hooked to 'plugins_loaded'.
922
- *
923
- * @since 1.0.0
924
- * @access public
925
- *
926
- * @see load_plugin_textdomain()
927
- * @see plugin_basename()
928
- * @action plugins_loaded
929
- *
930
- * @return void
931
- */
932
- public function load_plugin_textdomain()
933
- {
934
- load_plugin_textdomain(
935
- $this->textDomain,
936
- false,
937
- dirname( plugin_basename( __FILE__ ) ) . '/languages/'
938
- );
939
-
940
- } // END load_plugin_textdomain()
941
-
942
- } // END class Dynamic_Featured_Image
943
-
944
-
945
- /**
946
- * Instantiate the main class
947
- *
948
- * @since 1.0.0
949
- * @access public
950
- *
951
- * @var object $dynamic_featured_image holds the instantiated class {@uses Dynamic_Featured_Image}
952
- */
953
- global $dynamic_featured_image;
954
- $dynamic_featured_image = new Dynamic_Featured_Image();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /***
3
+ Plugin Name: Dynamic Featured Image
4
+ Plugin URI: http://wordpress.org/plugins/dynamic-featured-image/
5
+ Description: Dynamically adds multiple featured image or post thumbnail functionality to your posts, pages and custom post types.
6
+ Version: 3.5.0
7
+ Author: Ankit Pokhrel
8
+ Author URI: http://ankitpokhrel.com.np
9
+ License: GPL2 or later
10
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
+ Text Domain: dynamic-featured-image
12
+ Domain Path: /languages
13
+ GitHub Plugin URI: https://github.com/ankitpokhrel/Dynamic-Featured-Image
14
+
15
+ Copyright (C) 2013 Ankit Pokhrel <ankitpokhrel@gmail.com, http://ankitpokhrel.com.np>,
16
+
17
+ This program is free software; you can redistribute it and/or modify
18
+ it under the terms of the GNU General Public License as published by
19
+ the Free Software Foundation; either version 3 of the License, or
20
+ (at your option) any later version.
21
+
22
+ This program is distributed in the hope that it will be useful,
23
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
24
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25
+ GNU General Public License for more details.
26
+
27
+ You should have received a copy of the GNU General Public License
28
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
29
+ */
30
+
31
+ // Avoid direct calls to this file
32
+ if ( !defined( 'ABSPATH' ) ) {
33
+ header( 'Status: 403 Forbidden' );
34
+ header( 'HTTP/1.1 403 Forbidden' );
35
+ exit();
36
+ }
37
+
38
+ /**
39
+ * Dynamic Featured Image plugin main class
40
+ *
41
+ * @package dynamic-featured-image
42
+ * @author Ankit Pokhrel <ankitpokhrel@gmail.com>
43
+ * @version 3.0.1
44
+ */
45
+ class Dynamic_Featured_Image
46
+ {
47
+ /**
48
+ * Current version of the plugin.
49
+ *
50
+ * @since 3.0.0
51
+ */
52
+ const VERSION = '3.5.0';
53
+
54
+ /* Image upload directory */
55
+ private $__upload_dir;
56
+
57
+ /* Image upload URL */
58
+ private $__upload_url;
59
+
60
+ /* Database object */
61
+ private $__db;
62
+
63
+ /* Plugin text domain */
64
+ protected $_textDomain;
65
+
66
+ /* Title for dfi metabox */
67
+ protected $_metabox_title;
68
+
69
+ /* Users post type filter for dfi metabox */
70
+ protected $_userFilter;
71
+
72
+ /**
73
+ * Constructor. Hooks all interactions to initialize the class.
74
+ *
75
+ * @since 1.0.0
76
+ * @access public
77
+ * @global object $wpdb
78
+ *
79
+ * @see add_action()
80
+ */
81
+ public function __construct()
82
+ {
83
+ $this->_textDomain = 'dynamic-featured-image';
84
+
85
+ //plugin update warning
86
+ add_action( 'in_plugin_update_message-' . plugin_basename(__FILE__), array( $this, 'update_notice' ) );
87
+
88
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) );
89
+ add_action( 'add_meta_boxes', array( $this, 'initialize_featured_box' ) );
90
+ add_action( 'save_post', array( $this, 'save_meta' ) );
91
+ add_action( 'plugins_loaded', array( $this, 'load_plugin_textdomain' ) );
92
+
93
+ //handle ajax request
94
+ add_action( 'wp_ajax_dfiMetaBox_callback', array( $this, 'ajax_callback' ) );
95
+
96
+ //media uploader custom fields
97
+ add_filter( 'attachment_fields_to_edit', array($this, 'media_attachment_custom_fields'), 10, 2 );
98
+ add_filter( 'attachment_fields_to_save', array($this, 'media_attachment_custom_fields_save'), 10, 2 );
99
+
100
+ //get the site protocol
101
+ $protocol = ( (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ||
102
+ (!empty($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) ) ? "https://" : "http://";
103
+
104
+ $this->__upload_dir = wp_upload_dir();
105
+ $this->__upload_url = preg_replace('#^https?://#', '', $this->__upload_dir['baseurl']);
106
+
107
+ //add protocol to the upload url
108
+ $this->__upload_url = $protocol . $this->__upload_url;
109
+
110
+ //post type filter added by user
111
+ $this->_userFilter = array();
112
+
113
+ global $wpdb;
114
+ $this->__db = $wpdb;
115
+
116
+ } // END __construct()
117
+
118
+ /**
119
+ * Add required admin scripts
120
+ *
121
+ * @since 1.0.0
122
+ * @access public
123
+ *
124
+ * @see wp_enque_style()
125
+ * @see wp_register_script()
126
+ * @see wp_enqueue_script()
127
+ *
128
+ * @return Void
129
+ */
130
+ public function enqueue_admin_scripts()
131
+ {
132
+ //enqueue styles
133
+ wp_enqueue_style( 'style-dfi', plugins_url( '/css/style-dfi.css', __FILE__ ), array(), self::VERSION );
134
+ wp_enqueue_style( 'dashicons', plugins_url( '/css/dashicons.css', __FILE__ ), array(), self::VERSION );
135
+
136
+ //register script
137
+ wp_register_script( 'scripts-dfi', plugins_url( '/js/script-dfi.js', __FILE__), array( 'jquery' ), self::VERSION );
138
+
139
+ //localize the script with required data
140
+ wp_localize_script(
141
+ 'scripts-dfi',
142
+ 'WP_SPECIFIC',
143
+ array(
144
+ 'upload_url' => $this->__upload_url,
145
+ 'metabox_title' => __($this->_metabox_title, $this->_textDomain),
146
+ 'mediaSelector_title' => __('Dynamic Featured Image - Media Selector', $this->_textDomain),
147
+ 'mediaSelector_buttonText' => __('Set Featured Image', $this->_textDomain)
148
+ )
149
+ );
150
+
151
+ //enqueue scripts
152
+ wp_enqueue_script( 'scripts-dfi' );
153
+
154
+ } // END initialize_components()
155
+
156
+ /**
157
+ * Add featured meta boxes dynamically
158
+ *
159
+ * @since 1.0.0
160
+ * @access public
161
+ * @global object $post
162
+ *
163
+ * @see get_post_meta()
164
+ * @see get_post_types()
165
+ * @see add_meta_box()
166
+ * @see add_filter()
167
+ *
168
+ * @return Void
169
+ */
170
+ public function initialize_featured_box()
171
+ {
172
+ global $post;
173
+
174
+ //make metabox title dynamic
175
+ $this->_metabox_title = apply_filters('dfi_set_metabox_title', __("Featured Image"));
176
+
177
+ $featuredData = get_post_meta( $post->ID, 'dfiFeatured', true );
178
+ $totalFeatured = count( $featuredData );
179
+
180
+ $defaultFilter = array( 'attachment', 'revision', 'nav_menu_item' );
181
+ $this->_userFilter = apply_filters('dfi_post_type_user_filter', $this->_userFilter);
182
+ $filter = array_merge($defaultFilter, $this->_userFilter);
183
+
184
+ $postTypes = get_post_types();
185
+ $postTypes = array_diff( $postTypes, $filter );
186
+
187
+ $postTypes = apply_filters('dfi_post_types', $postTypes);
188
+
189
+ if ( !empty($featuredData) && $totalFeatured >= 1 ) {
190
+ $i = 2;
191
+ foreach ($featuredData as $featured) {
192
+ self::_dfi_add_meta_box($postTypes, $featured, $i);
193
+ $i++;
194
+ }
195
+ } else {
196
+ self::_dfi_add_meta_box($postTypes);
197
+ }
198
+
199
+ } // END initialize_featured_box()
200
+
201
+ /**
202
+ * Translates more than one digit number digit by digit.
203
+ * @param Integer $number Integer to be translated
204
+ * @return String Translated number
205
+ */
206
+ protected function _get_number_translation($number)
207
+ {
208
+ if ($number <= 9) {
209
+ return __($number, $this->_textDomain);
210
+ } else {
211
+ $pieces = str_split($number, 1);
212
+ $buffer = '';
213
+ foreach ($pieces as $piece) {
214
+ $buffer .= __($piece, $this->_textDomain);
215
+ }
216
+
217
+ return $buffer;
218
+ }
219
+ }
220
+
221
+ /**
222
+ * adds meta boxes
223
+ * @param Array $postTypes post types to show featured image box
224
+ * @param Object $featured callback arguments
225
+ * @param Integer $i index of the featured image
226
+ * @return Void
227
+ */
228
+ private function _dfi_add_meta_box($postTypes, $featured = null, $i = null)
229
+ {
230
+ if ( !is_null($i) ) {
231
+ foreach ($postTypes as $type) {
232
+ add_meta_box(
233
+ 'dfiFeaturedMetaBox-' . $i,
234
+ __($this->_metabox_title, $this->_textDomain) . " " . self::_get_number_translation($i),
235
+ array( $this, 'featured_meta_box' ),
236
+ $type,
237
+ 'side',
238
+ 'low',
239
+ array( $featured, $i + 1 )
240
+ );
241
+ add_filter( "postbox_classes_{$type}_dfiFeaturedMetaBox-" . $i, array( $this, 'add_metabox_classes' ) );
242
+ }
243
+
244
+ } else {
245
+ foreach ($postTypes as $type) {
246
+ add_meta_box(
247
+ 'dfiFeaturedMetaBox',
248
+ __( $this->_metabox_title, $this->_textDomain ) . " " . __(2, $this->_textDomain),
249
+ array( $this, 'featured_meta_box' ),
250
+ $type,
251
+ 'side',
252
+ 'low',
253
+ array( null, null )
254
+ );
255
+ add_filter( "postbox_classes_{$type}_dfiFeaturedMetaBox", array( $this, 'add_metabox_classes' ) );
256
+ }
257
+ }
258
+
259
+ }
260
+
261
+ /**
262
+ * Separate thumb and full image url from given URL string
263
+ *
264
+ * @since 3.3.1
265
+ *
266
+ * @param string $urlString [description]
267
+ * @param string $state Thumb or full
268
+ *
269
+ * @return string|null
270
+ */
271
+ private function _separate($urlString, $state = 'thumb')
272
+ {
273
+ $imagePiece = explode( ',', $urlString );
274
+
275
+ if( $state == 'thumb' ) {
276
+ return isset($imagePiece[0]) ? $imagePiece[0] : null;
277
+ }
278
+
279
+ return isset($imagePiece[1]) ? $imagePiece[1] : null;
280
+ }
281
+
282
+ /**
283
+ * Create a nonce field
284
+ *
285
+ * @since 3.5.0
286
+ *
287
+ * @see wp_nonce_field()
288
+ * @see plugin_basename()
289
+ *
290
+ * @codeCoverageIgnore
291
+ *
292
+ * @param string $key Nonce key
293
+ * @return string
294
+ */
295
+ protected function _nonce_field( $key )
296
+ {
297
+ return wp_nonce_field(plugin_basename(__FILE__), $key, true, false);
298
+ }
299
+
300
+ /**
301
+ * Featured meta box as seen in the admin
302
+ *
303
+ * @since 1.0.0
304
+ * @access public
305
+ *
306
+ * @param Object $post global post object
307
+ * @param Array $featured array containing featured image count
308
+ *
309
+ * @return Void
310
+ */
311
+ public function featured_meta_box($post, $featured)
312
+ {
313
+ $featuredImg = $featured['args'][0];
314
+ $featuredId = is_null( $featured['args'][1] ) ? 2 : --$featured['args'][1];
315
+
316
+ $featuredImgTrimmed = $featuredImgFull = $featuredImg;
317
+ if ( !is_null( $featuredImg ) ) {
318
+ $featuredImgTrimmed = self::_separate($featuredImg);
319
+ $featuredImgFull = self::_separate($featuredImg, 'full');
320
+ }
321
+
322
+ try {
323
+
324
+ $thumbnail = $this->get_image_thumb( $this->__upload_url . $featuredImgFull, 'medium' );
325
+ if ( is_null($thumbnail) ) {
326
+
327
+ //medium sized thumbnail image is missing
328
+ throw new Exception("Medium size image not found", 1);
329
+
330
+ }
331
+
332
+ } catch (Exception $e) {
333
+
334
+ //since medium sized thumbnail image was not found,
335
+ //let's set full image url as thumbnail
336
+ $thumbnail = $featuredImgFull;
337
+
338
+ }
339
+
340
+ //Add a nonce field
341
+ echo $this->_nonce_field('dfi_fimageplug-' . $featuredId);
342
+ echo self::_get_featured_box($featuredImgTrimmed, $featuredImg, $featuredId, $thumbnail, $post->ID);
343
+
344
+ } // END featured_meta_box()
345
+
346
+ /**
347
+ * Returns featured box html content
348
+ * @since 3.1.0
349
+ * @access private
350
+ *
351
+ * @param String $featuredImgTrimmed Medium sized image
352
+ * @param String $featuredImg Full sized image
353
+ * @param String $featuredId Attachment Id
354
+ * @param String $thumbnail Thumb sized image
355
+ *
356
+ * @return String Html content
357
+ */
358
+ private function _get_featured_box($featuredImgTrimmed, $featuredImg, $featuredId, $thumbnail, $postId)
359
+ {
360
+ $hasFeaturedImage = !empty($featuredImgTrimmed) ? 'hasFeaturedImage' : '';
361
+ $thumbnail = !is_null($thumbnail) ? $thumbnail : '';
362
+ $dfiEmpty = is_null($featuredImgTrimmed) ? 'dfiImgEmpty' : '';
363
+
364
+ return "<a href='javascript:void(0)' class='dfiFeaturedImage {$hasFeaturedImage}' title='". __('Set Featured Image', $this->_textDomain) . "' data-post-id='" . $postId . "'><span class='dashicons dashicons-camera'></span></a><br/>
365
+ <img src='" . $thumbnail . "' class='dfiImg {$dfiEmpty}'/>
366
+ <div class='dfiLinks'>
367
+ <a href='javascript:void(0)' data-id='{$featuredId}' data-id-local='" . $this->_get_number_translation( ($featuredId + 1) ) . "' class='dfiAddNew dashicons dashicons-plus' title='" . __('Add New', $this->_textDomain) ."'></a>
368
+ <a href='javascript:void(0)' class='dfiRemove dashicons dashicons-minus' title='" . __('Remove', $this->_textDomain) . "'></a>
369
+ </div>
370
+ <div class='dfiClearFloat'></div>
371
+ <input type='hidden' name='dfiFeatured[]' value='{$featuredImg}' class='dfiImageHolder' />";
372
+ }
373
+
374
+ /**
375
+ * Load new featured meta box via ajax
376
+ *
377
+ * @since 1.0.0
378
+ * @access public
379
+ *
380
+ * @return Void
381
+ */
382
+ public function ajax_callback()
383
+ {
384
+ $featuredId = isset($_POST['id']) ? (int) strip_tags( trim( $_POST['id'] ) ) : null;
385
+
386
+ if ( is_null( $featuredId ) ) {
387
+ return;
388
+ }
389
+
390
+ echo $this->_nonce_field( 'dfi_fimageplug-' . $featuredId );
391
+ ?>
392
+ <a href="javascript:void(0)" class="dfiFeaturedImage" title="<?php echo __('Set Featured Image', $this->_textDomain) ?>"><span class="dashicons dashicons-camera"></span></a><br/>
393
+ <img src="" class="dfiImg dfiImgEmpty"/>
394
+ <div class="dfiLinks">
395
+ <a href="javascript:void(0)" data-id="<?php echo $featuredId ?>" data-id-local="<?php echo self::_get_number_translation( ($featuredId + 1) ) ?>" class="dfiAddNew dashicons dashicons-plus" title="<?php echo __('Add New', $this->_textDomain) ?>"></a>
396
+ <a href="javascript:void(0)" class="dfiRemove dashicons dashicons-minus" title="<?php echo __('Remove', $this->_textDomain) ?>"></a>
397
+ </div>
398
+ <div class="dfiClearFloat"></div>
399
+ <input type="hidden" name="dfiFeatured[]" value="" class="dfiImageHolder" />
400
+ <?php
401
+ wp_die('');
402
+
403
+ } // END ajax_callback())
404
+
405
+ /**
406
+ * Add custom class 'featured-meta-box' to meta box
407
+ *
408
+ * @since 1.0.0
409
+ * @access public
410
+ *
411
+ * @see add_metabox_classes
412
+ *
413
+ * @param $classes classes to add in the meta box
414
+ *
415
+ * @return string
416
+ */
417
+ public function add_metabox_classes($classes)
418
+ {
419
+ array_push( $classes, 'featured-meta-box' );
420
+
421
+ return $classes;
422
+
423
+ } // END add_metabox_classes()
424
+
425
+ /**
426
+ * Add custom fields in media uploader
427
+ *
428
+ * @since 3.4.0
429
+ *
430
+ * @param $form_fields Array Fields to include in media attachment form
431
+ * @param $post Array Post data
432
+ *
433
+ * @return Array
434
+ */
435
+ public function media_attachment_custom_fields( $form_fields, $post )
436
+ {
437
+ $form_fields['dfi-link-to-image'] = array(
438
+ 'label' => _('Link to Image'),
439
+ 'input' => 'text',
440
+ 'value' => get_post_meta( $post->ID, '_dfi_link_to_image', true )
441
+ );
442
+
443
+ return $form_fields;
444
+
445
+ } // END media_attachment_custom_fields()
446
+
447
+ /**
448
+ * Save values of media uploader custom fields
449
+ *
450
+ * @since 3.4.0
451
+ *
452
+ * @param $post Array The post data for database
453
+ * @param $attachment Array Attachment fields from $_POST form
454
+ *
455
+ * @return Array
456
+ */
457
+ public function media_attachment_custom_fields_save( $post, $attachment )
458
+ {
459
+ if( isset( $attachment['dfi-link-to-image'] ) ) {
460
+ update_post_meta( $post['ID'], '_dfi_link_to_image', $attachment['dfi-link-to-image'] );
461
+ }
462
+
463
+ return $post;
464
+
465
+ } // END media_attachment_custom_fields_save()
466
+
467
+ /**
468
+ * Update featured images in the database
469
+ *
470
+ * @since 1.0.0
471
+ * @access public
472
+ *
473
+ * @see plugin_basename()
474
+ * @see update_post_meta()
475
+ * @see current_user_can()
476
+ *
477
+ * @param Integer $post_id current post id
478
+ *
479
+ * @return Void
480
+ */
481
+ public function save_meta($post_id)
482
+ {
483
+ //Check autosave
484
+ if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
485
+ return false;
486
+ }
487
+
488
+ if( $this->_verify_nonces() ) {
489
+ //Check permission before saving data
490
+ if ( current_user_can( 'edit_posts', $post_id ) && isset( $_POST['dfiFeatured'] ) ) {
491
+ update_post_meta( $post_id, 'dfiFeatured', $_POST['dfiFeatured'] );
492
+ }
493
+ }
494
+
495
+ return false;
496
+
497
+ } // END save_meta()
498
+
499
+ /**
500
+ * Verify metabox nonces
501
+ *
502
+ * @access protected
503
+ * @see wp_verify_nonce()
504
+ *
505
+ * @return boolean
506
+ */
507
+ protected function _verify_nonces()
508
+ {
509
+ $keys = array_keys( $_POST );
510
+ foreach ($keys as $key) {
511
+ if ( preg_match( '/dfi_fimageplug-\d+$/', $key ) ) {
512
+ //Verify nonce
513
+ if ( !wp_verify_nonce( $_POST[$key], plugin_basename(__FILE__) ) ) {
514
+ return false;
515
+ }
516
+ }
517
+ }
518
+
519
+ return true;
520
+
521
+ } // END _verify_nonces()
522
+
523
+ /**
524
+ * Add update notice. Displayed in plugin update page.
525
+ *
526
+ * @since 2.0.0
527
+ * @access public
528
+ * @ignore
529
+ *
530
+ * @return Void
531
+ */
532
+ public function update_notice()
533
+ {
534
+ $info = __( 'ATTENTION! Please read the <a href="https://github.com/ankitpokhrel/Dynamic-Featured-Image/wiki" target="_blank">DOCUMENTATION</a> properly before update.', $this->_textDomain );
535
+ echo '<div style="color:red; padding:7px 0;">' . strip_tags( $info, '<a><b><i><span>' ) . '</div>';
536
+
537
+ } // END update_notice()
538
+
539
+ /** Helper functions */
540
+
541
+ private function execute_query($query)
542
+ {
543
+ return $this->__db->get_var( $query );
544
+ }
545
+
546
+ /**
547
+ * Get attachment id of the image by image url
548
+ *
549
+ * @since 3.1.7
550
+ * @access protected
551
+ * @global object $wpdb
552
+ *
553
+ * @param String $image_url url of the image
554
+ *
555
+ * @return string
556
+ */
557
+ protected function _get_attachment_id($image_url)
558
+ {
559
+ return self::execute_query($this->__db->prepare( "SELECT ID FROM " . $this->__db->posts . " WHERE guid = %s", $image_url ));
560
+
561
+ } // END _get_attachment_id()
562
+
563
+ /**
564
+ * Get image url of the image by attachment id
565
+ *
566
+ * @since 2.0.0
567
+ * @access public
568
+ *
569
+ * @see wp_get_attachment_image_src()
570
+ *
571
+ * @param Integer $attachment_id attachment id of an image
572
+ * @param String $size size of the image to fetch (thumbnail, medium, full)
573
+ *
574
+ * @return String
575
+ */
576
+ public function get_image_url($attachment_id, $size = 'full')
577
+ {
578
+ $image_thumb = wp_get_attachment_image_src( $attachment_id, $size );
579
+
580
+ return empty( $image_thumb ) ? null : $image_thumb[0];
581
+
582
+ } // END get_image_url()
583
+
584
+ /**
585
+ * Get image thumbnail url of specific size by image url
586
+ *
587
+ * @since 2.0.0
588
+ * @access public
589
+ *
590
+ * @see get_image_id()
591
+ * @see wp_get_attachment_image_src()
592
+ *
593
+ * @param String $image_url url of an image
594
+ * @param String $size size of the image to fetch (thumbnail, medium, full)
595
+ *
596
+ * @return String
597
+ */
598
+ public function get_image_thumb($image_url, $size = 'thumbnail')
599
+ {
600
+ $attachment_id = $this->get_image_id( $image_url );
601
+ $image_thumb = wp_get_attachment_image_src( $attachment_id, $size );
602
+
603
+ return empty( $image_thumb ) ? null : $image_thumb[0];
604
+
605
+ } // END get_image_thumb()
606
+
607
+ /**
608
+ * Gets attachment id from given image url
609
+ * @param String $image_url url of an image
610
+ * @return Integer|Null attachment id of an image
611
+ *
612
+ * @since 2.0.0
613
+ * @access public
614
+ */
615
+ public function get_image_id($image_url)
616
+ {
617
+ $attachment_id = $this->_get_attachment_id( $image_url );
618
+ if ( is_null($attachment_id) ) {
619
+ //check if the image is edited image
620
+ //and try to get the attachment id
621
+ $image_url = str_replace($this->__upload_url . "/", '', $image_url);
622
+ $row = self::execute_query( $this->__db->prepare( "SELECT post_id FROM " . $this->__db->postmeta . " WHERE meta_value = %s", $image_url ) );
623
+ if ( !is_null($row) ) {
624
+ $attachment_id = $row;
625
+ }
626
+ }
627
+
628
+ return $attachment_id;
629
+ }
630
+
631
+ /**
632
+ * Get image title
633
+ *
634
+ * @since 2.0.0
635
+ * @access public
636
+ *
637
+ * @param String $image_url url of an image
638
+ *
639
+ * @return String
640
+ */
641
+ public function get_image_title($image_url)
642
+ {
643
+ return self::execute_query( $this->__db->prepare( "SELECT post_title FROM " . $this->__db->posts . " WHERE guid = %s", $image_url ) );
644
+
645
+ } // END get_image_title()
646
+
647
+ /**
648
+ * Get image title by id
649
+ *
650
+ * @since 2.0.0
651
+ * @access public
652
+ *
653
+ * @param Integer $attachment_id attachment id of an image
654
+ *
655
+ * @return String
656
+ */
657
+ public function get_image_title_by_id($attachment_id)
658
+ {
659
+ return self::execute_query( $this->__db->prepare( "SELECT post_title FROM " . $this->__db->posts . " WHERE ID = %d", $attachment_id ) );
660
+
661
+ } // END get_image_title_by_id()
662
+
663
+ /**
664
+ * Get image caption
665
+ *
666
+ * @since 2.0.0
667
+ * @access public
668
+ *
669
+ * @param String $image_url url of an image
670
+ *
671
+ * @return String
672
+ */
673
+ public function get_image_caption($image_url)
674
+ {
675
+ return self::execute_query( $this->__db->prepare("SELECT post_excerpt FROM " . $this->__db->posts . " WHERE guid = %s", $image_url ) );
676
+
677
+ } // END get_image_caption()
678
+
679
+ /**
680
+ * Get image caption by id
681
+ *
682
+ * @since 2.0.0
683
+ * @access public
684
+ *
685
+ * @param Integer $attachment_id attachment id of an image
686
+ *
687
+ * @return String
688
+ */
689
+ public function get_image_caption_by_id($attachment_id)
690
+ {
691
+ return self::execute_query( $this->__db->prepare("SELECT post_excerpt FROM " . $this->__db->posts . " WHERE ID = %d", $attachment_id) );
692
+
693
+ } // END get_image_caption_by_id()
694
+
695
+ /**
696
+ * Get image alternate text
697
+ *
698
+ * @since 2.0.0
699
+ * @access public
700
+ *
701
+ * @see get_post_meta()
702
+ *
703
+ * @param String $image_url url of an image
704
+ *
705
+ * @return String
706
+ */
707
+ public function get_image_alt($image_url)
708
+ {
709
+ $attachment = $this->__db->get_col( $this->__db->prepare( "SELECT ID FROM " . $this->__db->posts . " WHERE guid = %s", $image_url ) );
710
+
711
+ $alt = null;
712
+ if ( !empty( $attachment ) ) {
713
+ $alt = get_post_meta( $attachment[0], '_wp_attachment_image_alt' );
714
+ }
715
+
716
+ return ( is_null( $alt ) || empty( $alt ) ) ? null : $alt[0];
717
+
718
+ } // END get_image_alt()
719
+
720
+ /**
721
+ * Get image alternate text by attachment id
722
+ *
723
+ * @since 2.0.0
724
+ * @access public
725
+ *
726
+ * @see get_post_meta()
727
+ *
728
+ * @param Integer $attachment_id attachment id of an image
729
+ *
730
+ * @return String
731
+ */
732
+ public function get_image_alt_by_id($attachment_id)
733
+ {
734
+ $alt = get_post_meta($attachment_id, '_wp_attachment_image_alt');
735
+
736
+ return empty($alt) ? null : $alt[0];
737
+
738
+ } // END get_image_alt_by_id()
739
+
740
+ /**
741
+ * Get image description
742
+ *
743
+ * @since 3.0.0
744
+ * @access public
745
+ *
746
+ * @param String $image_url url of an image
747
+ *
748
+ * @return String
749
+ */
750
+ public function get_image_description($image_url)
751
+ {
752
+ return self::execute_query( $this->__db->prepare( "SELECT post_content FROM " . $this->__db->posts . " WHERE guid = %s", $image_url ) );
753
+
754
+ } // END get_image_description()
755
+
756
+ /**
757
+ * Get image description by id
758
+ *
759
+ * @since 3.0.0
760
+ * @access public
761
+ *
762
+ * @param Integer $attachment_id attachment id of an image
763
+ *
764
+ * @return String
765
+ */
766
+ public function get_image_description_by_id($attachment_id)
767
+ {
768
+ return self::execute_query( $this->__db->prepare( "SELECT post_content FROM " . $this->__db->posts . " WHERE ID = %d", $attachment_id ) );
769
+
770
+ } // END get_image_description_by_id()
771
+
772
+ /**
773
+ * Get link to image
774
+ *
775
+ * @since 3.4.0
776
+ * @access public
777
+ *
778
+ * @param Integer $attachment_id attachment id of an image
779
+ *
780
+ * @return string|null
781
+ */
782
+ public function get_link_to_image($attachment_id)
783
+ {
784
+ return get_post_meta( $attachment_id, '_dfi_link_to_image', true );
785
+
786
+ } // END get_link_to_image()
787
+
788
+ /**
789
+ * Get all attachment ids of the post
790
+ *
791
+ * @since 2.0.0
792
+ * @access public
793
+ *
794
+ * @see get_post_meta()
795
+ *
796
+ * @param Integer $post_id id of the current post
797
+ *
798
+ * @return Array
799
+ */
800
+ public function get_post_attachment_ids($post_id)
801
+ {
802
+ $dfiImages = get_post_meta($post_id, 'dfiFeatured', true);
803
+
804
+ $retVal = array();
805
+ if ( !empty( $dfiImages ) && is_array( $dfiImages ) ) {
806
+ foreach ($dfiImages as $dfiImage) {
807
+ $dfiImageFull = self::_separate($dfiImage, 'full');
808
+ $retVal[] = $this->get_image_id( $this->__upload_url . $dfiImageFull );
809
+ }
810
+ }
811
+
812
+ return $retVal;
813
+
814
+ } // END get_post_attachment_ids()
815
+
816
+ /**
817
+ * Fetches featured image data of nth position
818
+ *
819
+ * @since 3.0.0
820
+ * @access public
821
+ *
822
+ * @see get_featured_images()
823
+ *
824
+ * @param Integer $position position of the featured image
825
+ * @param Integer $post_id id of the current post
826
+ *
827
+ * @return Array if found, null otherwise
828
+ */
829
+ public function get_nth_featured_image($position, $post_id = null)
830
+ {
831
+ if ( is_null( $post_id ) ) {
832
+ global $post;
833
+ $post_id = $post->ID;
834
+ }
835
+
836
+ $featured_images = $this->get_featured_images( $post_id );
837
+
838
+ return isset($featured_images[$position - 2 ]) ? $featured_images[$position - 2] : null;
839
+
840
+ } // END get_nth_featured_image()
841
+
842
+ /**
843
+ * Check if the image is attached with the particular post
844
+ *
845
+ * @since 2.0.0
846
+ * @access public
847
+ *
848
+ * @see get_post_attachment_ids()
849
+ *
850
+ * @param $attachment_id attachment id of an image
851
+ * @param $post_id id of the current post
852
+ *
853
+ * @return boolean
854
+ */
855
+ public function is_attached($attachment_id, $post_id)
856
+ {
857
+ if( empty($attachment_id) ) {
858
+ return false;
859
+ }
860
+
861
+ $attachment_ids = $this->get_post_attachment_ids( $post_id );
862
+
863
+ return in_array( $attachment_id, $attachment_ids ) ? true : false;
864
+
865
+ } // END is_attached()
866
+
867
+ /**
868
+ * Retrieve featured images for specific post(s)
869
+ *
870
+ * @since 2.0.0
871
+ * @access public
872
+ *
873
+ * @see get_post_meta()
874
+ *
875
+ * @param Integer $post_id id of the current post
876
+ *
877
+ * @return Array
878
+ */
879
+ public function get_featured_images($post_id = null)
880
+ {
881
+ if ( is_null( $post_id ) ) {
882
+ global $post;
883
+ $post_id = $post->ID;
884
+ }
885
+
886
+ $dfiImages = get_post_meta($post_id, 'dfiFeatured', true);
887
+
888
+ $retImages = array();
889
+ if ( !empty( $dfiImages ) && is_array( $dfiImages ) ) {
890
+ $dfiImages = array_filter($dfiImages);
891
+
892
+ $count = 0;
893
+ foreach ($dfiImages as $dfiImage) {
894
+ $dfiImageTrimmed = self::_separate($dfiImage);
895
+ $dfiImageFull = self::_separate($dfiImage, 'full');
896
+
897
+ try {
898
+
899
+ $retImages[$count]['thumb'] = $this->_get_real_upload_path( $dfiImageTrimmed );
900
+ $retImages[$count]['full'] = $this->_get_real_upload_path( $dfiImageFull );
901
+ $retImages[$count]['attachment_id'] = $this->get_image_id( $retImages[$count]['full'] );
902
+
903
+ } catch (Exception $e) { /* Ignore the exception and continue with other featured images */ }
904
+
905
+ $count++;
906
+ }
907
+ }
908
+
909
+ return $retImages;
910
+
911
+ } // END get_featured_images()
912
+
913
+ /**
914
+ * Check to see if the upload url is already available in path.
915
+ *
916
+ * @since 3.1.14
917
+ * @access protected
918
+ *
919
+ * @param string $img
920
+ * @return string
921
+ */
922
+ protected function _get_real_upload_path( $img ) {
923
+ //check if upload path is already attached
924
+ if ( strpos($img, $this->__upload_url) !== false ) {
925
+ return $img;
926
+ }
927
+
928
+ return $this->__upload_url . $img;
929
+ } // END _get_real_upload_path()
930
+
931
+ /**
932
+ * Retrieve featured images for specific post(s) including the default Featured Image
933
+ *
934
+ * @since 3.1.7
935
+ * @access public
936
+ *
937
+ * @see $this->get_featured_images()
938
+ *
939
+ * @param Integer $post_id id of the current post
940
+ *
941
+ * @return Array An array of images or an empty array on failure
942
+ */
943
+ public function get_all_featured_images($post_id = null)
944
+ {
945
+ if ( is_null( $post_id ) ) {
946
+ global $post;
947
+ $post_id = $post->ID;
948
+ }
949
+
950
+ $thumbnail_id = get_post_thumbnail_id( $post_id );
951
+
952
+ $featured_image_array = array();
953
+ if ( ! empty( $thumbnail_id ) ) {
954
+ $featured_image = array(
955
+ 'thumb' => wp_get_attachment_thumb_url( $thumbnail_id ),
956
+ 'full' => wp_get_attachment_url( $thumbnail_id ),
957
+ 'attachment_id' => $thumbnail_id
958
+ );
959
+ $featured_image_array[] = $featured_image;
960
+ }
961
+
962
+ $dfiImages = $this->get_featured_images( $post_id );
963
+
964
+ $all_featured_images = array_merge( $featured_image_array, $dfiImages );
965
+
966
+ return $all_featured_images;
967
+
968
+ }
969
+
970
+ /**
971
+ * Load the plugin's textdomain hooked to 'plugins_loaded'.
972
+ *
973
+ * @since 1.0.0
974
+ * @access public
975
+ *
976
+ * @see load_plugin_textdomain()
977
+ * @see plugin_basename()
978
+ * @action plugins_loaded
979
+ *
980
+ * @codeCoverageIgnore
981
+ *
982
+ * @return void
983
+ */
984
+ public function load_plugin_textdomain()
985
+ {
986
+ load_plugin_textdomain(
987
+ $this->_textDomain,
988
+ false,
989
+ dirname( plugin_basename( __FILE__ ) ) . '/languages/'
990
+ );
991
+
992
+ } // END load_plugin_textdomain()
993
+
994
+ } // END class Dynamic_Featured_Image
995
+
996
+
997
+ /**
998
+ * Instantiate the main class
999
+ *
1000
+ * @since 1.0.0
1001
+ * @access public
1002
+ *
1003
+ * @var object $dynamic_featured_image holds the instantiated class {@uses Dynamic_Featured_Image}
1004
+ */
1005
+ global $dynamic_featured_image;
1006
+ $dynamic_featured_image = new Dynamic_Featured_Image();
img/spinner.gif CHANGED
File without changes
js/script-dfi.js CHANGED
File without changes
languages/dynamic-featured-image-bs_BA.mo CHANGED
File without changes
languages/dynamic-featured-image-bs_BA.po CHANGED
@@ -1,68 +1,68 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: dynamic-featured-image\n"
4
- "POT-Creation-Date: 2014-07-19 16:43+0545\n"
5
- "PO-Revision-Date: 2015-02-16 21:32+0530\n"
6
- "Last-Translator: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
7
- "Language-Team: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=UTF-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "X-Generator: Poedit 1.5.4\n"
12
- "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
13
- "X-Poedit-Basepath: .\n"
14
- "Language: Bosnian\n"
15
-
16
- msgid "Featured Image "
17
- msgstr "Glavna slika "
18
-
19
- msgid "Dynamic Featured Image - Media Selector"
20
- msgstr "Dinamična Glavna Slika – Izbor Media"
21
-
22
- msgid "Set Featured Image"
23
- msgstr "Postavite glavnu sliku"
24
-
25
- msgid "Add New"
26
- msgstr "Dodoajte novu"
27
-
28
- msgid "Remove"
29
- msgstr "Uklonite"
30
-
31
- msgid ""
32
- "ATTENTION! Please read the <a href=\"https://github.com/ankitpokhrel/Dynamic-"
33
- "Featured-Image/wiki\" target=\"_blank\">DOCUMENTATION</a> properly before "
34
- "update."
35
- msgstr ""
36
- "PAŽNJA! Molimo vas pažljivo pročitajte <a href=\"https://github.com/"
37
- "ankitpokhrel/Dynamic-Featured-Image/wiki\" target=\"_blank\">DOKUMENTACIJU</"
38
- "a> pre ažuriranja."
39
-
40
- msgid "0"
41
- msgstr "0"
42
-
43
- msgid "1"
44
- msgstr "1"
45
-
46
- msgid "2"
47
- msgstr "2"
48
-
49
- msgid "3"
50
- msgstr "3"
51
-
52
- msgid "4"
53
- msgstr "4"
54
-
55
- msgid "5"
56
- msgstr "5"
57
-
58
- msgid "6"
59
- msgstr "6"
60
-
61
- msgid "7"
62
- msgstr "7"
63
-
64
- msgid "8"
65
- msgstr "8"
66
-
67
- msgid "9"
68
- msgstr "9"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: dynamic-featured-image\n"
4
+ "POT-Creation-Date: 2014-07-19 16:43+0545\n"
5
+ "PO-Revision-Date: 2015-02-16 21:32+0530\n"
6
+ "Last-Translator: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
7
+ "Language-Team: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Generator: Poedit 1.5.4\n"
12
+ "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
13
+ "X-Poedit-Basepath: .\n"
14
+ "Language: Bosnian\n"
15
+
16
+ msgid "Featured Image "
17
+ msgstr "Glavna slika "
18
+
19
+ msgid "Dynamic Featured Image - Media Selector"
20
+ msgstr "Dinamična Glavna Slika – Izbor Media"
21
+
22
+ msgid "Set Featured Image"
23
+ msgstr "Postavite glavnu sliku"
24
+
25
+ msgid "Add New"
26
+ msgstr "Dodoajte novu"
27
+
28
+ msgid "Remove"
29
+ msgstr "Uklonite"
30
+
31
+ msgid ""
32
+ "ATTENTION! Please read the <a href=\"https://github.com/ankitpokhrel/Dynamic-"
33
+ "Featured-Image/wiki\" target=\"_blank\">DOCUMENTATION</a> properly before "
34
+ "update."
35
+ msgstr ""
36
+ "PAŽNJA! Molimo vas pažljivo pročitajte <a href=\"https://github.com/"
37
+ "ankitpokhrel/Dynamic-Featured-Image/wiki\" target=\"_blank\">DOKUMENTACIJU</"
38
+ "a> pre ažuriranja."
39
+
40
+ msgid "0"
41
+ msgstr "0"
42
+
43
+ msgid "1"
44
+ msgstr "1"
45
+
46
+ msgid "2"
47
+ msgstr "2"
48
+
49
+ msgid "3"
50
+ msgstr "3"
51
+
52
+ msgid "4"
53
+ msgstr "4"
54
+
55
+ msgid "5"
56
+ msgstr "5"
57
+
58
+ msgid "6"
59
+ msgstr "6"
60
+
61
+ msgid "7"
62
+ msgstr "7"
63
+
64
+ msgid "8"
65
+ msgstr "8"
66
+
67
+ msgid "9"
68
+ msgstr "9"
languages/dynamic-featured-image-he_IL.mo CHANGED
File without changes
languages/dynamic-featured-image-he_IL.po CHANGED
@@ -1,68 +1,68 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: dynamic-featured-image\n"
4
- "POT-Creation-Date: 2014-07-19 16:43+0545\n"
5
- "PO-Revision-Date: 2015-02-16 21:32+0530\n"
6
- "Last-Translator: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
7
- "Language-Team: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=UTF-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "X-Generator: Poedit 1.5.4\n"
12
- "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
13
- "X-Poedit-Basepath: .\n"
14
- "Language: Hebrew\n"
15
-
16
- msgid "Featured Image "
17
- msgstr "תמונה ראשית "
18
-
19
- msgid "Dynamic Featured Image - Media Selector"
20
- msgstr "תמונה ראשית דינאמית - בחירת מדיה"
21
-
22
- msgid "Set Featured Image"
23
- msgstr "קבע תמונה ראשית"
24
-
25
- msgid "Add New"
26
- msgstr "הוסף תמונה"
27
-
28
- msgid "Remove"
29
- msgstr "הסר"
30
-
31
- msgid ""
32
- "ATTENTION! Please read the <a href=\"https://github.com/ankitpokhrel/Dynamic-"
33
- "Featured-Image/wiki\" target=\"_blank\">DOCUMENTATION</a> properly before "
34
- "update."
35
- msgstr ""
36
- "לתשומת לבך! אנא קרא את <a href=\"https://github.com/ankitpokhrel/Dynamic-"
37
- "Featured-Image/wiki\" target=\"_blank\">הדוקומנטציה</a> היטב לפני שדרוג "
38
- "התוסף."
39
-
40
- msgid "0"
41
- msgstr "0"
42
-
43
- msgid "1"
44
- msgstr "1"
45
-
46
- msgid "2"
47
- msgstr "2"
48
-
49
- msgid "3"
50
- msgstr "3"
51
-
52
- msgid "4"
53
- msgstr "4"
54
-
55
- msgid "5"
56
- msgstr "5"
57
-
58
- msgid "6"
59
- msgstr "6"
60
-
61
- msgid "7"
62
- msgstr "7"
63
-
64
- msgid "8"
65
- msgstr "8"
66
-
67
- msgid "9"
68
- msgstr "9"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: dynamic-featured-image\n"
4
+ "POT-Creation-Date: 2014-07-19 16:43+0545\n"
5
+ "PO-Revision-Date: 2015-02-16 21:32+0530\n"
6
+ "Last-Translator: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
7
+ "Language-Team: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Generator: Poedit 1.5.4\n"
12
+ "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
13
+ "X-Poedit-Basepath: .\n"
14
+ "Language: Hebrew\n"
15
+
16
+ msgid "Featured Image "
17
+ msgstr "תמונה ראשית "
18
+
19
+ msgid "Dynamic Featured Image - Media Selector"
20
+ msgstr "תמונה ראשית דינאמית - בחירת מדיה"
21
+
22
+ msgid "Set Featured Image"
23
+ msgstr "קבע תמונה ראשית"
24
+
25
+ msgid "Add New"
26
+ msgstr "הוסף תמונה"
27
+
28
+ msgid "Remove"
29
+ msgstr "הסר"
30
+
31
+ msgid ""
32
+ "ATTENTION! Please read the <a href=\"https://github.com/ankitpokhrel/Dynamic-"
33
+ "Featured-Image/wiki\" target=\"_blank\">DOCUMENTATION</a> properly before "
34
+ "update."
35
+ msgstr ""
36
+ "לתשומת לבך! אנא קרא את <a href=\"https://github.com/ankitpokhrel/Dynamic-"
37
+ "Featured-Image/wiki\" target=\"_blank\">הדוקומנטציה</a> היטב לפני שדרוג "
38
+ "התוסף."
39
+
40
+ msgid "0"
41
+ msgstr "0"
42
+
43
+ msgid "1"
44
+ msgstr "1"
45
+
46
+ msgid "2"
47
+ msgstr "2"
48
+
49
+ msgid "3"
50
+ msgstr "3"
51
+
52
+ msgid "4"
53
+ msgstr "4"
54
+
55
+ msgid "5"
56
+ msgstr "5"
57
+
58
+ msgid "6"
59
+ msgstr "6"
60
+
61
+ msgid "7"
62
+ msgstr "7"
63
+
64
+ msgid "8"
65
+ msgstr "8"
66
+
67
+ msgid "9"
68
+ msgstr "9"
languages/dynamic-featured-image-hr_HR.mo CHANGED
File without changes
languages/dynamic-featured-image-hr_HR.po CHANGED
@@ -1,68 +1,68 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: dynamic-featured-image\n"
4
- "POT-Creation-Date: 2014-07-19 16:43+0545\n"
5
- "PO-Revision-Date: 2015-02-16 21:32+0530\n"
6
- "Last-Translator: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
7
- "Language-Team: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=UTF-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "X-Generator: Poedit 1.5.4\n"
12
- "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
13
- "X-Poedit-Basepath: .\n"
14
- "Language: Croatian\n"
15
-
16
- msgid "Featured Image "
17
- msgstr "Glavna slika "
18
-
19
- msgid "Dynamic Featured Image - Media Selector"
20
- msgstr "Dinamična Glavna Slika – Izbor Media"
21
-
22
- msgid "Set Featured Image"
23
- msgstr "Postavite glavnu sliku"
24
-
25
- msgid "Add New"
26
- msgstr "Dodoajte novu"
27
-
28
- msgid "Remove"
29
- msgstr "Uklonite"
30
-
31
- msgid ""
32
- "ATTENTION! Please read the <a href=\"https://github.com/ankitpokhrel/Dynamic-"
33
- "Featured-Image/wiki\" target=\"_blank\">DOCUMENTATION</a> properly before "
34
- "update."
35
- msgstr ""
36
- "PAŽNJA! Molimo vas pažljivo pročitajte <a href=\"https://github.com/"
37
- "ankitpokhrel/Dynamic-Featured-Image/wiki\" target=\"_blank\">DOKUMENTACIJU</"
38
- "a> pre ažuriranja."
39
-
40
- msgid "0"
41
- msgstr "0"
42
-
43
- msgid "1"
44
- msgstr "1"
45
-
46
- msgid "2"
47
- msgstr "2"
48
-
49
- msgid "3"
50
- msgstr "3"
51
-
52
- msgid "4"
53
- msgstr "4"
54
-
55
- msgid "5"
56
- msgstr "5"
57
-
58
- msgid "6"
59
- msgstr "6"
60
-
61
- msgid "7"
62
- msgstr "7"
63
-
64
- msgid "8"
65
- msgstr "8"
66
-
67
- msgid "9"
68
- msgstr "9"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: dynamic-featured-image\n"
4
+ "POT-Creation-Date: 2014-07-19 16:43+0545\n"
5
+ "PO-Revision-Date: 2015-02-16 21:32+0530\n"
6
+ "Last-Translator: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
7
+ "Language-Team: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Generator: Poedit 1.5.4\n"
12
+ "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
13
+ "X-Poedit-Basepath: .\n"
14
+ "Language: Croatian\n"
15
+
16
+ msgid "Featured Image "
17
+ msgstr "Glavna slika "
18
+
19
+ msgid "Dynamic Featured Image - Media Selector"
20
+ msgstr "Dinamična Glavna Slika – Izbor Media"
21
+
22
+ msgid "Set Featured Image"
23
+ msgstr "Postavite glavnu sliku"
24
+
25
+ msgid "Add New"
26
+ msgstr "Dodoajte novu"
27
+
28
+ msgid "Remove"
29
+ msgstr "Uklonite"
30
+
31
+ msgid ""
32
+ "ATTENTION! Please read the <a href=\"https://github.com/ankitpokhrel/Dynamic-"
33
+ "Featured-Image/wiki\" target=\"_blank\">DOCUMENTATION</a> properly before "
34
+ "update."
35
+ msgstr ""
36
+ "PAŽNJA! Molimo vas pažljivo pročitajte <a href=\"https://github.com/"
37
+ "ankitpokhrel/Dynamic-Featured-Image/wiki\" target=\"_blank\">DOKUMENTACIJU</"
38
+ "a> pre ažuriranja."
39
+
40
+ msgid "0"
41
+ msgstr "0"
42
+
43
+ msgid "1"
44
+ msgstr "1"
45
+
46
+ msgid "2"
47
+ msgstr "2"
48
+
49
+ msgid "3"
50
+ msgstr "3"
51
+
52
+ msgid "4"
53
+ msgstr "4"
54
+
55
+ msgid "5"
56
+ msgstr "5"
57
+
58
+ msgid "6"
59
+ msgstr "6"
60
+
61
+ msgid "7"
62
+ msgstr "7"
63
+
64
+ msgid "8"
65
+ msgstr "8"
66
+
67
+ msgid "9"
68
+ msgstr "9"
languages/dynamic-featured-image-it_IT.mo CHANGED
File without changes
languages/dynamic-featured-image-it_IT.po CHANGED
@@ -1,68 +1,68 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: dynamic-featured-image\n"
4
- "POT-Creation-Date: 2014-07-19 16:43+0545\n"
5
- "PO-Revision-Date: 2015-02-16 21:31+0530\n"
6
- "Last-Translator: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
7
- "Language-Team: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=UTF-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "X-Generator: Poedit 1.5.4\n"
12
- "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
13
- "X-Poedit-Basepath: .\n"
14
- "Language: Italian\n"
15
-
16
- msgid "Featured Image "
17
- msgstr "Immagine in Primo Piano "
18
-
19
- msgid "Dynamic Featured Image - Media Selector"
20
- msgstr "Dynamic Featured Image - Selettore Multimediale"
21
-
22
- msgid "Set Featured Image"
23
- msgstr "Imposta Immagine in Primo Piano"
24
-
25
- msgid "Add New"
26
- msgstr "Aggiungi Nuova"
27
-
28
- msgid "Remove"
29
- msgstr "Rimuovere"
30
-
31
- msgid ""
32
- "ATTENTION! Please read the <a href=\"https://github.com/ankitpokhrel/Dynamic-"
33
- "Featured-Image/wiki\" target=\"_blank\">DOCUMENTATION</a> properly before "
34
- "update."
35
- msgstr ""
36
- "ATTENZIONE! Si prega di leggere la <a href=\"https://github.com/ankitpokhrel/"
37
- "Dynamic-Featured-Image/wiki\" target=\"_blank\">DOCUMENTAZIONE</a> prima di "
38
- "effettuare l'aggiornamento."
39
-
40
- msgid "0"
41
- msgstr "0"
42
-
43
- msgid "1"
44
- msgstr "1"
45
-
46
- msgid "2"
47
- msgstr "2"
48
-
49
- msgid "3"
50
- msgstr "3"
51
-
52
- msgid "4"
53
- msgstr "4"
54
-
55
- msgid "5"
56
- msgstr "5"
57
-
58
- msgid "6"
59
- msgstr "6"
60
-
61
- msgid "7"
62
- msgstr "7"
63
-
64
- msgid "8"
65
- msgstr "8"
66
-
67
- msgid "9"
68
- msgstr "9"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: dynamic-featured-image\n"
4
+ "POT-Creation-Date: 2014-07-19 16:43+0545\n"
5
+ "PO-Revision-Date: 2015-02-16 21:31+0530\n"
6
+ "Last-Translator: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
7
+ "Language-Team: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Generator: Poedit 1.5.4\n"
12
+ "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
13
+ "X-Poedit-Basepath: .\n"
14
+ "Language: Italian\n"
15
+
16
+ msgid "Featured Image "
17
+ msgstr "Immagine in Primo Piano "
18
+
19
+ msgid "Dynamic Featured Image - Media Selector"
20
+ msgstr "Dynamic Featured Image - Selettore Multimediale"
21
+
22
+ msgid "Set Featured Image"
23
+ msgstr "Imposta Immagine in Primo Piano"
24
+
25
+ msgid "Add New"
26
+ msgstr "Aggiungi Nuova"
27
+
28
+ msgid "Remove"
29
+ msgstr "Rimuovere"
30
+
31
+ msgid ""
32
+ "ATTENTION! Please read the <a href=\"https://github.com/ankitpokhrel/Dynamic-"
33
+ "Featured-Image/wiki\" target=\"_blank\">DOCUMENTATION</a> properly before "
34
+ "update."
35
+ msgstr ""
36
+ "ATTENZIONE! Si prega di leggere la <a href=\"https://github.com/ankitpokhrel/"
37
+ "Dynamic-Featured-Image/wiki\" target=\"_blank\">DOCUMENTAZIONE</a> prima di "
38
+ "effettuare l'aggiornamento."
39
+
40
+ msgid "0"
41
+ msgstr "0"
42
+
43
+ msgid "1"
44
+ msgstr "1"
45
+
46
+ msgid "2"
47
+ msgstr "2"
48
+
49
+ msgid "3"
50
+ msgstr "3"
51
+
52
+ msgid "4"
53
+ msgstr "4"
54
+
55
+ msgid "5"
56
+ msgstr "5"
57
+
58
+ msgid "6"
59
+ msgstr "6"
60
+
61
+ msgid "7"
62
+ msgstr "7"
63
+
64
+ msgid "8"
65
+ msgstr "8"
66
+
67
+ msgid "9"
68
+ msgstr "9"
languages/dynamic-featured-image-ne_NP.mo CHANGED
File without changes
languages/dynamic-featured-image-ne_NP.po CHANGED
@@ -1,71 +1,71 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: dynamic-featured-image\n"
4
- "POT-Creation-Date: 2014-07-19 16:43+0545\n"
5
- "PO-Revision-Date: 2015-02-15 21:03+0530\n"
6
- "Last-Translator: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
7
- "Language-Team: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=UTF-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "X-Generator: Poedit 1.5.4\n"
12
- "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
13
- "X-Poedit-Basepath: .\n"
14
- "Language: Nepali\n"
15
-
16
- msgid "Featured Image "
17
- msgstr "फीचर्ड इमेज "
18
-
19
- msgid "Dynamic Featured Image - Media Selector"
20
- msgstr "डाइनामिक फीचर्ड इमेज - मिडिया सेलेक्टर"
21
-
22
- msgid "Set Featured Image"
23
- msgstr "फीचर्ड इमेज राख्नुहोस्"
24
-
25
- msgid "Add New"
26
- msgstr "नयाँ"
27
-
28
- msgid "Remove"
29
- msgstr "हटाउनुहोस्"
30
-
31
- msgid ""
32
- "ATTENTION! Please read the <a href=\"https://github.com/ankitpokhrel/Dynamic-"
33
- "Featured-Image/wiki\" target=\"_blank\">DOCUMENTATION</a> properly before "
34
- "update."
35
- msgstr ""
36
- "साबधान! कृपया अपडेट गर्नु अगाडि <a href=\"https://github.com/ankitpokhrel/"
37
- "Dynamic-Featured-Image/wiki\" target=\"_blank\">डकुमेन्टेसन</a> राम्रोसँग पढ्नु होला "
38
- "|"
39
-
40
- msgid "Link to Image"
41
- msgstr "तस्बिरको लिंक"
42
-
43
- msgid "0"
44
- msgstr "०"
45
-
46
- msgid "1"
47
- msgstr "१"
48
-
49
- msgid "2"
50
- msgstr "२"
51
-
52
- msgid "3"
53
- msgstr "३"
54
-
55
- msgid "4"
56
- msgstr "४"
57
-
58
- msgid "5"
59
- msgstr "५"
60
-
61
- msgid "6"
62
- msgstr "६"
63
-
64
- msgid "7"
65
- msgstr "७"
66
-
67
- msgid "8"
68
- msgstr "८"
69
-
70
- msgid "9"
71
- msgstr "९"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: dynamic-featured-image\n"
4
+ "POT-Creation-Date: 2014-07-19 16:43+0545\n"
5
+ "PO-Revision-Date: 2015-02-15 21:03+0530\n"
6
+ "Last-Translator: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
7
+ "Language-Team: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Generator: Poedit 1.5.4\n"
12
+ "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
13
+ "X-Poedit-Basepath: .\n"
14
+ "Language: Nepali\n"
15
+
16
+ msgid "Featured Image "
17
+ msgstr "फीचर्ड इमेज "
18
+
19
+ msgid "Dynamic Featured Image - Media Selector"
20
+ msgstr "डाइनामिक फीचर्ड इमेज - मिडिया सेलेक्टर"
21
+
22
+ msgid "Set Featured Image"
23
+ msgstr "फीचर्ड इमेज राख्नुहोस्"
24
+
25
+ msgid "Add New"
26
+ msgstr "नयाँ"
27
+
28
+ msgid "Remove"
29
+ msgstr "हटाउनुहोस्"
30
+
31
+ msgid ""
32
+ "ATTENTION! Please read the <a href=\"https://github.com/ankitpokhrel/Dynamic-"
33
+ "Featured-Image/wiki\" target=\"_blank\">DOCUMENTATION</a> properly before "
34
+ "update."
35
+ msgstr ""
36
+ "साबधान! कृपया अपडेट गर्नु अगाडि <a href=\"https://github.com/ankitpokhrel/"
37
+ "Dynamic-Featured-Image/wiki\" target=\"_blank\">डकुमेन्टेसन</a> राम्रोसँग पढ्नु होला "
38
+ "|"
39
+
40
+ msgid "Link to Image"
41
+ msgstr "तस्बिरको लिंक"
42
+
43
+ msgid "0"
44
+ msgstr "०"
45
+
46
+ msgid "1"
47
+ msgstr "१"
48
+
49
+ msgid "2"
50
+ msgstr "२"
51
+
52
+ msgid "3"
53
+ msgstr "३"
54
+
55
+ msgid "4"
56
+ msgstr "४"
57
+
58
+ msgid "5"
59
+ msgstr "५"
60
+
61
+ msgid "6"
62
+ msgstr "६"
63
+
64
+ msgid "7"
65
+ msgstr "७"
66
+
67
+ msgid "8"
68
+ msgstr "८"
69
+
70
+ msgid "9"
71
+ msgstr "९"
languages/dynamic-featured-image-pt_BR.mo CHANGED
File without changes
languages/dynamic-featured-image-pt_BR.po CHANGED
@@ -1,55 +1,55 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Dynamic Featured Image\n"
4
- "POT-Creation-Date: 2015-02-28 09:09-0300\n"
5
- "PO-Revision-Date: 2015-02-28 09:10-0300\n"
6
- "Last-Translator: \n"
7
- "Language-Team: Indexis <bruno@idx.is>\n"
8
- "Language: pt\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 1.7.4\n"
13
- "X-Poedit-Basepath: .\n"
14
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
- "X-Poedit-KeywordsList: __;_e\n"
16
- "X-Poedit-SearchPath-0: /users/bruno/Code/wp/wp-content/plugins/Dynamic-"
17
- "Featured-Image\n"
18
-
19
- #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:129
20
- msgid "Dynamic Featured Image - Media Selector"
21
- msgstr "Dynamic Featured Image - Seletor de Mídia"
22
-
23
- #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:130
24
- #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:332
25
- #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:363
26
- msgid "Set Featured Image"
27
- msgstr "Definir Imagem Destacada"
28
-
29
- #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:158
30
- msgid "Featured Image"
31
- msgstr "Imagem Destacada"
32
-
33
- #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:335
34
- #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:366
35
- msgid "Add New"
36
- msgstr "Adicionar"
37
-
38
- #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:336
39
- #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:367
40
- msgid "Remove"
41
- msgstr "Remover"
42
-
43
- #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:409
44
- msgid "Link to Image"
45
- msgstr "Link para Imagem"
46
-
47
- #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:488
48
- msgid ""
49
- "ATTENTION! Please read the <a href=\"https://github.com/ankitpokhrel/Dynamic-"
50
- "Featured-Image/wiki\" target=\"_blank\">DOCUMENTATION</a> properly before "
51
- "update."
52
- msgstr ""
53
- "ATENÇÃO! Por favor leia a <a href=\"https://github.com/ankitpokhrel/Dynamic-"
54
- "Featured-Image/wiki\" target=\"_blank\">DOCUMENTAÇÃO</a> corretamente antes "
55
- "de atualizar."
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Dynamic Featured Image\n"
4
+ "POT-Creation-Date: 2015-02-28 09:09-0300\n"
5
+ "PO-Revision-Date: 2015-02-28 09:10-0300\n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: Indexis <bruno@idx.is>\n"
8
+ "Language: pt\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Poedit 1.7.4\n"
13
+ "X-Poedit-Basepath: .\n"
14
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
+ "X-Poedit-KeywordsList: __;_e\n"
16
+ "X-Poedit-SearchPath-0: /users/bruno/Code/wp/wp-content/plugins/Dynamic-"
17
+ "Featured-Image\n"
18
+
19
+ #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:129
20
+ msgid "Dynamic Featured Image - Media Selector"
21
+ msgstr "Dynamic Featured Image - Seletor de Mídia"
22
+
23
+ #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:130
24
+ #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:332
25
+ #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:363
26
+ msgid "Set Featured Image"
27
+ msgstr "Definir Imagem Destacada"
28
+
29
+ #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:158
30
+ msgid "Featured Image"
31
+ msgstr "Imagem Destacada"
32
+
33
+ #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:335
34
+ #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:366
35
+ msgid "Add New"
36
+ msgstr "Adicionar"
37
+
38
+ #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:336
39
+ #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:367
40
+ msgid "Remove"
41
+ msgstr "Remover"
42
+
43
+ #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:409
44
+ msgid "Link to Image"
45
+ msgstr "Link para Imagem"
46
+
47
+ #: /users/bruno/Code/wp/wp-content/plugins/Dynamic-Featured-Image/dynamic-featured-image.php:488
48
+ msgid ""
49
+ "ATTENTION! Please read the <a href=\"https://github.com/ankitpokhrel/Dynamic-"
50
+ "Featured-Image/wiki\" target=\"_blank\">DOCUMENTATION</a> properly before "
51
+ "update."
52
+ msgstr ""
53
+ "ATENÇÃO! Por favor leia a <a href=\"https://github.com/ankitpokhrel/Dynamic-"
54
+ "Featured-Image/wiki\" target=\"_blank\">DOCUMENTAÇÃO</a> corretamente antes "
55
+ "de atualizar."
languages/dynamic-featured-image-sr_RS.mo CHANGED
File without changes
languages/dynamic-featured-image-sr_RS.po CHANGED
@@ -1,68 +1,68 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: dynamic-featured-image\n"
4
- "POT-Creation-Date: 2014-07-19 16:43+0545\n"
5
- "PO-Revision-Date: 2015-02-16 21:31+0530\n"
6
- "Last-Translator: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
7
- "Language-Team: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=UTF-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "X-Generator: Poedit 1.5.4\n"
12
- "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
13
- "X-Poedit-Basepath: .\n"
14
- "Language: Serbian\n"
15
-
16
- msgid "Featured Image "
17
- msgstr "Glavna slika "
18
-
19
- msgid "Dynamic Featured Image - Media Selector"
20
- msgstr "Dinamična Glavna Slika – Izbor Media"
21
-
22
- msgid "Set Featured Image"
23
- msgstr "Postavite glavnu sliku"
24
-
25
- msgid "Add New"
26
- msgstr "Dodoajte novu"
27
-
28
- msgid "Remove"
29
- msgstr "Uklonite"
30
-
31
- msgid ""
32
- "ATTENTION! Please read the <a href=\"https://github.com/ankitpokhrel/Dynamic-"
33
- "Featured-Image/wiki\" target=\"_blank\">DOCUMENTATION</a> properly before "
34
- "update."
35
- msgstr ""
36
- "PAŽNJA! Molimo vas pažljivo pročitajte <a href=\"https://github.com/"
37
- "ankitpokhrel/Dynamic-Featured-Image/wiki\" target=\"_blank\">DOKUMENTACIJU</"
38
- "a> pre ažuriranja."
39
-
40
- msgid "0"
41
- msgstr "0"
42
-
43
- msgid "1"
44
- msgstr "1"
45
-
46
- msgid "2"
47
- msgstr "2"
48
-
49
- msgid "3"
50
- msgstr "3"
51
-
52
- msgid "4"
53
- msgstr "4"
54
-
55
- msgid "5"
56
- msgstr "5"
57
-
58
- msgid "6"
59
- msgstr "6"
60
-
61
- msgid "7"
62
- msgstr "7"
63
-
64
- msgid "8"
65
- msgstr "8"
66
-
67
- msgid "9"
68
- msgstr "9"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: dynamic-featured-image\n"
4
+ "POT-Creation-Date: 2014-07-19 16:43+0545\n"
5
+ "PO-Revision-Date: 2015-02-16 21:31+0530\n"
6
+ "Last-Translator: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
7
+ "Language-Team: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Generator: Poedit 1.5.4\n"
12
+ "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
13
+ "X-Poedit-Basepath: .\n"
14
+ "Language: Serbian\n"
15
+
16
+ msgid "Featured Image "
17
+ msgstr "Glavna slika "
18
+
19
+ msgid "Dynamic Featured Image - Media Selector"
20
+ msgstr "Dinamična Glavna Slika – Izbor Media"
21
+
22
+ msgid "Set Featured Image"
23
+ msgstr "Postavite glavnu sliku"
24
+
25
+ msgid "Add New"
26
+ msgstr "Dodoajte novu"
27
+
28
+ msgid "Remove"
29
+ msgstr "Uklonite"
30
+
31
+ msgid ""
32
+ "ATTENTION! Please read the <a href=\"https://github.com/ankitpokhrel/Dynamic-"
33
+ "Featured-Image/wiki\" target=\"_blank\">DOCUMENTATION</a> properly before "
34
+ "update."
35
+ msgstr ""
36
+ "PAŽNJA! Molimo vas pažljivo pročitajte <a href=\"https://github.com/"
37
+ "ankitpokhrel/Dynamic-Featured-Image/wiki\" target=\"_blank\">DOKUMENTACIJU</"
38
+ "a> pre ažuriranja."
39
+
40
+ msgid "0"
41
+ msgstr "0"
42
+
43
+ msgid "1"
44
+ msgstr "1"
45
+
46
+ msgid "2"
47
+ msgstr "2"
48
+
49
+ msgid "3"
50
+ msgstr "3"
51
+
52
+ msgid "4"
53
+ msgstr "4"
54
+
55
+ msgid "5"
56
+ msgstr "5"
57
+
58
+ msgid "6"
59
+ msgstr "6"
60
+
61
+ msgid "7"
62
+ msgstr "7"
63
+
64
+ msgid "8"
65
+ msgstr "8"
66
+
67
+ msgid "9"
68
+ msgstr "9"
languages/dynamic-featured-image-sv_SE.mo CHANGED
File without changes
languages/dynamic-featured-image-sv_SE.po CHANGED
@@ -1,68 +1,68 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: dynamic-featured-image\n"
4
- "POT-Creation-Date: 2014-07-19 16:43+0545\n"
5
- "PO-Revision-Date: 2015-02-16 21:31+0530\n"
6
- "Last-Translator: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
7
- "Language-Team: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=UTF-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "X-Generator: Poedit 1.5.4\n"
12
- "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
13
- "X-Poedit-Basepath: .\n"
14
- "Language: Swedish\n"
15
-
16
- msgid "Featured Image "
17
- msgstr "framtida bild "
18
-
19
- msgid "Dynamic Featured Image - Media Selector"
20
- msgstr "Dynamiska framtids bild - Välj bild"
21
-
22
- msgid "Set Featured Image"
23
- msgstr "välj framtida bild"
24
-
25
- msgid "Add New"
26
- msgstr "lägg till ny bild"
27
-
28
- msgid "Remove"
29
- msgstr "ta bort bild"
30
-
31
- msgid ""
32
- "ATTENTION! Please read the <a href=\"https://github.com/ankitpokhrel/Dynamic-"
33
- "Featured-Image/wiki\" target=\"_blank\">DOCUMENTATION</a> properly before "
34
- "update."
35
- msgstr ""
36
- "VIKTIGT! Vänlig läs <a href=\"https://github.com/ankitpokhrel/Dynamic-"
37
- "Featured-Image/wiki\" target=\"_blank\">DOKUMENTATIONEN</a> innan "
38
- "uppdatering!"
39
-
40
- msgid "0"
41
- msgstr "0"
42
-
43
- msgid "1"
44
- msgstr "1"
45
-
46
- msgid "2"
47
- msgstr "2"
48
-
49
- msgid "3"
50
- msgstr "3"
51
-
52
- msgid "4"
53
- msgstr "4"
54
-
55
- msgid "5"
56
- msgstr "5"
57
-
58
- msgid "6"
59
- msgstr "6"
60
-
61
- msgid "7"
62
- msgstr "7"
63
-
64
- msgid "8"
65
- msgstr "8"
66
-
67
- msgid "9"
68
- msgstr "9"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: dynamic-featured-image\n"
4
+ "POT-Creation-Date: 2014-07-19 16:43+0545\n"
5
+ "PO-Revision-Date: 2015-02-16 21:31+0530\n"
6
+ "Last-Translator: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
7
+ "Language-Team: Ankit Pokhrel <ankitpokhrel@gmail.com>\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Generator: Poedit 1.5.4\n"
12
+ "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
13
+ "X-Poedit-Basepath: .\n"
14
+ "Language: Swedish\n"
15
+
16
+ msgid "Featured Image "
17
+ msgstr "framtida bild "
18
+
19
+ msgid "Dynamic Featured Image - Media Selector"
20
+ msgstr "Dynamiska framtids bild - Välj bild"
21
+
22
+ msgid "Set Featured Image"
23
+ msgstr "välj framtida bild"
24
+
25
+ msgid "Add New"
26
+ msgstr "lägg till ny bild"
27
+
28
+ msgid "Remove"
29
+ msgstr "ta bort bild"
30
+
31
+ msgid ""
32
+ "ATTENTION! Please read the <a href=\"https://github.com/ankitpokhrel/Dynamic-"
33
+ "Featured-Image/wiki\" target=\"_blank\">DOCUMENTATION</a> properly before "
34
+ "update."
35
+ msgstr ""
36
+ "VIKTIGT! Vänlig läs <a href=\"https://github.com/ankitpokhrel/Dynamic-"
37
+ "Featured-Image/wiki\" target=\"_blank\">DOKUMENTATIONEN</a> innan "
38
+ "uppdatering!"
39
+
40
+ msgid "0"
41
+ msgstr "0"
42
+
43
+ msgid "1"
44
+ msgstr "1"
45
+
46
+ msgid "2"
47
+ msgstr "2"
48
+
49
+ msgid "3"
50
+ msgstr "3"
51
+
52
+ msgid "4"
53
+ msgstr "4"
54
+
55
+ msgid "5"
56
+ msgstr "5"
57
+
58
+ msgid "6"
59
+ msgstr "6"
60
+
61
+ msgid "7"
62
+ msgstr "7"
63
+
64
+ msgid "8"
65
+ msgstr "8"
66
+
67
+ msgid "9"
68
+ msgstr "9"
readme.txt CHANGED
@@ -3,27 +3,28 @@ Contributors: ankitpokhrel, cfoellmann
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=J9FVY3ESPPD58
4
  Tags: dynamic featured image, featured image, post thumbnail, dynamic post thumbnail, multiple featured image, multiple post thumbnail
5
  Requires at least: 3.5
6
- Tested up to: 4.1.1
7
- Stable tag: 3.4.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
  Dynamically adds multiple featured image (post thumbnail) functionality to posts, pages and custom post types.
12
 
13
  == Description ==
14
- Dynamically adds multiple featured image or multiple post thumbnail functionality to your page, posts and custom post types. This plugin provides you an interface to add any number of featured image as you want without writing a single code. These dynamic featured images can then be collected by the various theme functions.
15
 
16
  > **A NOTE ABOUT SUPPORT:** We’re here to help troubleshoot bugs, but please don't set expectations early as the support forums at WordPress.org are only checked once a week. All the support of the Dynamic Featured Image plugin will now be provided from within [this support forum](http://ankitpokhrel.com.np/blog/forums/forum/dynamic-featured-image-free-version/ "Dynamic Featured Image Support Forum").
17
 
18
  > Users looking for more timely/in-depth support and extended features are encouraged to check out [Dynamic Featured Image PRO](http://ankitpokhrel.com.np/blog/downloads/dynamic-featured-image-pro/ "Dynamic Featured Image PRO").
19
 
20
  > **FEATURES OF PRO VERSION**
21
- - Settings Page to control various settings.
22
- - Shortcodes to make your life easier.
23
- - Featured Image Slider.
24
- - Pro-level support on all forums, including the free forum.
25
- - Dedicated email and chat support.
26
- - Access to more advance features and future updates for free.
 
27
 
28
  > [Learn more &raquo;](http://ankitpokhrel.com.np/blog/downloads/dynamic-featured-image-pro/ "Dynamic Featured Image PRO")
29
 
@@ -87,29 +88,25 @@ iv. [Resetting the plugins folder](http://www.google.com/url?q=http%3A%2F%2Fcode
87
  = 2. There is no additional image on the page when I save it or publish it? =
88
  This happens when there is any problem in saving you post or page properly. For example, if you try to save or publish the post without the post title the featured images may not be saved properly.
89
 
90
- = 3. Can i set the image from remote url? =
91
  If you need to add images from the remote url you need to switch back to ver. 2.0.2 . There is no such feature in ver. 3.0.0 and above.
92
 
93
  Note: If you are using remote url to use the feature image, the helper functions may not work properly.
94
  Alt, caption and title attribute for these images cannot be retrieved using helper functions. `NULL` is returned instead.
95
 
96
- = 4. I am seeing a broken image icon when setting the second feature image? [ for ver. 2.0.2 and below ] =
97
- Some plugins like `Regenerate Thumbnails` changes the default image format in media uploader from `File URL` to `Attachment Post URL`.
98
- Make sure you click on `File URL` under `Link URL` section before clicking `Insert Into Post`.
99
-
100
- = 5. I cannot add or change secondary featured images after update? =
101
  This usually happens because of cache. Clear all your cache and try again if you are having this problem. If you still have such problem you can get help through support forum.
102
 
103
- = 6. Is it Possible to Make DFI Work Only for Certain Post Types? =
104
  Yes! It is easily possible from version 3.1.13. A filter is added in the recent version for this purpose. Refer [this thread](http://ankitpokhrel.com.np/blog/is-it-possible-to-make-dfi-work-only-for-certain-post-types/) for mor info.
105
 
106
- = 7. Other problems or questions? =
107
  Other problems? Don't forget to check the [blog](http://ankitpokhrel.com.np/blog/category/dynamic-featured-image/) and learn to create some exciting things using DFI.
108
 
109
  Please use [support forum](http://wordpress.org/support/plugin/dynamic-featured-image) first if you have any question or queries about the project.
110
- If you don't receive any help in support forum then you can directly contact me at `ankitpokhrel [at] gmail [dot] com`. Please atleast wait for 48hrs before sending another request.
111
 
112
- Please feel free to report any bug found at https://github.com/ankitpokhrel/Dynamic-Featured-Image/ or `ankitpokhrel [at] gmail [dot] com`.
113
 
114
  == Screenshots ==
115
  1. New featured image box.
@@ -117,6 +114,13 @@ Please feel free to report any bug found at https://github.com/ankitpokhrel/Dyna
117
  3. Add new featured image box.
118
 
119
  == Changelog ==
 
 
 
 
 
 
 
120
  = 3.4.0 =
121
  * Added _Link to Image_ field.
122
  * Portuguese Brazilian translation (Thanks to @bruno-rodrigues).
@@ -199,6 +203,9 @@ Please feel free to report any bug found at https://github.com/ankitpokhrel/Dyna
199
  * Fixed some minor issues.
200
 
201
  == Upgrade Notice ==
 
 
 
202
  = 3.4.0 =
203
  Now with ability to add custom fields in media uploader for features targeted for future.
204
 
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=J9FVY3ESPPD58
4
  Tags: dynamic featured image, featured image, post thumbnail, dynamic post thumbnail, multiple featured image, multiple post thumbnail
5
  Requires at least: 3.5
6
+ Tested up to: 4.3
7
+ Stable tag: 3.5.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
  Dynamically adds multiple featured image (post thumbnail) functionality to posts, pages and custom post types.
12
 
13
  == Description ==
14
+ Dynamically adds multiple featured image or multiple post thumbnail functionality to your page, posts and custom post types. This plugin provides you an interface to add any number of featured image as you want without writing a single line of code. These featured images can then be collected by the various theme functions.
15
 
16
  > **A NOTE ABOUT SUPPORT:** We’re here to help troubleshoot bugs, but please don't set expectations early as the support forums at WordPress.org are only checked once a week. All the support of the Dynamic Featured Image plugin will now be provided from within [this support forum](http://ankitpokhrel.com.np/blog/forums/forum/dynamic-featured-image-free-version/ "Dynamic Featured Image Support Forum").
17
 
18
  > Users looking for more timely/in-depth support and extended features are encouraged to check out [Dynamic Featured Image PRO](http://ankitpokhrel.com.np/blog/downloads/dynamic-featured-image-pro/ "Dynamic Featured Image PRO").
19
 
20
  > **FEATURES OF PRO VERSION**
21
+ Settings Page to control the visibility of DFI metabox.
22
+ Custom title settings to change DFI metabox title as per your need.
23
+ Powerful shortcodes to make your life easier.
24
+ Featured image slider.
25
+ – Pro-level support on all forums, including the free forum.
26
+ Dedicated email and chat support.
27
+ – Access to more advance features and future updates for free.
28
 
29
  > [Learn more &raquo;](http://ankitpokhrel.com.np/blog/downloads/dynamic-featured-image-pro/ "Dynamic Featured Image PRO")
30
 
88
  = 2. There is no additional image on the page when I save it or publish it? =
89
  This happens when there is any problem in saving you post or page properly. For example, if you try to save or publish the post without the post title the featured images may not be saved properly.
90
 
91
+ = 3. Can I set the image from remote url? =
92
  If you need to add images from the remote url you need to switch back to ver. 2.0.2 . There is no such feature in ver. 3.0.0 and above.
93
 
94
  Note: If you are using remote url to use the feature image, the helper functions may not work properly.
95
  Alt, caption and title attribute for these images cannot be retrieved using helper functions. `NULL` is returned instead.
96
 
97
+ = 4. I cannot add or change secondary featured images after update? =
 
 
 
 
98
  This usually happens because of cache. Clear all your cache and try again if you are having this problem. If you still have such problem you can get help through support forum.
99
 
100
+ = 5. Is it possible to make DFI work only for certain post types? =
101
  Yes! It is easily possible from version 3.1.13. A filter is added in the recent version for this purpose. Refer [this thread](http://ankitpokhrel.com.np/blog/is-it-possible-to-make-dfi-work-only-for-certain-post-types/) for mor info.
102
 
103
+ = 6. Other problems or questions? =
104
  Other problems? Don't forget to check the [blog](http://ankitpokhrel.com.np/blog/category/dynamic-featured-image/) and learn to create some exciting things using DFI.
105
 
106
  Please use [support forum](http://wordpress.org/support/plugin/dynamic-featured-image) first if you have any question or queries about the project.
107
+ If you don't receive any help in support forum then you can directly contact me at `info [at] ankitpokhrel.com.np`. Please atleast wait for 48hrs before sending another request.
108
 
109
+ Please feel free to report any bug found at https://github.com/ankitpokhrel/Dynamic-Featured-Image/ or `info [at] ankitpokhrel.com.np`.
110
 
111
  == Screenshots ==
112
  1. New featured image box.
114
  3. Add new featured image box.
115
 
116
  == Changelog ==
117
+ = 3.5.0 =
118
+ * Unit Tests.
119
+ * Added support for github updater. Issue #44
120
+ * Fix get_the_ID issue in WordPress below 4.0.
121
+ * Remove extra quotation mark that was making the html invalid.
122
+ * Added uninstall script.
123
+
124
  = 3.4.0 =
125
  * Added _Link to Image_ field.
126
  * Portuguese Brazilian translation (Thanks to @bruno-rodrigues).
203
  * Fixed some minor issues.
204
 
205
  == Upgrade Notice ==
206
+ = 3.5.0 =
207
+ * Unit tests and bug fixes.
208
+
209
  = 3.4.0 =
210
  Now with ability to add custom fields in media uploader for features targeted for future.
211
 
uninstall.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
3
+ exit();
4
+ }
5
+
6
+ //cleanup plugin data
7
+ delete_post_meta_by_key('dfiFeatured');
8
+ delete_post_meta_by_key('_dfi_link_to_image');