Pz-LinkCard - Version 1.1.0

Version Description

  • Modefied: Since November 20, 2015 , it does not use the Twitter API.
  • Added: It can be selected "Other than mobile" and "All client" in the setting of "Open new window/tab".

  • 20151120TwitterAPI

  • Thanks

Download this release

Release Info

Developer poporon
Plugin Icon 128x128 Pz-LinkCard
Version 1.1.0
Comparing to
See all releases

Code changes from version 0.1.0 to 1.1.0

languages/pz-linkcard-ja.mo CHANGED
Binary file
languages/pz-linkcard-ja.po CHANGED
@@ -4,8 +4,8 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: Pz-LinkCard\n"
6
  "Report-Msgid-Bugs-To: http://wppolyglots.wordpress.com\n"
7
- "POT-Creation-Date: 2015-10-04 16:05+0900\n"
8
- "PO-Revision-Date: 2015-10-04 16:06+0900\n"
9
  "Last-Translator: \n"
10
  "Language-Team: poporon\n"
11
  "Language: ja_JP\n"
@@ -19,79 +19,198 @@ msgstr ""
19
  "Plural-Forms: nplurals=1; plural=0;\n"
20
  "X-Poedit-SearchPath-0: ..\n"
21
 
22
- #: ../pz-linkcard-cacheman.php:129 ../pz-linkcard.php:185
23
  msgid "LinkCard cache manager"
24
- msgstr "リンクカード DBキャッシュ マネージャ"
25
 
26
- #: ../pz-linkcard-cacheman.php:132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  msgid "All"
28
  msgstr "すべて"
29
 
30
- #: ../pz-linkcard-cacheman.php:133
31
  msgid "Internal"
32
  msgstr "内部リンク"
33
 
34
- #: ../pz-linkcard-cacheman.php:134
35
  msgid "External"
36
  msgstr "外部リンク"
37
 
38
- #: ../pz-linkcard-cacheman.php:155
39
  msgid "Select batch"
40
  msgstr "一括処理を選択"
41
 
42
- #: ../pz-linkcard-cacheman.php:157 ../pz-linkcard-cacheman.php:209
43
  msgid "Select"
44
  msgstr "選択してください"
45
 
46
- #: ../pz-linkcard-cacheman.php:158
 
 
 
 
47
  msgid "Renew SNS count"
48
- msgstr "ソーシャルカウントを再取得"
49
 
50
- #: ../pz-linkcard-cacheman.php:159
51
- msgid "Delete"
52
- msgstr "削除"
53
 
54
- #: ../pz-linkcard-cacheman.php:161
55
  msgid "Submit"
56
  msgstr "適用"
57
 
58
- #: ../pz-linkcard-cacheman.php:175 ../pz-linkcard-settings.php:330
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  msgid "URL"
60
  msgstr "URL"
61
 
62
- #: ../pz-linkcard-cacheman.php:178 ../pz-linkcard-settings.php:313
 
63
  msgid "Title"
64
  msgstr "タイトル"
65
 
66
- #: ../pz-linkcard-cacheman.php:181
67
- msgid "Site name"
68
- msgstr "サイト名称"
 
69
 
70
- #: ../pz-linkcard-cacheman.php:184
 
 
 
 
 
 
 
 
71
  msgid "Tw"
72
  msgstr ""
73
 
74
- #: ../pz-linkcard-cacheman.php:187
75
- msgid "f"
76
  msgstr ""
77
 
78
- #: ../pz-linkcard-cacheman.php:190
79
  msgid "B!"
80
  msgstr ""
81
 
82
- #: ../pz-linkcard-cacheman.php:193
83
  msgid "Regist"
84
  msgstr "登録日時"
85
 
86
- #: ../pz-linkcard-cacheman.php:196
87
  msgid "Post ID"
88
  msgstr "記事ID"
89
 
90
- #: ../pz-linkcard-cacheman.php:199
91
  msgid "Result code"
92
- msgstr "結果コード"
 
 
 
 
93
 
94
- #: ../pz-linkcard-settings.php:4 ../pz-linkcard.php:186
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  msgid "LinkCard Settings"
96
  msgstr "リンクカード設定"
97
 
@@ -112,470 +231,490 @@ msgid "Basic"
112
  msgstr "基本設定"
113
 
114
  #: ../pz-linkcard-settings.php:74
115
- msgid "ShortCode"
116
- msgstr "ショートコード"
117
 
118
- #: ../pz-linkcard-settings.php:76 ../pz-linkcard-settings.php:81
119
- #: ../pz-linkcard-settings.php:86 ../pz-linkcard-settings.php:91
120
- msgid "distinguish between uppercase and lowercase letters"
121
- msgstr "大文字と小文字は区別されます"
122
 
123
  #: ../pz-linkcard-settings.php:79
124
- msgid "ShortCode 2"
125
- msgstr "ショートコード 2"
126
-
127
- #: ../pz-linkcard-settings.php:84
128
- msgid "ShortCode 3"
129
- msgstr "ショートコード 3"
130
-
131
- #: ../pz-linkcard-settings.php:89
132
- msgid "ShortCode 4"
133
- msgstr "ショートコード 4"
134
-
135
- #: ../pz-linkcard-settings.php:94
136
  msgid "Use inlinetext"
137
  msgstr "ショートコードで囲んだ文字列"
138
 
139
- #: ../pz-linkcard-settings.php:96
140
- msgid "[Shortcode url=\"xxx\"]"
141
- msgstr ""
142
-
143
- #: ../pz-linkcard-settings.php:98
144
  msgid "No use"
145
  msgstr "使用しない"
146
 
147
- #: ../pz-linkcard-settings.php:99
148
  msgid "Use to excerpt"
149
  msgstr "抜粋文として使用"
150
 
151
- #: ../pz-linkcard-settings.php:100
152
  msgid "Use to title"
153
  msgstr "タイトルとして使用"
154
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  #: ../pz-linkcard-settings.php:102
156
- msgid "[/Shortcode]"
157
- msgstr ""
158
 
159
- #: ../pz-linkcard-settings.php:107
160
  msgid "Special Format"
161
  msgstr "定型書式"
162
 
163
- #: ../pz-linkcard-settings.php:110 ../pz-linkcard-settings.php:217
164
- #: ../pz-linkcard-settings.php:250 ../pz-linkcard-settings.php:271
165
- #: ../pz-linkcard-settings.php:297 ../pz-linkcard-settings.php:416
166
- #: ../pz-linkcard-settings.php:426 ../pz-linkcard-settings.php:455
167
- #: ../pz-linkcard-settings.php:465
 
168
  msgid "None"
169
  msgstr "なし"
170
 
171
- #: ../pz-linkcard-settings.php:111
 
 
 
 
172
  msgid "Cellophane tape \"center\""
173
  msgstr "セロハンテープ(中央)"
174
 
175
- #: ../pz-linkcard-settings.php:112
176
  msgid "Cellophane tape \"Top corner\""
177
  msgstr "セロハンテープ(左上と右上)"
178
 
179
- #: ../pz-linkcard-settings.php:113
180
  msgid "Cellophane tape \"long\""
181
  msgstr "セロハンテープ(長め)"
182
 
183
- #: ../pz-linkcard-settings.php:114
184
  msgid "Slanting"
185
  msgstr "斜め"
186
 
187
- #: ../pz-linkcard-settings.php:115
188
  msgid "3D Rotate"
189
  msgstr "3D回転"
190
 
191
- #: ../pz-linkcard-settings.php:116
192
  msgid "Curling paper"
193
- msgstr "紙がめくれた効果(ほとんどのテーマで正しく表示されません)"
194
 
195
- #: ../pz-linkcard-settings.php:117
 
 
 
 
196
  msgid "Neutral"
197
- msgstr "ブルーグリーン"
198
 
199
- #: ../pz-linkcard-settings.php:118
200
  msgid "Orange"
201
- msgstr "オレンジ"
202
 
203
- #: ../pz-linkcard-settings.php:119
204
  msgid "Green"
205
- msgstr "グリーン"
206
 
207
- #: ../pz-linkcard-settings.php:120
208
  msgid "Blue"
209
- msgstr "ブルー"
210
-
211
- #: ../pz-linkcard-settings.php:121
212
- msgid "Pz-LkC Default"
213
- msgstr "Pz リンクカード 標準書式"
214
 
215
- #: ../pz-linkcard-settings.php:123
216
  msgid "Will some of the parameters are forcibly changed"
217
  msgstr "選択した定型書式によって、一部の設定が無効になります。"
218
 
219
- #: ../pz-linkcard-settings.php:129
220
  msgid "Style"
221
  msgstr "表示設定"
222
 
223
- #: ../pz-linkcard-settings.php:132
224
  msgid "Position"
225
  msgstr "配置設定"
226
 
227
- #: ../pz-linkcard-settings.php:139
228
  msgid "Margin top"
229
  msgstr "上の余白"
230
 
231
- #: ../pz-linkcard-settings.php:141 ../pz-linkcard-settings.php:156
232
- #: ../pz-linkcard-settings.php:173 ../pz-linkcard-settings.php:190
233
  msgid "Not defined"
234
  msgstr "設定しない"
235
 
236
- #: ../pz-linkcard-settings.php:142 ../pz-linkcard-settings.php:157
237
- #: ../pz-linkcard-settings.php:174 ../pz-linkcard-settings.php:191
238
  msgid "0"
239
  msgstr ""
240
 
241
- #: ../pz-linkcard-settings.php:143 ../pz-linkcard-settings.php:158
242
- #: ../pz-linkcard-settings.php:175 ../pz-linkcard-settings.php:192
243
- #: ../pz-linkcard-settings.php:385 ../pz-linkcard-settings.php:386
244
  msgid "4px"
245
  msgstr ""
246
 
247
- #: ../pz-linkcard-settings.php:144 ../pz-linkcard-settings.php:159
248
- #: ../pz-linkcard-settings.php:176 ../pz-linkcard-settings.php:193
249
  msgid "8px"
250
  msgstr ""
251
 
252
- #: ../pz-linkcard-settings.php:145 ../pz-linkcard-settings.php:160
253
- #: ../pz-linkcard-settings.php:177 ../pz-linkcard-settings.php:194
254
- #: ../pz-linkcard-settings.php:319
255
  msgid "16px"
256
  msgstr ""
257
 
258
- #: ../pz-linkcard-settings.php:146 ../pz-linkcard-settings.php:161
259
- #: ../pz-linkcard-settings.php:178 ../pz-linkcard-settings.php:195
260
  msgid "32px"
261
  msgstr ""
262
 
263
- #: ../pz-linkcard-settings.php:147 ../pz-linkcard-settings.php:162
264
- #: ../pz-linkcard-settings.php:179 ../pz-linkcard-settings.php:196
265
  msgid "64px"
266
  msgstr ""
267
 
268
- #: ../pz-linkcard-settings.php:154
269
  msgid "Margin left"
270
  msgstr "左の余白"
271
 
272
- #: ../pz-linkcard-settings.php:166
273
  msgid "Width"
274
  msgstr "カードの横幅"
275
 
276
- #: ../pz-linkcard-settings.php:167
277
  msgid "Height"
278
  msgstr "カードの高さ"
279
 
280
- #: ../pz-linkcard-settings.php:168
281
  msgid "Trim"
282
  msgstr "文字数"
283
 
284
- #: ../pz-linkcard-settings.php:171
285
  msgid "Margin right"
286
  msgstr "右の余白"
287
 
288
- #: ../pz-linkcard-settings.php:185
289
  msgid "Centering"
290
  msgstr "中央に寄せる"
291
 
292
- #: ../pz-linkcard-settings.php:188
293
  msgid "Margin bottom"
294
  msgstr "下の余白"
295
 
296
- #: ../pz-linkcard-settings.php:207
297
  msgid "Link the whole"
298
  msgstr "カード全体をリンク"
299
 
300
- #: ../pz-linkcard-settings.php:209
301
  msgid "Enclose the entire card at anchor"
302
  msgstr ""
303
  "カード全体をAタグで囲って、どこをクリックしてもリンク先を開くようにします。"
304
 
305
- #: ../pz-linkcard-settings.php:214
306
  msgid "Border"
307
  msgstr "枠線の太さ"
308
 
309
- #: ../pz-linkcard-settings.php:218
310
  msgid "Gray thin"
311
  msgstr "薄い色/細い(1px)"
312
 
313
- #: ../pz-linkcard-settings.php:219
314
  msgid "Gray"
315
  msgstr "薄い色/普通(2px)"
316
 
317
- #: ../pz-linkcard-settings.php:220
318
  msgid "Gray thick"
319
  msgstr "薄い色/太い(4px)"
320
 
321
- #: ../pz-linkcard-settings.php:221
322
  msgid "Black thin"
323
  msgstr "黒/細い(1px)"
324
 
325
- #: ../pz-linkcard-settings.php:222
326
  msgid "Black"
327
  msgstr "黒/普通(2px)"
328
 
329
- #: ../pz-linkcard-settings.php:223
330
  msgid "Black thick"
331
  msgstr "黒/太い(4px)"
332
 
333
- #: ../pz-linkcard-settings.php:224
334
  msgid "Black frame"
335
  msgstr "黒/額縁(8px)"
336
 
337
- #: ../pz-linkcard-settings.php:225
338
  msgid "Dodgerblue"
339
  msgstr "ドジャー・ブルー(明るい青)"
340
 
341
- #: ../pz-linkcard-settings.php:226
342
  msgid "Mediumaquamarine"
343
  msgstr "ミディアム・アクアマリーン(明るい緑)"
344
 
345
- #: ../pz-linkcard-settings.php:227
346
  msgid "Hotpink"
347
  msgstr "ホット・ピンク(明るい赤)"
348
 
349
- #: ../pz-linkcard-settings.php:228
350
  msgid "Double"
351
  msgstr "二重線"
352
 
353
- #: ../pz-linkcard-settings.php:229
354
  msgid "Dotted"
355
  msgstr "点線"
356
 
357
- #: ../pz-linkcard-settings.php:235
358
  msgid "Layout"
359
  msgstr "外観設定"
360
 
361
- #: ../pz-linkcard-settings.php:236
362
  msgid "Radius"
363
  msgstr "角を丸める"
364
 
365
- #: ../pz-linkcard-settings.php:245
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  msgid "Display URL"
367
  msgstr "リンク先のURLを表示する"
368
 
369
- #: ../pz-linkcard-settings.php:248 ../pz-linkcard-settings.php:413
370
- #: ../pz-linkcard-settings.php:452
371
  msgid "Thumbnail"
372
  msgstr "サムネイル"
373
 
374
- #: ../pz-linkcard-settings.php:251
375
  msgid "Right"
376
  msgstr "右側"
377
 
378
- #: ../pz-linkcard-settings.php:252
379
  msgid "Left"
380
  msgstr "左側"
381
 
382
- #: ../pz-linkcard-settings.php:254 ../pz-linkcard-settings.php:290
383
  msgid "Shadow"
384
  msgstr "影を付ける"
385
 
386
- #: ../pz-linkcard-settings.php:259
387
  msgid "Hollow content area"
388
  msgstr "記事の情報に枠を付ける"
389
 
390
- #: ../pz-linkcard-settings.php:264
391
  msgid "Display excerpt"
392
  msgstr "抜粋文を表示する"
393
 
394
- #: ../pz-linkcard-settings.php:269 ../pz-linkcard-settings.php:433
395
- #: ../pz-linkcard-settings.php:472 ../pz-linkcard-settings.php:488
396
- msgid "Site information"
397
- msgstr "サイト情報"
398
-
399
- #: ../pz-linkcard-settings.php:272
400
- msgid "Top"
401
- msgstr "上側"
402
-
403
- #: ../pz-linkcard-settings.php:273
404
- msgid "Bottom"
405
- msgstr "下側"
406
-
407
- #: ../pz-linkcard-settings.php:275
408
- msgid "Use SiteName"
409
- msgstr "サイト名称を使用"
410
-
411
- #: ../pz-linkcard-settings.php:280
412
  msgid "Hollow"
413
  msgstr "内側に影を付ける"
414
 
415
- #: ../pz-linkcard-settings.php:294
416
  msgid "Display SNS Count"
417
  msgstr "シェア数を表示する"
418
 
419
- #: ../pz-linkcard-settings.php:298
420
  msgid "After Title"
421
  msgstr "タイトルの後ろ"
422
 
423
- #: ../pz-linkcard-settings.php:299
424
  msgid "After site-name"
425
  msgstr "サイト情報の後ろ"
426
 
427
- #: ../pz-linkcard-settings.php:301
428
- msgid "Hatena"
429
- msgstr "はてなブックマーク"
430
 
431
- #: ../pz-linkcard-settings.php:302
432
  msgid "Facebook"
433
  msgstr "フェイスブック(シェア数)"
434
 
435
- #: ../pz-linkcard-settings.php:303
436
- msgid "Twitter"
437
- msgstr "ツイッター"
438
 
439
- #: ../pz-linkcard-settings.php:304
440
  msgid ""
441
  "There is a possibility that the screen display is slow If you enable this "
442
  "setting."
443
  msgstr "有効にする取得APIによっては表示が遅くなる場合があります。"
444
 
445
- #: ../pz-linkcard-settings.php:310
446
  msgid "Letters"
447
  msgstr "文字設定"
448
 
449
- #: ../pz-linkcard-settings.php:318 ../pz-linkcard-settings.php:337
450
- #: ../pz-linkcard-settings.php:353 ../pz-linkcard-settings.php:370
451
  msgid "14px"
452
  msgstr ""
453
 
454
- #: ../pz-linkcard-settings.php:320
455
  msgid "18px"
456
  msgstr ""
457
 
458
- #: ../pz-linkcard-settings.php:321
459
  msgid "20px"
460
  msgstr ""
461
 
462
- #: ../pz-linkcard-settings.php:322
463
  msgid "24px"
464
  msgstr ""
465
 
466
- #: ../pz-linkcard-settings.php:323 ../pz-linkcard-settings.php:375
467
  msgid "100%"
468
  msgstr ""
469
 
470
- #: ../pz-linkcard-settings.php:324
471
  msgid "120%"
472
  msgstr ""
473
 
474
- #: ../pz-linkcard-settings.php:325
475
  msgid "140%"
476
  msgstr ""
477
 
478
- #: ../pz-linkcard-settings.php:335 ../pz-linkcard-settings.php:350
479
- #: ../pz-linkcard-settings.php:366 ../pz-linkcard-settings.php:387
480
  msgid "9px"
481
  msgstr ""
482
 
483
- #: ../pz-linkcard-settings.php:336 ../pz-linkcard-settings.php:352
484
- #: ../pz-linkcard-settings.php:368
485
  msgid "12px"
486
  msgstr ""
487
 
488
- #: ../pz-linkcard-settings.php:338 ../pz-linkcard-settings.php:354
489
- #: ../pz-linkcard-settings.php:372
490
  msgid "70%"
491
  msgstr ""
492
 
493
- #: ../pz-linkcard-settings.php:339 ../pz-linkcard-settings.php:355
494
- #: ../pz-linkcard-settings.php:373
495
  msgid "80%"
496
  msgstr ""
497
 
498
- #: ../pz-linkcard-settings.php:340 ../pz-linkcard-settings.php:356
499
- #: ../pz-linkcard-settings.php:374
500
  msgid "90%"
501
  msgstr ""
502
 
503
- #: ../pz-linkcard-settings.php:345
504
- msgid "Excerpt"
505
- msgstr "抜粋文"
506
-
507
- #: ../pz-linkcard-settings.php:351 ../pz-linkcard-settings.php:367
508
  msgid "11px"
509
  msgstr ""
510
 
511
- #: ../pz-linkcard-settings.php:361
512
  msgid "Site-info."
513
  msgstr "サイト情報"
514
 
515
- #: ../pz-linkcard-settings.php:369
516
  msgid "13px"
517
  msgstr ""
518
 
519
- #: ../pz-linkcard-settings.php:371 ../pz-linkcard-settings.php:388
520
  msgid "60%"
521
  msgstr ""
522
 
523
- #: ../pz-linkcard-settings.php:380
524
  msgid "Plugin link"
525
  msgstr "プラグインのページ"
526
 
527
- #: ../pz-linkcard-settings.php:393
528
  msgid "Plugin-link"
529
  msgstr "プラグイン名"
530
 
531
- #: ../pz-linkcard-settings.php:401
532
  msgid "External link"
533
  msgstr "外部リンク"
534
 
535
- #: ../pz-linkcard-settings.php:405 ../pz-linkcard-settings.php:444
536
- #: ../pz-linkcard-settings.php:480
537
  msgid "Background Color"
538
  msgstr "背景色"
539
 
540
- #: ../pz-linkcard-settings.php:409
541
  msgid "Background image"
542
  msgstr "背景画像"
543
 
544
- #: ../pz-linkcard-settings.php:417 ../pz-linkcard-settings.php:427
545
- #: ../pz-linkcard-settings.php:456 ../pz-linkcard-settings.php:466
546
  msgid "Direct"
547
  msgstr "直接取得する"
548
 
549
- #: ../pz-linkcard-settings.php:418 ../pz-linkcard-settings.php:428
550
- #: ../pz-linkcard-settings.php:457 ../pz-linkcard-settings.php:467
551
  msgid "Use WebAPI"
552
  msgstr "WebAPIを利用する"
553
 
554
- #: ../pz-linkcard-settings.php:423 ../pz-linkcard-settings.php:462
 
555
  msgid "Favicon"
556
  msgstr "サイトアイコン"
557
 
558
- #: ../pz-linkcard-settings.php:440
 
 
 
 
 
 
 
 
 
 
 
 
 
559
  msgid "Internal link"
560
  msgstr "内部リンク"
561
 
562
- #: ../pz-linkcard-settings.php:448 ../pz-linkcard-settings.php:484
563
  msgid "Background Image"
564
  msgstr "背景画像"
565
 
566
- #: ../pz-linkcard-settings.php:477
567
- msgid "This page"
568
  msgstr "同ページへのリンク"
569
 
570
- #: ../pz-linkcard-settings.php:495
 
 
 
 
 
571
  msgid "Web-API"
572
  msgstr "画像取得APIの指定"
573
 
574
- #: ../pz-linkcard-settings.php:498
575
  msgid "Favicon API"
576
  msgstr "ファビコンの取得API"
577
 
578
- #: ../pz-linkcard-settings.php:500
579
  msgid ""
580
  "%DOMAIN% replace to domain name (ex. poporon.poponet.jp )<br />%DOMAIN_URL% "
581
  "replace to domain URL (ex. http://poporon.poponet.jp )"
@@ -584,127 +723,150 @@ msgstr ""
584
  "%DOMAIN_URL% と記述するとドメインのURL(例.http://poporon.poponet.jp)に置き"
585
  "換わります。"
586
 
587
- #: ../pz-linkcard-settings.php:503
588
  msgid "Thumbnail API"
589
  msgstr "サムネイル画像の取得API"
590
 
591
- #: ../pz-linkcard-settings.php:505
592
  msgid "%URL% replace to URL"
593
  msgstr "%URL% と記述するとURLに置き換わります"
594
 
595
- #: ../pz-linkcard-settings.php:510
596
  msgid "Debug"
597
  msgstr "詳しい人用(Debug)"
598
 
599
- #: ../pz-linkcard-settings.php:513
600
  msgid "Use blockquote tag"
601
  msgstr "BLOCKQUOTEをタグを使用する"
602
 
603
- #: ../pz-linkcard-settings.php:515
604
  msgid "without using DIV tag, and use BLOCKQUOTE tag"
605
  msgstr "&lt;BLOCKQUOTE&gt;で囲んで引用扱いにします"
606
 
607
- #: ../pz-linkcard-settings.php:518
608
  msgid "Set nofollow"
609
  msgstr "nofollowを付与する"
610
 
611
- #: ../pz-linkcard-settings.php:520
612
  msgid "In the case of an external site, it puts the \"nofollow\""
613
  msgstr "外部リンクのリンクを nofollow にする"
614
 
615
- #: ../pz-linkcard-settings.php:524
616
  msgid "Reset img style"
617
  msgstr "CSSリセット(img)"
618
 
619
- #: ../pz-linkcard-settings.php:526
620
  msgid ""
621
  "When unnecessary frame is displayed on the image, you can improve it by case"
622
  msgstr "画像がずれて表示されるときに改善される可能性が有ります(推奨)"
623
 
624
- #: ../pz-linkcard-settings.php:530
625
  msgid "specified CSS"
626
  msgstr "指定したCSSを使用"
627
 
628
- #: ../pz-linkcard-settings.php:532
629
  msgid "Use specified CSS file"
630
  msgstr "指定したCSSファイルを使用する"
631
 
632
- #: ../pz-linkcard-settings.php:535 ../pz-linkcard-settings.php:540
633
  msgid "CSS file"
634
  msgstr "CSSファイル名"
635
 
636
- #: ../pz-linkcard-settings.php:537
637
  msgid "(ex. http://exsample.com/style.css )"
638
  msgstr "例.http://exsample.com/style.css"
639
 
640
- #: ../pz-linkcard-settings.php:544
641
  msgid "CSS URL"
642
  msgstr "CSSファイルのURL"
643
 
644
- #: ../pz-linkcard-settings.php:549
645
  msgid "Use HatenaBlogCard"
646
  msgstr "はてなブログカードを利用する"
647
 
648
- #: ../pz-linkcard-settings.php:551
649
  msgid "External links will use Always HatenaBlogCard (Not recommended)"
650
  msgstr "外部リンクは「はてなブログカード」を利用する(非推奨)"
651
 
652
- #: ../pz-linkcard-settings.php:555
653
  msgid "Display link to author page"
654
  msgstr "プラグイン名を表示する"
655
 
656
- #: ../pz-linkcard-settings.php:560
657
  msgid "Plugin URL"
658
  msgstr "プラグインページURL"
659
 
660
- #: ../pz-linkcard-settings.php:564
661
  msgid "Plugin name"
662
  msgstr "プラグイン名"
663
 
664
- #: ../pz-linkcard-settings.php:568
665
  msgid "Plugin version"
666
  msgstr "プラグインバージョン"
667
 
668
- #: ../pz-linkcard-settings.php:572
669
  msgid "Saved datetime"
670
  msgstr "保存した日時"
671
 
672
- #: ../pz-linkcard-settings.php:577
673
  msgid "Display elapsed time"
674
  msgstr "実行時間の表示"
675
 
676
- #: ../pz-linkcard-settings.php:579
677
  msgid "Output the elapsed time to HTML comment."
678
  msgstr "作成にかかった時間をコメントとしてHTMLへ出力する"
679
 
680
- #: ../pz-linkcard-settings.php:585
681
  msgid "Initialize"
682
  msgstr "初期化"
683
 
684
- #: ../pz-linkcard-settings.php:588
685
  msgid "Return to the initial setting"
686
  msgstr "設定を初期状態へ戻す"
687
 
688
- #: ../pz-linkcard-style.php:316
689
  msgid "Style sheet saved."
690
  msgstr "設定を元にスタイルシートを自動生成しました。"
691
 
692
- #: ../pz-linkcard-style.php:318
693
  msgid "Style sheet failed."
694
  msgstr "スタイルシートの自動生成に失敗しました。"
695
 
696
- #: ../pz-linkcard.php:185
697
  msgid "Pz LkC Cache"
698
  msgstr "Pz カード管理"
699
 
700
- #: ../pz-linkcard.php:186
701
  msgid "Pz LinkCard"
702
  msgstr "Pz カード設定"
703
 
704
- #: ../pz-linkcard.php:240
705
  msgid "Settings"
706
  msgstr "設定"
707
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
708
  #~ msgid "Refresh"
709
  #~ msgstr "再取得"
710
 
@@ -741,9 +903,6 @@ msgstr "設定"
741
  #~ msgid "gray"
742
  #~ msgstr "薄い色/普通(2px)"
743
 
744
- #~ msgid "This setting will be applied only if you specify a \"title\""
745
- #~ msgstr "title を指定した場合のみ適用されます"
746
-
747
  #~ msgid "Display information"
748
  #~ msgstr "サイト情報を表示する"
749
 
@@ -802,18 +961,12 @@ msgstr "設定"
802
  #~ msgid "Display thumbnail"
803
  #~ msgstr "サムネイル画像"
804
 
805
- #~ msgid "Cache time"
806
- #~ msgstr "キャッシュ時間"
807
-
808
  #~ msgid "Number of seconds to keep cache"
809
  #~ msgstr "取得したタイトルと概要を保管しておく秒数"
810
 
811
  #~ msgid "(Unimplemented)"
812
  #~ msgstr "(未実装)※設定は反映されません。"
813
 
814
- #~ msgid "Clear text cache"
815
- #~ msgstr "キャッシュのクリア"
816
-
817
  #~ msgid "After the invalidation of the plug-in , please activate again"
818
  #~ msgstr "→プラグインの無効化を行った後、再度有効化してください"
819
 
4
  msgstr ""
5
  "Project-Id-Version: Pz-LinkCard\n"
6
  "Report-Msgid-Bugs-To: http://wppolyglots.wordpress.com\n"
7
+ "POT-Creation-Date: 2015-10-16 01:25+0900\n"
8
+ "PO-Revision-Date: 2015-10-16 01:27+0900\n"
9
  "Last-Translator: \n"
10
  "Language-Team: poporon\n"
11
  "Language: ja_JP\n"
19
  "Plural-Forms: nplurals=1; plural=0;\n"
20
  "X-Poedit-SearchPath-0: ..\n"
21
 
22
+ #: ../pz-linkcard-cacheman.php:6 ../pz-linkcard.php:909
23
  msgid "LinkCard cache manager"
24
+ msgstr "リンクカード/DBキャッシュ管理"
25
 
26
+ #: ../pz-linkcard-cacheman.php:64
27
+ msgid "Updated cache"
28
+ msgstr "キャッシュを更新しました"
29
+
30
+ #: ../pz-linkcard-cacheman.php:66 ../pz-linkcard-cacheman.php:69
31
+ msgid "Update failed"
32
+ msgstr "キャッシュの更新に失敗しました"
33
+
34
+ #: ../pz-linkcard-cacheman.php:74
35
+ msgid "Social count renew"
36
+ msgstr "ソーシャルカウントの再取得"
37
+
38
+ #: ../pz-linkcard-cacheman.php:84 ../pz-linkcard-cacheman.php:97
39
+ msgid "completed"
40
+ msgstr "完了しました"
41
+
42
+ #: ../pz-linkcard-cacheman.php:89
43
+ msgid "Cache renew"
44
+ msgstr "記事内容の再取得"
45
+
46
+ #: ../pz-linkcard-cacheman.php:105
47
+ msgid "Cache deleted"
48
+ msgstr "キャッシュから削除しました"
49
+
50
+ #: ../pz-linkcard-cacheman.php:211
51
  msgid "All"
52
  msgstr "すべて"
53
 
54
+ #: ../pz-linkcard-cacheman.php:212
55
  msgid "Internal"
56
  msgstr "内部リンク"
57
 
58
+ #: ../pz-linkcard-cacheman.php:213
59
  msgid "External"
60
  msgstr "外部リンク"
61
 
62
+ #: ../pz-linkcard-cacheman.php:223
63
  msgid "Select batch"
64
  msgstr "一括処理を選択"
65
 
66
+ #: ../pz-linkcard-cacheman.php:225 ../pz-linkcard-cacheman.php:295
67
  msgid "Select"
68
  msgstr "選択してください"
69
 
70
+ #: ../pz-linkcard-cacheman.php:226
71
+ msgid "Renew cache"
72
+ msgstr "記事内容を再取得する"
73
+
74
+ #: ../pz-linkcard-cacheman.php:227
75
  msgid "Renew SNS count"
76
+ msgstr "ソーシャルカウントを再取得する"
77
 
78
+ #: ../pz-linkcard-cacheman.php:228
79
+ msgid "Delete from cache"
80
+ msgstr "キャッシュから削除する"
81
 
82
+ #: ../pz-linkcard-cacheman.php:230
83
  msgid "Submit"
84
  msgstr "適用"
85
 
86
+ #: ../pz-linkcard-cacheman.php:234
87
+ msgid "Select domain"
88
+ msgstr "ドメインを選択"
89
+
90
+ #: ../pz-linkcard-cacheman.php:236
91
+ msgid "All domain"
92
+ msgstr "すべてのドメイン"
93
+
94
+ #: ../pz-linkcard-cacheman.php:249
95
+ msgid "Refine search"
96
+ msgstr "絞り込み検索"
97
+
98
+ #: ../pz-linkcard-cacheman.php:254
99
+ msgid "items"
100
+ msgstr "項目"
101
+
102
+ #: ../pz-linkcard-cacheman.php:271
103
+ msgid "Select all"
104
+ msgstr "すべて選択"
105
+
106
+ #: ../pz-linkcard-cacheman.php:272 ../pz-linkcard-edit.php:13
107
+ msgid "ID"
108
+ msgstr ""
109
+
110
+ #: ../pz-linkcard-cacheman.php:273 ../pz-linkcard-edit.php:17
111
+ msgid "URL key"
112
+ msgstr "URLキー"
113
+
114
+ #: ../pz-linkcard-cacheman.php:274 ../pz-linkcard-edit.php:21
115
+ #: ../pz-linkcard-settings.php:339
116
  msgid "URL"
117
  msgstr "URL"
118
 
119
+ #: ../pz-linkcard-cacheman.php:275 ../pz-linkcard-edit.php:33
120
+ #: ../pz-linkcard-settings.php:322
121
  msgid "Title"
122
  msgstr "タイトル"
123
 
124
+ #: ../pz-linkcard-cacheman.php:276 ../pz-linkcard-edit.php:37
125
+ #: ../pz-linkcard-settings.php:354
126
+ msgid "Excerpt"
127
+ msgstr "抜粋文"
128
 
129
+ #: ../pz-linkcard-cacheman.php:277 ../pz-linkcard-edit.php:41
130
+ msgid "Charset"
131
+ msgstr "文字セット"
132
+
133
+ #: ../pz-linkcard-cacheman.php:278 ../pz-linkcard-edit.php:29
134
+ msgid "Domain"
135
+ msgstr "ドメイン"
136
+
137
+ #: ../pz-linkcard-cacheman.php:279 ../pz-linkcard-edit.php:63
138
  msgid "Tw"
139
  msgstr ""
140
 
141
+ #: ../pz-linkcard-cacheman.php:280 ../pz-linkcard-edit.php:64
142
+ msgid "fb"
143
  msgstr ""
144
 
145
+ #: ../pz-linkcard-cacheman.php:281 ../pz-linkcard-edit.php:65
146
  msgid "B!"
147
  msgstr ""
148
 
149
+ #: ../pz-linkcard-cacheman.php:282 ../pz-linkcard-edit.php:77
150
  msgid "Regist"
151
  msgstr "登録日時"
152
 
153
+ #: ../pz-linkcard-cacheman.php:283 ../pz-linkcard-edit.php:57
154
  msgid "Post ID"
155
  msgstr "記事ID"
156
 
157
+ #: ../pz-linkcard-cacheman.php:284 ../pz-linkcard-edit.php:53
158
  msgid "Result code"
159
+ msgstr "結果コード"
160
+
161
+ #: ../pz-linkcard-cacheman.php:314
162
+ msgid "edit"
163
+ msgstr "編集"
164
 
165
+ #: ../pz-linkcard-cacheman.php:315 ../pz-linkcard-cacheman.php:316
166
+ msgid "Are you sure?"
167
+ msgstr "実行します。"
168
+
169
+ #: ../pz-linkcard-cacheman.php:315
170
+ msgid "renew"
171
+ msgstr "再取得"
172
+
173
+ #: ../pz-linkcard-cacheman.php:316
174
+ msgid "delete"
175
+ msgstr "削除"
176
+
177
+ #: ../pz-linkcard-edit.php:25
178
+ msgid "Site name"
179
+ msgstr "サイト名称"
180
+
181
+ #: ../pz-linkcard-edit.php:42
182
+ msgid "->"
183
+ msgstr "→"
184
+
185
+ #: ../pz-linkcard-edit.php:45
186
+ msgid "Thumbnail URL"
187
+ msgstr "サムネイルURL"
188
+
189
+ #: ../pz-linkcard-edit.php:49
190
+ msgid "Favicon URL"
191
+ msgstr "ファビコンURL"
192
+
193
+ #: ../pz-linkcard-edit.php:61
194
+ msgid "SNS"
195
+ msgstr ""
196
+
197
+ #: ../pz-linkcard-edit.php:69
198
+ msgid "Uptime"
199
+ msgstr "更新日時"
200
+
201
+ #: ../pz-linkcard-edit.php:73
202
+ msgid "Next update"
203
+ msgstr "次回更新日時"
204
+
205
+ #: ../pz-linkcard-edit.php:82
206
+ msgid "Update"
207
+ msgstr "更新"
208
+
209
+ #: ../pz-linkcard-edit.php:82
210
+ msgid "Cancel"
211
+ msgstr "キャンセル"
212
+
213
+ #: ../pz-linkcard-settings.php:4 ../pz-linkcard.php:911
214
  msgid "LinkCard Settings"
215
  msgstr "リンクカード設定"
216
 
231
  msgstr "基本設定"
232
 
233
  #: ../pz-linkcard-settings.php:74
234
+ msgid "ShortCode1"
235
+ msgstr "ショートコード 1"
236
 
237
+ #: ../pz-linkcard-settings.php:76 ../pz-linkcard-settings.php:94
238
+ #: ../pz-linkcard-settings.php:99 ../pz-linkcard-settings.php:104
239
+ msgid "Case-sensitive"
240
+ msgstr "大文字と小文字を区別します"
241
 
242
  #: ../pz-linkcard-settings.php:79
 
 
 
 
 
 
 
 
 
 
 
 
243
  msgid "Use inlinetext"
244
  msgstr "ショートコードで囲んだ文字列"
245
 
246
+ #: ../pz-linkcard-settings.php:83
 
 
 
 
247
  msgid "No use"
248
  msgstr "使用しない"
249
 
250
+ #: ../pz-linkcard-settings.php:84
251
  msgid "Use to excerpt"
252
  msgstr "抜粋文として使用"
253
 
254
+ #: ../pz-linkcard-settings.php:85
255
  msgid "Use to title"
256
  msgstr "タイトルとして使用"
257
 
258
+ #: ../pz-linkcard-settings.php:88
259
+ msgid "This setting applies only to the Shortcode1"
260
+ msgstr "ショートコード1にのみ適用されます"
261
+
262
+ #: ../pz-linkcard-settings.php:92
263
+ msgid "ShortCode 2"
264
+ msgstr "ショートコード 2"
265
+
266
+ #: ../pz-linkcard-settings.php:97
267
+ msgid "ShortCode 3"
268
+ msgstr "ショートコード 3"
269
+
270
  #: ../pz-linkcard-settings.php:102
271
+ msgid "ShortCode 4"
272
+ msgstr "ショートコード 4"
273
 
274
+ #: ../pz-linkcard-settings.php:108
275
  msgid "Special Format"
276
  msgstr "定型書式"
277
 
278
+ #: ../pz-linkcard-settings.php:111 ../pz-linkcard-settings.php:219
279
+ #: ../pz-linkcard-settings.php:249 ../pz-linkcard-settings.php:270
280
+ #: ../pz-linkcard-settings.php:306 ../pz-linkcard-settings.php:425
281
+ #: ../pz-linkcard-settings.php:435 ../pz-linkcard-settings.php:449
282
+ #: ../pz-linkcard-settings.php:472 ../pz-linkcard-settings.php:482
283
+ #: ../pz-linkcard-settings.php:496
284
  msgid "None"
285
  msgstr "なし"
286
 
287
+ #: ../pz-linkcard-settings.php:112
288
+ msgid "Pz-LkC Default"
289
+ msgstr "Pz リンクカード 標準書式"
290
+
291
+ #: ../pz-linkcard-settings.php:113
292
  msgid "Cellophane tape \"center\""
293
  msgstr "セロハンテープ(中央)"
294
 
295
+ #: ../pz-linkcard-settings.php:114
296
  msgid "Cellophane tape \"Top corner\""
297
  msgstr "セロハンテープ(左上と右上)"
298
 
299
+ #: ../pz-linkcard-settings.php:115
300
  msgid "Cellophane tape \"long\""
301
  msgstr "セロハンテープ(長め)"
302
 
303
+ #: ../pz-linkcard-settings.php:116
304
  msgid "Slanting"
305
  msgstr "斜め"
306
 
307
+ #: ../pz-linkcard-settings.php:117
308
  msgid "3D Rotate"
309
  msgstr "3D回転"
310
 
311
+ #: ../pz-linkcard-settings.php:118
312
  msgid "Curling paper"
313
+ msgstr "紙がめくれた効果(テーマとの相性があります)"
314
 
315
+ #: ../pz-linkcard-settings.php:119
316
+ msgid "Taping and curling"
317
+ msgstr "テープと紙めくれ(テーマとの相性があります)"
318
+
319
+ #: ../pz-linkcard-settings.php:120
320
  msgid "Neutral"
321
+ msgstr "ブルーグリーン(黒背景推奨)"
322
 
323
+ #: ../pz-linkcard-settings.php:121
324
  msgid "Orange"
325
+ msgstr "オレンジ(黒背景推奨)"
326
 
327
+ #: ../pz-linkcard-settings.php:122
328
  msgid "Green"
329
+ msgstr "グリーン(黒背景推奨)"
330
 
331
+ #: ../pz-linkcard-settings.php:123
332
  msgid "Blue"
333
+ msgstr "ブルー(黒背景推奨)"
 
 
 
 
334
 
335
+ #: ../pz-linkcard-settings.php:125
336
  msgid "Will some of the parameters are forcibly changed"
337
  msgstr "選択した定型書式によって、一部の設定が無効になります。"
338
 
339
+ #: ../pz-linkcard-settings.php:131
340
  msgid "Style"
341
  msgstr "表示設定"
342
 
343
+ #: ../pz-linkcard-settings.php:134
344
  msgid "Position"
345
  msgstr "配置設定"
346
 
347
+ #: ../pz-linkcard-settings.php:141
348
  msgid "Margin top"
349
  msgstr "上の余白"
350
 
351
+ #: ../pz-linkcard-settings.php:143 ../pz-linkcard-settings.php:158
352
+ #: ../pz-linkcard-settings.php:175 ../pz-linkcard-settings.php:192
353
  msgid "Not defined"
354
  msgstr "設定しない"
355
 
356
+ #: ../pz-linkcard-settings.php:144 ../pz-linkcard-settings.php:159
357
+ #: ../pz-linkcard-settings.php:176 ../pz-linkcard-settings.php:193
358
  msgid "0"
359
  msgstr ""
360
 
361
+ #: ../pz-linkcard-settings.php:145 ../pz-linkcard-settings.php:160
362
+ #: ../pz-linkcard-settings.php:177 ../pz-linkcard-settings.php:194
363
+ #: ../pz-linkcard-settings.php:394 ../pz-linkcard-settings.php:395
364
  msgid "4px"
365
  msgstr ""
366
 
367
+ #: ../pz-linkcard-settings.php:146 ../pz-linkcard-settings.php:161
368
+ #: ../pz-linkcard-settings.php:178 ../pz-linkcard-settings.php:195
369
  msgid "8px"
370
  msgstr ""
371
 
372
+ #: ../pz-linkcard-settings.php:147 ../pz-linkcard-settings.php:162
373
+ #: ../pz-linkcard-settings.php:179 ../pz-linkcard-settings.php:196
374
+ #: ../pz-linkcard-settings.php:328
375
  msgid "16px"
376
  msgstr ""
377
 
378
+ #: ../pz-linkcard-settings.php:148 ../pz-linkcard-settings.php:163
379
+ #: ../pz-linkcard-settings.php:180 ../pz-linkcard-settings.php:197
380
  msgid "32px"
381
  msgstr ""
382
 
383
+ #: ../pz-linkcard-settings.php:149 ../pz-linkcard-settings.php:164
384
+ #: ../pz-linkcard-settings.php:181 ../pz-linkcard-settings.php:198
385
  msgid "64px"
386
  msgstr ""
387
 
388
+ #: ../pz-linkcard-settings.php:156
389
  msgid "Margin left"
390
  msgstr "左の余白"
391
 
392
+ #: ../pz-linkcard-settings.php:168
393
  msgid "Width"
394
  msgstr "カードの横幅"
395
 
396
+ #: ../pz-linkcard-settings.php:169
397
  msgid "Height"
398
  msgstr "カードの高さ"
399
 
400
+ #: ../pz-linkcard-settings.php:170
401
  msgid "Trim"
402
  msgstr "文字数"
403
 
404
+ #: ../pz-linkcard-settings.php:173
405
  msgid "Margin right"
406
  msgstr "右の余白"
407
 
408
+ #: ../pz-linkcard-settings.php:187
409
  msgid "Centering"
410
  msgstr "中央に寄せる"
411
 
412
+ #: ../pz-linkcard-settings.php:190
413
  msgid "Margin bottom"
414
  msgstr "下の余白"
415
 
416
+ #: ../pz-linkcard-settings.php:209
417
  msgid "Link the whole"
418
  msgstr "カード全体をリンク"
419
 
420
+ #: ../pz-linkcard-settings.php:211
421
  msgid "Enclose the entire card at anchor"
422
  msgstr ""
423
  "カード全体をAタグで囲って、どこをクリックしてもリンク先を開くようにします。"
424
 
425
+ #: ../pz-linkcard-settings.php:216
426
  msgid "Border"
427
  msgstr "枠線の太さ"
428
 
429
+ #: ../pz-linkcard-settings.php:220
430
  msgid "Gray thin"
431
  msgstr "薄い色/細い(1px)"
432
 
433
+ #: ../pz-linkcard-settings.php:221
434
  msgid "Gray"
435
  msgstr "薄い色/普通(2px)"
436
 
437
+ #: ../pz-linkcard-settings.php:222
438
  msgid "Gray thick"
439
  msgstr "薄い色/太い(4px)"
440
 
441
+ #: ../pz-linkcard-settings.php:223
442
  msgid "Black thin"
443
  msgstr "黒/細い(1px)"
444
 
445
+ #: ../pz-linkcard-settings.php:224
446
  msgid "Black"
447
  msgstr "黒/普通(2px)"
448
 
449
+ #: ../pz-linkcard-settings.php:225
450
  msgid "Black thick"
451
  msgstr "黒/太い(4px)"
452
 
453
+ #: ../pz-linkcard-settings.php:226
454
  msgid "Black frame"
455
  msgstr "黒/額縁(8px)"
456
 
457
+ #: ../pz-linkcard-settings.php:227
458
  msgid "Dodgerblue"
459
  msgstr "ドジャー・ブルー(明るい青)"
460
 
461
+ #: ../pz-linkcard-settings.php:228
462
  msgid "Mediumaquamarine"
463
  msgstr "ミディアム・アクアマリーン(明るい緑)"
464
 
465
+ #: ../pz-linkcard-settings.php:229
466
  msgid "Hotpink"
467
  msgstr "ホット・ピンク(明るい赤)"
468
 
469
+ #: ../pz-linkcard-settings.php:230
470
  msgid "Double"
471
  msgstr "二重線"
472
 
473
+ #: ../pz-linkcard-settings.php:231
474
  msgid "Dotted"
475
  msgstr "点線"
476
 
477
+ #: ../pz-linkcard-settings.php:237
478
  msgid "Layout"
479
  msgstr "外観設定"
480
 
481
+ #: ../pz-linkcard-settings.php:238
482
  msgid "Radius"
483
  msgstr "角を丸める"
484
 
485
+ #: ../pz-linkcard-settings.php:247 ../pz-linkcard-settings.php:442
486
+ #: ../pz-linkcard-settings.php:489 ../pz-linkcard-settings.php:524
487
+ msgid "Site information"
488
+ msgstr "サイト情報"
489
+
490
+ #: ../pz-linkcard-settings.php:250
491
+ msgid "Top"
492
+ msgstr "上側"
493
+
494
+ #: ../pz-linkcard-settings.php:251
495
+ msgid "Bottom"
496
+ msgstr "下側"
497
+
498
+ #: ../pz-linkcard-settings.php:253
499
+ msgid "Use SiteName"
500
+ msgstr "サイト名称を使用"
501
+
502
+ #: ../pz-linkcard-settings.php:258
503
+ msgid "Separator line"
504
+ msgstr "区切り線"
505
+
506
+ #: ../pz-linkcard-settings.php:265
507
  msgid "Display URL"
508
  msgstr "リンク先のURLを表示する"
509
 
510
+ #: ../pz-linkcard-settings.php:268 ../pz-linkcard-settings.php:422
511
+ #: ../pz-linkcard-settings.php:469 ../pz-linkcard-settings.php:516
512
  msgid "Thumbnail"
513
  msgstr "サムネイル"
514
 
515
+ #: ../pz-linkcard-settings.php:271
516
  msgid "Right"
517
  msgstr "右側"
518
 
519
+ #: ../pz-linkcard-settings.php:272
520
  msgid "Left"
521
  msgstr "左側"
522
 
523
+ #: ../pz-linkcard-settings.php:274 ../pz-linkcard-settings.php:299
524
  msgid "Shadow"
525
  msgstr "影を付ける"
526
 
527
+ #: ../pz-linkcard-settings.php:279
528
  msgid "Hollow content area"
529
  msgstr "記事の情報に枠を付ける"
530
 
531
+ #: ../pz-linkcard-settings.php:284
532
  msgid "Display excerpt"
533
  msgstr "抜粋文を表示する"
534
 
535
+ #: ../pz-linkcard-settings.php:289
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
536
  msgid "Hollow"
537
  msgstr "内側に影を付ける"
538
 
539
+ #: ../pz-linkcard-settings.php:303
540
  msgid "Display SNS Count"
541
  msgstr "シェア数を表示する"
542
 
543
+ #: ../pz-linkcard-settings.php:307
544
  msgid "After Title"
545
  msgstr "タイトルの後ろ"
546
 
547
+ #: ../pz-linkcard-settings.php:308
548
  msgid "After site-name"
549
  msgstr "サイト情報の後ろ"
550
 
551
+ #: ../pz-linkcard-settings.php:310
552
+ msgid "Twitter"
553
+ msgstr "ツイッター"
554
 
555
+ #: ../pz-linkcard-settings.php:311
556
  msgid "Facebook"
557
  msgstr "フェイスブック(シェア数)"
558
 
559
+ #: ../pz-linkcard-settings.php:312
560
+ msgid "Hatena"
561
+ msgstr "はてなブックマーク"
562
 
563
+ #: ../pz-linkcard-settings.php:313
564
  msgid ""
565
  "There is a possibility that the screen display is slow If you enable this "
566
  "setting."
567
  msgstr "有効にする取得APIによっては表示が遅くなる場合があります。"
568
 
569
+ #: ../pz-linkcard-settings.php:319
570
  msgid "Letters"
571
  msgstr "文字設定"
572
 
573
+ #: ../pz-linkcard-settings.php:327 ../pz-linkcard-settings.php:346
574
+ #: ../pz-linkcard-settings.php:362 ../pz-linkcard-settings.php:379
575
  msgid "14px"
576
  msgstr ""
577
 
578
+ #: ../pz-linkcard-settings.php:329
579
  msgid "18px"
580
  msgstr ""
581
 
582
+ #: ../pz-linkcard-settings.php:330
583
  msgid "20px"
584
  msgstr ""
585
 
586
+ #: ../pz-linkcard-settings.php:331
587
  msgid "24px"
588
  msgstr ""
589
 
590
+ #: ../pz-linkcard-settings.php:332 ../pz-linkcard-settings.php:384
591
  msgid "100%"
592
  msgstr ""
593
 
594
+ #: ../pz-linkcard-settings.php:333
595
  msgid "120%"
596
  msgstr ""
597
 
598
+ #: ../pz-linkcard-settings.php:334
599
  msgid "140%"
600
  msgstr ""
601
 
602
+ #: ../pz-linkcard-settings.php:344 ../pz-linkcard-settings.php:359
603
+ #: ../pz-linkcard-settings.php:375 ../pz-linkcard-settings.php:396
604
  msgid "9px"
605
  msgstr ""
606
 
607
+ #: ../pz-linkcard-settings.php:345 ../pz-linkcard-settings.php:361
608
+ #: ../pz-linkcard-settings.php:377
609
  msgid "12px"
610
  msgstr ""
611
 
612
+ #: ../pz-linkcard-settings.php:347 ../pz-linkcard-settings.php:363
613
+ #: ../pz-linkcard-settings.php:381
614
  msgid "70%"
615
  msgstr ""
616
 
617
+ #: ../pz-linkcard-settings.php:348 ../pz-linkcard-settings.php:364
618
+ #: ../pz-linkcard-settings.php:382
619
  msgid "80%"
620
  msgstr ""
621
 
622
+ #: ../pz-linkcard-settings.php:349 ../pz-linkcard-settings.php:365
623
+ #: ../pz-linkcard-settings.php:383
624
  msgid "90%"
625
  msgstr ""
626
 
627
+ #: ../pz-linkcard-settings.php:360 ../pz-linkcard-settings.php:376
 
 
 
 
628
  msgid "11px"
629
  msgstr ""
630
 
631
+ #: ../pz-linkcard-settings.php:370
632
  msgid "Site-info."
633
  msgstr "サイト情報"
634
 
635
+ #: ../pz-linkcard-settings.php:378
636
  msgid "13px"
637
  msgstr ""
638
 
639
+ #: ../pz-linkcard-settings.php:380 ../pz-linkcard-settings.php:397
640
  msgid "60%"
641
  msgstr ""
642
 
643
+ #: ../pz-linkcard-settings.php:389
644
  msgid "Plugin link"
645
  msgstr "プラグインのページ"
646
 
647
+ #: ../pz-linkcard-settings.php:402
648
  msgid "Plugin-link"
649
  msgstr "プラグイン名"
650
 
651
+ #: ../pz-linkcard-settings.php:410
652
  msgid "External link"
653
  msgstr "外部リンク"
654
 
655
+ #: ../pz-linkcard-settings.php:414 ../pz-linkcard-settings.php:461
656
+ #: ../pz-linkcard-settings.php:508
657
  msgid "Background Color"
658
  msgstr "背景色"
659
 
660
+ #: ../pz-linkcard-settings.php:418
661
  msgid "Background image"
662
  msgstr "背景画像"
663
 
664
+ #: ../pz-linkcard-settings.php:426 ../pz-linkcard-settings.php:436
665
+ #: ../pz-linkcard-settings.php:473 ../pz-linkcard-settings.php:483
666
  msgid "Direct"
667
  msgstr "直接取得する"
668
 
669
+ #: ../pz-linkcard-settings.php:427 ../pz-linkcard-settings.php:437
670
+ #: ../pz-linkcard-settings.php:474 ../pz-linkcard-settings.php:484
671
  msgid "Use WebAPI"
672
  msgstr "WebAPIを利用する"
673
 
674
+ #: ../pz-linkcard-settings.php:432 ../pz-linkcard-settings.php:479
675
+ #: ../pz-linkcard-settings.php:520
676
  msgid "Favicon"
677
  msgstr "サイトアイコン"
678
 
679
+ #: ../pz-linkcard-settings.php:446 ../pz-linkcard-settings.php:493
680
+ #: ../pz-linkcard-settings.php:528
681
+ msgid "Open new window/tab"
682
+ msgstr "新しいウィンドウで開く"
683
+
684
+ #: ../pz-linkcard-settings.php:450 ../pz-linkcard-settings.php:497
685
+ msgid "All client"
686
+ msgstr "すべての端末"
687
+
688
+ #: ../pz-linkcard-settings.php:451 ../pz-linkcard-settings.php:498
689
+ msgid "Other than mobile"
690
+ msgstr "モバイル端末以外"
691
+
692
+ #: ../pz-linkcard-settings.php:458
693
  msgid "Internal link"
694
  msgstr "内部リンク"
695
 
696
+ #: ../pz-linkcard-settings.php:465 ../pz-linkcard-settings.php:512
697
  msgid "Background Image"
698
  msgstr "背景画像"
699
 
700
+ #: ../pz-linkcard-settings.php:505
701
+ msgid "Same-page link"
702
  msgstr "同ページへのリンク"
703
 
704
+ #: ../pz-linkcard-settings.php:517 ../pz-linkcard-settings.php:521
705
+ #: ../pz-linkcard-settings.php:529
706
+ msgid "It is common with setting Internal-link"
707
+ msgstr "内部リンク用の設定が使用されます"
708
+
709
+ #: ../pz-linkcard-settings.php:534
710
  msgid "Web-API"
711
  msgstr "画像取得APIの指定"
712
 
713
+ #: ../pz-linkcard-settings.php:537
714
  msgid "Favicon API"
715
  msgstr "ファビコンの取得API"
716
 
717
+ #: ../pz-linkcard-settings.php:539
718
  msgid ""
719
  "%DOMAIN% replace to domain name (ex. poporon.poponet.jp )<br />%DOMAIN_URL% "
720
  "replace to domain URL (ex. http://poporon.poponet.jp )"
723
  "%DOMAIN_URL% と記述するとドメインのURL(例.http://poporon.poponet.jp)に置き"
724
  "換わります。"
725
 
726
+ #: ../pz-linkcard-settings.php:542
727
  msgid "Thumbnail API"
728
  msgstr "サムネイル画像の取得API"
729
 
730
+ #: ../pz-linkcard-settings.php:544
731
  msgid "%URL% replace to URL"
732
  msgstr "%URL% と記述するとURLに置き換わります"
733
 
734
+ #: ../pz-linkcard-settings.php:549
735
  msgid "Debug"
736
  msgstr "詳しい人用(Debug)"
737
 
738
+ #: ../pz-linkcard-settings.php:552
739
  msgid "Use blockquote tag"
740
  msgstr "BLOCKQUOTEをタグを使用する"
741
 
742
+ #: ../pz-linkcard-settings.php:554
743
  msgid "without using DIV tag, and use BLOCKQUOTE tag"
744
  msgstr "&lt;BLOCKQUOTE&gt;で囲んで引用扱いにします"
745
 
746
+ #: ../pz-linkcard-settings.php:557
747
  msgid "Set nofollow"
748
  msgstr "nofollowを付与する"
749
 
750
+ #: ../pz-linkcard-settings.php:559
751
  msgid "In the case of an external site, it puts the \"nofollow\""
752
  msgstr "外部リンクのリンクを nofollow にする"
753
 
754
+ #: ../pz-linkcard-settings.php:563
755
  msgid "Reset img style"
756
  msgstr "CSSリセット(img)"
757
 
758
+ #: ../pz-linkcard-settings.php:565
759
  msgid ""
760
  "When unnecessary frame is displayed on the image, you can improve it by case"
761
  msgstr "画像がずれて表示されるときに改善される可能性が有ります(推奨)"
762
 
763
+ #: ../pz-linkcard-settings.php:569
764
  msgid "specified CSS"
765
  msgstr "指定したCSSを使用"
766
 
767
+ #: ../pz-linkcard-settings.php:571
768
  msgid "Use specified CSS file"
769
  msgstr "指定したCSSファイルを使用する"
770
 
771
+ #: ../pz-linkcard-settings.php:574 ../pz-linkcard-settings.php:579
772
  msgid "CSS file"
773
  msgstr "CSSファイル名"
774
 
775
+ #: ../pz-linkcard-settings.php:576
776
  msgid "(ex. http://exsample.com/style.css )"
777
  msgstr "例.http://exsample.com/style.css"
778
 
779
+ #: ../pz-linkcard-settings.php:583
780
  msgid "CSS URL"
781
  msgstr "CSSファイルのURL"
782
 
783
+ #: ../pz-linkcard-settings.php:588
784
  msgid "Use HatenaBlogCard"
785
  msgstr "はてなブログカードを利用する"
786
 
787
+ #: ../pz-linkcard-settings.php:590
788
  msgid "External links will use Always HatenaBlogCard (Not recommended)"
789
  msgstr "外部リンクは「はてなブログカード」を利用する(非推奨)"
790
 
791
+ #: ../pz-linkcard-settings.php:594
792
  msgid "Display link to author page"
793
  msgstr "プラグイン名を表示する"
794
 
795
+ #: ../pz-linkcard-settings.php:599
796
  msgid "Plugin URL"
797
  msgstr "プラグインページURL"
798
 
799
+ #: ../pz-linkcard-settings.php:603
800
  msgid "Plugin name"
801
  msgstr "プラグイン名"
802
 
803
+ #: ../pz-linkcard-settings.php:607
804
  msgid "Plugin version"
805
  msgstr "プラグインバージョン"
806
 
807
+ #: ../pz-linkcard-settings.php:611
808
  msgid "Saved datetime"
809
  msgstr "保存した日時"
810
 
811
+ #: ../pz-linkcard-settings.php:616
812
  msgid "Display elapsed time"
813
  msgstr "実行時間の表示"
814
 
815
+ #: ../pz-linkcard-settings.php:618
816
  msgid "Output the elapsed time to HTML comment."
817
  msgstr "作成にかかった時間をコメントとしてHTMLへ出力する"
818
 
819
+ #: ../pz-linkcard-settings.php:624
820
  msgid "Initialize"
821
  msgstr "初期化"
822
 
823
+ #: ../pz-linkcard-settings.php:627
824
  msgid "Return to the initial setting"
825
  msgstr "設定を初期状態へ戻す"
826
 
827
+ #: ../pz-linkcard-style.php:338
828
  msgid "Style sheet saved."
829
  msgstr "設定を元にスタイルシートを自動生成しました。"
830
 
831
+ #: ../pz-linkcard-style.php:340
832
  msgid "Style sheet failed."
833
  msgstr "スタイルシートの自動生成に失敗しました。"
834
 
835
+ #: ../pz-linkcard.php:909
836
  msgid "Pz LkC Cache"
837
  msgstr "Pz カード管理"
838
 
839
+ #: ../pz-linkcard.php:911
840
  msgid "Pz LinkCard"
841
  msgstr "Pz カード設定"
842
 
843
+ #: ../pz-linkcard.php:972
844
  msgid "Settings"
845
  msgstr "設定"
846
 
847
+ #: ../pz-linkcard.php:972
848
+ msgid "Manage"
849
+ msgstr "管理"
850
+
851
+ #, fuzzy
852
+ #~ msgid "New window/tab"
853
+ #~ msgstr "新しいウィンドウで開く"
854
+
855
+ #~ msgid "Instructed to get the number again"
856
+ #~ msgstr "ソーシャルカウントの再取得を指示しました"
857
+
858
+ #~ msgid "Site icon"
859
+ #~ msgstr "サイトアイコン"
860
+
861
+ #~ msgid "Sorry. This feature is not implemented yet..."
862
+ #~ msgstr "もうしわけありません。この機能は未実装です。"
863
+
864
+ #~ msgid "distinguish between uppercase and lowercase letters"
865
+ #~ msgstr "大文字と小文字は区別されます"
866
+
867
+ #~ msgid "This page"
868
+ #~ msgstr "同ページへのリンク"
869
+
870
  #~ msgid "Refresh"
871
  #~ msgstr "再取得"
872
 
903
  #~ msgid "gray"
904
  #~ msgstr "薄い色/普通(2px)"
905
 
 
 
 
906
  #~ msgid "Display information"
907
  #~ msgstr "サイト情報を表示する"
908
 
961
  #~ msgid "Display thumbnail"
962
  #~ msgstr "サムネイル画像"
963
 
 
 
 
964
  #~ msgid "Number of seconds to keep cache"
965
  #~ msgstr "取得したタイトルと概要を保管しておく秒数"
966
 
967
  #~ msgid "(Unimplemented)"
968
  #~ msgstr "(未実装)※設定は反映されません。"
969
 
 
 
 
970
  #~ msgid "After the invalidation of the plug-in , please activate again"
971
  #~ msgstr "→プラグインの無効化を行った後、再度有効化してください"
972
 
pz-linkcard-cacheman.php CHANGED
@@ -1,79 +1,122 @@
1
  <?php
2
  if (!function_exists('get_option')) die;
3
  if (!is_user_logged_in()) die;
4
-
5
- $action = isset($_GET['action']) ? $_GET['action'] : null;
6
- $sort_key = isset($_GET['sort_key']) ? $_GET['sort_key'] : null;
7
- $order = isset($_GET['order']) ? $_GET['order'] : null;
8
- $link_type = isset($_GET['link_type']) ? $_GET['link_type'] : null;
9
- $cache_id = isset($_GET['cache_id']) ? $_GET['cache_id'] : null;
10
- $confirm = isset($_GET['confirm']) ? $_GET['confirm'] : null;
11
- $result_code = isset($_GET['result_code']) ? $_GET['result_code'] : null;
12
- $paged = isset($_GET['paged']) ? $_GET['paged'] : null;
13
-
14
- $bulk_id = isset($_REQUEST['id']) ? $_REQUEST['id'] : null;
15
-
16
- // echo 'action='.$action.'<br />';
17
- // echo 'sort_key='.$sort_key.'<br />';
18
- // echo 'order='.$order.'<br />';
19
- // echo 'link_type='.$link_type.'<br />';
20
- // echo 'bulk_id=<pre>';
21
- // print_r($bulk_id);
22
- // echo '</pre><br />';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
 
24
  global $wpdb;
25
 
26
- if ($action) {
27
- // check_admin_referer('pz_cacheman');
28
 
29
  switch ($action) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  case 'renew':
31
  if (isset($bulk_id) && is_array($bulk_id)) {
32
- foreach ($bulk_id as $value) {
33
- $wpdb->update(
34
- $this->db,
35
- array('nexttime' => 0),
36
- array('id' => $value),
37
- null,
38
- array('%d')
39
- );
40
  }
 
41
  }
42
  break;
43
-
44
  case 'delete':
45
  if (isset($bulk_id) && is_array($bulk_id)) {
46
- foreach ($bulk_id as $value) {
47
- $wpdb->delete(
48
- $this->db,
49
- array('id' => $value),
50
- array('%d')
51
- );
52
  }
 
53
  }
54
  break;
55
  }
56
  }
57
 
58
- switch ($link_type) {
59
- case 1:
60
- $where = 'link_type<>0';
61
- break;
62
- case 2:
63
- $where = 'link_type=0';
64
- break;
65
- default:
66
- $link_tyle = 0;
67
- $where = null;
68
- }
69
-
70
- switch ($sort_key) {
71
  case 'id':
72
  case 'url':
73
  case 'url_key':
74
  case 'link_type':
75
  case 'site_name':
76
  case 'domain':
 
77
  case 'title':
78
  case 'excerpt':
79
  case 'result_code':
@@ -85,201 +128,255 @@ case 'regist':
85
  case 'nexttime':
86
  break;
87
  default:
88
- $sort_key = 'uptime';
 
89
  }
90
 
91
- switch ($order) {
92
- case 'desc':
93
  $order = 'DESC';
 
 
 
 
 
 
 
 
 
 
 
94
  break;
95
  default:
96
- $order = 'DESC';
 
 
 
 
 
 
 
97
  }
98
 
99
- $sql = "SELECT * FROM $this->db";
100
- if (isset($where)) {
101
- $sql .= ' WHERE '.$where;
 
 
 
 
 
 
 
102
  }
103
- if (isset($sort_key)) {
104
- $sql .= ' ORDER BY '.$sort_key.' '.$order;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  }
 
106
 
107
- // テーブルデータ
108
- $data_all = $wpdb->get_results($sql);
 
 
 
 
109
 
110
  // SUB(CASE WHEN ... END) で一気に取れないぽい?
111
- $result = $wpdb->get_row("SELECT COUNT(*) AS count FROM $this->db");
112
  $count_all = $result->count;
113
- $result = $wpdb->get_row("SELECT COUNT(*) AS count FROM $this->db WHERE link_type<>0");
114
  $count_internal = $result->count;
115
- $result = $wpdb->get_row("SELECT COUNT(*) AS count FROM $this->db WHERE link_type=0");
116
  $count_external = $result->count;
117
- $count_now = count($data_all);
118
-
119
- $page_min = 1;
120
- $page_max = ceil($count_now / 5);
121
- $page_now = $paged;
122
- $page_now = 2;
123
- $page_prev = ($page_now > 1) ? $page_now - 1 : null;
124
- $page_next = ($page_now < $page_max) ? $page_now + 1 : null;
125
 
126
  ?>
127
- <div class="wrap">
128
-
129
- <h1><?php _e('LinkCard cache manager', $this->text_domain); ?></h1>
130
 
131
  <ul class='subsubsub'>
132
- <li class="all"><a href="tools.php?page=pz-linkcard-cache&sort_key=<?php echo $sortkey; ?>&link_type=0" <?php if ($link_type == 0) echo 'class="current"'; ?>><? _e('All', $this->text_domain); ?> <span class="count">(<?php echo $count_all; ?>)</span></a> |</li>
133
- <li class="all"><a href="tools.php?page=pz-linkcard-cache&sort_key=<?php echo $sortkey; ?>&link_type=1" <?php if ($link_type == 1) echo 'class="current"'; ?>><? _e('Internal', $this->text_domain); ?> <span class="count">(<?php echo $count_internal; ?>)</span></a> |</li>
134
- <li class="all"><a href="tools.php?page=pz-linkcard-cache&sort_key=<?php echo $sortkey; ?>&link_type=2" <?php if ($link_type == 2) echo 'class="current"'; ?>><? _e('External', $this->text_domain); ?> <span class="count">(<?php echo $count_external; ?>)</span></a></li>
135
  </ul>
136
 
137
- <?php /*
138
- <div class='tablenav-pages'>
139
- <span class="displaying-num"><?php echo $count_all.__('items'); ?></span>
140
- <span class='pagination-links'>
141
- <span class="tablenav-pages-navspan" aria-hidden="true">&laquo;</span>
142
- <span class="tablenav-pages-navspan" aria-hidden="true">&lsaquo;<?php echo $page_prev;?></span>
143
- <span class="paging-input"><label for="current-page-selector" class="screen-reader-text"></label><input class='current-page' id='current-page-selector' type='text' name='paged' value='<?php echo $page_now; ?>' size='2' aria-describedby='table-paging' /> / <span class='total-pages'><?php echo $page_max; ?></span></span>
144
- <span class="tablenav-pages-navspan" aria-hidden="true">&rsaquo;<?php echo $page_next;?></span>
145
- <span class="tablenav-pages-navspan" aria-hidden="true">&raquo;</span>
146
- </div>
147
- */ ?>
148
-
149
- <form id="posts-filter" action="" method="get">
150
- <?php /* wp_nonce_field('pz_cacheman'); */ ?>
151
  <input type="hidden" name="page" value="pz-linkcard-cache">
152
  <input type="hidden" name="paged" value="<?php echo $page_now; ?>">
153
 
154
- <div class="alignleft actions bulkactions">
155
- <label for='bulk-action-selector-top' class='screen-reader-text'><?php _e('Select batch', $this->text_domain); ?></label>
156
- <select name='action' id='bulk-action-selector-top'>
157
- <option value='-1' selected='selected'><?php _e('Select', $this->text_domain); ?></option>
158
- <option value='renew' class="hide-if-no-js"><?php _e('Renew SNS count', $this->text_domain); ?></option>
159
- <option value='delete'><?php _e('Delete', $this->text_domain); ?></option>
160
- </select>
161
- <input type="submit" id="doaction" class="button action" value="<?php _e('Submit', $this->text_domain); ?>" />
162
-
163
- <div id="settings" style="clear:both;">
164
-
165
- <table name="cachelist" class="wp-list-table widefat fixed striped posts">
166
- <thead>
167
- <tr>
168
-
169
- <td id='cb' class='manage-column column-cb check-column'>
170
- <label class="screen-reader-text" for="cb-select-all-1">'.__('Select all', $this->text_domain).'</label>
171
- <input id="cb-select-all-1" type="checkbox" />
172
- </td>
173
-
174
- <th>
175
- <a href="tools.php?page=pz-linkcard-cache&sort_key=url&link_type=<?php echo $link_type; ?>"><?php _e('URL', $this->text_domain); ?></a>
176
- </th>
177
- <th>
178
- <a href="tools.php?page=pz-linkcard-cache&sort_key=title&link_type=<?php echo $link_type; ?>"><?php _e('Title', $this->text_domain); ?></a>
179
- </th>
180
- <th>
181
- <a href="tools.php?page=pz-linkcard-cache&sort_key=site_name&link_type=<?php echo $link_type; ?>"><?php _e('Site name', $this->text_domain); ?></a>
182
- </th>
183
- <th style="word-break: keep-all; width: 50px;">
184
- <?php _e('Tw', $this->text_domain); ?>
185
- </th>
186
- <th style="word-break: keep-all; width: 50px;">
187
- <?php _e('f', $this->text_domain); ?>
188
- </th>
189
- <th style="word-break: keep-all; width: 50px;">
190
- <?php _e('B!', $this->text_domain); ?>
191
- </th>
192
- <th style="word-break: keep-all; width: 70px;">
193
- <a href="tools.php?page=pz-linkcard-cache&sort_key=regist&link_type=<?php echo $link_type; ?>"><?php _e('Regist', $this->text_domain); ?></a>
194
- </th>
195
- <th style="word-break: keep-all; width: 60px;">
196
- <a href="tools.php?page=pz-linkcard-cache&sort_key=post_id&link_type=<?php echo $link_type; ?>"><?php _e('Post ID', $this->text_domain); ?></a>
197
- </th>
198
- <th style="word-break: keep-all; width: 45px;">
199
- <a href="tools.php?page=pz-linkcard-cache&sort_key=result_code&link_type=<?php echo $link_type; ?>"><?php _e('Result code', $this->text_domain); ?></a>
200
- </th>
201
- </tr>
202
- </thead>
203
- <tbody>
204
  <?php
205
- foreach ($data_all as $data) {
206
- echo '<tr>';
207
-
208
- echo ' <th scope="row" class="check-column">';
209
- echo ' <label class="screen-reader-text" for="cb-select-'.$data->id.'">'.__('Select', $this->text_domain).'</label>';
210
- echo ' <input id="cb-select-'.$data->id.'" type="checkbox" name="id[]" value="'.$data->id.'" />';
211
- echo ' <div class="locked-indicator"></div>';
212
- echo ' </th>';
213
-
214
-
215
- // echo ' <td align="center"><a href="tools.php?page=pz-linkcard-cache&action=delete&cache_id='.$data->id.'&confirm='.$data->uptime.'">'.__('Delete', $text_domain).'</a></td>';
216
- // echo ' <td align="center"><a href="tools.php?page=pz-linkcard-cache&action=delete&cache_id='.$data->id.'&confirm='.$data->uptime.'">'.__('Delete', $text_domain).'</a></td>';
217
-
218
- echo ' <td style="word-break: break-all;">'.esc_url($data->url).'</td>';
219
- echo ' <td>'.htmlentities($data->title).'</td>';
220
- echo ' <td><span title="'.$data->domain.'">'.$data->site_name.'</span></td>';
221
- // echo ' <td><img src="'.$data->thumbnail.'" style="max-height: 100px; max-width: 100px;"></td>';
222
- // echo ' <td style="word-break: break-all;">'.$data->thumbnail.'</td>';
223
- // echo ' <td></td>';
224
- // echo ' <td><img src="'.$data->favicon.'" style="max-height: 100px; max-width: 100px;"></td>';
225
- // echo ' <td style="word-break: break-all;">'.$data->favicon.'</td>';
226
- // echo ' <td></td>';
227
- $sns_count = $data->sns_twitter;
228
- echo ' <td>'.(($sns_count >= 0) ? $sns_count : '-').'</td>';
229
- $sns_count = $data->sns_facebook;
230
- echo ' <td>'.(($sns_count >= 0) ? $sns_count : '-').'</td>';
231
- $sns_count = $data->sns_hatena;
232
- echo ' <td>'.(($sns_count >= 0) ? $sns_count : '-').'</td>';
233
- echo ' <td>'.$data->regist.'</td>';
234
- echo ' <td><a href="'.get_permalink($data->post_id).'" target="_blank" title="'.get_the_title($data->post_id).'">'.$data->post_id.'</td>';
235
- echo ' <td>'.$data->result_code.'</td>';
236
- echo '</tr>';
237
  }
 
 
238
  ?>
239
- </tbody>
240
- </table>
241
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
242
  </div>
243
- </div>
244
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
245
  <?php
246
- function paging($pages = '', $range = 2) {
247
- $showitems = ($range * 2)+1;
 
 
 
 
 
 
 
 
248
 
249
- global $paged;
250
- if(empty($paged)) {
251
- $paged = 1;
252
- }
253
- if($pages == '') {
254
- global $wp_query;
255
- $pages = $wp_query->max_num_pages;
256
- if (!$pages) {
257
- $pages = 1;
258
- }
 
259
  }
 
 
 
 
 
 
 
260
 
261
- if(1 != $pages) {
262
- echo "<div class='pagination'>";
263
- if($paged > 2 && $paged > $range+1 && $showitems < $pages) {
264
- echo "<a href='".get_pagenum_link(1)."'>&laquo;</a>";
265
- }
266
- if($paged > 1 && $showitems < $pages) {
267
- echo "<a href='".get_pagenum_link($paged - 1)."'>&lsaquo;</a>";
268
- }
269
 
270
- for ($i=1; $i <= $pages; $i++) {
271
- if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )) {
272
- echo ($paged == $i)? "<span class='current'>".$i."</span>":"<a href='".get_pagenum_link($i)."' class='inactive' >".$i."</a>";
273
- }
274
- }
 
 
 
 
 
 
 
 
275
 
276
- if ($paged < $pages && $showitems < $pages) {
277
- echo "<a href='".get_pagenum_link($paged + 1)."'>&rsaquo;</a>";
278
- }
279
- if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) {
280
- echo "<a href='".get_pagenum_link($pages)."'>&raquo;</a>";
281
- }
282
- echo "</div>\n";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
283
  }
284
  }
285
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
2
  if (!function_exists('get_option')) die;
3
  if (!is_user_logged_in()) die;
4
+
5
+ echo '<div class="wrap">';
6
+ echo '<h1>'.__('LinkCard cache manager', $this->text_domain).'</h1>';
7
+
8
+ // echo '<pre>';
9
+ // print_r($_REQUEST);
10
+ // echo '</pre>';
11
+
12
+ $update = isset($_REQUEST['update'] ) ? $_REQUEST['update'] : null;
13
+ $cancel = isset($_REQUEST['cancel'] ) ? $_REQUEST['cancel'] : null;
14
+ $data = null;
15
+ if ($update || $cancel) {
16
+ if ($update) {
17
+ $action = 'update';
18
+ if (isset($_REQUEST['data']) && is_array($_REQUEST['data'])) {
19
+ $data = $_REQUEST['data'];
20
+ }
21
+ } else {
22
+ $action = null;
23
+ }
24
+ // $refine = null;
25
+ $bulk_id = null;
26
+ } else {
27
+ $action = isset($_REQUEST['action'] ) ? $_REQUEST['action'] : null;
28
+ // $refine = isset($_REQUEST['refine'] ) ? $_REQUEST['refine'] : null;
29
+ $bulk_id = isset($_REQUEST['id'] ) ? $_REQUEST['id'] : null;
30
+ }
31
+ $refine = isset($_REQUEST['refine'] ) ? $_REQUEST['refine'] : null;
32
+ $orderby = isset($_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : null;
33
+ $order = isset($_REQUEST['order'] ) ? $_REQUEST['order'] : null;
34
+ $orderby_now = isset($_REQUEST['orderby_now'] ) ? $_REQUEST['orderby_now'] : null;
35
+ $order_now = isset($_REQUEST['order_now'] ) ? $_REQUEST['order_now'] : null;
36
+ $link_type = isset($_REQUEST['link_type'] ) ? $_REQUEST['link_type'] : null;
37
+ $cache_id = isset($_REQUEST['cache_id'] ) ? $_REQUEST['cache_id'] : null;
38
+ $confirm = isset($_REQUEST['confirm'] ) ? $_REQUEST['confirm'] : null;
39
+ $result_code = isset($_REQUEST['result_code'] ) ? $_REQUEST['result_code'] : null;
40
+ $paged = (isset($_REQUEST['paged'] ) ? $_REQUEST['paged'] : 1) - 0;
41
+
42
 
43
  global $wpdb;
44
 
45
+ if (isset($action)) {
46
+ check_admin_referer('pz_cacheman');
47
 
48
  switch ($action) {
49
+ case 'edit':
50
+ if (isset($bulk_id) && is_array($bulk_id)) {
51
+ $data = $this->pz_GetCache(array('id' => $bulk_id[0]));
52
+ if (isset($data) && is_array($data)) {
53
+ require_once ('pz-linkcard-edit.php');
54
+ }
55
+ }
56
+ break;
57
+ case 'update':
58
+ if (isset($data) && is_array($data) && isset($data['id'])) {
59
+ $data['title'] = stripslashes($data['title']);
60
+ $data['excerpt'] = stripslashes($data['excerpt']);
61
+ $data['site_name'] = stripslashes($data['site_name']);
62
+ $data = $this->pz_SetCache($data);
63
+ if (isset($data) && is_array($data) && isset($data['id'])) {
64
+ echo '<div class="updated fade"><p><strong>'.__('Updated cache', $this->text_domain).'</strong></p></div>';
65
+ } else {
66
+ echo '<div class="error fade"><p><strong>'.__('Update failed', $this->text_domain).'</strong></p></div>';
67
+ }
68
+ } else {
69
+ echo '<div class="error fade"><p><strong>'.__('Update failed', $this->text_domain).'</strong></p></div>';
70
+ }
71
+ break;
72
+ case 'renew_sns':
73
+ if (isset($bulk_id) && is_array($bulk_id)) {
74
+ echo '<div class="updated fade"><p><strong>'.__('Social count renew', $this->text_domain).'...';
75
+ foreach ($bulk_id as $data_id) {
76
+ $data = $this->pz_GetCache(array('id' => $data_id));
77
+ if (isset($data) && is_array($data)) {
78
+ $data['nexttime'] = 0;
79
+ $data = $this->pz_SetCache($data);
80
+ $this->pz_getHTML(array('url' => $data['url']));
81
+ }
82
+ echo '..';
83
+ }
84
+ echo __('completed', $this->text_domain).'</strong></p></div>';
85
+ }
86
+ break;
87
  case 'renew':
88
  if (isset($bulk_id) && is_array($bulk_id)) {
89
+ echo '<div class="updated fade"><p><strong>'.__('Cache renew', $this->text_domain).'...';
90
+ foreach ($bulk_id as $data_id) {
91
+ $data = $this->pz_GetCache(array('id' => $data_id));
92
+ if (isset($data) && is_array($data)) {
93
+ $this->pz_getHTML(array('url' => $data['url'], 'force' => true));
94
+ }
95
+ echo '..';
 
96
  }
97
+ echo __('completed', $this->text_domain).'</strong></p></div>';
98
  }
99
  break;
 
100
  case 'delete':
101
  if (isset($bulk_id) && is_array($bulk_id)) {
102
+ foreach ($bulk_id as $data_id) {
103
+ $this->pz_DelCache(array('id' => $data_id) );
 
 
 
 
104
  }
105
+ echo '<div class="updated fade"><p><strong>'.__('Cache deleted', $this->text_domain).'</strong></p></div>';
106
  }
107
  break;
108
  }
109
  }
110
 
111
+ $orderby = strtolower($orderby); // 気持ち程度のインジェクション対策
112
+ switch ($orderby) {
 
 
 
 
 
 
 
 
 
 
 
113
  case 'id':
114
  case 'url':
115
  case 'url_key':
116
  case 'link_type':
117
  case 'site_name':
118
  case 'domain':
119
+ case 'charset':
120
  case 'title':
121
  case 'excerpt':
122
  case 'result_code':
128
  case 'nexttime':
129
  break;
130
  default:
131
+ $orderby = 'regist';
132
+ $order = 'DESC';
133
  }
134
 
135
+ $order = strtoupper($order);
136
+ if ($order != 'ASC' && $orderby == $orderby_now) {
137
  $order = 'DESC';
138
+ }
139
+
140
+ // 抽出条件
141
+ $where = null;
142
+ $link_type = strtolower($link_type);
143
+ switch ($link_type) {
144
+ case 'internal':
145
+ $where = 'link_type<>0';
146
+ break;
147
+ case 'external':
148
+ $where = 'link_type=0';
149
  break;
150
  default:
151
+ $link_type = 'all';
152
+ }
153
+ if (isset($refine) && $refine) {
154
+ if ($where) {
155
+ $where .= " AND domain='$refine'";
156
+ } else {
157
+ $where .= " domain='$refine'";
158
+ }
159
  }
160
 
161
+ // 検索SQL作成
162
+ $sql = "SELECT * FROM $this->db_name";
163
+ if (isset($where) && $where) {
164
+ $sql .= " WHERE $where";
165
+ }
166
+ if (isset($orderby) && $orderby) {
167
+ $sql .= " ORDER BY $orderby $order";
168
+ }
169
+ if (strpos($sql, '--') || strpos($sql, 'UPDATE') || strpos($sql, 'UNION') ) { // 気持ち程度のインジェクション対策
170
+ die;
171
  }
172
+ $data_all = $wpdb->get_results($sql); // テーブルデータ
173
+ $count_now = count($data_all);
174
+
175
+ // ページ数
176
+ $page_min = ($count_now > 0) ? 1 : 0;
177
+ $page_max = ceil($count_now / 10);
178
+ $page_now = ($paged < $page_min) ? $page_min : (($paged > $page_max) ? $page_max : $paged);
179
+ $page_prev = ($page_now > 1) ? $page_now - 1 : null;
180
+ $page_next = ($page_now < $page_max) ? $page_now + 1 : null;
181
+
182
+ $page_top = ($page_now < 1) ? 0 : (($page_now - 1) * 10); // 0 origin
183
+ $page_limit = isset($page_limit) ? intval($page_limit) : 10 ;
184
+
185
+ // 表示用データ
186
+ if (isset($page_limit)) {
187
+ $page_top = intval($page_top);
188
+ $page_limit = intval($page_limit);
189
+ $sql .= ' LIMIT '.$page_top.' , '.$page_limit;
190
  }
191
+ $data_all = $wpdb->get_results($sql); // テーブルデータ
192
 
193
+ // ドメイン一覧作成
194
+ $sql = "SELECT domain, site_name, count(*) as count FROM $this->db_name GROUP BY domain ASC";
195
+ if (strpos($sql, '--') || strpos($sql, 'UPDATE') || strpos($sql, 'UNION') ) { // 気持ち程度のインジェクション対策
196
+ die;
197
+ }
198
+ $domain_list = $wpdb->get_results($sql); // テーブルデータ
199
 
200
  // SUB(CASE WHEN ... END) で一気に取れないぽい?
201
+ $result = $wpdb->get_row("SELECT COUNT(*) AS count FROM $this->db_name");
202
  $count_all = $result->count;
203
+ $result = $wpdb->get_row("SELECT COUNT(*) AS count FROM $this->db_name WHERE link_type<>0");
204
  $count_internal = $result->count;
205
+ $result = $wpdb->get_row("SELECT COUNT(*) AS count FROM $this->db_name WHERE link_type=0");
206
  $count_external = $result->count;
 
 
 
 
 
 
 
 
207
 
208
  ?>
 
 
 
209
 
210
  <ul class='subsubsub'>
211
+ <li class="all"><a href="?page=pz-linkcard-cache&link_type=all&orderby=regist&order=desc" <?php if ($link_type == 'all') echo 'class="current"'; ?>><? _e('All', $this->text_domain); ?> <span class="count">(<?php echo $count_all; ?>)</span></a> |</li>
212
+ <li class="all"><a href="?page=pz-linkcard-cache&link_type=internal&orderby=regist&order=desc" <?php if ($link_type == 'internal') echo 'class="current"'; ?>><? _e('Internal', $this->text_domain); ?> <span class="count">(<?php echo $count_internal; ?>)</span></a> |</li>
213
+ <li class="all"><a href="?page=pz-linkcard-cache&link_type=external&orderby=regist&order=desc" <?php if ($link_type == 'external') echo 'class="current"'; ?>><? _e('External', $this->text_domain); ?> <span class="count">(<?php echo $count_external; ?>)</span></a></li>
214
  </ul>
215
 
216
+ <form id="posts-filter" action="" method="post">
217
+ <?php wp_nonce_field('pz_cacheman'); ?>
 
 
 
 
 
 
 
 
 
 
 
 
218
  <input type="hidden" name="page" value="pz-linkcard-cache">
219
  <input type="hidden" name="paged" value="<?php echo $page_now; ?>">
220
 
221
+ <div class="tablenav top">
222
+ <div class="alignleft actions bulkactions">
223
+ <label for="bulk-action-selector-top" class="screen-reader-text"><?php _e('Select batch', $this->text_domain); ?></label>
224
+ <select name="action" id="bulk-action-selector-top">
225
+ <option value="-1" selected="selected"><?php _e('Select', $this->text_domain); ?></option>
226
+ <option value="renew"><?php _e('Renew cache', $this->text_domain); ?></option>
227
+ <option value="renew_sns"><?php _e('Renew SNS count', $this->text_domain); ?></option>
228
+ <option value="delete"><?php _e('Delete from cache', $this->text_domain); ?></option>
229
+ </select>
230
+ <input type="submit" id="doaction" class="button action" value="<?php _e('Submit', $this->text_domain); ?>" onclick="return confirm(\''.__('Are you sure?', $this->text_domain).'\');" />
231
+ </div>
232
+
233
+ <div class="alignleft actions bulkactions">
234
+ <label for="bulk-action-selector-top" class="screen-reader-text"><?php _e('Select domain', $this->text_domain); ?></label>
235
+ <select name="refine" id="bulk-action-selector-top">
236
+ <option value="" selected="selected"><?php _e('All domain', $this->text_domain); ?></option>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
237
  <?php
238
+ $i = 0;
239
+ foreach ($domain_list as $rec) {
240
+ $i++;
241
+ echo '<option value="'.$rec->domain.'"';
242
+ if ($rec->domain == $refine) {
243
+ echo 'selected="selecter"';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
244
  }
245
+ echo '>'.$rec->domain.' ('.$rec->count.')</option>';
246
+ }
247
  ?>
248
+ </select>
249
+ <input type="submit" id="doaction" class="button action" value="<?php _e('Refine search', $this->text_domain); ?>" />
250
  </div>
251
+
252
+ <?php // ページング
253
+ echo '<div class="tablenav-pages">';
254
+ echo ' <span class="displaying-num">'.$count_all.__('items').'</span>';
255
+ echo ' <span class="pagination-links">';
256
+ echo_PageButton($page_min, $paged, '&laquo;', 'first-page');
257
+ echo_PageButton($page_prev, $paged, '&lsaquo;', 'prev-page');
258
+ echo ' <span class="paging-input"><label for="current-page-selector" class="screen-reader-text"></label><input class="current-page" id="current-page-selector" type="text" name="paged" value="'.$page_now.'" size="2" aria-describedby="table-paging" /> / <span class="total-pages">'.$page_max.'</span></span>';
259
+ echo_PageButton($page_next, $paged, '&rsaquo;', 'first-page');
260
+ echo_PageButton($page_max, $paged, '&raquo;', 'last-page');
261
+ echo ' </span>';
262
+ echo '</div>';
263
+ ?>
264
+ <br class="clear">
265
  </div>
 
266
 
267
+ <div id="settings" style="clear:both;">
268
+ <table name="cachelist" class="wp-list-table widefat fixed striped posts">
269
+ <thead>
270
+ <tr>
271
+ <td id="cb" class="manage-column column-cb check-column"><label class="screen-reader-text" for="cb-select-all-1"><?php _e('Select all', $this->text_domain); ?></label><input id="cb-select-all-1" type="checkbox" /></td>
272
+ <th class="id" style="width: 3em;"><?php echo_THC('id', __('ID', $this->text_domain) ); ?></th>
273
+ <th class="url_key" style="width: 9em; display: none;"><?php echo_THC('url_key', __('URL key', $this->text_domain) ); ?></th>
274
+ <th class="url" style="min-width: 10em;"><?php echo_THC('url', __('URL', $this->text_domain) ); ?></th>
275
+ <th class="title" style="min-width: 10em;"><?php echo_THC('title', __('Title', $this->text_domain) ); ?></th>
276
+ <th class="excerpt" style="min-width: 20em;"><?php echo_THC('excerpt', __('Excerpt', $this->text_domain) ); ?></th>
277
+ <th class="charset" style="width: 4em;"><?php echo_THC('charset', __('Charset', $this->text_domain) ); ?></th>
278
+ <th class="domain" style="min-width: 6em;"><?php echo_THC('domain', __('Domain', $this->text_domain) ); ?></th>
279
+ <th class="tw" style="width: 2em;"><?php echo_THC('sns_twitter', __('Tw', $this->text_domain) ); ?></th>
280
+ <th class="fb" style="width: 2em;"><?php echo_THC('sns_facebook', __('fb', $this->text_domain) ); ?></th>
281
+ <th class="hb" style="width: 2em;"><?php echo_THC('sns_hatena', __('B!', $this->text_domain) ); ?></th>
282
+ <th class="regist" style="width: 5em;"><?php echo_THC('regist', __('Regist', $this->text_domain) ); ?></th>
283
+ <th class="postid" style="width: 3em;"><?php echo_THC('post_id', __('Post ID', $this->text_domain) ); ?></th>
284
+ <th class="result" style="width: 2em;"><?php echo_THC('result_code', __('Result code', $this->text_domain) ); ?></th>
285
+ </tr>
286
+ </thead>
287
+ <tbody>
288
  <?php
289
+ foreach ($data_all as $data) {
290
+ echo '<tr>';
291
+ // echo '<td colspan=12">'.Pz_LinkCard::pz_getHTML(array('url' => $data->url)).'</td>';
292
+
293
+ $data_id = $data->id;
294
+ echo ' <th scope="row" class="check-column">';
295
+ echo ' <label class="screen-reader-text" for="cb-select-'.$data_id.'">'.__('Select', $this->text_domain).'</label>';
296
+ echo ' <input id="cb-select-'.$data_id.'" type="checkbox" name="id[]" value="'.$data_id.'" />';
297
+ echo ' <div class="locked-indicator"></div>';
298
+ echo ' </th>';
299
 
300
+ echo ' <td>'.$data_id.'</td>';
301
+ echo ' <td style="display: none;">'.bin2hex($data->url_key).'</td>';
302
+
303
+ $url = esc_url($data->url);
304
+ $title = htmlentities($data->title);
305
+ echo ' <td colspan="2">';
306
+ echo ' <div style="word-break: break-all; font-size: 60%;">';
307
+ if ($data->link_type) {
308
+ echo '<a href="'.$url.'">'.$url.'</a>';
309
+ } else {
310
+ echo $url;
311
  }
312
+ echo '</div><div>'.$title.'</div>';
313
+ echo ' <div id="inline_'.$data_id.'"style="font-size: 90%;">';
314
+ echo '<a href="'.wp_nonce_url('?page=pz-linkcard-cache&link_type='.$link_type.'&orderby='.$orderby.'&order='.$order.'&paged='.$page_now.'&refine='.$refine.'&action=edit&id[0]='.$data_id, 'pz_cacheman').'">'.__('edit',$this->text_domain).'</a> | ';
315
+ echo '<a href="'.wp_nonce_url('?page=pz-linkcard-cache&link_type='.$link_type.'&orderby='.$orderby.'&order='.$order.'&paged='.$page_now.'&refine='.$refine.'&action=renew&id[0]='.$data_id, 'pz_cacheman').'" onclick="return confirm(\''.__('Are you sure?', $this->text_domain).'\');">'.__('renew',$this->text_domain).'</a> | ';
316
+ echo '<a href="'.wp_nonce_url('?page=pz-linkcard-cache&link_type='.$link_type.'&orderby='.$orderby.'&order='.$order.'&paged='.$page_now.'&refine='.$refine.'&action=delete&id[0]='.$data_id, 'pz_cacheman').'" onclick="return confirm(\''.__('Are you sure?', $this->text_domain).'\');">'.__('delete',$this->text_domain).'</a>';
317
+ echo '</div>';
318
+ echo ' </td>';
319
 
320
+ $excerpt= htmlentities(mb_strimwidth(html_entity_decode($data->excerpt), 0, 100, '...'));
321
+ echo ' <td>'.$excerpt.'</td>';
322
+ echo ' <td>'.$data->charset.'</td>';
 
 
 
 
 
323
 
324
+ echo ' <td><div title="'.$data->domain.'">'.$data->domain.'</div><div><span style="background-color: #888; color: #fff; font-size: 9px;">'.$data->site_name.'</span></div></td>';
325
+ // echo ' <td><img src="'.$data->thumbnail.'" style="max-height: 100px; max-width: 100px;"></td>';
326
+ // echo ' <td style="word-break: break-all;">'.$data->thumbnail.'</td>';
327
+ // echo ' <td></td>';
328
+ // echo ' <td><img src="'.$data->favicon.'" style="max-height: 100px; max-width: 100px;"></td>';
329
+ // echo ' <td style="word-break: break-all;">'.$data->favicon.'</td>';
330
+ // echo ' <td></td>';
331
+ $sns_count = $data->sns_twitter;
332
+ echo ' <td style="font-size: 60%;">'.(($sns_count >= 0) ? $sns_count : '-').'</td>';
333
+ $sns_count = $data->sns_facebook;
334
+ echo ' <td style="font-size: 60%;">'.(($sns_count >= 0) ? $sns_count : '-').'</td>';
335
+ $sns_count = $data->sns_hatena;
336
+ echo ' <td style="font-size: 60%;">'.(($sns_count >= 0) ? $sns_count : '-').'</td>';
337
 
338
+ echo ' <td>'.$data->regist.'</td>';
339
+ echo ' <td style="word-break: break-all;"><a href="'.get_permalink($data->post_id).'" target="_blank" title="'.get_the_title($data->post_id).'">'.$data->post_id.'</td>';
340
+ echo ' <td>'.$data->result_code.'</td>';
341
+ echo '</tr>';
342
+ }
343
+
344
+ ?>
345
+ </tbody>
346
+ </table>
347
+ </div>
348
+ </div>
349
+
350
+ <?php
351
+ function echo_PageButton($page_link, $page_now, $text, $class_name) {
352
+ $orderby = isset($_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : null;
353
+ $order = isset($_REQUEST['order'] ) ? $_REQUEST['order'] : null;
354
+ $link_type = isset($_REQUEST['link_type'] ) ? $_REQUEST['link_type'] : null;
355
+
356
+ if ($page_link != $page_now && !is_null($page_link)) {
357
+ echo '<a class="'.$class_name.'" href="?page=pz-linkcard-cache&link_type='.$link_type.'&orderby='.$orderby.'&order='.$order.'&paged='.$page_link.'">'.$text.'</a>';
358
+ } else {
359
+ echo '<span class="tablenav-pages-navspan">'.$text.'</span>';
360
  }
361
  }
362
+
363
+ function echo_THC($item, $text) {
364
+ $orderby = isset($_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : null;
365
+ $order = isset($_REQUEST['order'] ) ? $_REQUEST['order'] : null;
366
+ $refine = isset($_REQUEST['refine'] ) ? $_REQUEST['refine'] : null;
367
+ $link_type = isset($_REQUEST['link_type'] ) ? $_REQUEST['link_type'] : null;
368
+
369
+ if ($item == $orderby) {
370
+ if ($order == 'DESC') {
371
+ $mark = '▼';
372
+ $order = 'ASC';
373
+ } else {
374
+ $mark = '▲';
375
+ $order = 'DESC';
376
+ }
377
+ } else {
378
+ $mark = '';
379
+ $order = 'DESC';
380
+ }
381
+ echo '<a href="?page=pz-linkcard-cache&link_type='.$link_type.'&orderby='.$item.'&order='.$order.'&refine='.$refine.'">'.$text.$mark.'</a>';
382
+ }
pz-linkcard-edit.php ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if (!function_exists("get_option")) die; ?>
2
+ <form action="" method="post">
3
+ <?php wp_nonce_field('pz_cacheman'); ?>
4
+ <input type="hidden" name="page" value="pz-linkcard-cache">
5
+ <input type="hidden" name="paged" value="<?php echo $page_now; ?>">
6
+ <input type="hidden" name="refine" value="<?php echo $refine; ?>">
7
+ <input type="hidden" name="link_type" value="<?php echo $link_type; ?>">
8
+ <input type="hidden" name="orderby" value="<?php echo $orderby; ?>">
9
+ <input type="hidden" name="order" value="<?php echo $order; ?>">
10
+ <div>
11
+ <table name="cachelist" class="wp-list-table widefat fixed">
12
+ <tr>
13
+ <th style="width: 12em;"><?php _e('ID', $this->text_domain) ?></th>
14
+ <td><input name="data[id]" type="text" id="inputtext" value="<?php echo $data['id']; ?>" size="5" readonly="readonly" /></td>
15
+ </tr>
16
+ <tr style="display: none;">
17
+ <th><?php _e('URL key', $this->text_domain) ?></th>
18
+ <td><input name="key_text" type="text" id="inputtext" value="<?php echo bin2hex($data['url_key']); ?>" size="71" readonly="readonly" /></td>
19
+ </tr>
20
+ <tr>
21
+ <th><?php _e('URL', $this->text_domain) ?></th>
22
+ <td><input name="data[url]" type="text" id="inputtext" value="<?php echo $data['url']; ?>" size="71" readonly="readonly" /></td>
23
+ </tr>
24
+ <tr>
25
+ <th><?php _e('Site name', $this->text_domain) ?></th>
26
+ <td><input name="data[site_name]" type="text" id="inputtext" value="<?php echo esc_attr($data['site_name']); ?>" size="71" /></td>
27
+ </tr>
28
+ <tr>
29
+ <th><?php _e('Domain', $this->text_domain) ?></th>
30
+ <td><input name="data[domain]" type="text" id="inputtext" value="<?php echo $data['domain']; ?>" size="71" readonly="readonly" /></td>
31
+ </tr>
32
+ <tr>
33
+ <th><?php _e('Title', $this->text_domain) ?></th>
34
+ <td><input name="data[title]" type="text" id="inputtext" value="<?php echo esc_attr($data['title']); ?>" size="71" /></td>
35
+ </tr>
36
+ <tr>
37
+ <th><?php _e('Excerpt', $this->text_domain) ?></th>
38
+ <td><input name="data[excerpt]" type="text" id="inputtext" value="<?php echo esc_attr($data['excerpt']); ?>" size="71" /></td>
39
+ </tr>
40
+ <tr>
41
+ <th><?php _e('Charset', $this->text_domain) ?></th>
42
+ <td><?php echo $data['charset'].'&nbsp;'.__('->', $this->text_domain); ?>&nbsp;<input name="data[charset]" type="text" id="inputtext" value="edit" size="8" readonly="readonly" /></td>
43
+ </tr>
44
+ <tr>
45
+ <th><?php _e('Thumbnail URL', $this->text_domain) ?></th>
46
+ <td><input name="data[thumbnail]" type="text" id="inputtext" value="<?php echo $data['thumbnail']; ?>" size="71" readonly="readonly" /></td>
47
+ </tr>
48
+ <tr>
49
+ <th><?php _e('Favicon URL', $this->text_domain) ?></th>
50
+ <td><input name="data[favicon]" type="text" id="inputtext" value="<?php echo $data['favicon']; ?>" size="71" readonly="readonly" /></td>
51
+ </tr>
52
+ <tr>
53
+ <th><?php _e('Result code', $this->text_domain) ?></th>
54
+ <td><input name="data[result_code]" type="text" id="inputtext" value="<?php echo $data['result_code']; ?>" size="5" readonly="readonly" /></td>
55
+ </tr>
56
+ <tr>
57
+ <th><?php _e('Post ID', $this->text_domain) ?></th>
58
+ <td><input name="data[post_id]" type="text" id="inputtext" value="<?php echo $data['post_id']; ?>" size="5" readonly="readonly" /></td>
59
+ </tr>
60
+ <tr>
61
+ <th><?php _e('SNS', $this->text_domain) ?></th>
62
+ <td>
63
+ <?php _e('Tw', $this->text_domain) ?>:<input name="data[sns_twitter]" type="text" id="inputtext" value="<?php echo $data['sns_twitter']; ?>" size="5" readonly="readonly" />
64
+ <?php _e('fb', $this->text_domain) ?>:<input name="data[sns_facebook]" type="text" id="inputtext" value="<?php echo $data['sns_facebook']; ?>" size="5" readonly="readonly" />
65
+ <?php _e('B!', $this->text_domain) ?>:<input name="data[sns_hatena]" type="text" id="inputtext" value="<?php echo $data['sns_hatena']; ?>" size="5" readonly="readonly" />
66
+ </td>
67
+ </tr>
68
+ <tr>
69
+ <th><?php _e('Uptime', $this->text_domain) ?></th>
70
+ <td><input name="data[uptime]" type="text" id="inputtext" value="<?php echo $data['uptime']; ?>" size="10" readonly="readonly" /><?php echo date('Y-m-d H:i:s', $data['uptime']); ?></td>
71
+ </tr>
72
+ <tr>
73
+ <th><?php _e('Next update', $this->text_domain) ?></th>
74
+ <td><input name="data[nexttime]" type="text" id="inputtext" value="<?php echo $data['nexttime']; ?>" size="10" readonly="readonly" /><?php echo date('Y-m-d H:i:s', $data['nexttime']); ?></td>
75
+ </tr>
76
+ <tr>
77
+ <th><?php _e('Regist', $this->text_domain) ?></th>
78
+ <td><input name="data[regist]" type="text" id="inputtext" value="<?php echo current_time('mysql'); ?>" size="17" readonly="readonly" /><?php echo $data['regist']; ?></td>
79
+ </tr>
80
+ <tr>
81
+ <th></th>
82
+ <td><input name="update" type="submit" class="button button-primary button-large" id="publish" value="<?php _e('Update', $this->text_domain) ?>" /> <input name="cancel" type="submit" class="button button-large" id="publish" value="<?php _e('Cancel', $this->text_domain) ?>" /></td>
83
+ </tr>
84
+ </table>
85
+ </div>
86
+ </form>
pz-linkcard-settings.php CHANGED
@@ -71,36 +71,37 @@
71
  <h3><?php _e('Basic', $this->text_domain); ?></h3>
72
  <table class="form-table">
73
  <tr valign="top">
74
- <th scope="row"><label for="inputtext"><?php _e('ShortCode', $this->text_domain); ?></label></th>
75
  <td><input name="properties[code1]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['code1']); ?>" class="regular-text" />
76
- <p><?php _e('distinguish between uppercase and lowercase letters', $this->text_domain); ?></p></td>
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  </tr>
78
  <tr valign="top">
79
  <th scope="row"><label for="inputtext"><?php _e('ShortCode 2', $this->text_domain); ?></label></th>
80
  <td><input name="properties[code2]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['code2']); ?>" class="regular-text" />
81
- <p><?php _e('distinguish between uppercase and lowercase letters', $this->text_domain); ?></p></td>
82
  </tr>
83
- <tr valign="top" style="display: none;">
84
  <th scope="row"><label for="inputtext"><?php _e('ShortCode 3', $this->text_domain); ?></label></th>
85
  <td><input name="properties[code3]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['code3']); ?>" class="regular-text" />
86
- <p><?php _e('distinguish between uppercase and lowercase letters', $this->text_domain); ?></p></td>
87
  </tr>
88
  <tr valign="top" style="display: none;">
89
  <th scope="row"><label for="inputtext"><?php _e('ShortCode 4', $this->text_domain); ?></label></th>
90
  <td><input name="properties[code4]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['code4']); ?>" class="regular-text" />
91
- <p><?php _e('distinguish between uppercase and lowercase letters', $this->text_domain); ?></p></td>
92
- </tr>
93
- <tr valign="top">
94
- <th scope="row"><label for="inputtext"><?php _e('Use inlinetext', $this->text_domain); ?></label></th>
95
- <td>
96
- <?php _e('[Shortcode url="xxx"]', $this->text_domain); ?>
97
- <select name="properties[use-inline]">
98
- <option value="" <?php if($this->options['use-inline'] == '') echo 'selected="selected"'; ?>><?php _e('No use', $this->text_domain); ?></option>
99
- <option value="1" <?php if($this->options['use-inline'] == '1') echo 'selected="selected"'; ?>><?php _e('Use to excerpt', $this->text_domain); ?></option>
100
- <option value="2" <?php if($this->options['use-inline'] == '2') echo 'selected="selected"'; ?>><?php _e('Use to title', $this->text_domain); ?></option>
101
- </select>
102
- <?php _e('[/Shortcode]', $this->text_domain); ?>
103
- </td>
104
  </tr>
105
 
106
  <tr valign="top">
@@ -115,6 +116,7 @@
115
  <option value="slt" <?php if($this->options['special-format'] == 'slt') echo 'selected="selected"'; ?>><?php _e('Slanting', $this->text_domain); ?></option>
116
  <option value="3Dr" <?php if($this->options['special-format'] == '3Dr') echo 'selected="selected"'; ?>><?php _e('3D Rotate', $this->text_domain); ?></option>
117
  <option value="ppc" <?php if($this->options['special-format'] == 'ppc') echo 'selected="selected"'; ?>><?php _e('Curling paper', $this->text_domain); ?></option>
 
118
  <option value="inN" <?php if($this->options['special-format'] == 'inN') echo 'selected="selected"'; ?>><?php _e('Neutral', $this->text_domain); ?></option>
119
  <option value="inI" <?php if($this->options['special-format'] == 'inI') echo 'selected="selected"'; ?>><?php _e('Orange', $this->text_domain); ?></option>
120
  <option value="inE" <?php if($this->options['special-format'] == 'inE') echo 'selected="selected"'; ?>><?php _e('Green', $this->text_domain); ?></option>
@@ -240,6 +242,24 @@
240
  <td>
241
 
242
  <table style="border: 1px solid #000; background-color: #fff;">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
243
  <tr>
244
  <td>
245
  <input name="properties[display-url]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['display-url']) ? $this->options['display-url'] : null, 1); ?> /><?php _e('Display URL', $this->text_domain); ?>
@@ -264,17 +284,6 @@
264
  <input name="properties[display-excerpt]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['display-excerpt']) ? $this->options['display-excerpt'] : null, 1); ?> /><?php _e('Display excerpt', $this->text_domain); ?>
265
  </td>
266
  </tr>
267
- <tr>
268
- <td colspan="2">
269
- <?php _e('Site information', $this->text_domain); ?>
270
- <select name="properties[info-position]">
271
- <option value="" <?php if($this->options['info-position'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
272
- <option value="1" <?php if($this->options['info-position'] == '1') echo 'selected="selected"'; ?>><?php _e('Top', $this->text_domain); ?></option>
273
- <option value="2" <?php if($this->options['info-position'] == '2') echo 'selected="selected"'; ?>><?php _e('Bottom', $this->text_domain); ?></option>
274
- </select>
275
- <input name="properties[use-sitename]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['use-sitename']) ? $this->options['use-sitename'] : null, 1); ?> /><?php _e('Use SiteName', $this->text_domain); ?>
276
- </td>
277
- </tr>
278
  <tr>
279
  <td>
280
  <input name="properties[shadow-inset]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['shadow-inset']) ? $this->options['shadow-inset'] : null, 1); ?> /><?php _e('Hollow', $this->text_domain); ?>
@@ -298,9 +307,9 @@
298
  <option value="1" <?php if($this->options['sns-position'] == '1') echo 'selected="selected"'; ?>><?php _e('After Title', $this->text_domain); ?></option>
299
  <option value="2" <?php if($this->options['sns-position'] == '2') echo 'selected="selected"'; ?>><?php _e('After site-name', $this->text_domain); ?></option>
300
  </select>
301
- <input name="properties[sns-hatena]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['sns-hatena']) ? $this->options['sns-hatena'] : null, 1); ?> /><?php _e('Hatena', $this->text_domain); ?>
302
- <input name="properties[sns-facebook]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['sns-facebook']) ? $this->options['sns-facebook'] : null, 1); ?> /><?php _e('Facebook', $this->text_domain); ?>
303
- <input name="properties[sns-twitter]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['sns-twitter']) ? $this->options['sns-twitter'] : null, 1); ?> /><?php _e('Twitter', $this->text_domain); ?>
304
  <br /><?php _e('There is a possibility that the screen display is slow If you enable this setting.', $this->text_domain); ?>
305
  </td>
306
  </tr>
@@ -433,13 +442,21 @@
433
  <th scope="row"><label for="inputtext"><?php _e('Site information', $this->text_domain); ?></label></th>
434
  <td><input name="properties[ex-info]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['ex-info']); ?>" class="regular-text" /></td>
435
  </tr>
436
-
 
 
 
 
 
 
 
 
 
437
  </table>
438
  <?php submit_button(); ?>
439
 
440
  <h3><?php _e('Internal link', $this->text_domain); ?></h3>
441
  <table class="form-table">
442
-
443
  <tr valign="top">
444
  <th scope="row"><label for="inputtext"><?php _e('Background Color', $this->text_domain); ?></label></th>
445
  <td><input name="properties[in-bgcolor]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr($this->options['in-bgcolor']); ?>" /></td>
@@ -472,10 +489,21 @@
472
  <th scope="row"><label for="inputtext"><?php _e('Site information', $this->text_domain); ?></label></th>
473
  <td><input name="properties[in-info]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['in-info']); ?>" class="regular-text" /><br /></td>
474
  </tr>
475
-
476
  <tr valign="top">
477
- <th scope="row"><label for="inputtext"><?php _e('This page', $this->text_domain); ?></label></th>
 
 
 
 
 
 
 
478
  </tr>
 
 
 
 
 
479
  <tr valign="top">
480
  <th scope="row"><label for="inputtext"><?php _e('Background Color', $this->text_domain); ?></label></th>
481
  <td><input name="properties[th-bgcolor]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr($this->options['th-bgcolor']); ?>" /></td>
@@ -484,11 +512,22 @@
484
  <th scope="row"><label for="inputtext"><?php _e('Background Image', $this->text_domain); ?></label></th>
485
  <td><input name="properties[th-image]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['th-image']); ?>" size="80" /></td>
486
  </tr>
 
 
 
 
 
 
 
 
487
  <tr valign="top">
488
  <th scope="row"><label for="inputtext"><?php _e('Site information', $this->text_domain); ?></label></th>
489
  <td><input name="properties[th-info]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['th-info']); ?>" class="regular-text" /></td>
490
  </tr>
491
-
 
 
 
492
  </table>
493
  <?php submit_button(); ?>
494
 
71
  <h3><?php _e('Basic', $this->text_domain); ?></h3>
72
  <table class="form-table">
73
  <tr valign="top">
74
+ <th scope="row"><label for="inputtext"><?php _e('ShortCode1', $this->text_domain); ?></label></th>
75
  <td><input name="properties[code1]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['code1']); ?>" class="regular-text" />
76
+ <p><?php _e('Case-sensitive', $this->text_domain); ?></p></td>
77
+ </tr>
78
+ <tr valign="top">
79
+ <th scope="row"><label for="inputtext"><?php _e('Use inlinetext', $this->text_domain); ?></label></th>
80
+ <td>
81
+ [<?php echo esc_attr($this->options['code1']); ?> url="xxx"]
82
+ <select name="properties[use-inline]">
83
+ <option value="" <?php if($this->options['use-inline'] == '') echo 'selected="selected"'; ?>><?php _e('No use', $this->text_domain); ?></option>
84
+ <option value="1" <?php if($this->options['use-inline'] == '1') echo 'selected="selected"'; ?>><?php _e('Use to excerpt', $this->text_domain); ?></option>
85
+ <option value="2" <?php if($this->options['use-inline'] == '2') echo 'selected="selected"'; ?>><?php _e('Use to title', $this->text_domain); ?></option>
86
+ </select>
87
+ [/<?php echo esc_attr($this->options['code1']); ?>]
88
+ <p><?php _e('This setting applies only to the Shortcode1', $this->text_domain); ?></p></td>
89
+ </td>
90
  </tr>
91
  <tr valign="top">
92
  <th scope="row"><label for="inputtext"><?php _e('ShortCode 2', $this->text_domain); ?></label></th>
93
  <td><input name="properties[code2]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['code2']); ?>" class="regular-text" />
94
+ <p><?php _e('Case-sensitive', $this->text_domain); ?></p></td>
95
  </tr>
96
+ <tr valign="top">
97
  <th scope="row"><label for="inputtext"><?php _e('ShortCode 3', $this->text_domain); ?></label></th>
98
  <td><input name="properties[code3]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['code3']); ?>" class="regular-text" />
99
+ <p><?php _e('Case-sensitive', $this->text_domain); ?></p></td>
100
  </tr>
101
  <tr valign="top" style="display: none;">
102
  <th scope="row"><label for="inputtext"><?php _e('ShortCode 4', $this->text_domain); ?></label></th>
103
  <td><input name="properties[code4]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['code4']); ?>" class="regular-text" />
104
+ <p><?php _e('Case-sensitive', $this->text_domain); ?></p></td>
 
 
 
 
 
 
 
 
 
 
 
 
105
  </tr>
106
 
107
  <tr valign="top">
116
  <option value="slt" <?php if($this->options['special-format'] == 'slt') echo 'selected="selected"'; ?>><?php _e('Slanting', $this->text_domain); ?></option>
117
  <option value="3Dr" <?php if($this->options['special-format'] == '3Dr') echo 'selected="selected"'; ?>><?php _e('3D Rotate', $this->text_domain); ?></option>
118
  <option value="ppc" <?php if($this->options['special-format'] == 'ppc') echo 'selected="selected"'; ?>><?php _e('Curling paper', $this->text_domain); ?></option>
119
+ <option value="tac" <?php if($this->options['special-format'] == 'tac') echo 'selected="selected"'; ?>><?php _e('Taping and curling', $this->text_domain); ?></option>
120
  <option value="inN" <?php if($this->options['special-format'] == 'inN') echo 'selected="selected"'; ?>><?php _e('Neutral', $this->text_domain); ?></option>
121
  <option value="inI" <?php if($this->options['special-format'] == 'inI') echo 'selected="selected"'; ?>><?php _e('Orange', $this->text_domain); ?></option>
122
  <option value="inE" <?php if($this->options['special-format'] == 'inE') echo 'selected="selected"'; ?>><?php _e('Green', $this->text_domain); ?></option>
242
  <td>
243
 
244
  <table style="border: 1px solid #000; background-color: #fff;">
245
+ <tr>
246
+ <td colspan="2">
247
+ <?php _e('Site information', $this->text_domain); ?>
248
+ <select name="properties[info-position]">
249
+ <option value="" <?php if($this->options['info-position'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
250
+ <option value="1" <?php if($this->options['info-position'] == '1') echo 'selected="selected"'; ?>><?php _e('Top', $this->text_domain); ?></option>
251
+ <option value="2" <?php if($this->options['info-position'] == '2') echo 'selected="selected"'; ?>><?php _e('Bottom', $this->text_domain); ?></option>
252
+ </select>
253
+ <input name="properties[use-sitename]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['use-sitename']) ? $this->options['use-sitename'] : null, 1); ?> /><?php _e('Use SiteName', $this->text_domain); ?>
254
+ </td>
255
+ </tr>
256
+ <tr>
257
+ <td>
258
+ <input name="properties[separator]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['separator']) ? $this->options['separator'] : null, 1); ?> /><?php _e('Separator line', $this->text_domain); ?>
259
+ </td>
260
+ <td>
261
+ </td>
262
+ </tr>
263
  <tr>
264
  <td>
265
  <input name="properties[display-url]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['display-url']) ? $this->options['display-url'] : null, 1); ?> /><?php _e('Display URL', $this->text_domain); ?>
284
  <input name="properties[display-excerpt]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['display-excerpt']) ? $this->options['display-excerpt'] : null, 1); ?> /><?php _e('Display excerpt', $this->text_domain); ?>
285
  </td>
286
  </tr>
 
 
 
 
 
 
 
 
 
 
 
287
  <tr>
288
  <td>
289
  <input name="properties[shadow-inset]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['shadow-inset']) ? $this->options['shadow-inset'] : null, 1); ?> /><?php _e('Hollow', $this->text_domain); ?>
307
  <option value="1" <?php if($this->options['sns-position'] == '1') echo 'selected="selected"'; ?>><?php _e('After Title', $this->text_domain); ?></option>
308
  <option value="2" <?php if($this->options['sns-position'] == '2') echo 'selected="selected"'; ?>><?php _e('After site-name', $this->text_domain); ?></option>
309
  </select>
310
+ <input name="properties[sns-tw]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['sns-tw']) ? $this->options['sns-tw'] : null, 1); ?> /><?php _e('Twitter', $this->text_domain); ?>
311
+ <input name="properties[sns-fb]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['sns-fb']) ? $this->options['sns-fb'] : null, 1); ?> /><?php _e('Facebook', $this->text_domain); ?>
312
+ <input name="properties[sns-hb]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['sns-hb']) ? $this->options['sns-hb'] : null, 1); ?> /><?php _e('Hatena', $this->text_domain); ?>
313
  <br /><?php _e('There is a possibility that the screen display is slow If you enable this setting.', $this->text_domain); ?>
314
  </td>
315
  </tr>
442
  <th scope="row"><label for="inputtext"><?php _e('Site information', $this->text_domain); ?></label></th>
443
  <td><input name="properties[ex-info]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['ex-info']); ?>" class="regular-text" /></td>
444
  </tr>
445
+ <tr valign="top">
446
+ <th scope="row"><label for="inputtext"><?php _e('Open new window/tab', $this->text_domain); ?></label></th>
447
+ <td>
448
+ <select name="properties[ex-target]">
449
+ <option value="" <?php if($this->options['ex-target'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
450
+ <option value="1" <?php if($this->options['ex-target'] == '1') echo 'selected="selected"'; ?>><?php _e('All client', $this->text_domain); ?></option>
451
+ <option value="2" <?php if($this->options['ex-target'] == '2') echo 'selected="selected"'; ?>><?php _e('Other than mobile', $this->text_domain); ?></option>
452
+ </select>
453
+ </td>
454
+ </tr>
455
  </table>
456
  <?php submit_button(); ?>
457
 
458
  <h3><?php _e('Internal link', $this->text_domain); ?></h3>
459
  <table class="form-table">
 
460
  <tr valign="top">
461
  <th scope="row"><label for="inputtext"><?php _e('Background Color', $this->text_domain); ?></label></th>
462
  <td><input name="properties[in-bgcolor]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr($this->options['in-bgcolor']); ?>" /></td>
489
  <th scope="row"><label for="inputtext"><?php _e('Site information', $this->text_domain); ?></label></th>
490
  <td><input name="properties[in-info]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['in-info']); ?>" class="regular-text" /><br /></td>
491
  </tr>
 
492
  <tr valign="top">
493
+ <th scope="row"><label for="inputtext"><?php _e('Open new window/tab', $this->text_domain); ?></label></th>
494
+ <td>
495
+ <select name="properties[in-target]">
496
+ <option value="" <?php if($this->options['in-target'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
497
+ <option value="1" <?php if($this->options['in-target'] == '1') echo 'selected="selected"'; ?>><?php _e('All client', $this->text_domain); ?></option>
498
+ <option value="2" <?php if($this->options['in-target'] == '2') echo 'selected="selected"'; ?>><?php _e('Other than mobile', $this->text_domain); ?></option>
499
+ </select>
500
+ </td>
501
  </tr>
502
+ </table>
503
+ <?php submit_button(); ?>
504
+
505
+ <h3><?php _e('Same-page link', $this->text_domain); ?></h3>
506
+ <table class="form-table">
507
  <tr valign="top">
508
  <th scope="row"><label for="inputtext"><?php _e('Background Color', $this->text_domain); ?></label></th>
509
  <td><input name="properties[th-bgcolor]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr($this->options['th-bgcolor']); ?>" /></td>
512
  <th scope="row"><label for="inputtext"><?php _e('Background Image', $this->text_domain); ?></label></th>
513
  <td><input name="properties[th-image]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['th-image']); ?>" size="80" /></td>
514
  </tr>
515
+ <tr valign="top">
516
+ <th scope="row"><label for="inputtext"><?php _e('Thumbnail', $this->text_domain); ?></label></th>
517
+ <td><?php _e('It is common with setting Internal-link', $this->text_domain); ?></td>
518
+ </re>
519
+ <tr valign="top">
520
+ <th scope="row"><label for="inputtext"><?php _e('Favicon', $this->text_domain); ?></label></th>
521
+ <td><?php _e('It is common with setting Internal-link', $this->text_domain); ?></td>
522
+ </re>
523
  <tr valign="top">
524
  <th scope="row"><label for="inputtext"><?php _e('Site information', $this->text_domain); ?></label></th>
525
  <td><input name="properties[th-info]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['th-info']); ?>" class="regular-text" /></td>
526
  </tr>
527
+ <tr valign="top">
528
+ <th scope="row"><label for="inputtext"><?php _e('Open new window/tab', $this->text_domain); ?></label></th>
529
+ <td><?php _e('It is common with setting Internal-link', $this->text_domain); ?></td>
530
+ </re>
531
  </table>
532
  <?php submit_button(); ?>
533
 
pz-linkcard-style.php CHANGED
@@ -31,13 +31,16 @@
31
  $file_text = str_replace('/*EX-IMAGE*/', 'background-image: linear-gradient(#78f 0%, #78f 10%, #fff 30%);',$file_text );
32
  $file_text = str_replace('/*IN-IMAGE*/', 'background-image: linear-gradient(#ca4 0%, #ca4 10%, #fff 30%);',$file_text );
33
  $file_text = str_replace('/*TH-IMAGE*/', 'background-image: linear-gradient(#ca4 0%, #ca4 10%, #eee 30%);',$file_text );
34
- $file_text = str_replace('/*COLOR-INFO*/', 'color: #ffffff;',$file_text );
 
 
 
35
  $file_text = str_replace('/*THUMBNAIL_POSITION*/', 'float: left;',$file_text );
36
  break;
37
  case 'ct1': // Cellophane tape center
38
  $file_text = str_replace('/*WRAP*/', 'position: relative;',$file_text );
39
  $file_text = str_replace('/*WRAP-BEFORE*/', 'content: "";display: block;position: absolute;left: 40%;top: -16px;width: 95px;height: 25px;z-index: 2;background-color: rgba(243,245,228,0.5);border: 2px solid rgba(255,255,255,0.5);-webkit-box-shadow: 1px 1px 4px rgba(200,200,180,0.8);-moz-box-shadow: 1px 1px 4px rgba(200,200,180,0.8);box-shadow: 1px 1px 4px rgba(200,200,180,0.8);-webkit-transform: rotate(3deg);-moz-transform: rotate(3deg);-o-transform: rotate(3deg);', $file_text );
40
- $file_text = str_replace('/*SHADOW*/', 'box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2) , 0px 0px 16px rgba(0, 0, 0, 0.2) inset;', $file_text );
41
  break;
42
  case 'ct2': // Cellophane tape left right
43
  $file_text = str_replace('/*WRAP*/', 'position: relative;',$file_text );
@@ -45,14 +48,14 @@
45
  $file_text = str_replace('/*WRAP-BEFORE*/', 'content: "";display: block;position: absolute;left: -40px;top: -4px;width: 75px;height: 25px;z-index: 2;background-color: rgba(243,245,228,0.5);border: 2px solid rgba(255,255,255,0.5);-webkit-box-shadow: 1px 1px 4px rgba(200,200,180,0.8);-moz-box-shadow: 1px 1px 4px rgba(200,200,180,0.8);box-shadow: 1px 1px 4px rgba(200,200,180,0.8);-webkit-transform: rotate(-45deg);-moz-transform: rotate(-45deg);-o-transform: rotate(-45deg);', $file_text );
46
  $file_text = str_replace('/*WRAP-AFTER*/', 'content: "";display: block;position: absolute;right: -20px;top: -2px;width: 75px;height: 25px;z-index: 2;background-color: rgba(243,245,228,0.5);border: 2px solid rgba(255,255,255,0.5);-webkit-box-shadow: 1px 1px 4px rgba(200,200,180,0.8);-moz-box-shadow: 1px 1px 4px rgba(200,200,180,0.8);box-shadow: 1px 1px 4px rgba(200,200,180,0.8);-webkit-transform: rotate(16deg);-moz-transform: rotate(16deg);-o-transform: rotate(16deg);transform: rotate(16deg);', $file_text );
47
  $file_text = str_replace('/*MARGIN-RIGHT*/', 'margin-right: 25px;',$file_text );
48
- $file_text = str_replace('/*SHADOW*/', 'box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2) , 0px 0px 16px rgba(0, 0, 0, 0.2) inset;', $file_text );
49
  break;
50
  case 'ct3': // Cellophane long
51
  $file_text = str_replace('/*WRAP*/', 'position: relative;',$file_text );
52
  $file_text = str_replace('/*WRAP-BEFORE*/', 'content: "";display: block;position: absolute;left: -5%;top: -12px;width: 110%;height: 25px;z-index: 2;background-color: rgba(243,245,228,0.5);border: 2px solid rgba(255,255,255,0.5);-webkit-box-shadow: 1px 1px 4px rgba(200,200,180,0.8);-moz-box-shadow: 1px 1px 4px rgba(200,200,180,0.8);box-shadow: 1px 1px 4px rgba(200,200,180,0.8);-webkit-transform: rotate(-3deg);-moz-transform: rotate(-3deg);-o-transform: rotate(-3deg);', $file_text );
53
  $file_text = str_replace('/*MARGIN-LEFT*/', 'margin-left: 32px;',$file_text );
54
  $file_text = str_replace('/*MARGIN-RIGHT*/', 'margin-right: 32px;',$file_text );
55
- $file_text = str_replace('/*SHADOW*/', 'box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2) , 0px 0px 16px rgba(0, 0, 0, 0.2) inset;', $file_text );
56
  break;
57
  case 'slt': // Slanting
58
  $file_text = str_replace('/*WRAP*/', 'transform:skew(-10deg) rotate(1deg);-webkit-transform: skew(-10deg) rotate(1deg);-moz-transform:skew(-10deg) rotate(1deg);', $file_text );
@@ -64,9 +67,18 @@
64
  $file_text = str_replace('/*SHADOW*/', 'box-shadow: 0 20px 16px rgba(0, 0, 0, 0.6) , 0px 32px 32px rgba(0, 0, 0, 0.2) inset;', $file_text );
65
  break;
66
  case 'ppc': // Paper Curling
67
- $file_text = str_replace('/*WRAP*/', 'position: relative;',$file_text );
68
- $file_text = str_replace('/*WRAP-AFTER*/', 'z-index:-1;content:"";height:10px;width:60%;position:absolute;right:12px;bottom:11px;left:auto;transform:skew(5deg) rotate(5deg);-webkit-transform:skew(3deg) rotate(3deg);-moz-transform:skew(5deg) rotate(5deg);box-shadow:0 16px 16px rgba(0,0,0,1);-webkit-box-shadow:0 16px 16px rgba(0,0,0,1);-moz-box-shadow:0 16px 12px rgba(0,0,0,1);', $file_text );
69
- $file_text = str_replace('/*SHADOW*/', 'box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.8) , 0px 0px 16px rgba(0, 0, 0, 0.3) inset;', $file_text );
 
 
 
 
 
 
 
 
 
70
  break;
71
  case 'inN': // Neutral
72
  $file_text = str_replace('/*BORDER*/', 'border: 4px solid #59fbea;',$file_text );
@@ -302,6 +314,16 @@
302
  $file_text = str_replace('/*CONTENT-BGCOLOR*/', 'background-color: rgba(255, 255, 255, 0.8 );',$file_text );
303
  }
304
 
 
 
 
 
 
 
 
 
 
 
305
  // ぽぽづれ。へのリンクを表示する
306
  if (isset($this->options['plugin-link']) && $this->options['plugin-link'] == '1') {
307
  $file_text = str_replace('/*CREDIT*/', 'display: block;',$file_text );
31
  $file_text = str_replace('/*EX-IMAGE*/', 'background-image: linear-gradient(#78f 0%, #78f 10%, #fff 30%);',$file_text );
32
  $file_text = str_replace('/*IN-IMAGE*/', 'background-image: linear-gradient(#ca4 0%, #ca4 10%, #fff 30%);',$file_text );
33
  $file_text = str_replace('/*TH-IMAGE*/', 'background-image: linear-gradient(#ca4 0%, #ca4 10%, #eee 30%);',$file_text );
34
+ switch ($this->options['info-position']) {
35
+ case '1':
36
+ $file_text = str_replace('/*COLOR-INFO*/', 'color: #fff;',$file_text );
37
+ }
38
  $file_text = str_replace('/*THUMBNAIL_POSITION*/', 'float: left;',$file_text );
39
  break;
40
  case 'ct1': // Cellophane tape center
41
  $file_text = str_replace('/*WRAP*/', 'position: relative;',$file_text );
42
  $file_text = str_replace('/*WRAP-BEFORE*/', 'content: "";display: block;position: absolute;left: 40%;top: -16px;width: 95px;height: 25px;z-index: 2;background-color: rgba(243,245,228,0.5);border: 2px solid rgba(255,255,255,0.5);-webkit-box-shadow: 1px 1px 4px rgba(200,200,180,0.8);-moz-box-shadow: 1px 1px 4px rgba(200,200,180,0.8);box-shadow: 1px 1px 4px rgba(200,200,180,0.8);-webkit-transform: rotate(3deg);-moz-transform: rotate(3deg);-o-transform: rotate(3deg);', $file_text );
43
+ $file_text = str_replace('/*SHADOW*/', 'box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2) , 0px 0px 8px rgba(0, 0, 0, 0.2) inset;', $file_text );
44
  break;
45
  case 'ct2': // Cellophane tape left right
46
  $file_text = str_replace('/*WRAP*/', 'position: relative;',$file_text );
48
  $file_text = str_replace('/*WRAP-BEFORE*/', 'content: "";display: block;position: absolute;left: -40px;top: -4px;width: 75px;height: 25px;z-index: 2;background-color: rgba(243,245,228,0.5);border: 2px solid rgba(255,255,255,0.5);-webkit-box-shadow: 1px 1px 4px rgba(200,200,180,0.8);-moz-box-shadow: 1px 1px 4px rgba(200,200,180,0.8);box-shadow: 1px 1px 4px rgba(200,200,180,0.8);-webkit-transform: rotate(-45deg);-moz-transform: rotate(-45deg);-o-transform: rotate(-45deg);', $file_text );
49
  $file_text = str_replace('/*WRAP-AFTER*/', 'content: "";display: block;position: absolute;right: -20px;top: -2px;width: 75px;height: 25px;z-index: 2;background-color: rgba(243,245,228,0.5);border: 2px solid rgba(255,255,255,0.5);-webkit-box-shadow: 1px 1px 4px rgba(200,200,180,0.8);-moz-box-shadow: 1px 1px 4px rgba(200,200,180,0.8);box-shadow: 1px 1px 4px rgba(200,200,180,0.8);-webkit-transform: rotate(16deg);-moz-transform: rotate(16deg);-o-transform: rotate(16deg);transform: rotate(16deg);', $file_text );
50
  $file_text = str_replace('/*MARGIN-RIGHT*/', 'margin-right: 25px;',$file_text );
51
+ $file_text = str_replace('/*SHADOW*/', 'box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2) , 0px 0px 8px rgba(0, 0, 0, 0.2) inset;', $file_text );
52
  break;
53
  case 'ct3': // Cellophane long
54
  $file_text = str_replace('/*WRAP*/', 'position: relative;',$file_text );
55
  $file_text = str_replace('/*WRAP-BEFORE*/', 'content: "";display: block;position: absolute;left: -5%;top: -12px;width: 110%;height: 25px;z-index: 2;background-color: rgba(243,245,228,0.5);border: 2px solid rgba(255,255,255,0.5);-webkit-box-shadow: 1px 1px 4px rgba(200,200,180,0.8);-moz-box-shadow: 1px 1px 4px rgba(200,200,180,0.8);box-shadow: 1px 1px 4px rgba(200,200,180,0.8);-webkit-transform: rotate(-3deg);-moz-transform: rotate(-3deg);-o-transform: rotate(-3deg);', $file_text );
56
  $file_text = str_replace('/*MARGIN-LEFT*/', 'margin-left: 32px;',$file_text );
57
  $file_text = str_replace('/*MARGIN-RIGHT*/', 'margin-right: 32px;',$file_text );
58
+ $file_text = str_replace('/*SHADOW*/', 'box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2) , 0px 0px 8px rgba(0, 0, 0, 0.2) inset;', $file_text );
59
  break;
60
  case 'slt': // Slanting
61
  $file_text = str_replace('/*WRAP*/', 'transform:skew(-10deg) rotate(1deg);-webkit-transform: skew(-10deg) rotate(1deg);-moz-transform:skew(-10deg) rotate(1deg);', $file_text );
67
  $file_text = str_replace('/*SHADOW*/', 'box-shadow: 0 20px 16px rgba(0, 0, 0, 0.6) , 0px 32px 32px rgba(0, 0, 0, 0.2) inset;', $file_text );
68
  break;
69
  case 'ppc': // Paper Curling
70
+ $file_text = str_replace('/*WRAP*/', 'position: relative;',$file_text );
71
+ $file_text = str_replace('/*WRAP-AFTER*/', 'z-index: -1; content:""; height: 10px; width: 60%; position: absolute; right: 16px; bottom: 14px; left: auto; transform: skew(5deg) rotate(3deg); -webkit-transform: skew(5deg) rotate(3deg); -moz-transform: skew(5deg) rotate(3deg); box-shadow: 0 16px 16px rgba(0,0,0,1); -webkit-box-shadow: 0 16px 16px rgba(0,0,0,1); -moz-box-shadow: 0 16px 12px rgba(0,0,0,1);', $file_text );
72
+ $file_text = str_replace('/*SHADOW*/', 'box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.8) , 0px 0px 12px rgba(0, 0, 0, 0.3) inset;', $file_text );
73
+ $file_text = str_replace('/*OPTION*/', 'article { position: relative; z-index: 0; } article blockquote { position: relative; z-index: 0; }', $file_text );
74
+ break;
75
+ case 'tac': // Taping and curling
76
+ $file_text = str_replace('/*WRAP*/', 'position: relative;',$file_text );
77
+ $file_text = str_replace('/*WRAP-BEFORE*/', 'content: ""; display: block; position: absolute; left: -24px; top: 0px; width: 200px; height: 25px; z-index: 2; background-color: rgba(243,245,228,0.5); border: 2px solid rgba(255,255,255,0.5); -webkit-box-shadow: 1px 1px 4px rgba(200,200,180,0.8); -moz-box-shadow: 1px 1px 4px rgba(200,200,180,0.8); box-shadow: 1px 1px 4px rgba(200,200,180,0.8); -webkit-transform: rotate(-8deg); -moz-transform: rotate(-8deg); -o-transform: rotate(-8deg);', $file_text );
78
+ $file_text = str_replace('/*WRAP-AFTER*/', 'z-index: -1; content:""; height: 10px; width: 60%; position: absolute; right: 16px; bottom: 14px; left: auto; transform: skew(5deg) rotate(3deg); -webkit-transform: skew(5deg) rotate(3deg); -moz-transform: skew(5deg) rotate(3deg); box-shadow: 0 16px 16px rgba(0,0,0,1); -webkit-box-shadow: 0 16px 16px rgba(0,0,0,1); -moz-box-shadow: 0 16px 12px rgba(0,0,0,1);', $file_text );
79
+ $file_text = str_replace('/*MARGIN-LEFT*/', 'margin-left: 24px;',$file_text );
80
+ $file_text = str_replace('/*SHADOW*/', 'box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.8) , 0px 0px 12px rgba(0, 0, 0, 0.3) inset;', $file_text );
81
+ $file_text = str_replace('/*OPTION*/', 'article { position: relative; z-index: 0; } article blockquote { position: relative; z-index: 0; }', $file_text );
82
  break;
83
  case 'inN': // Neutral
84
  $file_text = str_replace('/*BORDER*/', 'border: 4px solid #59fbea;',$file_text );
314
  $file_text = str_replace('/*CONTENT-BGCOLOR*/', 'background-color: rgba(255, 255, 255, 0.8 );',$file_text );
315
  }
316
 
317
+ // サイト情報の区切り線
318
+ if (isset($this->options['separator']) && $this->options['separator'] == '1') {
319
+ switch ($this->options['info-position']) {
320
+ case '1':
321
+ $file_text = str_replace('/*SEPARATOR*/', 'border-top: 1px solid '.$this->options['color-info'].';',$file_text );
322
+ case '2':
323
+ $file_text = str_replace('/*SEPARATOR*/', 'border-bottom: 1px solid '.$this->options['color-info'].';',$file_text );
324
+ }
325
+ }
326
+
327
  // ぽぽづれ。へのリンクを表示する
328
  if (isset($this->options['plugin-link']) && $this->options['plugin-link'] == '1') {
329
  $file_text = str_replace('/*CREDIT*/', 'display: block;',$file_text );
pz-linkcard-templete.css CHANGED
@@ -1,4 +1,4 @@
1
- /* [Pz-LKC][0.0.1] CSS */
2
  .linkcard {
3
  /*MARGIN-TOP*/
4
  /*MARGIN-BOTTOM*/
@@ -80,6 +80,7 @@
80
  word-break: break-all;
81
  white-space: normal;
82
  overflow: hidden;
 
83
  }
84
  .linkcard-title {
85
  /*COLOR-TITLE*/
@@ -251,4 +252,6 @@ blockquote.linkcard-quote {
251
  margin: 0;
252
  width: 100%;
253
  height: 149px;
254
- }
 
 
1
+ /* [Pz-LkC][1.0.3] CSS */
2
  .linkcard {
3
  /*MARGIN-TOP*/
4
  /*MARGIN-BOTTOM*/
80
  word-break: break-all;
81
  white-space: normal;
82
  overflow: hidden;
83
+ /*SEPARATOR*/
84
  }
85
  .linkcard-title {
86
  /*COLOR-TITLE*/
252
  margin: 0;
253
  width: 100%;
254
  height: 149px;
255
+ /*EX-BGCOLOR*/
256
+ }
257
+ /*OPTION*/
pz-linkcard.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Pz-LinkCard
4
  Plugin URI: http://poporon.poponet.jp/pz-linkcard
5
  Description: リンクをカード形式で表示します。
6
- Version: 0.1.0
7
  Author: poporon
8
  Author URI: http://poporon.poponet.jp
9
  License: GPLv2 or later
@@ -12,33 +12,19 @@ License: GPLv2 or later
12
  defined('ABSPATH') || die;
13
 
14
  class Pz_LinkCard {
15
- public $slug; // slug
16
- public $text_domain; // as slug
17
 
18
- public $charset;
19
 
20
- public $plugin_basename;
21
- public $plugin_dir_path;
22
- public $plugin_dir_url;
 
 
23
 
24
  public $options;
25
- public $defaults;
26
-
27
- public $plugin_link; // link to plugin page
28
-
29
- private $db;
30
-
31
- public function __construct() {
32
- $this->charset = get_bloginfo('charset');
33
-
34
- $this->slug = basename(dirname(__FILE__));
35
- $this->text_domain = $this->slug;
36
-
37
- $this->plugin_basename = plugin_basename(__FILE__);
38
- $this->plugin_dir_path = plugin_dir_path(__FILE__);
39
- $this->plugin_dir_url = plugin_dir_url (__FILE__);
40
-
41
- $this->defaults = array(
42
  'code1' => 'blogcard',
43
  'code2' => null,
44
  'code3' => null,
@@ -62,6 +48,7 @@ class Pz_LinkCard {
62
  'display-excerpt' => '1',
63
  'trim-count' => 250,
64
  'info-position' => '1',
 
65
  'size-info' => '12px',
66
  'size-title' => '16px',
67
  'size-url' => '9px',
@@ -82,45 +69,56 @@ class Pz_LinkCard {
82
  'ex-info' => null,
83
  'in-info' => null,
84
  'th-info' => null,
 
 
85
  'ex-thumbnail' => '0',
86
  'in-thumbnail' => '1',
87
  'ex-favicon' => '3',
88
  'in-favicon' => '1',
89
  'favicon-api' => 'http://www.google.com/s2/favicons?domain=%DOMAIN%',
90
- 'thumbnail-api' => 'http://capture.heartrails.com/100x100/delay=3?%URL%',
91
  'thumbnail-position'=> '2',
92
  'thumbnail-shadow' => '1',
93
- 'cache-time' => 365*24*60*60,
94
  'style-reset-img' => '1',
95
  'style' => null,
96
  'css-file' => null,
97
  'css-path' => null,
98
  'css-url' => null,
99
- 'use-snscache' => '1',
100
  'sns-position' => '2',
101
- 'sns-twitter' => '1',
102
- 'sns-facebook' => '1',
103
- 'sns-hatena' => '1',
104
  'link-all' => '1',
105
  'blockquote' => null,
106
  'nofollow' => null,
107
  'plugin-link' => null,
108
  'plugin-name' => 'Pz-LinkCard',
109
- 'plugin-version' => '0.1.0',
110
  'plugin-url' => 'http://poporon.poponet.jp/pz-linkcard',
111
  'pz-hbc-options' => null,
112
- 'debug-time' => null,
113
- 'saved-date' => time()
114
  );
 
 
 
 
 
 
 
 
 
 
 
115
  $this->options = get_option('Pz_LinkCard_options', $this->defaults );
116
 
117
  // DB
118
  global $wpdb;
119
- $this->db = $wpdb->prefix.'pz_linkcard';
120
 
121
  // バージョンが上がっていたら、オプションを更新する
122
  if ($this->options['plugin-version'] < $this->defaults['plugin-version']) {
123
- $this->Pz_LinkCard_activation();
124
  }
125
 
126
  // CSS URLが空だったら生成
@@ -130,26 +128,26 @@ class Pz_LinkCard {
130
 
131
  // ショートコードの設定
132
  if ($this->options['code1'] <> '') {
133
- add_shortcode($this->options['code1'], array($this, 'Pz_LinkCard_ShortCode'));
134
  }
135
  if ($this->options['code2'] <> '') {
136
- add_shortcode($this->options['code2'], array($this, 'Pz_LinkCard_ShortCode'));
137
  }
138
  if ($this->options['code3'] <> '') {
139
- add_shortcode($this->options['code3'], array($this, 'Pz_LinkCard_ShortCode'));
140
  }
141
  if ($this->options['code4'] <> '') {
142
- add_shortcode($this->options['code4'], array($this, 'Pz_LinkCard_ShortCode'));
143
  }
144
 
145
  // 管理画面のとき
146
  if (is_admin()) {
147
- load_plugin_textdomain ($this->text_domain, false, $this->slug.'/languages' ); // 管理画面のみ日本語化
148
- register_activation_hook (__FILE__, array($this, 'Pz_LinkCard_activation')); // 有効化したときの処理
149
- register_deactivation_hook (__FILE__, array($this, 'Pz_LinkCard_deactivation')); // 無効化したときの処理
150
- add_action ('admin_menu', array($this, 'Pz_LinkCard_add_menu')); // 設定メニュー
151
- add_action ('admin_enqueue_scripts', array($this, 'Pz_LinkCard_scripts_admin')); // 設定メニュー用スクリプト
152
- add_filter ('plugin_action_links_'.$this->plugin_basename, array($this, 'Pz_LinkCard_action_links')); // プラグイン画面
153
 
154
  if ((isset($this->options['style']) ? $this->options['style'] : '') == '') {
155
  if (is_null($this->options['css-path']) || !file_exists($this->options['css-path'])) {
@@ -162,100 +160,71 @@ class Pz_LinkCard {
162
  require_once ('pz-linkcard-style.php');
163
  }
164
  }
165
- add_action ('wp_enqueue_scripts', array($this, 'Pz_LinkCard_scripts'));
166
  }
167
  }
168
 
169
- public function Pz_LinkCard_scripts_admin($hook) {
170
- wp_enqueue_style ('wp-color-picker');
171
- wp_enqueue_script ('colorpicker-script', plugins_url('color-picker.js', __FILE__), array('wp-color-picker'), false, true);
172
- }
173
-
174
- public function Pz_LinkCard_scripts($hook) {
175
- if (!isset($this->options['style'])) {
176
- wp_enqueue_style ('Pz-LinkCard', $this->options['css-url']);
 
 
 
177
  } else {
178
- if (isset($this->options['css-file'])) {
179
- wp_enqueue_style('Pz-LinkCard', $this->options['css-file']);
180
- }
181
  }
182
- }
183
-
184
- public function Pz_LinkCard_add_menu() {
185
- add_management_page (__('LinkCard cache manager', $this->text_domain),__('Pz LkC Cache', $this->text_domain),'manage_options', 'pz-linkcard-cache', array($this, 'Pz_LinkCard_cache_list') );
186
- add_options_page (__('LinkCard Settings', $this->text_domain),__('Pz LinkCard', $this->text_domain),'manage_options', 'pz-linkcard-settings', array($this, 'Pz_LinkCard_option_page') );
187
- }
188
-
189
- public function Pz_LinkCard_activation() {
190
- $this->options = get_option('Pz_LinkCard_options', $this->defaults);
191
- $this->options += $this->defaults;
192
- $this->options['plugin-version'] = $this->defaults['plugin-version'];
193
- update_option('Pz_LinkCard_options', $this->options);
194
-
195
- require_once('pz-linkcard-style.php');
196
-
197
- global $wpdb;
198
- $wpdb->hide_errors();
199
- $this->db = $wpdb->prefix.'pz_linkcard';
200
- $sql = "CREATE TABLE ".$this->db." (
201
- id INT UNSIGNED NOT NULL AUTO_INCREMENT,
202
- url_key VARBINARY(255) NOT NULL,
203
- url VARCHAR(2048) NOT NULL DEFAULT '',
204
- link_type INT UNSIGNED,
205
- site_name VARCHAR(100) ,
206
- domain VARCHAR(253) ,
207
- title VARCHAR(200) ,
208
- excerpt VARCHAR(500) ,
209
- thumbnail VARCHAR(2048) ,
210
- favicon VARCHAR(2048) ,
211
- result_code INT ,
212
- post_id INT UNSIGNED,
213
- sns_twitter INT ,
214
- sns_facebook INT ,
215
- sns_hatena INT ,
216
- sns_pocket INT ,
217
- sns_gplus INT ,
218
- uptime BIGINT UNSIGNED NOT NULL DEFAULT 0,
219
- nexttime BIGINT UNSIGNED NOT NULL DEFAULT 0,
220
- regist DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
221
- PRIMARY KEY ( id ),
222
- UNIQUE KEY ( url_key )
223
- ) ".$wpdb->get_charset_collate()." ;";
224
- require_once(ABSPATH.'wp-admin/includes/upgrade.php');
225
- dbDelta($sql);
226
- }
227
 
228
- public function Pz_LinkCard_deactivation() {
229
- }
230
-
231
- public function Pz_LinkCard_cache_list() {
232
- require_once('pz-linkcard-cacheman.php');
233
- }
 
 
 
 
 
234
 
235
- public function Pz_LinkCard_option_page() {
236
- require_once('pz-linkcard-settings.php');
237
  }
238
 
239
- public function Pz_LinkCard_action_links($links) {
240
- $links = array( '<a href="options-general.php?page=pz-linkcard-settings">'.__('Settings', $this->text_domain).'</a>' ) + $links;
241
- return $links;
 
 
 
 
 
 
 
242
  }
243
 
244
- public function Pz_LinkCard_ShortCode($atts, $content = null ) {
245
  global $wpdb;
246
 
247
  $update = false;
248
  $update_cnt = false;
249
  $error = false;
 
 
 
 
250
 
 
251
  if (is_user_logged_in()) {
252
- // 時間計測
253
  $start_time = microtime(true);
254
  }
255
 
256
- // リンク先URL
257
- $url = isset($atts['url']) ? $atts['url'] : null;
258
- $url_esc = esc_url($url);
259
 
260
  // リンク先URLからドメイン名を抽出
261
  if (preg_match('{https?://(.+?)/}i', $url.'/',$m)) {
@@ -269,50 +238,70 @@ class Pz_LinkCard {
269
 
270
  // 自サイトチェック
271
  if (preg_match('{'.home_url().'\/.*?}', $url.'/')) {
272
- if (preg_match('{'.get_permalink().'\/*}',$url)) {
273
  $link_type = 1; // 自ページ
274
  } else {
275
  $link_type = 2; // 自サイト内
276
  }
277
  $target = ''; // 同ページに開く
 
 
 
 
 
278
  $nofollow = '';
279
  } else {
280
  $link_type = 0; // 外部サイト
281
- $target = ' target="_blank"'; // 新しいページで開く
 
 
 
 
 
282
  $nofollow = isset($this->options['nofollow']) ? ' rel="nofollow"' : '';
283
  }
284
 
285
  // URLをキーにしてDBからキャッシュ取得
286
- if (isset($url)) {
287
- $data = $wpdb->get_row($wpdb->prepare("SELECT * FROM $this->db WHERE url=%s", $url));
288
- if (is_wp_error($data) || !isset($data)) {
289
- $data_id = null;
290
- $title = null;
291
- $url_key = null;
292
- $excerpt = null;
293
- $site_name = null;
294
- $result_code = null;
295
- $sns_twitter = -1;
296
- $sns_facebook = -1;
297
- $sns_hatena = -1;
298
- $uptime = null;
299
- $nexttime = 0;
300
- } else {
301
- $data_id = $data->id;
302
- $title = $data->title;
303
- $url_key = $data->url_key;
304
- $excerpt = $data->excerpt;
305
- $site_name = $data->site_name;
306
- $result_code = $data->result_code;
307
- $sns_twitter = $data->sns_twitter;
308
- $sns_facebook = $data->sns_facebook;
309
- $sns_hatena = $data->sns_hatena;
310
- $uptime = $data->uptime;
311
- $nexttime = $data->nexttime;
312
- }
313
- }
314
- $thumbnail = null;
315
- $thumbnail_url = null;
 
 
 
 
 
 
 
 
 
 
316
 
317
  if ($link_type) { // 自サイト内はキャッシュがあっても常に取得する
318
  if (is_null($data_id)) {
@@ -321,17 +310,21 @@ class Pz_LinkCard {
321
 
322
  if ($link_type == '1') {
323
  $info = isset($this->options['th-info']) ? $this->options['th-info'] : '' ;
324
- $wrap_op = '<div class="linkcard-this-wrapper">'; // ラッピング
325
  $wrap_cl = '</div>';
326
  } else {
327
  $info = isset($this->options['in-info']) ? $this->options['in-info'] : '' ;
328
- $wrap_op = '<div class="linkcard-internal-wrapper">'; // ラッピング
329
  $wrap_cl = '</div>';
330
  }
331
- $site_name = get_bloginfo('name'); // サイト名
 
 
 
 
 
 
332
 
333
- $id = url_to_postid(strip_tags($url)); // 記事ID
334
- $post = get_post($id); // 記事情報
335
  // タイトル取得
336
  if ($id) {
337
  if (!$title) {
@@ -341,6 +334,7 @@ class Pz_LinkCard {
341
  }
342
  }
343
  } else {
 
344
  if (!$title) {
345
  $title = get_bloginfo('name'); // サイト名
346
  if (!$excerpt) {
@@ -356,7 +350,7 @@ class Pz_LinkCard {
356
  $sw_favicon = isset($this->options['in-favicon']) ? $this->options['in-favicon'] : '0' ;
357
  if ($sw_favicon == '1') {
358
  if (function_exists('has_site_icon')) {
359
- $favicon = '<img class="linkcard-favicon" src="'.get_site_icon_url(16, '', 0).'" />';
360
  } else {
361
  $sw_favicon = isset($this->options['ex-favicon']) ? $this->options['ex-favicon'] : '0' ;
362
  }
@@ -379,7 +373,7 @@ class Pz_LinkCard {
379
  }
380
  return $tag;
381
 
382
- } elseif (is_null($data_id) || ($result_code <> 200 && $result_code <> 999)) { // キャッシュ無、または前回エラー
383
  // リンク先サイト取得
384
  $html = null;
385
  $error = true;
@@ -390,86 +384,61 @@ class Pz_LinkCard {
390
  $error = false;
391
  $update = true;
392
 
393
- $result_code = 999;
394
  } else {
395
  $result_code = $result['response']['code'];
396
- if ($result_code >= 200 && $result_code <= 399 ) {
397
  $error = false;
398
  $update = true;
399
 
400
- $html = $result['body'];
401
- $html = mb_convert_encoding($html, $this->charset, "ASCII,JIS,UTF-7,EUC-JP,SJIS,UTF-8");
402
-
 
 
 
 
 
 
 
 
 
403
  $tags = null;
404
 
405
  // HEADタグ
406
  $head = null;
407
- if (preg_match('/<head>(.*)<\/head>/si', $html, $m)) {
408
  $head = $m[1];
409
  }
410
 
411
- // TITLEタグ
412
- if (preg_match('/<\s*title\s*.*>\s*(.*)\s*<\s*\/title\s*>/si', $head, $m)) {
413
- $tags['title'] = esc_html($m[1]);
414
- }
415
-
416
- // // 最初のPタグ(これは全体から)
417
- // if (preg_match('/<p>\s*(.*)<\/p>/i', $html, $m)) {
418
- // $tags['first-p'] = esc_html($m[1]);
419
- // }
420
-
421
- // metaタグ パース
422
- $match = null;
423
- preg_match_all('/\s*meta\s*name="?([^>"]*)"?\s*content="?([^>"]*)"?\s*\/?>/si', $head, $match);
424
- if (isset($match) && is_array($match) && count($match) == 3) {
425
- for ($i=0, $to_i=count($match[1]); $i < $to_i; $i++) {
426
- $tags[$match[1][$i]] = esc_html($match[2][$i]);
427
- }
428
- }
429
-
430
- // OGPパース
431
- $match = null;
432
- preg_match_all('/\s*meta\s*property="?([^>"]*)"?\s*content="?([^>"]*)"?\s*\/?>/si', $head, $match);
433
- if (isset($match) && is_array($match) && count($match) == 3) {
434
- for ($i=0, $to_i=count($match[1]); $i < $to_i; $i++) {
435
- $tags[$match[1][$i]] = esc_html($match[2][$i]);
436
- }
437
- }
438
-
439
- // OGPパース(順序逆パターン)
440
- $match = null;
441
- preg_match_all('/\s*meta\s*content="?([^>"]*)"?\s*property="?([^>"]*)"?\s*\/?>/si', $head, $match);
442
- if (isset($match) && is_array($match) && count($match) == 3) {
443
- for ($i=0, $to_i=count($match[1]); $i < $to_i; $i++) {
444
- $tags[$match[1][$i]] = esc_html($match[2][$i]);
445
- }
446
- }
447
 
448
  // タイトル
449
- if (isset($tags['og:title'])) {
450
- $title = $tags['og:title'];
451
- } elseif (isset($tags['title'])) {
452
- $title = $tags['title'];
453
  }
454
 
455
  // 抜粋文・概要文
456
- if (isset($tags['og:description'])) {
457
- $excerpt = $tags['og:description'];
458
- } elseif (isset($tags['description'])) {
459
- $excerpt = $tags['description'];
460
- } elseif (isset($tags['first-p'])) {
461
- $excerpt = $tags['first-p'];
462
  }
463
 
464
  // // OGPから画像URL取得
465
  // if ($sw_thumbnail == '1' && isset($tags['og:image'])) {
466
  // $thumbnail_url = $tags['og:image'];
467
- // $thumbnail = '<img class="linkcard-thumbnail-image" src="'.$thumbnail_url.'">';
468
  // }
469
 
470
  // // サイト名
471
- if (isset($tags['og:site_name'])) {
472
- $site_name = $tags['og:site_name'];
473
  }
474
 
475
  }
@@ -479,115 +448,96 @@ class Pz_LinkCard {
479
 
480
  // タイトル整形
481
  if (isset($title)) {
482
- $title = esc_html($title); // 念のためエスケープ
483
- $title = mb_strimwidth($title, 0, 200, '...'); // タイトルは無条件で200文字で切る
 
 
 
 
484
  }
485
-
486
  // 抜粋文整形
487
  if (isset($excerpt)) {
488
- $excerpt = strip_tags($excerpt); // タグの除去
489
- $excerpt = preg_replace('/<!--more-->.+/is', '', $excerpt); // moreタグ以降削除
490
- $excerpt = preg_replace('/\[[^]]*\]/', '', $excerpt); // ショートコードすべて除去
491
- $excerpt = str_replace(array("\r", "\n"), '', $excerpt); // 改行削除
492
- $excerpt = esc_html($excerpt); // 念のためエスケープ
493
- $excerpt = mb_strimwidth($excerpt, 0, 500, '...'); // ここでは500文字で切る
 
 
494
  }
495
 
496
  // 取得エラーなし・取得または更新あり
497
  if (!$error && $update && $url) {
498
- if (!isset($url_key)) {
499
- $url_key = hash('sha256', esc_url($url), true);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
500
  }
501
 
502
- // とりあえず更新して見る
503
- $result = $wpdb->update(
504
- $this->db,
505
- array(
506
- 'id' => $data_id,
507
- 'url_key' => $url_key,
508
- 'url' => $url,
509
- 'site_name' => $site_name,
510
- 'domain' => $domain,
511
- 'link_type' => $link_type,
512
- 'title' => $title,
513
- 'excerpt' => $excerpt,
514
- 'result_code' => $result_code,
515
- 'post_id' => get_the_ID(),
516
- 'sns_twitter' => $sns_twitter,
517
- 'sns_facebook' => $sns_facebook,
518
- 'sns_hatena' => $sns_hatena,
519
- 'uptime' => current_time('U'),
520
- 'nexttime' => current_time('U') + 43200 + rand(0, 21600),
521
- ),
522
- array(
523
- 'url_key' => $url_key
524
- )
525
- );
526
- if (!$result) {
527
- // 更新できなかったら挿入
528
- $result = $wpdb->insert(
529
- $this->db,
530
- array(
531
- 'url_key' => $url_key,
532
- 'url' => $url,
533
- 'site_name' => $site_name,
534
- 'domain' => $domain,
535
- 'link_type' => $link_type,
536
- 'title' => $title,
537
- 'excerpt' => $excerpt,
538
- 'result_code' => $result_code,
539
- 'post_id' => get_the_ID(),
540
- 'sns_twitter' => $sns_twitter,
541
- 'sns_facebook' => $sns_facebook,
542
- 'sns_hatena' => $sns_hatena,
543
- 'uptime' => current_time('U'),
544
- 'nexttime' => current_time('U') + 7200 + rand(0, 3600),
545
- 'regist' => current_time('mysql')
546
- )
547
- );
548
- }
549
- if ($result) {
550
  $update = false;
551
  }
552
  }
553
 
554
- // 保存期間満了でソーシャルカウントをリセット
555
- // if (current_time('U') - $uptime > $this->options['cache-time']) {
556
- // if (current_time('U') - $uptime > 10) {
557
- if (current_time('U') > $nexttime && $result_code <= 200) {
558
- $sns_renew = true;
559
- $update_cnt = true;
560
- } else {
561
- $sns_renew = false;
562
- }
563
-
564
  // ソーシャルカウント
565
  $sns = null;
566
  $sns_info = null;
567
  $sns_title = null;
 
568
  if (!$error && (isset($this->options['sns-position']) ? $this->options['sns-position'] : null)) {
569
  $opt = array( 'timeout' => 5 );
570
 
571
- if (isset($this->options['sns-twitter'])) {
572
- $count = $sns_twitter;
573
- $count_before = $count;
574
- if ($sns_renew || $count < 0) {
575
- $result = wp_remote_get( 'http://urls.api.twitter.com/1/urls/count.json?url=' .rawurlencode($url), $opt );
576
- if (!isset($result) || is_wp_error($result)) {
577
- $count = 0;
578
- } elseif ($result['response']['code'] <> 200) {
579
- $count = -1;
580
- } else {
581
- $count = json_decode($result['body'])->count - 0;
582
- }
583
- if ($count <> $count_before) {
584
- $sns_twitter = $count;
585
- $update_cnt = true;
 
 
 
 
 
 
 
 
 
586
  }
587
  }
588
  }
589
- if (isset($this->options['sns-facebook'])) {
590
- $count = $sns_facebook;
591
  $count_before = $count;
592
  if ($sns_renew || $count < 0) {
593
  $result = wp_remote_get( 'http://graph.facebook.com/?id=' .rawurlencode($url), $opt );
@@ -600,13 +550,13 @@ class Pz_LinkCard {
600
  $count = (isset($json->shares) ? isset($json->shares) : 0) - 0;
601
  }
602
  if ($count <> $count_before) {
603
- $sns_facebook = $count;
604
  $update_cnt = true;
605
  }
606
  }
607
  }
608
- if (isset($this->options['sns-hatena'])) {
609
- $count = $sns_hatena;
610
  $count_before = $count;
611
  if ($sns_renew || $count < 0) {
612
  $result = wp_remote_get( 'http://api.b.st-hatena.com/entry.count?url=' .rawurlencode($url), $opt );
@@ -618,7 +568,7 @@ class Pz_LinkCard {
618
  $count = $result['body'] - 0;
619
  }
620
  if ($count <> $count_before) {
621
- $sns_hatena = $count;
622
  $update_cnt = true;
623
  }
624
  }
@@ -626,13 +576,25 @@ class Pz_LinkCard {
626
 
627
  $sns = '<span class="linkcard-share">';
628
  if ((isset($this->options['link-all']) ? $this->options['link-all'] : null) == '1') {
629
- if ($sns_twitter > 0) $sns .= ' <span class="linkcard-sns-twitter no_icon">' .$sns_twitter .'&nbsp;tweet' .(($sns_twitter > 1) ? 's' : '').'</span>';
630
- if ($sns_facebook > 0) $sns .= ' <span class="linkcard-sns-facebook no_icon">' .$sns_facebook .'&nbsp;share' .(($sns_facebook > 1) ? 's' : '').'</span>';
631
- if ($sns_hatena > 0) $sns .= ' <span class="linkcard-sns-hatena no_icon">' .$sns_hatena .'&nbsp;user' .(($sns_hatena > 1) ? 's' : '').'</span>';
 
 
 
 
 
 
632
  } else {
633
- if ($sns_twitter > 0) $sns .= ' <a class="linkcard-sns-twitter no_icon" href="https://twitter.com/intent/tweet?url=' .rawurlencode($url).'&text='.esc_html($title).'" target="_blank">' .$sns_twitter .'&nbsp;tweet' .(($count > 1) ? 's' : '').'</a>';
634
- if ($sns_facebook > 0) $sns .= ' <a class="linkcard-sns-facebook no_icon" href="https://www.facebook.com/sharer/sharer.php?u="' .rawurlencode($url).' target="_blank">' .$sns_facebook .'&nbsp;share' .(($count > 1) ? 's' : '').'</a>';
635
- if ($sns_hatena > 0) $sns .= ' <a class="linkcard-sns-hatena no_icon" href="http://b.hatena.ne.jp/entry/' .rawurlencode($url).'" target="_blank">' .$sns_hatena .'&nbsp;user' .(($count > 1) ? 's' : '').'</a>';
 
 
 
 
 
 
636
  }
637
  $sns .= '</span>';
638
 
@@ -652,8 +614,8 @@ class Pz_LinkCard {
652
  if (isset($this->options['thumbnail-api'])) {
653
  $thumbnail = preg_replace('/%DOMAIN_URL%/', $domain_url, $this->options['thumbnail-api'] );
654
  $thumbnail = preg_replace('/%DOMAIN%/', $domain, $thumbnail);
655
- $thumbnail = preg_replace('/%URL%/', $url_esc, $thumbnail);
656
- $thumbnail = '<img class="linkcard-thumbnail-image" src="'.$thumbnail.'">';
657
  }
658
  }
659
  }
@@ -667,21 +629,21 @@ class Pz_LinkCard {
667
  if (isset($this->options['favicon-api'])) {
668
  $favicon = preg_replace('/%DOMAIN_URL%/', $domain_url, $this->options['favicon-api'] );
669
  $favicon = preg_replace('/%DOMAIN%/', $domain, $favicon);
670
- $favicon = preg_replace('/%URL%/', $url_esc, $favicon);
671
- $favicon = '<img class="linkcard-favicon" src="'.$favicon.'" />';
672
  }
673
  }
674
  }
675
 
676
  if ($update_cnt) { // ソーシャルカウントのみ更新
677
  $wpdb->update(
678
- $this->db,
679
  array(
680
- 'sns_twitter' => $sns_twitter,
681
- 'sns_facebook' => $sns_facebook,
682
- 'sns_hatena' => $sns_hatena,
683
- 'uptime' => current_time('U'),
684
- 'nexttime' => current_time('U') + 43200 + rand(0, 21600),
685
  ),
686
  array(
687
  'url' => $url
@@ -693,21 +655,10 @@ class Pz_LinkCard {
693
 
694
  // タイトル
695
  if (!isset($title) || $title == '') {
696
- $title = esc_html($url); // タイトル取得できていなかったらURLをセットする
697
- $title = mb_strimwidth($title, 0, 200, '...'); // 200文字で切る
698
  }
699
 
700
  // パラメータ取得(タイトル・抜粋文)
701
- switch (isset($this->options['use-inline']) ? $this->options['use-inline'] : null) {
702
- case '1':
703
- $title = '';
704
- $excerpt = isset($content) ? $content : '';
705
- break;
706
- case '2':
707
- $title = isset($content) ? $content : '';
708
- $excerpt = '';
709
- break;
710
- }
711
  if (isset($atts['title'])) { // titleパラメータ
712
  $title = $atts['title'];
713
  $excerpt = '';
@@ -722,6 +673,28 @@ class Pz_LinkCard {
722
  }
723
  }
724
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
725
  // サイト名称を使わない場合、ドメイン名で上書き
726
  if (is_null($this->options['use-sitename']) || $site_name == '') {
727
  $site_name = $domain;
@@ -783,5 +756,221 @@ class Pz_LinkCard {
783
  }
784
  return $tag;
785
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
786
  }
787
- $Pz_LinkCard = new Pz_LinkCard;
3
  Plugin Name: Pz-LinkCard
4
  Plugin URI: http://poporon.poponet.jp/pz-linkcard
5
  Description: リンクをカード形式で表示します。
6
+ Version: 1.1.0
7
  Author: poporon
8
  Author URI: http://poporon.poponet.jp
9
  License: GPLv2 or later
12
  defined('ABSPATH') || die;
13
 
14
  class Pz_LinkCard {
15
+ public $slug; // slug
16
+ public $text_domain; // as slug
17
 
18
+ public $charset;
19
 
20
+ public $plugin_basename;
21
+ public $plugin_dir_path;
22
+ public $plugin_dir_url;
23
+ public $plugin_link; // link to plugin page
24
+ private $db_name;
25
 
26
  public $options;
27
+ protected $defaults = array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  'code1' => 'blogcard',
29
  'code2' => null,
30
  'code3' => null,
48
  'display-excerpt' => '1',
49
  'trim-count' => 250,
50
  'info-position' => '1',
51
+ 'separator' => null,
52
  'size-info' => '12px',
53
  'size-title' => '16px',
54
  'size-url' => '9px',
69
  'ex-info' => null,
70
  'in-info' => null,
71
  'th-info' => null,
72
+ 'in-target' => null,
73
+ 'ex-target' => '2',
74
  'ex-thumbnail' => '0',
75
  'in-thumbnail' => '1',
76
  'ex-favicon' => '3',
77
  'in-favicon' => '1',
78
  'favicon-api' => 'http://www.google.com/s2/favicons?domain=%DOMAIN%',
79
+ 'thumbnail-api' => 'http://s.wordpress.com/mshots/v1/%URL%?w=100',
80
  'thumbnail-position'=> '2',
81
  'thumbnail-shadow' => '1',
82
+ 'cache-time' => 31536000,
83
  'style-reset-img' => '1',
84
  'style' => null,
85
  'css-file' => null,
86
  'css-path' => null,
87
  'css-url' => null,
 
88
  'sns-position' => '2',
89
+ 'sns-tw' => '1',
90
+ 'sns-fb' => '1',
91
+ 'sns-hb' => '1',
92
  'link-all' => '1',
93
  'blockquote' => null,
94
  'nofollow' => null,
95
  'plugin-link' => null,
96
  'plugin-name' => 'Pz-LinkCard',
97
+ 'plugin-version' => '1.1.0',
98
  'plugin-url' => 'http://poporon.poponet.jp/pz-linkcard',
99
  'pz-hbc-options' => null,
100
+ 'debug-time' => null
 
101
  );
102
+
103
+ public function __construct() {
104
+ $this->slug = basename(dirname(__FILE__));
105
+ $this->text_domain = $this->slug;
106
+
107
+ $this->charset = get_bloginfo('charset');
108
+
109
+ $this->plugin_basename = plugin_basename(__FILE__);
110
+ $this->plugin_dir_path = plugin_dir_path(__FILE__);
111
+ $this->plugin_dir_url = plugin_dir_url (__FILE__);
112
+
113
  $this->options = get_option('Pz_LinkCard_options', $this->defaults );
114
 
115
  // DB
116
  global $wpdb;
117
+ $this->db_name = $wpdb->prefix.'pz_linkcard';
118
 
119
  // バージョンが上がっていたら、オプションを更新する
120
  if ($this->options['plugin-version'] < $this->defaults['plugin-version']) {
121
+ $this->activation();
122
  }
123
 
124
  // CSS URLが空だったら生成
128
 
129
  // ショートコードの設定
130
  if ($this->options['code1'] <> '') {
131
+ add_shortcode($this->options['code1'], array($this, 'shortcode'));
132
  }
133
  if ($this->options['code2'] <> '') {
134
+ add_shortcode($this->options['code2'], array($this, 'shortcode'));
135
  }
136
  if ($this->options['code3'] <> '') {
137
+ add_shortcode($this->options['code3'], array($this, 'shortcode'));
138
  }
139
  if ($this->options['code4'] <> '') {
140
+ add_shortcode($this->options['code4'], array($this, 'shortcode'));
141
  }
142
 
143
  // 管理画面のとき
144
  if (is_admin()) {
145
+ load_plugin_textdomain ($this->text_domain, false, $this->slug.'/languages' ); // 管理画面のみ日本語化
146
+ register_activation_hook (__FILE__, array($this, 'activation')); // 有効化したときの処理
147
+ register_deactivation_hook (__FILE__, array($this, 'deactivation')); // 無効化したときの処理
148
+ add_action ('admin_menu', array($this, 'add_menu')); // 設定メニュー
149
+ add_action ('admin_enqueue_scripts', array($this, 'enqueue_admin')); // 設定メニュー用スクリプト
150
+ add_filter ('plugin_action_links_'.$this->plugin_basename, array($this, 'action_links')); // プラグイン画面
151
 
152
  if ((isset($this->options['style']) ? $this->options['style'] : '') == '') {
153
  if (is_null($this->options['css-path']) || !file_exists($this->options['css-path'])) {
160
  require_once ('pz-linkcard-style.php');
161
  }
162
  }
163
+ add_action ('wp_enqueue_scripts', array($this, 'enqueue'));
164
  }
165
  }
166
 
167
+ public function shortcode($atts, $content = null, $shortcode) {
168
+ $url = isset($atts['url']) ? $this->pz_TrimURL($atts['url']) : null;
169
+
170
+ // パラメータ
171
+ $s_title = isset($atts['title']) ? $atts['title'] : null;
172
+ if (isset($atts['content'])) {
173
+ $s_excerpt = $atts['content'];
174
+ } elseif (isset($atts['contents'])) {
175
+ $s_excerpt = $atts['contents'];
176
+ } elseif (isset($atts['description'])) {
177
+ $s_excerpt = $atts['description'];
178
  } else {
179
+ $s_excerpt = null;
 
 
180
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
181
 
182
+ // 囲まれ文字(ショートコード1のみ有効)
183
+ if ($shortcode == $this->options['code1']) {
184
+ switch (isset($this->options['use-inline']) ? $this->options['use-inline'] : null) {
185
+ case '1':
186
+ $s_excerpt = isset($content) ? $content : '';
187
+ break;
188
+ case '2':
189
+ $s_title = isset($content) ? $content : '';
190
+ break;
191
+ }
192
+ }
193
 
194
+ $tag = $this->pz_GetHTML(array('url' => $url, 'title' => $s_title, 'content' => $s_excerpt));
195
+ return $tag;
196
  }
197
 
198
+ function pz_TrimURL($url = null) {
199
+ if (!isset($url) || $url == '') {
200
+ $url = null;
201
+ } else {
202
+ $url = html_entity_decode($url);
203
+ $url = preg_replace('/^[\s \'\"‘’“”″]*(.*?)[\s \'\"‘’“”″]*$/u', '\1', $url);
204
+ $url = htmlentities($url);
205
+ $url = esc_url($url); // プロトコル除外など
206
+ }
207
+ return $url;
208
  }
209
 
210
+ function pz_GetHTML($atts,$content = null) {
211
  global $wpdb;
212
 
213
  $update = false;
214
  $update_cnt = false;
215
  $error = false;
216
+ $data = null;
217
+
218
+ // リンク先URL
219
+ $url = isset($atts['url']) ? $this->pz_TrimURL($atts['url']) : null;
220
 
221
+ // 時間計測
222
  if (is_user_logged_in()) {
 
223
  $start_time = microtime(true);
224
  }
225
 
226
+ // URLエンコード
227
+ $url_esc = urlencode($url);
 
228
 
229
  // リンク先URLからドメイン名を抽出
230
  if (preg_match('{https?://(.+?)/}i', $url.'/',$m)) {
238
 
239
  // 自サイトチェック
240
  if (preg_match('{'.home_url().'\/.*?}', $url.'/')) {
241
+ if (get_permalink() == $url) {
242
  $link_type = 1; // 自ページ
243
  } else {
244
  $link_type = 2; // 自サイト内
245
  }
246
  $target = ''; // 同ページに開く
247
+ if (isset($this->options['in-target'])) {
248
+ if ($this->options['in-target'] == '1' || ($this->options['in-target'] == '2' && function_exists('wp_is_mobile') && !wp_is_mobile())) {
249
+ $target = ' target="_blank"'; // 新しいページで開く
250
+ }
251
+ }
252
  $nofollow = '';
253
  } else {
254
  $link_type = 0; // 外部サイト
255
+ $target = ''; // 同ページに開く
256
+ if (isset($this->options['ex-target'])) {
257
+ if ($this->options['ex-target'] == '1' || ($this->options['ex-target'] == '2' && function_exists('wp_is_mobile') && !wp_is_mobile())) {
258
+ $target = ' target="_blank"'; // 新しいページで開く
259
+ }
260
+ }
261
  $nofollow = isset($this->options['nofollow']) ? ' rel="nofollow"' : '';
262
  }
263
 
264
  // URLをキーにしてDBからキャッシュ取得
265
+ $data['id'] = null;
266
+ $data['url_key'] = null;
267
+ $data['site_name'] = null;
268
+ $data['title'] = null;
269
+ $data['excerpt'] = null;
270
+ $data['charset'] = null;
271
+ $data['thumbnail'] = null;
272
+ $data['favicon'] = null;
273
+ $data['result_code'] = null;
274
+ $data['post_id'] = get_the_ID();
275
+ $data['sns_twitter'] = -1;
276
+ $data['sns_facebook'] = -1;
277
+ $data['sns_hatena'] = -1;
278
+ $data['uptime'] = null;
279
+ $data['nexttime'] = 0;
280
+ if (isset($url) && $url) {
281
+ $data['url'] = $url;
282
+ $result = $this->pz_GetCache($data);
283
+ if (isset($result) && is_array($result) && isset($result['url'])) {
284
+ $data = $result;
285
+ }
286
+ }
287
+ $data_id = $data['id'];
288
+ $url_key = $data['url_key'];
289
+ $site_name = $data['site_name'];
290
+ $title = $data['title'];
291
+ $excerpt = $data['excerpt'];
292
+ $charset = $data['charset'];
293
+ $thumbnail_url = $data['thumbnail'];
294
+ $favicon_url = $data['favicon'];
295
+ $result_code = $data['result_code'];
296
+ $post_id = $data['post_id'];
297
+ $sns_tw = $data['sns_twitter'];
298
+ $sns_fb = $data['sns_facebook'];
299
+ $sns_hb = $data['sns_hatena'];
300
+ $uptime = $data['uptime'];
301
+ $nexttime = $data['nexttime'];
302
+
303
+ $thumbnail = null;
304
+ $favicon = null;
305
 
306
  if ($link_type) { // 自サイト内はキャッシュがあっても常に取得する
307
  if (is_null($data_id)) {
310
 
311
  if ($link_type == '1') {
312
  $info = isset($this->options['th-info']) ? $this->options['th-info'] : '' ;
313
+ $wrap_op = '<div class="linkcard-this-wrapper">';
314
  $wrap_cl = '</div>';
315
  } else {
316
  $info = isset($this->options['in-info']) ? $this->options['in-info'] : '' ;
317
+ $wrap_op = '<div class="linkcard-internal-wrapper">';
318
  $wrap_cl = '</div>';
319
  }
320
+ $site_name = get_bloginfo('name'); // サイト名
321
+ $id = url_to_postid($url); // 記事ID
322
+ if ($id) {
323
+ $post = get_post($id); // 記事情報
324
+ } else {
325
+ $post = null;
326
+ }
327
 
 
 
328
  // タイトル取得
329
  if ($id) {
330
  if (!$title) {
334
  }
335
  }
336
  } else {
337
+ $result_code = -1;
338
  if (!$title) {
339
  $title = get_bloginfo('name'); // サイト名
340
  if (!$excerpt) {
350
  $sw_favicon = isset($this->options['in-favicon']) ? $this->options['in-favicon'] : '0' ;
351
  if ($sw_favicon == '1') {
352
  if (function_exists('has_site_icon')) {
353
+ $favicon = '<img class="linkcard-favicon" src="'.get_site_icon_url(16, '', 0).'" alt="" />';
354
  } else {
355
  $sw_favicon = isset($this->options['ex-favicon']) ? $this->options['ex-favicon'] : '0' ;
356
  }
373
  }
374
  return $tag;
375
 
376
+ } elseif (is_null($data_id) || (isset($atts['force']) && $atts['force'] == true)) { // キャッシュ無、または前回エラー
377
  // リンク先サイト取得
378
  $html = null;
379
  $error = true;
384
  $error = false;
385
  $update = true;
386
 
387
+ $result_code = -1;
388
  } else {
389
  $result_code = $result['response']['code'];
390
+ if ($result_code >= 100 && $result_code <= 499 ) {
391
  $error = false;
392
  $update = true;
393
 
394
+ $html = $result['body'];
395
+ $charset = null;
396
+ foreach(array('UTF-8','SJIS','EUC-JP','ASCII','JIS') as $c_charset) {
397
+ if (mb_convert_encoding($html, $this->charset, $c_charset) == $html) {
398
+ $charset = $c_charset;
399
+ $html = mb_convert_encoding($html, $this->charset, $charset);
400
+ }
401
+ }
402
+ if (is_null($charset)) {
403
+ $charset = 'auto';
404
+ $html = mb_convert_encoding($html, $this->charset, 'ASCII,JIS,UTF-7,EUC-JP,SJIS,UTF-8');
405
+ }
406
  $tags = null;
407
 
408
  // HEADタグ
409
  $head = null;
410
+ if (preg_match('/<\s*head\s*[^>]*>(.*)<\s*\/head\s*>/si', $html, $m)) {
411
  $head = $m[1];
412
  }
413
 
414
+ $tags = null;
415
+ $tags = $this->pz_GetMeta($head);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
416
 
417
  // タイトル
418
+ if (isset( $tags['og:title'] ) && $tags['og:title'] ) {
419
+ $title = $tags['og:title'] ;
420
+ } elseif (isset( $tags['title'] ) && $tags['title'] ) {
421
+ $title = $tags['title'] ;
422
  }
423
 
424
  // 抜粋文・概要文
425
+ if (isset( $tags['og:description'] ) && $tags['og:description'] ) {
426
+ $excerpt = $tags['og:description'] ;
427
+ } elseif (isset( $tags['description'] ) && $tags['description'] ) {
428
+ $excerpt = $tags['description'] ;
429
+ } elseif (isset( $tags['first-p'] ) && $tags['first-p'] ) {
430
+ $excerpt = $tags['first-p'] ;
431
  }
432
 
433
  // // OGPから画像URL取得
434
  // if ($sw_thumbnail == '1' && isset($tags['og:image'])) {
435
  // $thumbnail_url = $tags['og:image'];
436
+ // $thumbnail = '<img class="linkcard-thumbnail-image" src="'.$thumbnail_url.'" alt="" />';
437
  // }
438
 
439
  // // サイト名
440
+ if (isset( $tags['og:site_name'] ) && $tags['og:site_name'] ) {
441
+ $site_name = $tags['og:site_name'] ;
442
  }
443
 
444
  }
448
 
449
  // タイトル整形
450
  if (isset($title)) {
451
+ $str = $title;
452
+ $str = strip_tags($str); // タグの除去
453
+ $str = str_replace(array("\r", "\n"), '', $str); // 改行削除
454
+ $str = esc_html($str); // 念のためエスケープ
455
+ $str = mb_strimwidth($str, 0, 200, '...'); // タイトルは無条件で200文字で切る
456
+ $title = $str;
457
  }
 
458
  // 抜粋文整形
459
  if (isset($excerpt)) {
460
+ $str = $excerpt;
461
+ $str = strip_tags($str); // タグの除去
462
+ $str = preg_replace('/<!--more-->.+/is', '', $str); // moreタグ以降削除
463
+ $str = preg_replace('/\[[^]]*\]/', '', $str); // ショートコードすべて除去
464
+ $str = str_replace(array("\r", "\n"), '', $str); // 改行削除
465
+ $str = esc_html($str); // 念のためエスケープ
466
+ $str = mb_strimwidth($str, 0, 500, '...'); // ここでは500文字で切る
467
+ $excerpt = $str;
468
  }
469
 
470
  // 取得エラーなし・取得または更新あり
471
  if (!$error && $update && $url) {
472
+ if (isset($data_id) && !is_null($data_id)) {
473
+ $data['id'] = $data_id;
474
+ }
475
+ if (isset($url_key) && !is_null($url_key)) {
476
+ $data['url_key'] = $url_key;
477
+ }
478
+ $data['url'] = $url;
479
+ $data['link_type'] = $link_type;
480
+ $data['site_name'] = $site_name;
481
+ $data['domain'] = $domain;
482
+ $data['title'] = $title;
483
+ $data['excerpt'] = $excerpt;
484
+ $data['charset'] = $charset;
485
+ $data['thumbnail'] = $thumbnail_url;
486
+ $data['favicon'] = $favicon_url;
487
+ $data['result_code'] = $result_code;
488
+ $data['sns_twitter'] = $sns_tw;
489
+ $data['sns_facebook'] = $sns_fb;
490
+ $data['sns_hatena'] = $sns_hb;
491
+ $data['uptime'] = $uptime;
492
+ $data['nexttime'] = $nexttime;
493
+ if (isset($atts['force']) && $atts['force'] == true) {
494
+ $data['regist'] = current_time('mysql'); // 登録日
495
  }
496
 
497
+ $data = $this->pz_SetCache($data);
498
+
499
+ if (isset($data['id'])) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
500
  $update = false;
501
  }
502
  }
503
 
 
 
 
 
 
 
 
 
 
 
504
  // ソーシャルカウント
505
  $sns = null;
506
  $sns_info = null;
507
  $sns_title = null;
508
+ $sns_renew = false;
509
  if (!$error && (isset($this->options['sns-position']) ? $this->options['sns-position'] : null)) {
510
  $opt = array( 'timeout' => 5 );
511
 
512
+ // 保存期間満了でソーシャルカウントをリセット
513
+ $now = current_time('timestamp');
514
+ if ($now > $nexttime && $result_code <= 200) {
515
+ $sns_renew = true;
516
+ $update_cnt = true;
517
+ }
518
+
519
+ if ($now < 1447945200) { // 2015年11月20日以降ツイッターの取得をしない
520
+ if (isset($this->options['sns-tw']) && !is_null($this->options['sns-tw'])) {
521
+ $count = $sns_tw;
522
+ $count_before = $count;
523
+ if ($sns_renew || $count < 0) {
524
+ $result = wp_remote_get( 'http://urls.api.twitter.com/1/urls/count.json?url=' .rawurlencode($url), $opt );
525
+ if (!isset($result) || is_wp_error($result)) {
526
+ $count = 0;
527
+ } elseif ($result['response']['code'] <> 200) {
528
+ $count = -1;
529
+ } else {
530
+ $count = json_decode($result['body'])->count - 0;
531
+ }
532
+ if ($count <> $count_before) {
533
+ $sns_tw = $count;
534
+ $update_cnt = true;
535
+ }
536
  }
537
  }
538
  }
539
+ if (isset($this->options['sns-fb']) && !is_null($this->options['sns-fb'])) {
540
+ $count = $sns_fb;
541
  $count_before = $count;
542
  if ($sns_renew || $count < 0) {
543
  $result = wp_remote_get( 'http://graph.facebook.com/?id=' .rawurlencode($url), $opt );
550
  $count = (isset($json->shares) ? isset($json->shares) : 0) - 0;
551
  }
552
  if ($count <> $count_before) {
553
+ $sns_fb = $count;
554
  $update_cnt = true;
555
  }
556
  }
557
  }
558
+ if (isset($this->options['sns-hb']) && !is_null($this->options['sns-hb'])) {
559
+ $count = $sns_hb;
560
  $count_before = $count;
561
  if ($sns_renew || $count < 0) {
562
  $result = wp_remote_get( 'http://api.b.st-hatena.com/entry.count?url=' .rawurlencode($url), $opt );
568
  $count = $result['body'] - 0;
569
  }
570
  if ($count <> $count_before) {
571
+ $sns_hb = $count;
572
  $update_cnt = true;
573
  }
574
  }
576
 
577
  $sns = '<span class="linkcard-share">';
578
  if ((isset($this->options['link-all']) ? $this->options['link-all'] : null) == '1') {
579
+ if (isset($this->options['sns-tw']) && !is_null($this->options['sns-tw']) && $sns_tw > 0) {
580
+ $sns .= ' <span class="linkcard-sns-twitter no_icon">' .$sns_tw .'&nbsp;tweet' .(($sns_tw > 1) ? 's' : '').'</span>';
581
+ }
582
+ if (isset($this->options['sns-fb']) && !is_null($this->options['sns-fb']) && $sns_fb > 0) {
583
+ $sns .= ' <span class="linkcard-sns-facebook no_icon">' .$sns_fb .'&nbsp;share' .(($sns_fb > 1) ? 's' : '').'</span>';
584
+ }
585
+ if (isset($this->options['sns-hb']) && !is_null($this->options['sns-hb']) && $sns_hb > 0) {
586
+ $sns .= ' <span class="linkcard-sns-hatena no_icon">' .$sns_hb .'&nbsp;user' .(($sns_hb > 1) ? 's' : '').'</span>';
587
+ }
588
  } else {
589
+ if (isset($this->options['sns-tw']) && !is_null($this->options['sns-tw']) && $sns_tw > 0) {
590
+ $sns .= ' <a class="linkcard-sns-twitter no_icon" href="https://twitter.com/intent/tweet?url=' .rawurlencode($url).'&text='.esc_html($title).'" target="_blank">' .$sns_tw .'&nbsp;tweet' .(($count > 1) ? 's' : '').'</a>';
591
+ }
592
+ if (isset($this->options['sns-fb']) && !is_null($this->options['sns-fb']) && $sns_fb > 0) {
593
+ $sns .= ' <a class="linkcard-sns-facebook no_icon" href="https://www.facebook.com/sharer/sharer.php?u="' .rawurlencode($url).' target="_blank">' .$sns_fb .'&nbsp;share' .(($count > 1) ? 's' : '').'</a>';
594
+ }
595
+ if (isset($this->options['sns-hb']) && !is_null($this->options['sns-hb']) && $sns_hb > 0) {
596
+ $sns .= ' <a class="linkcard-sns-hatena no_icon" href="http://b.hatena.ne.jp/entry/' .rawurlencode($url).'" target="_blank">' .$sns_hb .'&nbsp;user' .(($count > 1) ? 's' : '').'</a>';
597
+ }
598
  }
599
  $sns .= '</span>';
600
 
614
  if (isset($this->options['thumbnail-api'])) {
615
  $thumbnail = preg_replace('/%DOMAIN_URL%/', $domain_url, $this->options['thumbnail-api'] );
616
  $thumbnail = preg_replace('/%DOMAIN%/', $domain, $thumbnail);
617
+ $thumbnail = preg_replace('/%URL%/', rawurlencode($url), $thumbnail);
618
+ $thumbnail = '<img class="linkcard-thumbnail-image" src="'.$thumbnail.'" alt="" />';
619
  }
620
  }
621
  }
629
  if (isset($this->options['favicon-api'])) {
630
  $favicon = preg_replace('/%DOMAIN_URL%/', $domain_url, $this->options['favicon-api'] );
631
  $favicon = preg_replace('/%DOMAIN%/', $domain, $favicon);
632
+ $favicon = preg_replace('/%URL%/', rawurlencode($url), $favicon);
633
+ $favicon = '<img class="linkcard-favicon" src="'.$favicon.'" alt="" />';
634
  }
635
  }
636
  }
637
 
638
  if ($update_cnt) { // ソーシャルカウントのみ更新
639
  $wpdb->update(
640
+ $this->db_name,
641
  array(
642
+ 'sns_twitter' => $sns_tw,
643
+ 'sns_facebook' => $sns_fb,
644
+ 'sns_hatena' => $sns_hb,
645
+ 'uptime' => current_time('timestamp'),
646
+ 'nexttime' => current_time('timestamp') + 43200 + rand(0, 21600),
647
  ),
648
  array(
649
  'url' => $url
655
 
656
  // タイトル
657
  if (!isset($title) || $title == '') {
658
+ $title = esc_html($url); // タイトル取得できていなかったらURLをセットする
 
659
  }
660
 
661
  // パラメータ取得(タイトル・抜粋文)
 
 
 
 
 
 
 
 
 
 
662
  if (isset($atts['title'])) { // titleパラメータ
663
  $title = $atts['title'];
664
  $excerpt = '';
673
  }
674
  }
675
 
676
+ // タイトル整形
677
+ if (isset($title)) {
678
+ $str = $title;
679
+ $str = strip_tags($str); // タグの除去
680
+ $str = str_replace(array("\r", "\n"), '', $str); // 改行削除
681
+ $str = esc_html($str); // 念のためエスケープ
682
+ $str = mb_strimwidth($str, 0, 200, '...'); // タイトルは無条件で200文字で切る
683
+ $title = $str;
684
+ }
685
+
686
+ // 抜粋文整形
687
+ if (isset($excerpt)) {
688
+ $str = $excerpt;
689
+ $str = strip_tags($str); // タグの除去
690
+ $str = preg_replace('/<!--more-->.+/is', '', $str); // moreタグ以降削除
691
+ $str = preg_replace('/\[[^]]*\]/', '', $str); // ショートコードすべて除去
692
+ $str = str_replace(array("\r", "\n"), '', $str); // 改行削除
693
+ $str = esc_html($str); // 念のためエスケープ
694
+ $str = mb_strimwidth($str, 0, 500, '...'); // ここでは500文字で切る
695
+ $excerpt = $str;
696
+ }
697
+
698
  // サイト名称を使わない場合、ドメイン名で上書き
699
  if (is_null($this->options['use-sitename']) || $site_name == '') {
700
  $site_name = $domain;
756
  }
757
  return $tag;
758
  }
759
+
760
+ public function pz_GetCache($data) {
761
+ global $wpdb;
762
+ if (!isset($data) || !is_array($data)) {
763
+ return null;
764
+ }
765
+ if (isset($data['url']) && !is_null($data['url'])) {
766
+ $url = $this->pz_TrimURL($data['url']);
767
+ $data = $wpdb->get_row($wpdb->prepare("SELECT * FROM $this->db_name WHERE url=%s", $url));
768
+ } elseif (isset($data['id']) && !is_null($data['id'])) {
769
+ $id = intval($data['id']);
770
+ $data = $wpdb->get_row($wpdb->prepare("SELECT * FROM $this->db_name WHERE id=%d", $id));
771
+ } else {
772
+ return null;
773
+ }
774
+ if (is_wp_error($data)) {
775
+ return null;
776
+ }
777
+ return (array) $data; // Arrayに直して戻す
778
+ }
779
+
780
+ public function pz_SetCache($data) {
781
+ global $wpdb;
782
+ if (!isset($data) || !is_array($data)) {
783
+ return null;
784
+ }
785
+ if (!isset($data['url']) || is_null($data['url'])) {
786
+ return null;
787
+ }
788
+ $url = $this->pz_TrimURL($data['url']);
789
+ $data['url'] = $url;
790
+
791
+ if (!isset($data['url_key']) || is_null($data['url_key']) || $data['url_key'] == '' ) {
792
+ $data['url_key'] = hash('sha256', esc_url($url), true);
793
+ }
794
+
795
+ $data['uptime'] = current_time('timestamp');
796
+ // 更新してみる
797
+ if (isset($data['id']) && !is_null(isset($data['id']))) {
798
+ $result = $wpdb->update(
799
+ $this->db_name,
800
+ $data,
801
+ array(
802
+ 'id' => $data['id']
803
+ )
804
+ );
805
+ } else {
806
+ $result = $wpdb->update(
807
+ $this->db_name,
808
+ $data,
809
+ array(
810
+ 'url_key' => $data['url_key']
811
+ )
812
+ );
813
+ }
814
+ if (!$result) {
815
+ $data['regist'] = current_time('mysql'); // 登録日
816
+ // 更新できなかったら挿入
817
+ unset($data['id']);
818
+ $result = $wpdb->insert(
819
+ $this->db_name,
820
+ $data
821
+ );
822
+ // 挿入できなかったらエラー終了
823
+ if (!$result) {
824
+ return null;
825
+ }
826
+ }
827
+ return $this->pz_GetCache($data);
828
+ }
829
+
830
+ public function pz_DelCache($data) {
831
+ global $wpdb;
832
+ if (!isset($data) || !is_array($data)) {
833
+ return null;
834
+ }
835
+ if (isset($data['url']) && !is_null($data['url'])) {
836
+ $url = $this->pz_TrimURL($data['url']);
837
+ $result = $wpdb->delete($this->db_name, array('url' => $url), array('%s') );
838
+ return $result;
839
+ } elseif (isset($data['id']) && !is_null($data['id'])) {
840
+ $data_id = intval($data['id']);
841
+ $result = $wpdb->delete($this->db_name, array('id' => $data_id), array('%d') );
842
+ return $result;
843
+ }
844
+ return null;
845
+ }
846
+
847
+ function pz_GetMeta($html, $tags = null) {
848
+ // TITLEタグ
849
+ if (preg_match('/<\s*title\s*.*>\s*(.*)\s*<\s*\/title\s*>/si', $html, $m)) {
850
+ $tags['title'] = esc_html($m[1]);
851
+ }
852
+
853
+ // // 最初のPタグ(これは全体から)/ヘッダやメニューに<p>があることがあるので停止
854
+ // if (preg_match('/<p>\s*(.*)<\/p>/i', $html, $m)) {
855
+ // $tags['first-p'] = esc_html($m[1]);
856
+ // }
857
+
858
+ // metaタグ パース
859
+ $match = null;
860
+ preg_match_all('/\s*meta\s*name\s*=\s*([^>\/]*)\s+content\s*=\s*([^>\/]*)\s*\/?>/si', $html, $match);
861
+ if (isset($match) && is_array($match) && count($match) == 3) {
862
+ for ($i=0, $to_i=count($match[1]); $i < $to_i; $i++) {
863
+ $match[1][$i] = trim(trim($match[1][$i]), '\'\"' );
864
+ $match[2][$i] = trim(trim($match[2][$i]), '\'\"' );
865
+ $tags[$match[1][$i]] = esc_html($match[2][$i]);
866
+ }
867
+ }
868
+
869
+ // OGPパース
870
+ $match = null;
871
+ preg_match_all('/\s*meta\s*property\s*=\s*([^>\/]*)\s+content\s*=\s*([^>\/]*)\s*\/?>/si', $html, $match);
872
+ if (isset($match) && is_array($match) && count($match) == 3) {
873
+ for ($i=0, $to_i=count($match[1]); $i < $to_i; $i++) {
874
+ $match[1][$i] = trim(trim($match[1][$i]), '\'\"' );
875
+ $match[2][$i] = trim(trim($match[2][$i]), '\'\"' );
876
+ $tags[$match[1][$i]] = esc_html($match[2][$i]);
877
+ }
878
+ }
879
+
880
+ // OGPパース(順序逆パターン)
881
+ $match = null;
882
+ preg_match_all('/\s*meta\s*content\s*=\s*([^>\/]*)\s+property\s*=\s*([^>\/]*)\s*\/?>/si', $html, $match);
883
+ if (isset($match) && is_array($match) && count($match) == 3) {
884
+ for ($i=0, $to_i=count($match[1]); $i < $to_i; $i++) {
885
+ $match[1][$i] = trim(trim($match[1][$i]), '\'\"' );
886
+ $match[2][$i] = trim(trim($match[2][$i]), '\'\"' );
887
+ $tags[$match[1][$i]] = esc_html($match[2][$i]);
888
+ }
889
+ }
890
+ return $tags;
891
+ }
892
+
893
+ public function enqueue_admin($hook) {
894
+ wp_enqueue_style ('wp-color-picker');
895
+ wp_enqueue_script ('colorpicker-script', plugins_url('color-picker.js', __FILE__), array('wp-color-picker'), false, true);
896
+ }
897
+
898
+ public function enqueue($hook) {
899
+ if (!isset($this->options['style'])) {
900
+ wp_enqueue_style ('Pz-LinkCard', $this->options['css-url']);
901
+ } else {
902
+ if (isset($this->options['css-file'])) {
903
+ wp_enqueue_style('Pz-LinkCard', $this->options['css-file']);
904
+ }
905
+ }
906
+ }
907
+
908
+ public function add_menu() {
909
+ add_management_page (__('LinkCard cache manager', $this->text_domain),__('Pz LkC Cache', $this->text_domain),'manage_options', 'pz-linkcard-cache', array($this, 'page_cacheman') );
910
+ // add_management_page (__('LinkCard cache manager', $this->text_domain),__('Pz LkC Cache', $this->text_domain),'manage_options', 'pz-linkcard-cache', array('Pz_LinkCard_CacheMan', 'manager') );
911
+ add_options_page (__('LinkCard Settings', $this->text_domain),__('Pz LinkCard', $this->text_domain),'manage_options', 'pz-linkcard-settings', array($this, 'page_settings') );
912
+ }
913
+
914
+ public function page_cacheman() {
915
+ require_once('pz-linkcard-cacheman.php');
916
+ }
917
+
918
+ public function page_settings() {
919
+ require_once('pz-linkcard-settings.php');
920
+ }
921
+
922
+ public function activation() {
923
+ $this->options = get_option('Pz_LinkCard_options', $this->defaults);
924
+ if ($this->options['plugin-version'] < '1.0.2') {
925
+ $this->options['sns-tw'] =$this->options['sns-twitter'];
926
+ $this->options['sns-fb'] =$this->options['sns-facebook'];
927
+ $this->options['sns-hb'] =$this->options['sns-hatena'];
928
+ }
929
+ // $this->options += $this->defaults;
930
+
931
+ $this->options['plugin-version'] = $this->defaults['plugin-version'];
932
+ update_option('Pz_LinkCard_options', $this->options);
933
+
934
+ require_once('pz-linkcard-style.php');
935
+
936
+ global $wpdb;
937
+ $wpdb->hide_errors();
938
+ $this->db_name = $wpdb->prefix.'pz_linkcard';
939
+ $sql = "CREATE TABLE ".$this->db_name." (
940
+ id INT UNSIGNED NOT NULL AUTO_INCREMENT,
941
+ url_key VARBINARY(255) NOT NULL,
942
+ url VARCHAR(2048) NOT NULL DEFAULT '',
943
+ link_type INT UNSIGNED,
944
+ site_name VARCHAR(100) ,
945
+ domain VARCHAR(253) ,
946
+ title VARCHAR(200) ,
947
+ excerpt VARCHAR(500) ,
948
+ charset VARCHAR(32) ,
949
+ thumbnail VARCHAR(2048) ,
950
+ favicon VARCHAR(2048) ,
951
+ result_code INT ,
952
+ post_id INT UNSIGNED,
953
+ sns_twitter INT ,
954
+ sns_facebook INT ,
955
+ sns_hatena INT ,
956
+ sns_pocket INT ,
957
+ sns_gplus INT ,
958
+ uptime BIGINT UNSIGNED NOT NULL DEFAULT 0,
959
+ nexttime BIGINT UNSIGNED NOT NULL DEFAULT 0,
960
+ regist DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
961
+ PRIMARY KEY ( id ),
962
+ UNIQUE KEY ( url_key )
963
+ ) ".$wpdb->get_charset_collate()." ;";
964
+ require_once(ABSPATH.'wp-admin/includes/upgrade.php');
965
+ dbDelta($sql);
966
+ }
967
+
968
+ public function deactivation() {
969
+ }
970
+
971
+ public function action_links($links) {
972
+ $links = array( '<a href="options-general.php?page=pz-linkcard-settings">'.__('Settings', $this->text_domain).'</a>' , '<a href="tools.php?page=pz-linkcard-cache">'.__('Manage', $this->text_domain).'</a>' ) + $links;
973
+ return $links;
974
+ }
975
  }
976
+ $Pz_LinkCard = new Pz_LinkCard;
readme.txt CHANGED
@@ -1,4 +1,4 @@
1
- === Pz-HatenaBlogCard ===
2
  Contributors: poporon
3
  Tags: post, internal link, external link, blogcard, linkcard
4
  Requires at least: 4.3.0
@@ -7,140 +7,218 @@ Stable tag: trunk
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
10
- このプラグインはリンク先をブログカード形式で表示するものです。
11
 
12
  == Description ==
13
- このプラグインはショートコードでURLを指定することで、リンクをブログカード形式で表示させるものです。
14
-
15
- ショートコードは複数設定することができ、変更することができます。
16
-
17
- 外部リンクの場合をクリックすることで「新しいウィンドウ(タブ)」でリンクが開きます。
18
-
19
- 内部リンクの場合をクリックするとそのままのウィンドウでリンクが開きます。
20
-
21
-
22
- このプラグインは、有効化したときにDBテーブルを一つ作成します。(プレフィックス+「pz_linkcard」)
23
-
24
- 外部リンクを設定した場合、記事のページを開いて「初めて表示された」ときに、リンク先のサイトからタイトル・抜粋文を取得してDBへキャッシュします。
25
 
 
26
 
27
- カードの枚数分、外部サイトへのアクセスが発生するため、多量のカードを作成すると、サイト全体が重くなる可能性があります。
28
 
29
- 次回の表示はDBキャッシュから行うので高速に表示を行います。
30
 
31
- (内部でのDBアクセスが発生しますが、通常は軽微なものです。カード1枚表示のたびに、取得のために1クエリ発行します。更新が発生した場合には挿入・更新のためのクエリが1回発生します。)
32
 
 
33
 
34
- ソーシャルカウントについては、「ツイッターのツイート数」「フェイスブックのシェア数」「はてなブックマークのブックマーク数」の3種類に対応しています。
35
-
36
- それぞれAPIへのJSONリクエストにより値を取得します。
37
 
38
- これらのアクセスも遅い場合がありますが、取得した値はタイトルや抜粋文と同様、DBへキャッシュを行うため、直近の表示にはAPIアクセスが発生しません。
39
-
40
- ソーシャルカウントの再取得は、最後の取得から4時間~36時間程度のランダムな時間で行います。
41
 
42
- この間隔については、改善の余地があります。
43
 
44
- また、各APIについては、仕様変更やサービス終了に伴い、正常に取得できなくなる場合があります。
45
 
 
46
 
47
- サムネイルの取得については、相手サイトへの負担を考慮して、「取得しない」を標準での設定としています。
48
 
49
- ただし、「HeartRails」様のフリーで使用できるキャプチャ作成APIのアドレスを設定してあるので、「取得しない」→「WebAPIで取得」へ変更することで、キャプチャ付で表示することができます。
50
 
51
- HeartRails様のキャプチャ機能を使用する場合には、利用規約などを一読されてください。(通常に使用する場合には特に制限は無いかと思われます)
52
 
53
- http://capture.heartrails.com/
54
 
55
- 他の画像取得APIの設定については、Pz-HatenaBlogCard もしくは、Pz-LinkCard のページを参考にしてください。
56
 
 
57
 
58
- サイトアイコン(ファビコン)についても、同様にWebAPIを使用して取得しています。
59
 
60
- こちらは標準設定で「WebAPIで取得する」になっており、「Hatena::Favicon」のアドレスを設定しています。
61
 
62
- これは、リンク先のURLを入力することによって、サイトアイコンの画像が取得できるものです。
63
 
64
- 公式なサービスでは無いため、仕様変更やサービス終了に伴い、正常に取得できなくなく場合があります。
65
 
 
66
 
67
- Pz-HatenaBlogCard との互換性を持たせるため、外部リンクの場合にのみ「はてなブログカード」へ置き換えて表示する機能もあります。
68
 
69
- こちらの機能については、Pz-LinkCard の機能が活かせないため、非推奨とさせていただきます。Pz-HatenaBlogCard をご利用ください。
70
 
 
71
 
72
- Pz-HatenaBlogCard からの設定引き継ぎ機能はありません。この機会に触ったことのなかった設定項目にも触れていただければ幸いです。
73
 
74
- ショートコードを変えることで、Pz-HatenaBlogCard と併用利用することができますが、通常はリソースの消費が増えるだけなので、推奨はしません。
75
 
 
76
 
77
- リンクをクリックした場合、リンク元は記事のサイトになりますが、リンクそのものはショートコード内のため、WordPressピンバックは飛ばないようですのでご了承ください。
78
 
 
79
 
80
- 設定項目については、WordPress標準の options に設定内容を保存します。キーは「Pz-LinkCard_options」の1レコードです。
81
 
 
82
 
83
- なお、アンインストールを行う際には、キャッシュを保管するDBテーブルと、options内の設定ファイルは削除されます。
84
 
85
- アンインストール時の削除に関してはプラグインディレクトリ内の uninstall.php で行っています。
86
 
 
87
 
88
- まだ成熟したプラグインでは無いので、ご意見やご要望があればありがたくいただきたいと思います。
89
 
90
- しかしながら、趣味で行っているプログラムであるため、対応能力にも限界があることを了承いただけると幸いです。
91
 
 
92
 
93
- == Installation ==
94
- WordPressダッシュボードからのインストール
95
- 1. 「プラグイン」→「新規追加」を選びます
96
- 2. 「Pz-LinkCard」を検索します
97
- 3. プラグイン名と作者を確認していただき、「今すぐインストール」を押します
98
- 4. 「有効化する」を選び、有効化します
99
 
100
- WordPress.org からのダウンロードおよびインストール
101
- 1. WordPress.orgのプラグイン一覧から「Pz-LinkCard」を検索します
102
- 2. プラグイン名と作者を確認していただき、ダウンロードします
103
- 3. WordPressをインストールしているディレクトリ配下の、「/wp-content/plugins」ディレクトリ配下に「pz-linkcard」ディレクトリを作成します
104
- 4. ダウンロードしたZIPファイルを展開します
105
- 5. プラグイン一覧から「有効化」を選んで、有効化します
106
 
107
  当サイトからのダウンロードおよびインストール
 
108
  1. 当サイト「ぽぽづれ。」へアクセスしてください http://poporon.poponet.jp
 
109
  2. リンクを辿るか、直接プラグインのページを開きます http://poporon.poponet.jp/pz-linkcard
 
110
  3. 下の方にZIPファイルのダウンロードリンクがあるので、ダウンロードします
 
111
  4. WordPressをインストールしているディレクトリ配下の、「/wp-content/plugins」ディレクトリ配下に「pz-linkcard」ディレクトリを作成します
 
112
  5. ダウンロードしたZIPファイルを展開します
 
113
  6. プラグイン一覧から「有効化」を選んで、有効化します
114
 
 
115
  新しいバージョンを有効化したら動作しなくなった場合
 
116
  1. Pz-LinkCard がインストールされているディレクトリ名を変更もしくは削除します
 
117
  2. WordPressダッシュボードに入ると、プラグインが無効化されたというメッセージが表示されます
 
118
  3. 先ほど変更したディレクトリ名を戻します(戻してもプラグインは勝手に有効化されません)
 
119
  4. 当サイトから古い安定版をダウンロードします
 
120
  5. 上書きコピーを行ったあと、有効化を選んで、有効化します
 
121
  6. 不具合が起きた状態や状況、テストサイトであれば、アクセスするためのURLを教えていただけると早急に修正できる場合があります
122
 
 
123
  == Frequently asked questions ==
124
 
125
- = A question that someone might have =
 
126
 
127
- An answer to that question.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
 
129
  == Screenshots ==
130
 
131
- 1. "Use shortcode [blogcard]"
132
- 2. "Display blogcard"
133
- 3. "Display blogcard with setting"
134
- 4. "Basic settings"
135
- 5. "Style settings"
136
- 6. "External link settings"
137
- 7. "Internal link settings"
138
- 8. "Use WebAPI settings"
139
- 9. "For debug settings"
140
- 10. "Initializing settings"
141
 
142
  == Changelog ==
143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
  = 0.1.0 =
145
  * 公式プラグインディレクトリでの最初の公開バージョン。
146
 
@@ -153,3 +231,102 @@ An answer to that question.
153
  * 当サイトでの本番環境での動作検証。
154
 
155
  == Upgrade notice ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Pz-LinkCard ===
2
  Contributors: poporon
3
  Tags: post, internal link, external link, blogcard, linkcard
4
  Requires at least: 4.3.0
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
10
+ This plugin is intended to display a link in a blog card format. The goodbye to the text-only link.
11
 
12
  == Description ==
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
+ This plugin is intended to display a link in a blog card format.
15
 
16
+ Easy to use. Just to write a short code.
17
 
18
+ You can change the appearance in the `settings` screen .
19
 
20
+ You can edit or delete the cache on the `manage` screen .
21
 
22
+ The goodbye to the text-only link.
23
 
 
 
 
24
 
25
+ このプラグインはショートコードでURLを指定することで、リンクをブログカード形式で表示させるものです。
 
 
26
 
27
+ 外部リンクと内部リンクで、カードの色や新しくウィンドウを開くかなど、設定を変更することができます。
28
 
29
+ リンク先の情報はキャッシュされるため、ソーシャルカウント等も表示されるカード形式のリンクとしては高速に表示されます。
30
 
31
+ キャッシュ管理画面から、キャッシュされた情報の再取得や直接編集、削除が行えます。
32
 
33
+ テキストにリンク設定しただけでは物足りないと感じていたら、ぜひお試しください。
34
 
35
+ (ショートコード内にURLを記述した場合、ピンバックは飛びません。ピンバックを使用したい方は記事中にテキストリンクを張るなどで対応してください。)
36
 
 
37
 
38
+ まだ成熟したプラグインでは無いので、ご意見やご要望があればなるべくお応えしていきたいと思います。
39
 
 
40
 
41
+ == Installation ==
42
 
43
+ WordPressダッシュボードからのインストール
44
 
45
+ (From your WordPress dashboard)
46
 
 
47
 
48
+ 1. 「プラグイン」→「新規追加」を選びます
49
 
50
+ (Plugins menu > Add New)
51
 
52
+ 2. 「Pz-LinkCard」を検索します
53
 
54
+ (Search for Pz-HatenaBlogCard)
55
 
56
+ 3. プラグイン名と作者を確認していただき、「今すぐインストール」を押します
57
 
58
+ (Install)
59
 
60
+ 4. 「有効化する」を選び、有効化します
61
 
62
+ (Activate)
63
 
 
64
 
65
+ WordPress.org からのダウンロードおよびインストール
66
 
67
+ (From WordPress.org)
68
 
69
+ 1. WordPress.orgのプラグイン一覧から「Pz-LinkCard」を検索します
70
 
71
+ (Download ZIP file from http://poporon.poponet.jp/pz-hatenablogcard )
72
 
73
+ 2. プラグイン名と作者を確認していただき、ダウンロードします
74
 
75
+ 3. WordPressをインストールしているディレクトリ配下の、「/wp-content/plugins」ディレクトリ配下に「pz-linkcard」ディレクトリを作成します
76
 
77
+ (Upload pz-hatenablogcard folder to the /wp-content/plugins/ directory)
78
 
79
+ 4. ダウンロードしたZIPファイルを展開します
80
 
81
+ 5. プラグイン一覧から「有効化」を選んで、有効化します
82
 
83
+ (Activate the plugin through the 'Plugins' menu in WordPress)
 
 
 
 
 
84
 
 
 
 
 
 
 
85
 
86
  当サイトからのダウンロードおよびインストール
87
+
88
  1. 当サイト「ぽぽづれ。」へアクセスしてください http://poporon.poponet.jp
89
+
90
  2. リンクを辿るか、直接プラグインのページを開きます http://poporon.poponet.jp/pz-linkcard
91
+
92
  3. 下の方にZIPファイルのダウンロードリンクがあるので、ダウンロードします
93
+
94
  4. WordPressをインストールしているディレクトリ配下の、「/wp-content/plugins」ディレクトリ配下に「pz-linkcard」ディレクトリを作成します
95
+
96
  5. ダウンロードしたZIPファイルを展開します
97
+
98
  6. プラグイン一覧から「有効化」を選んで、有効化します
99
 
100
+
101
  新しいバージョンを有効化したら動作しなくなった場合
102
+
103
  1. Pz-LinkCard がインストールされているディレクトリ名を変更もしくは削除します
104
+
105
  2. WordPressダッシュボードに入ると、プラグインが無効化されたというメッセージが表示されます
106
+
107
  3. 先ほど変更したディレクトリ名を戻します(戻してもプラグインは勝手に有効化されません)
108
+
109
  4. 当サイトから古い安定版をダウンロードします
110
+
111
  5. 上書きコピーを行ったあと、有効化を選んで、有効化します
112
+
113
  6. 不具合が起きた状態や状況、テストサイトであれば、アクセスするためのURLを教えていただけると早急に修正できる場合があります
114
 
115
+
116
  == Frequently asked questions ==
117
 
118
+ Q1.
119
+ データベースの容量を圧迫しませんか?
120
 
121
+ A1.
122
+ リンク先サイトのURL、タイトル、抜粋文を取得してデータベースに格納します。
123
+ URLごとに保存されるため、複数の記事に同一のURLを指定してもデータは増えません。
124
+ 結果として記事内にタイトルや抜粋文を記述してリンクを設定するのと大きな差は無いと思います。
125
+ ただし、リンクを削除したとしてもデータベースからキャッシュ情報は削除されません。
126
+ これは「Pz カード管理」画面から個別で削除することができます。
127
+ また、アンインストール時にプラグインとともにキャッシュ用のデータベースは削除されます。
128
+
129
+ Q2.
130
+ ページの表示が遅くなりました。
131
+
132
+ A2.
133
+ リンク先のURLを使ったリンクカードを「初めて表示」するときにタイトルや抜粋文、ソーシャルカウント等を取得します。
134
+ このため、複数のリンクカードを埋め込んだ記事を最初に表示するときには非常に時間がかかる場合があります。
135
+ ソーシャルカウントを取得する場合にはリンクカード1個につき、2~10秒ほどかかる場合があります。
136
+ ただし、2回目以降の表示はキャッシュから取得するので高速に表示されます。
137
+ つまり、投稿直後もしくは執筆中にプレビューをすることで自分で記事を1回表示しておけば、閲覧者は遅延無く記事を見ることができます。
138
+
139
+ Q3.
140
+ 自サイト内への記事でも新しいウィンドウで開きたいのですが?
141
+
142
+ A3.
143
+ 「Pz カード設定」の画面から、外部リンク、内部リンク、それぞれ「新しいウィンドウで開く」のチェックボックスが用意されています。
144
+ 外部サイトも同一ウィンドウで開くこともできます。
145
+
146
+ Q4.
147
+ WordPressピンバックが飛びません。
148
+
149
+ A4.
150
+ WordPressピンバックは記事中にリンクを直接記述しないと飛びません。
151
+ 当プラグインはショートコードをカードの書式とリンクを展開するのでピンバックは飛びません。
152
 
153
  == Screenshots ==
154
 
155
+ 1. "Options screen"
156
+ 2. "Cache manager screen"
157
+ 3. "Edit cache data"
158
+ 4. "The appearance of the 'LinkCard'"
159
+ 5. "Write shortcode and url"
 
 
 
 
 
160
 
161
  == Changelog ==
162
 
163
+ = 1.1.0 =
164
+ * Modefied: Since November 20, 2015 , it does not use the Twitter API.
165
+ * Added: It can be selected "Other than mobile" and "All client" in the setting of "Open new window/tab".
166
+
167
+ * 2015年11月20日までのTwitter非公式API廃止に伴い、同日以降取得しないように修正。
168
+ * 「新しいウィンドウで開く」をチェックボックスからリストに変更し、「モバイル以外(のみ新しいウィンドウで開く)」を追加。(Thanks 三十路!)
169
+
170
+ = 1.0.3 =
171
+ * キャッシュ保存時にキーが正しく設定されないことがあったのを修正。
172
+ * 「カード管理」画面で内部ID(連番)を表示するように修正。
173
+ * 定型書式「紙がめくれる効果」を修正。(テーマによってはレイアウトが崩れる可能性があります)
174
+ * 定型書式「テープと紙めくれ」を追加。(テーマによってはレイアウトが崩れる可能性があります)
175
+
176
+ = 1.0.2 =
177
+ * 「カード管理」でキャッシュを編集したとき、一部の文字をエスケープしていなかったのを修正。
178
+ * バージョンアップの度に一部のパラメータがデフォルトに戻らないように修正。
179
+ * プログラム内でのキャッシュの読み書き方法の改善。
180
+
181
+ = 1.0.1 =
182
+ * 「カード管理」でキャッシュを編集したとき、内部IDがクリアされてしまう不具合を修正。
183
+
184
+ = 1.0.0 =
185
+ * 全体的なプログラムの見直し。
186
+ * URLが空欄などの場合の対応。
187
+ * 文字エンコードまわりを修正。
188
+ * DBキャッシュまわりを修正。
189
+ * ショートコードの囲い文字の扱いの仕様変更。
190
+ * ショートコード1にのみ適用されるように修正。
191
+ * タイトルがURLになってしまう不具合修正。
192
+ * ショートコード3を解放。
193
+ * キャッシュ管理画面を修正。
194
+ * リンク先単体の「編集」「再取得」「削除」が行えるように修正。
195
+ * 一括処理に「再取得」を追加。
196
+ * 内部リンクのURLにリンクを設定。
197
+ * ドメインで抽出できるように修正。
198
+ * ページング機能を追加。
199
+
200
+ = 0.1.4 =
201
+ * <head>にprefixなどがあるときに、metaタグの解析に失敗していたのを修正。
202
+ * パラメータに閉じの「半角角かっこ(大かっこ)」がある場合に、URLに余分なコードが入ってしまったのを改善。
203
+
204
+ = 0.1.3 =
205
+ * content=''になっているOGP情報は無視するように修正。
206
+ * サムネイル取得APIをWordPress.comのものを初期値に変更。
207
+ * metaタグ表記にシングルクォートが使われている場合、取得できていなかったため対応。
208
+ * タイトルや抜粋文をパラメータ等で設定した場合にもHTML等を除去するように変更。
209
+ * 「カード管理」の画面のセキュリティを強化。
210
+ * サイト情報を下側にしているときに定型書式「Pzカード標準書式」を使用したときサイト名が見えなくなる現象に対応。
211
+ * 設定画面の「サイト情報」の位置を変更。
212
+ * 設定画面にサイト情報と記事内容の間を区切るための「区切り線」を変更。
213
+
214
+ = 0.1.2 =
215
+ * 「新しいウィンドウで開く」の設定を追加。
216
+ * カード管理画面のソート順を修正。
217
+ * フェイスブックの表記を「f」から「fb」へ変更。
218
+
219
+ = 0.1.1 =
220
+ * 公開後発見されたバグを修正。
221
+
222
  = 0.1.0 =
223
  * 公式プラグインディレクトリでの最初の公開バージョン。
224
 
231
  * 当サイトでの本番環境での動作検証。
232
 
233
  == Upgrade notice ==
234
+
235
+ == Arbitrary section ==
236
+
237
+ = Display and DB cache =
238
+
239
+ This plug-in one create a DB table when you have activated. ( Prefix + "pz_linkcard")
240
+
241
+ Open the pages of the article when the "For the first time it appears " , and caches by obtaining the title excerpt from the linked site to the DB.
242
+
243
+ Therefore , the display for the first time is slow , the second and subsequent display is fast.
244
+
245
+
246
+ = Create files =
247
+
248
+ CSS file are stored in a custom folder under `/wp-content/Uploads` .
249
+
250
+
251
+ = Use API =
252
+
253
+ Number of SNS share have been acquired by the JSON request.
254
+
255
+ * Twitter ... http://urls.api.twitter.com/1/urls/count.json?url=[URL]
256
+
257
+ * Facebook ... http://graph.facebook.com/?id=[URL]
258
+
259
+ * Hatena ... http://api.b.st-hatena.com/entry.count?url=[URL]
260
+
261
+
262
+ Displays using the `Google-favicon API` to get the favicon. This can be changed.
263
+
264
+
265
+ Displays using the `WordPress.org mshots API` to get the thumbnail. This can be changed.
266
+
267
+
268
+ = 表示とキャッシュ =
269
+
270
+ このプラグインは、有効化したときにDBテーブルを一つ作成します。(プレフィックス+「pz_linkcard」)
271
+
272
+ 外部リンクを設定した場合、記事のページを開いて「初めて表示された」ときに、リンク先のサイトからタイトル・抜粋文を取得してDBへキャッシュします。
273
+
274
+
275
+ カードの枚数分、外部サイトへのアクセスが発生するため多量のリンクを作成すると表示に時間がかかります。
276
+
277
+ 次回の表示はDBキャッシュから行うので高速に表示を行います。
278
+
279
+ (内部でのDBアクセスが発生しますが、通常は軽微なものです。カード1枚表示のたびに、取得のために1クエリ発行します。更新が発生した場合には挿入・更新のためのクエリが1回発生します。)
280
+
281
+
282
+ = ソーシャルカウントの取得 =
283
+
284
+ ソーシャルカウントについては、「ツイッターのツイート数」「フェイスブックのシェア数」「はてなブックマークのブックマーク数」の3種類に対応しています。
285
+
286
+ それぞれAPIへのJSONリクエストにより値を取得します。
287
+
288
+ これらのアクセスも遅い場合がありますが、取得した値はタイトルや抜粋文と同様、DBへキャッシュを行うため、直近の表示にはAPIアクセスが発生しません。
289
+
290
+ ソーシャルカウントの再取得は、最後の取得から4時間~36時間程度のランダムな時間で行います。
291
+
292
+ この間隔については、改善の余地があります。
293
+
294
+ また、各APIについては、仕様変更やサービス終了に伴い、正常に取得できなくなる場合があります。
295
+
296
+
297
+ = 画像取得APIの利用 =
298
+
299
+ サムネイルの取得については、「取得しない」を標準での設定としています。
300
+
301
+ 画像取得APIのURLを指定した上で、「WebAPIを利用する」にすることで、画像も取得できます。
302
+
303
+ 画像取得APIの設定については、下記のページを参照ください。
304
+
305
+ http://poporon.poponet.jp/20151004/9317
306
+
307
+
308
+ サイトアイコン(ファビコン)についても、同様にWebAPIを使用して取得しています。
309
+
310
+ こちらは標準設定で「WebAPIで取得する」になっており、Googleのファビコン取得APIのアドレスを設定しています。
311
+
312
+ これは、リンク先のURLを入力することによって、サイトアイコンの画像を取得できるものです。
313
+
314
+ 公式なサービスでは無いため、仕様変更やサービス終了に伴い、正常に取得できなくなく場合があります。
315
+
316
+
317
+ = その他 =
318
+
319
+ Pz-HatenaBlogCard からの設定引き継ぎ機能はありません。この機会に触ったことのなかった設定項目にも触れていただければ幸いです。
320
+
321
+ ショートコードを変えることで、Pz-HatenaBlogCard と併用利用することができますが、通常はリソース消費が増えるだけなので、推奨はしません。
322
+
323
+
324
+ ショートコード内にURLを記述した場合、WordPressピンバックは飛びません。
325
+
326
+
327
+ 設定項目については、WordPress標準の options に設定内容を保存します。キーは「Pz-LinkCard_options」の1レコードです。
328
+
329
+
330
+ なお、アンインストールを行う際には、キャッシュを保管するDBテーブルと、options内の設定ファイルは削除されます。
331
+
332
+ アンインストール時の削除に関してはプラグインディレクトリ内の uninstall.php で行っています。
screenshot-1.png ADDED
Binary file
screenshot-2.png ADDED
Binary file
screenshot-3.png ADDED
Binary file
screenshot-4.png ADDED
Binary file
screenshot-5.png ADDED
Binary file
uninstall.php CHANGED
@@ -17,6 +17,5 @@ if (file_exists($css_dir)) rmdir ($css_dir);
17
 
18
  // Drop DB-table
19
  global $wpdb;
20
- $this->db = $wpdb->prefix.'pz_linkcard';
21
- $sql = "DROP TABLE ".$this->db;
22
  $wpdb->query($sql);
17
 
18
  // Drop DB-table
19
  global $wpdb;
20
+ $sql = "DROP TABLE ".$wpdb->prefix.'pz_linkcard';
 
21
  $wpdb->query($sql);