Pz-LinkCard - Version 2.4.2

Version Description

Download this release

Release Info

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

Code changes from version 2.4.1 to 2.4.2

css/admin.css CHANGED
@@ -74,3 +74,7 @@
74
  z-index: 2;
75
  border-bottom-color: #00f;
76
  }
 
 
 
 
74
  z-index: 2;
75
  border-bottom-color: #00f;
76
  }
77
+
78
+ .form-table td {
79
+ vertical-align: top;
80
+ }
js/admin-settings.js ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ ( function( $ ) {
2
+ $('.pz-lkc-tab').on('click', function() {
3
+ $('.pz-lkc-item').removeClass("pz-lkc-item-active");
4
+ $($(this).attr("href")).addClass("pz-lkc-item-active");
5
+ $('.pz-lkc-tab').removeClass('pz-lkc-tab-active');
6
+ $(this).addClass('pz-lkc-tab-active');
7
+ return false;
8
+ } ) ;
9
+ } ) ( jQuery );
js/admin.js DELETED
@@ -1,11 +0,0 @@
1
- jQuery(function($){
2
- $(function() {
3
- $('.pz-lkc-tab').on('click', function() {
4
- $('.pz-lkc-item').removeClass("pz-lkc-item-active");
5
- $($(this).attr("href")).addClass("pz-lkc-item-active");
6
- $('.pz-lkc-tab').removeClass('pz-lkc-tab-active');
7
- $(this).addClass('pz-lkc-tab-active');
8
- return false;
9
- });
10
- });
11
- });
 
 
 
 
 
 
 
 
 
 
 
js/langs/ja.js CHANGED
@@ -1,3 +1,3 @@
1
- tinymce.addI18n('ja', {
2
- 'Insert Linkcard' : 'リンクカードを挿入'
3
  });
1
+ tinymce.addI18n('ja', {
2
+ 'Insert Linkcard' : 'リンクカードを挿入'
3
  });
js/mce-button.js ADDED
@@ -0,0 +1,111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ( function( $ ) {
2
+ tinymce.create( "tinymce.plugins.pz_linkcard_tinymce", {
3
+ getInfo: function() {
4
+ return {
5
+ longname: "Pz-LinkCard Insert Button",
6
+ author: "poporon",
7
+ authorurl: "https://popozure.info",
8
+ infourl: "https://popozure.info/pz-linkcard",
9
+ version: "0.1"
10
+ };
11
+ },
12
+ init: function( ed, url ) {
13
+ var id = "pz_linkcard_insert_shortcode";
14
+ ed.addButton(id, {
15
+ title: 'Insert Linkcard',
16
+ cmd: id,
17
+ image: url + "/mce-button.png"
18
+ } );
19
+ ed.addCommand(id, function() {
20
+ $("#pz-lkc-overlay").css("display", "block");
21
+ $("#pz-lkc-modal").css("display", "block");
22
+ $("#pz-lkc-url").val("");
23
+ var st = tinymce.activeEditor.selection.getContent();
24
+ var ur = cut_url(st);
25
+ if (ur != null) {
26
+ ur = ur[1];
27
+ } else {
28
+ var cb = undefined;
29
+ if (window.clipboardData && window.clipboardData.getData) {
30
+ cb = window.clipboardData.getData('Text');
31
+ ur = cut_url(cb);
32
+ if (ur != null) {
33
+ ur = ur[1];
34
+ }
35
+ }
36
+ }
37
+ $("#pz-lkc-url").val(ur);
38
+ modal_move_center();
39
+ $("#pz-lkc-url").focus();
40
+ $("#pz-lkc-url").select();
41
+ } );
42
+ },
43
+ } );
44
+
45
+ tinymce.PluginManager.add( "pz_linkcard_tinymce", tinymce.plugins.pz_linkcard_tinymce );
46
+ tinymce.PluginManager.requireLangPack('pz_linkcard_tinymce');
47
+
48
+ // 画面のどこかをクリックしたらモーダルを閉じる
49
+ $("#pz-lkc-overlay,#pz-lkc-close").unbind().click( function() {
50
+ $("#pz-lkc-overlay").css("display", "none");
51
+ $("#pz-lkc-modal").css("display"," none");
52
+ $("#pz-lkc-serif").val("");
53
+ $("#pz-lkc-check").prop("checked", false);
54
+ } ) ;
55
+
56
+ // [ESC]キーが押されたらCLOSEをクリック
57
+ $(document).keydown( function(e) {
58
+ if (e.keyCode == 27) {
59
+ $("#pz-lkc-close").click();
60
+ }
61
+ } ) ;
62
+
63
+ // 貼り付け
64
+ $("#pz-lkc-url").bind('paste', function(e) {
65
+ if ($("#pz-lkc-url").val() == "") {
66
+ var cb = undefined;
67
+ if (window.clipboardData && window.clipboardData.getData) {
68
+ cb = window.clipboardData.getData('Text');
69
+ } else if (e.originalEvent.clipboardData && e.originalEvent.clipboardData.getData) {
70
+ cb = e.originalEvent.clipboardData.getData('text/plain');
71
+ }
72
+ var ur = cut_url(cb);
73
+ if (ur != null) {
74
+ ur = ur[1];
75
+ $("#pz-lkc-url").val(ur);
76
+ $("#pz-lkc-url").select();
77
+ return false;
78
+ }
79
+ }
80
+ } ) ;
81
+
82
+ // 挿入ボタン
83
+ $("#pz-lkc-insert").unbind().click( function() {
84
+ $("#pz-lkc-overlay").css("display","none");
85
+ $("#pz-lkc-modal").css("display","none");
86
+ if ($("#pz-lkc-url").val() != "") {
87
+ var sc = "<p>[" + $("#pz-lkc-code").val() + " url=\"" + $("#pz-lkc-url").val() + "\"]</p>";
88
+ tinymce.activeEditor.selection.setContent(sc);
89
+ }
90
+ tinymce.activeEditor.focus()
91
+ $("#pz-lkc-serif").val("");
92
+ $("#pz-lkc-check").prop("checked", false);
93
+ } ) ;
94
+
95
+ // ウィンドウのリサイズ
96
+ $(window).resize(modal_move_center);
97
+ function modal_move_center() {
98
+ var w = $(window).width();
99
+ var h = $(window).height();
100
+ var mw = $("#pz-lkc-modal").outerWidth();
101
+ var mh = $("#pz-lkc-modal").outerHeight();
102
+ $("#pz-lkc-modal").css( {"left": ((w - mw)/2) + "px","top": ((h - mh)/2) + "px"} );
103
+ }
104
+
105
+ // 文字列からURLを切り出す
106
+ function cut_url(s) {
107
+ var ur = s.match(/((https?|ftp):\/\/[^<>{}|:;\\\*\^\"\'\[\]\s\t\n]*)/);
108
+ return ur;
109
+ }
110
+
111
+ } ) ( jQuery );
js/{button.png → mce-button.png} RENAMED
File without changes
js/mce-pz-lkc.js DELETED
@@ -1,96 +0,0 @@
1
- (function() {
2
- // 画面のどこかをクリックしたらモーダルを閉じる
3
- $("#pz-lkc-overlay,#pz-lkc-close").unbind().click(function(){
4
- $("#pz-lkc-overlay").css("display", "none");
5
- $("#pz-lkc-modal").css("display"," none");
6
- $("#pz-lkc-serif").val("");
7
- $("#pz-lkc-check").prop("checked", false);
8
- });
9
-
10
- // [ESC]キーが押されたらCLOSEをクリック
11
- $(document).keydown(function(e) {
12
- if (e.keyCode == 27) {
13
- $("#pz-lkc-close").click();
14
- }
15
- });
16
-
17
- $("#pz-lkc-url").bind('paste', function(e){
18
- if ($("#pz-lkc-url").val() == "") {
19
- var cb = undefined;
20
- if (window.clipboardData && window.clipboardData.getData) {
21
- cb = window.clipboardData.getData('Text');
22
- } else if (e.originalEvent.clipboardData && e.originalEvent.clipboardData.getData) {
23
- cb = e.originalEvent.clipboardData.getData('text/plain');
24
- }
25
- var ur = cb.match(/(https?:\/\/[^\"\':\]]*)/);
26
- if (ur != null) {
27
- ur = ur[1];
28
- $("#pz-lkc-url").val(ur);
29
- $("#pz-lkc-url").select();
30
- }
31
- return false;
32
- }
33
- });
34
-
35
- // 挿入ボタン
36
- $("#pz-lkc-insert").unbind().click(function(){
37
- $("#pz-lkc-overlay").css("display","none");
38
- $("#pz-lkc-modal").css("display","none");
39
- if ($("#pz-lkc-url").val() != "") {
40
- var sc = "<p>[" + $("#pz-lkc-code").val() + " url=\"" + $("#pz-lkc-url").val() + "\"]</p>";
41
- tinymce.activeEditor.selection.setContent(sc);
42
- }
43
- tinymce.activeEditor.focus()
44
- $("#pz-lkc-serif").val("");
45
- $("#pz-lkc-check").prop("checked", false);
46
- });
47
-
48
-
49
- // ウィンドウのリサイズ
50
- $(window).resize(centermodal);
51
- function centermodal() {
52
- var w = $(window).width();
53
- var h = $(window).height();
54
- var mw = $("#pz-lkc-modal").outerWidth();
55
- var mh = $("#pz-lkc-modal").outerHeight();
56
- $("#pz-lkc-modal").css( {"left": ((w - mw)/2) + "px","top": ((h - mh)/2) + "px"} );
57
- }
58
-
59
- tinymce.create('tinymce.plugins.pzlinkcard', {
60
- init: function(ed, url){
61
- ed.addButton('pz_linkcard',{
62
- title: 'Insert Linkcard',
63
- image: url + '/button.png',
64
- cmd: 'insert_pz_linkcard'
65
- });
66
- ed.addCommand('insert_pz_linkcard', function() {
67
- $("#pz-lkc-overlay").css("display", "block");
68
- $("#pz-lkc-modal").css("display", "block");
69
- $("#pz-lkc-url").val("");
70
- var st = tinymce.activeEditor.selection.getContent();
71
- var ur = st.match(/(https?:\/\/[^\"\':\]]*)/);
72
- if (ur != null) {
73
- ur = ur[1];
74
- } else {
75
- var cb = undefined;
76
- if (window.clipboardData && window.clipboardData.getData) {
77
- cb = window.clipboardData.getData('Text');
78
- ur = cb.match(/(https?:\/\/[^\"\':\]]*)/);
79
- if (ur != null) {
80
- ur = ur[1];
81
- }
82
- }
83
- }
84
- $("#pz-lkc-url").val(ur);
85
- centermodal();
86
- $("#pz-lkc-url").focus();
87
- $("#pz-lkc-url").select();
88
- });
89
- },
90
- createControl: function(n, cm) {
91
- return null;
92
- }
93
- });
94
- tinymce.PluginManager.add('pz_linkcard',tinymce.plugins.pzlinkcard);
95
- tinymce.PluginManager.requireLangPack('pz_linkcard');
96
- })();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/mce.js DELETED
@@ -1,103 +0,0 @@
1
- jQuery(function($){
2
- $(function() {
3
- // 画面のどこかをクリックしたらモーダルを閉じる
4
- $("#pz-lkc-overlay,#pz-lkc-close").unbind().click(function(){
5
- $("#pz-lkc-overlay").css("display", "none");
6
- $("#pz-lkc-modal").css("display"," none");
7
- $("#pz-lkc-serif").val("");
8
- $("#pz-lkc-check").prop("checked", false);
9
- });
10
-
11
- // [ESC]キーが押されたらCLOSEをクリック
12
- $(document).keydown(function(e) {
13
- if (e.keyCode == 27) {
14
- $("#pz-lkc-close").click();
15
- }
16
- });
17
-
18
- $("#pz-lkc-url").bind('paste', function(e){
19
- if ($("#pz-lkc-url").val() == "") {
20
- var cb = undefined;
21
- if (window.clipboardData && window.clipboardData.getData) {
22
- cb = window.clipboardData.getData('Text');
23
- } else if (e.originalEvent.clipboardData && e.originalEvent.clipboardData.getData) {
24
- cb = e.originalEvent.clipboardData.getData('text/plain');
25
- }
26
- var ur = cut_url(cb);
27
- if (ur != null) {
28
- ur = ur[1];
29
- $("#pz-lkc-url").val(ur);
30
- $("#pz-lkc-url").select();
31
- return false;
32
- }
33
- }
34
- });
35
-
36
- // 挿入ボタン
37
- $("#pz-lkc-insert").unbind().click(function(){
38
- $("#pz-lkc-overlay").css("display","none");
39
- $("#pz-lkc-modal").css("display","none");
40
- if ($("#pz-lkc-url").val() != "") {
41
- var sc = "<p>[" + $("#pz-lkc-code").val() + " url=\"" + $("#pz-lkc-url").val() + "\"]</p>";
42
- tinymce.activeEditor.selection.setContent(sc);
43
- }
44
- tinymce.activeEditor.focus()
45
- $("#pz-lkc-serif").val("");
46
- $("#pz-lkc-check").prop("checked", false);
47
- });
48
-
49
- // ウィンドウのリサイズ
50
- $(window).resize(centermodal);
51
- function centermodal() {
52
- var w = $(window).width();
53
- var h = $(window).height();
54
- var mw = $("#pz-lkc-modal").outerWidth();
55
- var mh = $("#pz-lkc-modal").outerHeight();
56
- $("#pz-lkc-modal").css( {"left": ((w - mw)/2) + "px","top": ((h - mh)/2) + "px"} );
57
- }
58
-
59
- // 文字列からURLを切り出す
60
- function cut_url(s) {
61
- var ur = s.match(/((https?|ftp):\/\/[^<>{}|:;\\\*\^\"\'\[\]\s\t\n]*)/);
62
- return ur;
63
- }
64
-
65
- tinymce.create('tinymce.plugins.pzlinkcard', {
66
- init: function(ed, url){
67
- ed.addButton('pz_linkcard',{
68
- title: 'Insert Linkcard',
69
- image: url + '/button.png',
70
- cmd: 'insert_pz_linkcard'
71
- });
72
- ed.addCommand('insert_pz_linkcard', function() {
73
- $("#pz-lkc-overlay").css("display", "block");
74
- $("#pz-lkc-modal").css("display", "block");
75
- $("#pz-lkc-url").val("");
76
- var st = tinymce.activeEditor.selection.getContent();
77
- var ur = cut_url(st);
78
- if (ur != null) {
79
- ur = ur[1];
80
- } else {
81
- var cb = undefined;
82
- if (window.clipboardData && window.clipboardData.getData) {
83
- cb = window.clipboardData.getData('Text');
84
- ur = cut_url(cb);
85
- if (ur != null) {
86
- ur = ur[1];
87
- }
88
- }
89
- }
90
- $("#pz-lkc-url").val(ur);
91
- centermodal();
92
- $("#pz-lkc-url").focus();
93
- $("#pz-lkc-url").select();
94
- });
95
- },
96
- createControl: function(n, cm) {
97
- return null;
98
- }
99
- });
100
- tinymce.PluginManager.add('pz_linkcard',tinymce.plugins.pzlinkcard);
101
- tinymce.PluginManager.requireLangPack('pz_linkcard');
102
- });
103
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: 2020-12-27 21:21+0900\n"
8
- "PO-Revision-Date: 2020-12-27 21:24+0900\n"
9
  "Last-Translator: \n"
10
  "Language-Team: poporon\n"
11
  "Language: ja_JP\n"
@@ -22,7 +22,7 @@ msgstr ""
22
  #: ../lib/pz-linkcard-cacheman-edit.php:14
23
  #: ../lib/pz-linkcard-cacheman-list.php:246 ../lib/pz-linkcard-edit.php:13
24
  msgid "ID"
25
- msgstr ""
26
 
27
  #: ../lib/pz-linkcard-cacheman-edit.php:18
28
  #: ../lib/pz-linkcard-cacheman-list.php:247 ../lib/pz-linkcard-edit.php:17
@@ -31,7 +31,7 @@ msgstr "URLキー"
31
 
32
  #: ../lib/pz-linkcard-cacheman-edit.php:22
33
  #: ../lib/pz-linkcard-cacheman-list.php:248 ../lib/pz-linkcard-edit.php:21
34
- #: ../lib/pz-linkcard-settings.php:603
35
  msgid "URL"
36
  msgstr "URL"
37
 
@@ -46,13 +46,13 @@ msgstr "ドメイン"
46
 
47
  #: ../lib/pz-linkcard-cacheman-edit.php:34
48
  #: ../lib/pz-linkcard-cacheman-list.php:249 ../lib/pz-linkcard-edit.php:37
49
- #: ../lib/pz-linkcard-settings.php:584
50
  msgid "Title"
51
  msgstr "タイトル"
52
 
53
  #: ../lib/pz-linkcard-cacheman-edit.php:38
54
  #: ../lib/pz-linkcard-cacheman-list.php:250 ../lib/pz-linkcard-edit.php:41
55
- #: ../lib/pz-linkcard-settings.php:622
56
  msgid "Excerpt"
57
  msgstr "抜粋文"
58
 
@@ -67,68 +67,67 @@ msgstr "→"
67
 
68
  #: ../lib/pz-linkcard-cacheman-edit.php:46 ../lib/pz-linkcard-edit.php:49
69
  msgid "Thumbnail URL"
70
- msgstr "サムネイルURL"
71
 
72
  #: ../lib/pz-linkcard-cacheman-edit.php:50 ../lib/pz-linkcard-edit.php:53
73
  msgid "Favicon URL"
74
- msgstr "ファビコンURL"
75
 
76
- #: ../lib/pz-linkcard-cacheman-edit.php:54
77
- #: ../lib/pz-linkcard-cacheman-list.php:256 ../lib/pz-linkcard-edit.php:57
78
  msgid "Result code"
79
- msgstr "結果コード"
80
 
81
- #: ../lib/pz-linkcard-cacheman-edit.php:92
82
  #: ../lib/pz-linkcard-cacheman-list.php:255 ../lib/pz-linkcard-edit.php:61
83
  msgid "Post ID"
84
  msgstr "記事ID"
85
 
86
- #: ../lib/pz-linkcard-cacheman-edit.php:101 ../lib/pz-linkcard-edit.php:65
87
  msgid "SNS"
88
- msgstr ""
89
 
90
- #: ../lib/pz-linkcard-cacheman-edit.php:103
91
  #: ../lib/pz-linkcard-cacheman-list.php:253 ../lib/pz-linkcard-edit.php:67
92
  msgid "Tw"
93
- msgstr ""
94
 
95
- #: ../lib/pz-linkcard-cacheman-edit.php:104
96
  #: ../lib/pz-linkcard-cacheman-list.php:253 ../lib/pz-linkcard-edit.php:68
97
  msgid "fb"
98
- msgstr ""
99
 
100
- #: ../lib/pz-linkcard-cacheman-edit.php:105
101
  #: ../lib/pz-linkcard-cacheman-list.php:253 ../lib/pz-linkcard-edit.php:69
102
  msgid "B!"
103
- msgstr ""
104
 
105
- #: ../lib/pz-linkcard-cacheman-edit.php:106
106
  #: ../lib/pz-linkcard-cacheman-list.php:253
107
  msgid "Po"
108
- msgstr ""
109
 
110
- #: ../lib/pz-linkcard-cacheman-edit.php:110 ../lib/pz-linkcard-edit.php:73
111
  msgid "Uptime"
112
  msgstr "更新日時"
113
 
114
- #: ../lib/pz-linkcard-cacheman-edit.php:114
115
  msgid "Next SNS"
116
  msgstr "次回のSNS確認日時"
117
 
118
- #: ../lib/pz-linkcard-cacheman-edit.php:118
119
  msgid "Next alive"
120
  msgstr "次回のリンク切れ確認日時"
121
 
122
- #: ../lib/pz-linkcard-cacheman-edit.php:122
123
  #: ../lib/pz-linkcard-cacheman-list.php:254 ../lib/pz-linkcard-edit.php:81
124
  msgid "Regist"
125
  msgstr "登録日時"
126
 
127
- #: ../lib/pz-linkcard-cacheman-edit.php:127 ../lib/pz-linkcard-edit.php:86
128
  msgid "Update"
129
  msgstr "更新"
130
 
131
- #: ../lib/pz-linkcard-cacheman-edit.php:127 ../lib/pz-linkcard-edit.php:86
132
  msgid "Cancel"
133
  msgstr "キャンセル"
134
 
@@ -213,9 +212,13 @@ msgstr "項目"
213
  msgid "Select all"
214
  msgstr "すべて選択"
215
 
 
 
 
 
216
  #: ../lib/pz-linkcard-cacheman-list.php:256
217
  msgid "(last)"
218
- msgstr ""
219
 
220
  #: ../lib/pz-linkcard-cacheman-list.php:321
221
  msgid "edit"
@@ -238,18 +241,18 @@ msgstr "削除"
238
  msgid "Export"
239
  msgstr "エクスポート"
240
 
241
- #: ../lib/pz-linkcard-cacheman.php:6 ../pz-linkcard.php:1738
242
  msgid "LinkCard cache manager"
243
  msgstr "リンクカード/DBキャッシュ管理"
244
 
245
- #: ../lib/pz-linkcard-cacheman.php:6 ../lib/pz-linkcard-settings.php:152
246
- #: ../lib/pz-linkcard-settings.php:171 ../lib/pz-linkcard-settings.php:230
247
- #: ../lib/pz-linkcard-settings.php:398 ../lib/pz-linkcard-settings.php:580
248
- #: ../lib/pz-linkcard-settings.php:698 ../lib/pz-linkcard-settings.php:772
249
- #: ../lib/pz-linkcard-settings.php:845 ../lib/pz-linkcard-settings.php:891
250
- #: ../lib/pz-linkcard-settings.php:915 ../lib/pz-linkcard-settings.php:927
251
- #: ../lib/pz-linkcard-settings.php:968 ../lib/pz-linkcard-settings.php:1042
252
- #: ../lib/pz-linkcard-settings.php:1131
253
  msgid "Help"
254
  msgstr "ヘルプ"
255
 
@@ -259,7 +262,7 @@ msgstr "キャッシュを更新しました"
259
 
260
  #: ../lib/pz-linkcard-cacheman.php:83 ../lib/pz-linkcard-cacheman.php:86
261
  msgid "Update failed"
262
- msgstr "キャッシュの更新に失敗しました"
263
 
264
  #: ../lib/pz-linkcard-cacheman.php:91
265
  msgid "Social count renew"
@@ -272,7 +275,7 @@ msgstr "完了しました"
272
 
273
  #: ../lib/pz-linkcard-cacheman.php:106
274
  msgid "Thumbnail renew"
275
- msgstr "サムネイルの再取得"
276
 
277
  #: ../lib/pz-linkcard-cacheman.php:119
278
  msgid "Alive check"
@@ -296,7 +299,7 @@ msgstr "外部/内部"
296
 
297
  #: ../lib/pz-linkcard-edit.php:77
298
  msgid "Next update"
299
- msgstr "次回更新日時"
300
 
301
  #: ../lib/pz-linkcard-modal.php:6
302
  msgid "Input URL"
@@ -306,877 +309,942 @@ msgstr "リンクカードを作成するURLを入力してください"
306
  msgid "Insert"
307
  msgstr "挿入"
308
 
309
- #: ../lib/pz-linkcard-settings.php:4 ../pz-linkcard.php:1739
 
 
 
 
 
 
310
  msgid "LinkCard Settings"
311
  msgstr "リンクカード設定"
312
 
313
- #: ../lib/pz-linkcard-settings.php:38
314
- msgid "Short code is not set."
315
- msgstr "ショートコードが指定されていません。"
316
 
317
- #: ../lib/pz-linkcard-settings.php:122
318
- msgid "Changes saved."
319
- msgstr "設定を保存しました。"
320
 
321
- #: ../lib/pz-linkcard-settings.php:124
322
- msgid "Not changed."
323
- msgstr "設定は変更されませんでした。"
324
 
325
- #: ../lib/pz-linkcard-settings.php:134
326
  msgid "Error"
327
  msgstr "エラー"
328
 
329
- #: ../lib/pz-linkcard-settings.php:135
330
  msgid "Basic"
331
  msgstr "基本"
332
 
333
- #: ../lib/pz-linkcard-settings.php:136
334
  msgid "Position"
335
  msgstr "配置"
336
 
337
- #: ../lib/pz-linkcard-settings.php:137
338
  msgid "Display"
339
  msgstr "表示"
340
 
341
- #: ../lib/pz-linkcard-settings.php:138
342
  msgid "Letter"
343
  msgstr "文字"
344
 
345
- #: ../lib/pz-linkcard-settings.php:139
346
  msgid "External link"
347
  msgstr "外部リンク"
348
 
349
- #: ../lib/pz-linkcard-settings.php:140
350
  msgid "Internal link"
351
  msgstr "内部リンク"
352
 
353
- #: ../lib/pz-linkcard-settings.php:141
354
  msgid "Same page link"
355
- msgstr "同ページ"
356
 
357
- #: ../lib/pz-linkcard-settings.php:142
358
  msgid "Web API"
359
- msgstr ""
360
 
361
- #: ../lib/pz-linkcard-settings.php:143
362
  msgid "Image"
363
  msgstr "画像"
364
 
365
- #: ../lib/pz-linkcard-settings.php:144
 
 
 
 
366
  msgid "Link check"
367
- msgstr "検査"
368
 
369
- #: ../lib/pz-linkcard-settings.php:145
370
  msgid "Editor"
371
  msgstr "エディタ"
372
 
373
- #: ../lib/pz-linkcard-settings.php:146
374
  msgid "Advanced"
375
  msgstr "上級者向け"
376
 
377
- #: ../lib/pz-linkcard-settings.php:147 ../lib/pz-linkcard-settings.php:1131
378
  msgid "Initialize"
379
  msgstr "初期化"
380
 
381
- #: ../lib/pz-linkcard-settings.php:152
382
  msgid "Error settings"
383
  msgstr "エラーの設定"
384
 
385
- #: ../lib/pz-linkcard-settings.php:155
386
- msgid "Invalid URL"
387
- msgstr "URL指定エラー"
388
 
389
- #: ../lib/pz-linkcard-settings.php:156
390
  msgid "Uncheck to cancel the error condition."
391
  msgstr "チェックを外すとエラー状態を解除します。"
392
 
393
- #: ../lib/pz-linkcard-settings.php:159
394
  msgid "Error URL"
395
- msgstr "URL指定エラー"
396
 
397
- #: ../lib/pz-linkcard-settings.php:163
398
  msgid "Error Time"
399
- msgstr "エラー発生時刻"
400
 
401
- #: ../lib/pz-linkcard-settings.php:171
402
  msgid "Basic settings"
403
  msgstr "基本の設定"
404
 
405
- #: ../lib/pz-linkcard-settings.php:174
406
  msgid "Easy format"
407
  msgstr "かんたん書式設定"
408
 
409
- #: ../lib/pz-linkcard-settings.php:177 ../lib/pz-linkcard-settings.php:409
410
- #: ../lib/pz-linkcard-settings.php:450 ../lib/pz-linkcard-settings.php:459
411
- #: ../lib/pz-linkcard-settings.php:498 ../lib/pz-linkcard-settings.php:512
412
- #: ../lib/pz-linkcard-settings.php:552 ../lib/pz-linkcard-settings.php:566
413
- #: ../lib/pz-linkcard-settings.php:717 ../lib/pz-linkcard-settings.php:729
414
- #: ../lib/pz-linkcard-settings.php:748 ../lib/pz-linkcard-settings.php:790
415
- #: ../lib/pz-linkcard-settings.php:801 ../lib/pz-linkcard-settings.php:820
 
416
  msgid "None"
417
  msgstr "なし"
418
 
419
- #: ../lib/pz-linkcard-settings.php:178
420
  msgid "Pz-LkC Default"
421
  msgstr "Pz リンクカード オリジナル"
422
 
423
- #: ../lib/pz-linkcard-settings.php:179
424
  msgid "Normal"
425
  msgstr "ノーマル(はてなブログカード風)"
426
 
427
- #: ../lib/pz-linkcard-settings.php:180
428
  msgid "Enclose"
429
  msgstr "囲み"
430
 
431
- #: ../lib/pz-linkcard-settings.php:181
432
  msgid "Compact"
433
  msgstr "コンパクト"
434
 
435
- #: ../lib/pz-linkcard-settings.php:182
436
  msgid "Reflection"
437
  msgstr "反射"
438
 
439
- #: ../lib/pz-linkcard-settings.php:183
440
  msgid "Simple"
441
  msgstr "シンプル"
442
 
443
- #: ../lib/pz-linkcard-settings.php:184
444
  msgid "Headline"
445
  msgstr "見出し(付加情報のテキストが見出しとして表示されます)"
446
 
447
- #: ../lib/pz-linkcard-settings.php:185
448
  msgid "Cellophane tape \"center\""
449
  msgstr "セロハンテープ(中央)"
450
 
451
- #: ../lib/pz-linkcard-settings.php:186
452
  msgid "Cellophane tape \"Top corner\""
453
  msgstr "セロハンテープ(左上と右上)"
454
 
455
- #: ../lib/pz-linkcard-settings.php:187
456
  msgid "Cellophane tape \"long\""
457
  msgstr "セロハンテープ(長め)"
458
 
459
- #: ../lib/pz-linkcard-settings.php:188
460
  msgid "Cellophane tape \"digonal\""
461
  msgstr "セロハンテープ(斜め)"
462
 
463
- #: ../lib/pz-linkcard-settings.php:189
464
  msgid "Curling paper"
465
  msgstr "紙がめくれた効果"
466
 
467
- #: ../lib/pz-linkcard-settings.php:190
468
  msgid "Cellophane tape and curling"
469
  msgstr "セロハンテープと紙めくれた効果"
470
 
471
- #: ../lib/pz-linkcard-settings.php:191
472
  msgid "Stitch blue & red"
473
  msgstr "縫い目(青と赤)"
474
 
475
- #: ../lib/pz-linkcard-settings.php:192
476
  msgid "Stitch green & yellow"
477
  msgstr "縫い目(緑と黄色)"
478
 
479
- #: ../lib/pz-linkcard-settings.php:193
480
  msgid "Square"
481
  msgstr "スクエア"
482
 
483
- #: ../lib/pz-linkcard-settings.php:194
484
  msgid "Infomation orange"
485
  msgstr "インフォメーション オレンジ"
486
 
487
- #: ../lib/pz-linkcard-settings.php:195
488
  msgid "Neutral bluegreen"
489
  msgstr "ニュートラル ブルーグリーン"
490
 
491
- #: ../lib/pz-linkcard-settings.php:196
492
  msgid "Enlightened green"
493
  msgstr "エンライテド グリーン"
494
 
495
- #: ../lib/pz-linkcard-settings.php:197
496
  msgid "Resistance blue"
497
  msgstr "レジスタンス ブルー"
498
 
499
- #: ../lib/pz-linkcard-settings.php:198
500
  msgid "Windows XP"
501
- msgstr ""
502
 
503
- #: ../lib/pz-linkcard-settings.php:199
504
  msgid "Windows 95"
505
- msgstr ""
506
 
507
- #: ../lib/pz-linkcard-settings.php:200
508
  msgid "Slanting"
509
  msgstr "斜め"
510
 
511
- #: ../lib/pz-linkcard-settings.php:201
512
  msgid "3D Rotate"
513
  msgstr "3D回転"
514
 
515
- #: ../lib/pz-linkcard-settings.php:202
516
  msgid "Pushpin"
517
  msgstr "押しピン"
518
 
519
- #: ../lib/pz-linkcard-settings.php:204 ../lib/pz-linkcard-settings.php:558
520
- #: ../pz-linkcard.php:1687
521
  msgid "*"
522
  msgstr "※"
523
 
524
- #: ../lib/pz-linkcard-settings.php:204
525
  msgid "It applies over other formatting settings."
526
  msgstr "ほかの項目よりも優先して適用されます。"
527
 
528
- #: ../lib/pz-linkcard-settings.php:209
529
  msgid "How to (Japanese only)"
530
  msgstr "使い方"
531
 
532
- #: ../lib/pz-linkcard-settings.php:214
533
  msgid "Author's site"
534
  msgstr "作者のサイト"
535
 
536
- #: ../lib/pz-linkcard-settings.php:215
537
  msgid "Popozure."
538
  msgstr "ぽぽづれ。"
539
 
540
- #: ../lib/pz-linkcard-settings.php:215
541
  msgid "Poporon's PC daily diary"
542
  msgstr "ぽぽろんのパソコンつれづれ(ズレズレ?)日記"
543
 
544
- #: ../lib/pz-linkcard-settings.php:218
545
  msgid "When in trouble"
546
  msgstr "困ったときは"
547
 
548
- #: ../lib/pz-linkcard-settings.php:219
549
  msgid "Twitter account"
550
  msgstr "ツイッター アカウント"
551
 
552
- #: ../lib/pz-linkcard-settings.php:222
553
  msgid "Donation"
554
  msgstr "寄付"
555
 
556
- #: ../lib/pz-linkcard-settings.php:230
557
  msgid "Position settings"
558
  msgstr "配置の設定"
559
 
560
- #: ../lib/pz-linkcard-settings.php:233
561
- msgid "Use blockquote tag"
562
- msgstr "BLOCKQUOTEタグを使用する"
563
-
564
- #: ../lib/pz-linkcard-settings.php:234
565
- msgid "without using DIV tag, and use BLOCKQUOTE tag"
566
- msgstr "&lt;BLOCKQUOTE&gt;で囲んで引用扱いにします"
567
-
568
- #: ../lib/pz-linkcard-settings.php:238
569
  msgid "Link the whole"
570
- msgstr "カード全体をリンク"
571
 
572
- #: ../lib/pz-linkcard-settings.php:242
573
  msgid "Enclose the entire card at anchor"
574
  msgstr ""
575
- "カード全体をAタグで囲って、どこをクリックしてもリンク先を開くようにします。"
576
 
577
- #: ../lib/pz-linkcard-settings.php:248
578
  msgid "Margin"
579
  msgstr "余白"
580
 
581
- #: ../lib/pz-linkcard-settings.php:255 ../lib/pz-linkcard-settings.php:288
582
  msgid "Margin top"
583
  msgstr "上の余白"
584
 
585
- #: ../lib/pz-linkcard-settings.php:257 ../lib/pz-linkcard-settings.php:273
586
- #: ../lib/pz-linkcard-settings.php:290 ../lib/pz-linkcard-settings.php:306
587
- #: ../lib/pz-linkcard-settings.php:320 ../lib/pz-linkcard-settings.php:342
588
- #: ../lib/pz-linkcard-settings.php:360 ../lib/pz-linkcard-settings.php:378
589
  msgid "Not defined"
590
  msgstr "設定しない"
591
 
592
- #: ../lib/pz-linkcard-settings.php:258 ../lib/pz-linkcard-settings.php:274
593
- #: ../lib/pz-linkcard-settings.php:298 ../lib/pz-linkcard-settings.php:314
594
- #: ../lib/pz-linkcard-settings.php:328 ../lib/pz-linkcard-settings.php:350
595
- #: ../lib/pz-linkcard-settings.php:361 ../lib/pz-linkcard-settings.php:379
596
  msgid "0"
597
- msgstr ""
598
 
599
- #: ../lib/pz-linkcard-settings.php:259 ../lib/pz-linkcard-settings.php:275
600
- #: ../lib/pz-linkcard-settings.php:291 ../lib/pz-linkcard-settings.php:307
601
- #: ../lib/pz-linkcard-settings.php:321 ../lib/pz-linkcard-settings.php:343
602
- #: ../lib/pz-linkcard-settings.php:362 ../lib/pz-linkcard-settings.php:380
603
- #: ../lib/pz-linkcard-settings.php:499
604
  msgid "4px"
605
- msgstr ""
606
 
607
- #: ../lib/pz-linkcard-settings.php:260 ../lib/pz-linkcard-settings.php:276
608
- #: ../lib/pz-linkcard-settings.php:292 ../lib/pz-linkcard-settings.php:308
609
- #: ../lib/pz-linkcard-settings.php:322 ../lib/pz-linkcard-settings.php:344
610
- #: ../lib/pz-linkcard-settings.php:363 ../lib/pz-linkcard-settings.php:381
611
- #: ../lib/pz-linkcard-settings.php:500
612
  msgid "8px"
613
- msgstr ""
614
 
615
- #: ../lib/pz-linkcard-settings.php:261 ../lib/pz-linkcard-settings.php:277
616
- #: ../lib/pz-linkcard-settings.php:293 ../lib/pz-linkcard-settings.php:309
617
- #: ../lib/pz-linkcard-settings.php:323 ../lib/pz-linkcard-settings.php:345
618
- #: ../lib/pz-linkcard-settings.php:364 ../lib/pz-linkcard-settings.php:382
619
- #: ../lib/pz-linkcard-settings.php:501
620
  msgid "16px"
621
- msgstr ""
622
 
623
- #: ../lib/pz-linkcard-settings.php:262 ../lib/pz-linkcard-settings.php:278
624
- #: ../lib/pz-linkcard-settings.php:295 ../lib/pz-linkcard-settings.php:311
625
- #: ../lib/pz-linkcard-settings.php:325 ../lib/pz-linkcard-settings.php:347
626
- #: ../lib/pz-linkcard-settings.php:365 ../lib/pz-linkcard-settings.php:383
627
- #: ../lib/pz-linkcard-settings.php:502
628
  msgid "32px"
629
- msgstr ""
630
 
631
- #: ../lib/pz-linkcard-settings.php:263 ../lib/pz-linkcard-settings.php:279
632
- #: ../lib/pz-linkcard-settings.php:296 ../lib/pz-linkcard-settings.php:312
633
- #: ../lib/pz-linkcard-settings.php:326 ../lib/pz-linkcard-settings.php:348
634
- #: ../lib/pz-linkcard-settings.php:366 ../lib/pz-linkcard-settings.php:384
635
  msgid "40px"
636
- msgstr ""
637
 
638
- #: ../lib/pz-linkcard-settings.php:264 ../lib/pz-linkcard-settings.php:280
639
- #: ../lib/pz-linkcard-settings.php:297 ../lib/pz-linkcard-settings.php:313
640
- #: ../lib/pz-linkcard-settings.php:327 ../lib/pz-linkcard-settings.php:349
641
- #: ../lib/pz-linkcard-settings.php:367 ../lib/pz-linkcard-settings.php:385
642
- #: ../lib/pz-linkcard-settings.php:503
643
  msgid "64px"
644
- msgstr ""
645
 
646
- #: ../lib/pz-linkcard-settings.php:271 ../lib/pz-linkcard-settings.php:304
647
  msgid "Margin left"
648
  msgstr "左の余白"
649
 
650
- #: ../lib/pz-linkcard-settings.php:294 ../lib/pz-linkcard-settings.php:310
651
- #: ../lib/pz-linkcard-settings.php:324 ../lib/pz-linkcard-settings.php:346
652
  msgid "24px"
653
- msgstr ""
654
 
655
- #: ../lib/pz-linkcard-settings.php:318 ../lib/pz-linkcard-settings.php:358
656
  msgid "Margin right"
657
  msgstr "右の余白"
658
 
659
- #: ../lib/pz-linkcard-settings.php:334 ../lib/pz-linkcard-settings.php:465
660
- #: ../lib/pz-linkcard-settings.php:539 ../lib/pz-linkcard-settings.php:920
661
  msgid "Width"
662
  msgstr "幅"
663
 
664
- #: ../lib/pz-linkcard-settings.php:335 ../lib/pz-linkcard-settings.php:467
665
- #: ../lib/pz-linkcard-settings.php:594 ../lib/pz-linkcard-settings.php:613
666
- #: ../lib/pz-linkcard-settings.php:632 ../lib/pz-linkcard-settings.php:650
667
- #: ../lib/pz-linkcard-settings.php:667 ../lib/pz-linkcard-settings.php:685
668
- #: ../lib/pz-linkcard-settings.php:920
669
  msgid "Height"
670
  msgstr "高さ"
671
 
672
- #: ../lib/pz-linkcard-settings.php:340 ../lib/pz-linkcard-settings.php:376
673
  msgid "Margin bottom"
674
  msgstr "下の余白"
675
 
676
- #: ../lib/pz-linkcard-settings.php:373
677
  msgid "Centering"
678
  msgstr "中央に寄せる"
679
 
680
- #: ../lib/pz-linkcard-settings.php:398
 
 
 
 
 
 
 
 
 
 
 
 
 
 
681
  msgid "Display settings"
682
  msgstr "表示の設定"
683
 
684
- #: ../lib/pz-linkcard-settings.php:401
685
  msgid "Layout"
686
- msgstr "外観設定"
687
 
688
- #: ../lib/pz-linkcard-settings.php:407 ../lib/pz-linkcard-settings.php:657
689
  msgid "Site information"
690
  msgstr "サイト情報"
691
 
692
- #: ../lib/pz-linkcard-settings.php:410
693
- msgid "Top"
694
  msgstr "上側"
695
 
696
- #: ../lib/pz-linkcard-settings.php:411
697
  msgid "Above the title"
698
  msgstr "タイトルの上側"
699
 
700
- #: ../lib/pz-linkcard-settings.php:412
701
- msgid "Bottom"
702
  msgstr "下側"
703
 
704
- #: ../lib/pz-linkcard-settings.php:414
705
  msgid "Use SiteName"
706
  msgstr "サイト名称を使用"
707
 
708
- #: ../lib/pz-linkcard-settings.php:419
709
  msgid "For internal links, display the posting date"
710
  msgstr "内部リンクの場合に投稿日を表示する"
711
 
712
- #: ../lib/pz-linkcard-settings.php:426
713
  msgid "Make additional information heading display"
714
  msgstr "付加情報を見出し表示にする"
715
 
716
- #: ../lib/pz-linkcard-settings.php:433
717
  msgid "Turn off the anchor text underlining"
718
  msgstr "リンク文字のアンダーラインを除去する"
719
 
720
- #: ../lib/pz-linkcard-settings.php:440
721
  msgid "Separator line"
722
  msgstr "区切り線"
723
 
724
- #: ../lib/pz-linkcard-settings.php:448
725
  msgid "Display URL"
726
  msgstr "リンク先URLの表示"
727
 
728
- #: ../lib/pz-linkcard-settings.php:451
729
  msgid "Under title"
730
  msgstr "タイトルの下"
731
 
732
- #: ../lib/pz-linkcard-settings.php:452 ../lib/pz-linkcard-settings.php:568
733
  msgid "Bihind site-info"
734
  msgstr "サイト情報の後ろ"
735
 
736
- #: ../lib/pz-linkcard-settings.php:457 ../lib/pz-linkcard-settings.php:714
737
- #: ../lib/pz-linkcard-settings.php:787 ../lib/pz-linkcard-settings.php:860
738
  msgid "Thumbnail"
739
  msgstr "サムネイル"
740
 
741
- #: ../lib/pz-linkcard-settings.php:460
742
- msgid "Right"
743
  msgstr "右側"
744
 
745
- #: ../lib/pz-linkcard-settings.php:461
746
- msgid "Left"
747
  msgstr "左側"
748
 
749
- #: ../lib/pz-linkcard-settings.php:462
750
- msgid "Upper"
751
- msgstr "上側"
752
-
753
- #: ../lib/pz-linkcard-settings.php:469 ../lib/pz-linkcard-settings.php:491
754
  msgid "Shadow"
755
  msgstr "影を付ける"
756
 
757
- #: ../lib/pz-linkcard-settings.php:474
758
  msgid "Hollow content area"
759
  msgstr "記事の情報に枠を付ける"
760
 
761
- #: ../lib/pz-linkcard-settings.php:479
762
  msgid "Display excerpt"
763
  msgstr "抜粋文を表示する"
764
 
765
- #: ../lib/pz-linkcard-settings.php:484
766
  msgid "Hollow"
767
  msgstr "内側に影を付ける"
768
 
769
- #: ../lib/pz-linkcard-settings.php:496
770
  msgid "Round a square"
771
  msgstr "角を丸める"
772
 
773
- #: ../lib/pz-linkcard-settings.php:510
774
  msgid "When the mouse is on"
775
  msgstr "マウスが上に乗ったとき、"
776
 
777
- #: ../lib/pz-linkcard-settings.php:513
778
  msgid "Lighten"
779
  msgstr "薄色にする"
780
 
781
- #: ../lib/pz-linkcard-settings.php:514
782
  msgid "Hover (light)"
783
  msgstr "浮かせる(薄色)"
784
 
785
- #: ../lib/pz-linkcard-settings.php:515
786
  msgid "Hover (dark)"
787
  msgstr "浮かせる(濃色)"
788
 
789
- #: ../lib/pz-linkcard-settings.php:516
790
  msgid "Radius"
791
  msgstr "角を丸める"
792
 
793
- #: ../lib/pz-linkcard-settings.php:526
794
  msgid "Border"
795
  msgstr "枠線の太さ"
796
 
797
- #: ../lib/pz-linkcard-settings.php:529
798
- msgid "none"
799
- msgstr "なし"
800
 
801
- #: ../lib/pz-linkcard-settings.php:530
802
- msgid "solid"
803
- msgstr "solid/実線"
804
 
805
- #: ../lib/pz-linkcard-settings.php:531
806
- msgid "dotted"
807
- msgstr "dotted/点線"
808
-
809
- #: ../lib/pz-linkcard-settings.php:532
810
- msgid "dashed"
811
- msgstr "dashed/破線"
812
 
813
- #: ../lib/pz-linkcard-settings.php:533
814
- msgid "double"
815
- msgstr "double/二重線"
816
 
817
- #: ../lib/pz-linkcard-settings.php:534
818
- msgid "groove"
819
- msgstr "groove/立体(へこみ)"
820
 
821
- #: ../lib/pz-linkcard-settings.php:535
822
- msgid "ridge"
823
- msgstr "ridge/立体(隆起)"
824
 
825
- #: ../lib/pz-linkcard-settings.php:536
826
- msgid "inset"
827
- msgstr "inset/立体(押したボタンのような効果)"
828
 
829
- #: ../lib/pz-linkcard-settings.php:537
830
- msgid "outset"
831
- msgstr "outset/立体(ボタンのような効果)"
832
 
833
- #: ../lib/pz-linkcard-settings.php:544
834
  msgid "Reset img style"
835
  msgstr "CSSリセット(img)"
836
 
837
- #: ../lib/pz-linkcard-settings.php:545
838
  msgid ""
839
  "When unnecessary frame is displayed on the image, you can improve it by case"
840
  msgstr "画像がずれて表示されるときに改善される可能性が有ります(推奨)"
841
 
842
- #: ../lib/pz-linkcard-settings.php:549 ../lib/pz-linkcard-settings.php:640
843
  msgid "More button"
844
  msgstr "続きを読むボタン"
845
 
846
- #: ../lib/pz-linkcard-settings.php:553
847
  msgid "Text link"
848
  msgstr "テキストリンク"
849
 
850
- #: ../lib/pz-linkcard-settings.php:554
851
  msgid "Simple button"
852
  msgstr "シンプルなボタン"
853
 
854
- #: ../lib/pz-linkcard-settings.php:555
855
  msgid "Blue"
856
  msgstr "ブルー"
857
 
858
- #: ../lib/pz-linkcard-settings.php:556
859
  msgid "Dark"
860
  msgstr "ダーク"
861
 
862
- #: ../lib/pz-linkcard-settings.php:558
863
  msgid ""
864
  "It is recommended that you leave the card height blank when using this "
865
  "setting."
866
  msgstr "この設定を使用するときはカードの高さを空欄にすることをお勧めします。"
867
 
868
- #: ../lib/pz-linkcard-settings.php:563
869
  msgid "Display SNS Count"
870
  msgstr "シェア数を表示する"
871
 
872
- #: ../lib/pz-linkcard-settings.php:567
873
  msgid "Bihind title"
874
  msgstr "タイトルの後ろ"
875
 
876
- #: ../lib/pz-linkcard-settings.php:570
877
  msgid "Twitter"
878
  msgstr "ツイッター"
879
 
880
- #: ../lib/pz-linkcard-settings.php:571
881
  msgid "Facebook"
882
  msgstr "フェイスブック(シェア数)"
883
 
884
- #: ../lib/pz-linkcard-settings.php:572
885
  msgid "Hatena"
886
  msgstr "はてなブックマーク"
887
 
888
- #: ../lib/pz-linkcard-settings.php:573
889
  msgid "Pocket"
890
- msgstr ""
891
 
892
- #: ../lib/pz-linkcard-settings.php:580
893
  msgid "Letter settings"
894
  msgstr "文字の設定"
895
 
896
- #: ../lib/pz-linkcard-settings.php:586 ../lib/pz-linkcard-settings.php:605
897
- #: ../lib/pz-linkcard-settings.php:624 ../lib/pz-linkcard-settings.php:642
898
- #: ../lib/pz-linkcard-settings.php:659 ../lib/pz-linkcard-settings.php:677
899
  msgid "Color"
900
  msgstr "色"
901
 
902
- #: ../lib/pz-linkcard-settings.php:587 ../lib/pz-linkcard-settings.php:606
903
- #: ../lib/pz-linkcard-settings.php:625 ../lib/pz-linkcard-settings.php:643
904
- #: ../lib/pz-linkcard-settings.php:660 ../lib/pz-linkcard-settings.php:678
905
  msgid "Outline"
906
  msgstr "縁取り"
907
 
908
- #: ../lib/pz-linkcard-settings.php:591 ../lib/pz-linkcard-settings.php:610
909
- #: ../lib/pz-linkcard-settings.php:629 ../lib/pz-linkcard-settings.php:647
910
- #: ../lib/pz-linkcard-settings.php:664 ../lib/pz-linkcard-settings.php:682
911
  msgid "Size"
912
  msgstr "大きさ"
913
 
914
- #: ../lib/pz-linkcard-settings.php:597 ../lib/pz-linkcard-settings.php:616
915
- #: ../lib/pz-linkcard-settings.php:635 ../lib/pz-linkcard-settings.php:670
916
  msgid "Length"
917
  msgstr "桁数"
918
 
919
- #: ../lib/pz-linkcard-settings.php:598 ../lib/pz-linkcard-settings.php:617
920
  msgid "No wrap"
921
  msgstr "折り返さない"
922
 
923
- #: ../lib/pz-linkcard-settings.php:675 ../lib/pz-linkcard-settings.php:737
924
- #: ../lib/pz-linkcard-settings.php:809 ../lib/pz-linkcard-settings.php:868
925
  msgid "Added information"
926
  msgstr "付加情報"
927
 
928
- #: ../lib/pz-linkcard-settings.php:690
929
  msgid "Resize"
930
  msgstr "幅に合わせて縮小"
931
 
932
- #: ../lib/pz-linkcard-settings.php:691
933
  msgid "Adjust thumbnail and letter size according to width"
934
- msgstr "画面幅に合わせて文字とサムネイルの大きさを調整します。"
935
 
936
- #: ../lib/pz-linkcard-settings.php:698
937
  msgid "External link settings"
938
  msgstr "外部リンクの設定"
939
 
940
- #: ../lib/pz-linkcard-settings.php:702 ../lib/pz-linkcard-settings.php:775
941
- #: ../lib/pz-linkcard-settings.php:848
942
  msgid "Border Color"
943
  msgstr "枠線の色"
944
 
945
- #: ../lib/pz-linkcard-settings.php:706 ../lib/pz-linkcard-settings.php:779
946
- #: ../lib/pz-linkcard-settings.php:852
947
  msgid "Background Color"
948
  msgstr "背景色"
949
 
950
- #: ../lib/pz-linkcard-settings.php:710
951
  msgid "Background image"
952
  msgstr "背景画像"
953
 
954
- #: ../lib/pz-linkcard-settings.php:718 ../lib/pz-linkcard-settings.php:730
955
- #: ../lib/pz-linkcard-settings.php:791 ../lib/pz-linkcard-settings.php:802
956
  msgid "Direct"
957
  msgstr "直接取得する"
958
 
959
- #: ../lib/pz-linkcard-settings.php:719 ../lib/pz-linkcard-settings.php:731
960
- #: ../lib/pz-linkcard-settings.php:792 ../lib/pz-linkcard-settings.php:803
961
  msgid "Use WebAPI"
962
  msgstr "WebAPIを利用する"
963
 
964
- #: ../lib/pz-linkcard-settings.php:720 ../lib/pz-linkcard-settings.php:732
965
- #: ../lib/pz-linkcard-settings.php:793 ../lib/pz-linkcard-settings.php:804
966
  msgid "Use WebAPI ,If can not direct"
967
  msgstr "直接取得できない場合、WebAPIを利用する"
968
 
969
- #: ../lib/pz-linkcard-settings.php:726 ../lib/pz-linkcard-settings.php:798
970
- #: ../lib/pz-linkcard-settings.php:864
971
- msgid "Favicon"
972
  msgstr "サイトアイコン"
973
 
974
- #: ../lib/pz-linkcard-settings.php:741 ../lib/pz-linkcard-settings.php:813
975
- #: ../lib/pz-linkcard-settings.php:872
976
  msgid "Text of more button"
977
  msgstr "続きを読むボタンの文字"
978
 
979
- #: ../lib/pz-linkcard-settings.php:745 ../lib/pz-linkcard-settings.php:817
980
- #: ../lib/pz-linkcard-settings.php:876
981
  msgid "Open new window/tab"
982
- msgstr "新しいウィンドウで開く"
983
 
984
- #: ../lib/pz-linkcard-settings.php:749 ../lib/pz-linkcard-settings.php:821
985
  msgid "All client"
986
  msgstr "すべての端末"
987
 
988
- #: ../lib/pz-linkcard-settings.php:750 ../lib/pz-linkcard-settings.php:822
989
  msgid "Other than mobile"
990
  msgstr "モバイル端末以外"
991
 
992
- #: ../lib/pz-linkcard-settings.php:755 ../lib/pz-linkcard-settings.php:827
993
- #: ../lib/pz-linkcard-settings.php:880
994
  msgid "Get contents"
995
  msgstr "記事取得方法"
996
 
997
- #: ../lib/pz-linkcard-settings.php:757 ../lib/pz-linkcard-settings.php:833
998
  msgid "Initially acquired only from the content"
999
  msgstr "カード管理画面に記録されている内容から表示する"
1000
 
1001
- #: ../lib/pz-linkcard-settings.php:761
1002
  msgid "Set nofollow"
1003
- msgstr "nofollowを付与する"
1004
 
1005
- #: ../lib/pz-linkcard-settings.php:762
1006
  msgid "In the case of an external site, it puts the \"nofollow\""
1007
- msgstr "外部リンクのリンクを nofollow にする"
 
 
 
 
 
 
 
 
 
 
 
 
1008
 
1009
- #: ../lib/pz-linkcard-settings.php:765
1010
  msgid "Use HatenaBlogCard"
1011
- msgstr "はてなブログカードを利用する"
1012
 
1013
- #: ../lib/pz-linkcard-settings.php:766
1014
  msgid "External links will use Always HatenaBlogCard."
1015
  msgstr "外部リンクは「はてなブログカード」を利用する。"
1016
 
1017
- #: ../lib/pz-linkcard-settings.php:766 ../lib/pz-linkcard-settings.php:1124
1018
- msgid "(Not recommended)"
1019
- msgstr "(非推奨)"
1020
-
1021
- #: ../lib/pz-linkcard-settings.php:772
1022
  msgid "Internal link settings"
1023
  msgstr "内部リンクの設定"
1024
 
1025
- #: ../lib/pz-linkcard-settings.php:783 ../lib/pz-linkcard-settings.php:856
1026
  msgid "Background Image"
1027
  msgstr "背景画像"
1028
 
1029
- #: ../lib/pz-linkcard-settings.php:831
1030
  msgid "Always get the latest from the content"
1031
  msgstr "常に最新の記事内容から抜粋文を作成する"
1032
 
1033
- #: ../lib/pz-linkcard-settings.php:832
1034
  msgid "Always get the latest from the excerpt"
1035
  msgstr "抜粋文が設定されている投稿はそちらを優先する"
1036
 
1037
- #: ../lib/pz-linkcard-settings.php:838 ../lib/pz-linkcard-settings.php:884
1038
  msgid "Retry get PID"
1039
  msgstr "記事URLの再取得"
1040
 
1041
- #: ../lib/pz-linkcard-settings.php:839
1042
  msgid "When the `Post ID` can not be acquired, it is acquired again."
1043
  msgstr "記事IDが取得できなかった場合に、リダイレクト先のURLを取得する。"
1044
 
1045
- #: ../lib/pz-linkcard-settings.php:845
1046
  msgid "Same-page link settings"
1047
  msgstr "同ページへのリンクの設定"
1048
 
1049
- #: ../lib/pz-linkcard-settings.php:861 ../lib/pz-linkcard-settings.php:865
1050
- #: ../lib/pz-linkcard-settings.php:877 ../lib/pz-linkcard-settings.php:881
1051
- #: ../lib/pz-linkcard-settings.php:885
1052
  msgid "It is common with setting Internal-link"
1053
  msgstr "内部リンク用の設定が使用されます"
1054
 
1055
- #: ../lib/pz-linkcard-settings.php:873
1056
  msgid "Cannot set"
1057
  msgstr "設定できません"
1058
 
1059
- #: ../lib/pz-linkcard-settings.php:891
1060
  msgid "Web-API settings"
1061
  msgstr "画像取得APIの設定"
1062
 
1063
- #: ../lib/pz-linkcard-settings.php:894
1064
- msgid "Favicon API"
1065
- msgstr "ファビコンの取得API"
1066
 
1067
- #: ../lib/pz-linkcard-settings.php:897
1068
  msgid "%DOMAIN% replace to domain name."
1069
  msgstr "%DOMAIN% と記述するとドメイン名に置き換わります。"
1070
 
1071
- #: ../lib/pz-linkcard-settings.php:897 ../lib/pz-linkcard-settings.php:906
1072
- #: ../pz-linkcard.php:1263 ../pz-linkcard.php:1276
1073
  msgid "("
1074
  msgstr "("
1075
 
1076
- #: ../lib/pz-linkcard-settings.php:897 ../lib/pz-linkcard-settings.php:906
1077
  msgid "ex."
1078
  msgstr "例."
1079
 
1080
- #: ../lib/pz-linkcard-settings.php:897 ../lib/pz-linkcard-settings.php:906
1081
- #: ../pz-linkcard.php:1263 ../pz-linkcard.php:1276
1082
  msgid ")"
1083
  msgstr ")"
1084
 
1085
- #: ../lib/pz-linkcard-settings.php:897
1086
  msgid "%DOMAIN_URL% replace to domain URL."
1087
  msgstr "%DOMAIN_URL% と記述するとドメインのURLに置き換わります。"
1088
 
1089
- #: ../lib/pz-linkcard-settings.php:897 ../lib/pz-linkcard-settings.php:906
1090
  msgid "%URL% replace to URL."
1091
  msgstr "%URL% と記述すると記事のURLに置き換わります。"
1092
 
1093
- #: ../lib/pz-linkcard-settings.php:898 ../lib/pz-linkcard-settings.php:907
1094
  msgid "ex1."
1095
  msgstr "例1."
1096
 
1097
- #: ../lib/pz-linkcard-settings.php:899 ../lib/pz-linkcard-settings.php:908
1098
  msgid "ex2."
1099
  msgstr "例2."
1100
 
1101
- #: ../lib/pz-linkcard-settings.php:903
1102
  msgid "Thumbnail API"
1103
- msgstr "サムネイル画像の取得API"
1104
 
1105
- #: ../lib/pz-linkcard-settings.php:915
1106
  msgid "Image settings"
1107
  msgstr "画像の設定"
1108
 
1109
- #: ../lib/pz-linkcard-settings.php:918
1110
- msgid "Cache image size"
1111
- msgstr "キャッシュする画像の大きさ"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1112
 
1113
- #: ../lib/pz-linkcard-settings.php:927
 
 
 
 
1114
  msgid "Link check settings"
1115
  msgstr "リンク先検査の設定"
1116
 
1117
- #: ../lib/pz-linkcard-settings.php:930
1118
  msgid "Do not link at error"
1119
  msgstr "エラーのときリンクしない"
1120
 
1121
- #: ../lib/pz-linkcard-settings.php:931
1122
  msgid "When access status is \"403\", \"404\", \"410\", unlink"
1123
  msgstr "ステータスが「403」「404」「410」のときにリンクを無効にします"
1124
 
1125
- #: ../lib/pz-linkcard-settings.php:934
1126
  msgid "SSL verification disabled"
1127
  msgstr "SSL検証を無効"
1128
 
1129
- #: ../lib/pz-linkcard-settings.php:935
1130
  msgid "Try setting if the contents of the SSL site can not be acquired."
1131
  msgstr ""
1132
  "SSLサイトのタイトルや記事内容が取得できない場合に設定することで取得できる可能"
1133
  "性があります。"
1134
 
1135
- #: ../lib/pz-linkcard-settings.php:938
1136
  msgid "Follow location"
1137
- msgstr "リダイレクト処理"
1138
 
1139
- #: ../lib/pz-linkcard-settings.php:939
1140
  msgid "Track when the link destination is redirected."
1141
  msgstr "リンク先がリダイレクトされている場合に追跡します。"
1142
 
1143
- #: ../lib/pz-linkcard-settings.php:942
1144
  msgid "Set referer"
1145
  msgstr "リファラーの通知"
1146
 
1147
- #: ../lib/pz-linkcard-settings.php:943
1148
  msgid "Notify the article URL to the link destination."
1149
  msgstr "リンク先に記事のURLを知らせます。"
1150
 
1151
- #: ../lib/pz-linkcard-settings.php:946
1152
  msgid "Use User-Agent"
1153
  msgstr "ユーザーエージェントの通知"
1154
 
1155
- #: ../lib/pz-linkcard-settings.php:948
1156
  msgid "Notify using Pz-LinkCard to the link destination."
1157
  msgstr "リンク先にPz-LinkCardを使用していることを知らせます。"
1158
 
1159
- #: ../lib/pz-linkcard-settings.php:953
1160
  msgid "Broken link checker"
1161
  msgstr "リンク切れチェック"
1162
 
1163
- #: ../lib/pz-linkcard-settings.php:954
1164
  msgid "Alive confirmation of the link destination."
1165
  msgstr "リンク先がアクセスできるか定期的に確認します。"
1166
 
1167
- #: ../lib/pz-linkcard-settings.php:957
1168
  msgid "Broken link count"
1169
  msgstr "リンク切れカウント"
1170
 
1171
- #: ../lib/pz-linkcard-settings.php:958
1172
  msgid "The number of broken links is displayed next to the submenu."
1173
  msgstr "サブメニューの横にリンク切れの件数を表示します。"
1174
 
1175
- #: ../lib/pz-linkcard-settings.php:961
1176
  msgid "Multi-site compatible"
1177
  msgstr "サブディレクトリを外部リンクにする"
1178
 
1179
- #: ../lib/pz-linkcard-settings.php:962
1180
  msgid ""
1181
  "In the case of the multi-site of the subdirectory type, the site under the "
1182
  "subdirectory is judged as an external site."
@@ -1184,268 +1252,259 @@ msgstr ""
1184
  "サブディレクトリ型のマルチサイトの場合で、メインサイトからサブサイトを外部サ"
1185
  "イトとして判定する。"
1186
 
1187
- #: ../lib/pz-linkcard-settings.php:968
1188
  msgid "Editor settings"
1189
  msgstr "エディターの設定"
1190
 
1191
- #: ../lib/pz-linkcard-settings.php:971
1192
  msgid "ShortCode 1"
1193
  msgstr "ショートコード 1"
1194
 
1195
- #: ../lib/pz-linkcard-settings.php:973 ../lib/pz-linkcard-settings.php:991
1196
- #: ../lib/pz-linkcard-settings.php:996 ../lib/pz-linkcard-settings.php:1001
1197
  msgid "Case-sensitive"
1198
  msgstr "大文字と小文字を区別します"
1199
 
1200
- #: ../lib/pz-linkcard-settings.php:976
1201
  msgid "Use inlinetext"
1202
  msgstr "ショートコードで囲んだ文字列"
1203
 
1204
- #: ../lib/pz-linkcard-settings.php:980
1205
  msgid "No use"
1206
  msgstr "使用しない"
1207
 
1208
- #: ../lib/pz-linkcard-settings.php:981
1209
  msgid "Use to excerpt"
1210
  msgstr "抜粋文として使用"
1211
 
1212
- #: ../lib/pz-linkcard-settings.php:982
1213
  msgid "Use to title"
1214
  msgstr "タイトルとして使用"
1215
 
1216
- #: ../lib/pz-linkcard-settings.php:985
1217
  msgid "This setting applies only to the Shortcode1"
1218
  msgstr "ショートコード1にのみ適用されます"
1219
 
1220
- #: ../lib/pz-linkcard-settings.php:989
1221
  msgid "ShortCode 2"
1222
  msgstr "ショートコード 2"
1223
 
1224
- #: ../lib/pz-linkcard-settings.php:994
1225
  msgid "ShortCode 3"
1226
  msgstr "ショートコード 3"
1227
 
1228
- #: ../lib/pz-linkcard-settings.php:999
1229
  msgid "ShortCode 4"
1230
  msgstr "ショートコード 4"
1231
 
1232
- #: ../lib/pz-linkcard-settings.php:1004
1233
  msgid "Parameters"
1234
  msgstr "パラメータ"
1235
 
1236
- #: ../lib/pz-linkcard-settings.php:1007
1237
  msgid ""
1238
  "For any shortcode you can change the title and excerpt with `title` "
1239
  "parameter and `content` parameter"
1240
  msgstr ""
1241
  "どのショートコードでも title パラメータと content パラメータでタイトルと抜粋"
1242
- "文を指定できます。"
1243
 
1244
- #: ../lib/pz-linkcard-settings.php:1012
1245
  msgid "Convert text link"
1246
  msgstr "テキストリンク行の変換"
1247
 
1248
- #: ../lib/pz-linkcard-settings.php:1013
1249
  msgid "Convert lines with text link only to Linkcard."
1250
  msgstr "テキストリンクだけの行をリンクカードに変換する。"
1251
 
1252
- #: ../lib/pz-linkcard-settings.php:1016
1253
  msgid "Convert URL"
1254
  msgstr "URL行の変換"
1255
 
1256
- #: ../lib/pz-linkcard-settings.php:1017
1257
  msgid "Convert lines with URL only to Linkcard."
1258
  msgstr "URLだけの行をリンクカードに変換する。"
1259
 
1260
- #: ../lib/pz-linkcard-settings.php:1020
1261
  msgid "External link only"
1262
  msgstr "外部リンクのみ"
1263
 
1264
- #: ../lib/pz-linkcard-settings.php:1021
1265
  msgid "Convert only external links."
1266
  msgstr "外部リンクのときのみ変換します。"
1267
 
1268
- #: ../lib/pz-linkcard-settings.php:1025
1269
  msgid "Do shortcode"
1270
  msgstr "ショートコード 実行"
1271
 
1272
- #: ../lib/pz-linkcard-settings.php:1026
1273
  msgid "Force shortcode development."
1274
  msgstr "リンク・URLから変換したときにショートコードを強制的に実行する。"
1275
 
1276
- #: ../lib/pz-linkcard-settings.php:1030
1277
  msgid "Add insert button"
1278
  msgstr "リンクカードボタンを追加"
1279
 
1280
- #: ../lib/pz-linkcard-settings.php:1031
1281
  msgid "Add insert button to visual editor."
1282
- msgstr "ビジュアルエディタにリンクカードを挿入するボタンを追加する。"
 
1283
 
1284
- #: ../lib/pz-linkcard-settings.php:1034
1285
  msgid "Add quick tag"
1286
  msgstr "クイックタグを追加"
1287
 
1288
- #: ../lib/pz-linkcard-settings.php:1035
1289
  msgid "Add quick tag button to text editor."
1290
- msgstr "テキストエディタにリンクカードを挿入するボタンを追加する。"
 
 
1291
 
1292
- #: ../lib/pz-linkcard-settings.php:1042
1293
  msgid "Advanced settings"
1294
  msgstr "上級者向けの設定"
1295
 
1296
- #: ../lib/pz-linkcard-settings.php:1045
1297
  msgid "Trailing slash"
1298
- msgstr "末尾のスラッシュ"
1299
 
1300
- #: ../lib/pz-linkcard-settings.php:1049
1301
  msgid "As it"
1302
  msgstr "そのまま"
1303
 
1304
- #: ../lib/pz-linkcard-settings.php:1050
1305
  msgid "When only domain name, remove"
1306
  msgstr "ドメイン名のみのときだけ削除"
1307
 
1308
- #: ../lib/pz-linkcard-settings.php:1051
1309
  msgid "Always remove"
1310
  msgstr "常に削除"
1311
 
1312
- #: ../lib/pz-linkcard-settings.php:1057
1313
- msgid "CSS to be added"
1314
- msgstr "追加するスタイルシート"
1315
-
1316
- #: ../lib/pz-linkcard-settings.php:1061
1317
- msgid "specified CSS"
1318
- msgstr "指定したCSSを使用"
1319
-
1320
- #: ../lib/pz-linkcard-settings.php:1062
1321
- msgid "Use specified CSS file"
1322
- msgstr "指定したCSSファイルを使用する"
1323
-
1324
- #: ../lib/pz-linkcard-settings.php:1065 ../lib/pz-linkcard-settings.php:1069
1325
- msgid "CSS file"
1326
- msgstr "CSSファイル名"
1327
-
1328
- #: ../lib/pz-linkcard-settings.php:1066
1329
- msgid "(ex. https://exsample.com/style.css )"
1330
- msgstr "(例.https://exsample.com/style.css)"
1331
-
1332
- #: ../lib/pz-linkcard-settings.php:1073
1333
- msgid "CSS URL"
1334
- msgstr "CSSファイルのURL"
1335
-
1336
- #: ../lib/pz-linkcard-settings.php:1078
1337
  msgid "Class ID to be added(for PC)"
1338
  msgstr "PCのときに追加するクラス名"
1339
 
1340
- #: ../lib/pz-linkcard-settings.php:1082
1341
  msgid "Class ID to be added(for Mobile)"
1342
  msgstr "モバイルのときに追加するクラス名"
1343
 
1344
- #: ../lib/pz-linkcard-settings.php:1087
1345
  msgid "Google AMP URL"
1346
  msgstr "URLによるAMP判断"
1347
 
1348
- #: ../lib/pz-linkcard-settings.php:1088
1349
  msgid "If the URL is AMP, display simple."
1350
  msgstr ""
1351
  "アクセスされたURLの末尾が「/amp」「/amp/」「/?amp=1」の場合、簡易表示に切り替"
1352
  "える。"
1353
 
1354
- #: ../lib/pz-linkcard-settings.php:1092
1355
  msgid "IDNA Convert"
1356
  msgstr "IDNAドメインの表示"
1357
 
1358
- #: ../lib/pz-linkcard-settings.php:1093
1359
  msgid "Convert domain name from IDNA ASCII to Unicode."
1360
  msgstr ""
1361
  "IDNAのASCII方式でエンコードされたドメイン名をUnicodeに変換して表示します(日"
1362
  "本語ドメインなど)"
1363
 
1364
- #: ../lib/pz-linkcard-settings.php:1097
1365
  msgid "Relative URL"
1366
  msgstr "相対指定URL"
1367
 
1368
- #: ../lib/pz-linkcard-settings.php:1098
1369
  msgid "For relative-specified URLs, complement the site URL."
1370
  msgstr "相対指定のURLの場合、サイトURLを補完します。"
1371
 
1372
- #: ../lib/pz-linkcard-settings.php:1102
 
 
 
 
 
 
 
 
1373
  msgid "Display link to author page"
1374
  msgstr "プラグイン名を表示する"
1375
 
1376
- #: ../lib/pz-linkcard-settings.php:1106
1377
  msgid "Plugin URL"
1378
  msgstr "プラグインページURL"
1379
 
1380
- #: ../lib/pz-linkcard-settings.php:1110
1381
  msgid "Plugin name"
1382
  msgstr "プラグイン名"
1383
 
1384
- #: ../lib/pz-linkcard-settings.php:1114
1385
  msgid "Plugin version"
1386
  msgstr "プラグインバージョン"
1387
 
1388
- #: ../lib/pz-linkcard-settings.php:1118
1389
  msgid "Saved datetime"
1390
  msgstr "保存した日時"
1391
 
1392
- #: ../lib/pz-linkcard-settings.php:1123
1393
  msgid "Display elapsed time"
1394
  msgstr "実行時間の表示"
1395
 
1396
- #: ../lib/pz-linkcard-settings.php:1124
1397
  msgid "Output the elapsed time to HTML comment."
1398
- msgstr "作成にかかった時間をコメントとしてHTMLへ出力する"
1399
 
1400
- #: ../lib/pz-linkcard-settings.php:1134
1401
  msgid "Return to the initial setting"
1402
  msgstr "設定を初期状態へ戻す"
1403
 
1404
- #: ../lib/pz-linkcard-style.php:641
1405
- msgid "Style sheet saved."
1406
- msgstr "設定を元にスタイルシートを自動生成しました。"
 
 
 
 
1407
 
1408
  #: ../lib/pz-linkcard-style.php:643
1409
- msgid "Style sheet failed."
1410
- msgstr "スタイルシートの自動生成に失敗しました。"
1411
 
1412
- #: ../pz-linkcard.php:359
1413
  msgid "Incorrect URL specification."
1414
- msgstr ""
1415
 
1416
- #: ../pz-linkcard.php:1262
1417
  msgid "Category"
1418
  msgstr "カテゴリー"
1419
 
1420
- #: ../pz-linkcard.php:1262 ../pz-linkcard.php:1275
1421
  msgid "‘"
1422
  msgstr "「"
1423
 
1424
- #: ../pz-linkcard.php:1262 ../pz-linkcard.php:1275
1425
  msgid "’"
1426
  msgstr "」"
1427
 
1428
- #: ../pz-linkcard.php:1263 ../pz-linkcard.php:1276
1429
  msgid "Count"
1430
  msgstr "件数"
1431
 
1432
- #: ../pz-linkcard.php:1275
1433
  msgid "Tag"
1434
  msgstr "タグ"
1435
 
1436
- #: ../pz-linkcard.php:1678
1437
  msgid "Linkcard"
1438
  msgstr "リンクカード"
1439
 
1440
- #: ../pz-linkcard.php:1678
1441
  msgid "Make Linkcard"
1442
  msgstr "リンクカードのショートコードを挿入する"
1443
 
1444
- #: ../pz-linkcard.php:1687
1445
  msgid "Invalid URL parameter in "
1446
  msgstr "URLパラメーターの指定が無効です→"
1447
 
1448
- #: ../pz-linkcard.php:1687
1449
  msgid ""
1450
  "You can cancel this message from <a href=\"./options-general.php?page=pz-"
1451
  "linkcard-settings\">the setting screen</a>."
@@ -1453,22 +1512,76 @@ msgstr ""
1453
  "このメッセージの表示は<a href=\"./options-general.php?page=pz-linkcard-"
1454
  "settings\">設定画面</a>から解除できます。"
1455
 
1456
- #: ../pz-linkcard.php:1729
1457
  msgid "Pz LkC Cache"
1458
  msgstr "Pz カード管理"
1459
 
1460
- #: ../pz-linkcard.php:1730
1461
  msgid "Pz LinkCard"
1462
  msgstr "Pz カード設定"
1463
 
1464
- #: ../pz-linkcard.php:1822
1465
  msgid "Settings"
1466
  msgstr "設定"
1467
 
1468
- #: ../pz-linkcard.php:1822
1469
  msgid "Manage"
1470
  msgstr "管理"
1471
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1472
  #~ msgid ""
1473
  #~ "%DOMAIN% replace to domain name (ex. poporon.poponet.jp )<br>%DOMAIN_URL% "
1474
  #~ "replace to domain URL (ex. http://poporon.poponet.jp )"
@@ -1611,9 +1724,6 @@ msgstr "管理"
1611
  #~ msgid "Instructed to get the number again"
1612
  #~ msgstr "ソーシャルカウントの再取得を指示しました"
1613
 
1614
- #~ msgid "Site icon"
1615
- #~ msgstr "サイトアイコン"
1616
-
1617
  #~ msgid "Sorry. This feature is not implemented yet..."
1618
  #~ msgstr "もうしわけありません。この機能は未実装です。"
1619
 
4
  msgstr ""
5
  "Project-Id-Version: Pz-LinkCard\n"
6
  "Report-Msgid-Bugs-To: http://wppolyglots.wordpress.com\n"
7
+ "POT-Creation-Date: 2021-01-01 18:00+0900\n"
8
+ "PO-Revision-Date: 2021-01-01 18:01+0900\n"
9
  "Last-Translator: \n"
10
  "Language-Team: poporon\n"
11
  "Language: ja_JP\n"
22
  #: ../lib/pz-linkcard-cacheman-edit.php:14
23
  #: ../lib/pz-linkcard-cacheman-list.php:246 ../lib/pz-linkcard-edit.php:13
24
  msgid "ID"
25
+ msgstr "ID"
26
 
27
  #: ../lib/pz-linkcard-cacheman-edit.php:18
28
  #: ../lib/pz-linkcard-cacheman-list.php:247 ../lib/pz-linkcard-edit.php:17
31
 
32
  #: ../lib/pz-linkcard-cacheman-edit.php:22
33
  #: ../lib/pz-linkcard-cacheman-list.php:248 ../lib/pz-linkcard-edit.php:21
34
+ #: ../lib/pz-linkcard-settings.php:550
35
  msgid "URL"
36
  msgstr "URL"
37
 
46
 
47
  #: ../lib/pz-linkcard-cacheman-edit.php:34
48
  #: ../lib/pz-linkcard-cacheman-list.php:249 ../lib/pz-linkcard-edit.php:37
49
+ #: ../lib/pz-linkcard-settings.php:531
50
  msgid "Title"
51
  msgstr "タイトル"
52
 
53
  #: ../lib/pz-linkcard-cacheman-edit.php:38
54
  #: ../lib/pz-linkcard-cacheman-list.php:250 ../lib/pz-linkcard-edit.php:41
55
+ #: ../lib/pz-linkcard-settings.php:569
56
  msgid "Excerpt"
57
  msgstr "抜粋文"
58
 
67
 
68
  #: ../lib/pz-linkcard-cacheman-edit.php:46 ../lib/pz-linkcard-edit.php:49
69
  msgid "Thumbnail URL"
70
+ msgstr "サムネイル画像URL"
71
 
72
  #: ../lib/pz-linkcard-cacheman-edit.php:50 ../lib/pz-linkcard-edit.php:53
73
  msgid "Favicon URL"
74
+ msgstr "サイトアイコンのURL"
75
 
76
+ #: ../lib/pz-linkcard-cacheman-edit.php:54 ../lib/pz-linkcard-edit.php:57
 
77
  msgid "Result code"
78
+ msgstr "結果コード"
79
 
80
+ #: ../lib/pz-linkcard-cacheman-edit.php:94
81
  #: ../lib/pz-linkcard-cacheman-list.php:255 ../lib/pz-linkcard-edit.php:61
82
  msgid "Post ID"
83
  msgstr "記事ID"
84
 
85
+ #: ../lib/pz-linkcard-cacheman-edit.php:103 ../lib/pz-linkcard-edit.php:65
86
  msgid "SNS"
87
+ msgstr "SNS"
88
 
89
+ #: ../lib/pz-linkcard-cacheman-edit.php:105
90
  #: ../lib/pz-linkcard-cacheman-list.php:253 ../lib/pz-linkcard-edit.php:67
91
  msgid "Tw"
92
+ msgstr "Tw"
93
 
94
+ #: ../lib/pz-linkcard-cacheman-edit.php:106
95
  #: ../lib/pz-linkcard-cacheman-list.php:253 ../lib/pz-linkcard-edit.php:68
96
  msgid "fb"
97
+ msgstr "fb"
98
 
99
+ #: ../lib/pz-linkcard-cacheman-edit.php:107
100
  #: ../lib/pz-linkcard-cacheman-list.php:253 ../lib/pz-linkcard-edit.php:69
101
  msgid "B!"
102
+ msgstr "B!"
103
 
104
+ #: ../lib/pz-linkcard-cacheman-edit.php:108
105
  #: ../lib/pz-linkcard-cacheman-list.php:253
106
  msgid "Po"
107
+ msgstr "Po"
108
 
109
+ #: ../lib/pz-linkcard-cacheman-edit.php:112 ../lib/pz-linkcard-edit.php:73
110
  msgid "Uptime"
111
  msgstr "更新日時"
112
 
113
+ #: ../lib/pz-linkcard-cacheman-edit.php:116
114
  msgid "Next SNS"
115
  msgstr "次回のSNS確認日時"
116
 
117
+ #: ../lib/pz-linkcard-cacheman-edit.php:120
118
  msgid "Next alive"
119
  msgstr "次回のリンク切れ確認日時"
120
 
121
+ #: ../lib/pz-linkcard-cacheman-edit.php:124
122
  #: ../lib/pz-linkcard-cacheman-list.php:254 ../lib/pz-linkcard-edit.php:81
123
  msgid "Regist"
124
  msgstr "登録日時"
125
 
126
+ #: ../lib/pz-linkcard-cacheman-edit.php:129 ../lib/pz-linkcard-edit.php:86
127
  msgid "Update"
128
  msgstr "更新"
129
 
130
+ #: ../lib/pz-linkcard-cacheman-edit.php:129 ../lib/pz-linkcard-edit.php:86
131
  msgid "Cancel"
132
  msgstr "キャンセル"
133
 
212
  msgid "Select all"
213
  msgstr "すべて選択"
214
 
215
+ #: ../lib/pz-linkcard-cacheman-list.php:256
216
+ msgid "Result CD"
217
+ msgstr "結果コード"
218
+
219
  #: ../lib/pz-linkcard-cacheman-list.php:256
220
  msgid "(last)"
221
+ msgstr "(直近)"
222
 
223
  #: ../lib/pz-linkcard-cacheman-list.php:321
224
  msgid "edit"
241
  msgid "Export"
242
  msgstr "エクスポート"
243
 
244
+ #: ../lib/pz-linkcard-cacheman.php:6 ../pz-linkcard.php:1792
245
  msgid "LinkCard cache manager"
246
  msgstr "リンクカード/DBキャッシュ管理"
247
 
248
+ #: ../lib/pz-linkcard-cacheman.php:6 ../lib/pz-linkcard-settings.php:94
249
+ #: ../lib/pz-linkcard-settings.php:119 ../lib/pz-linkcard-settings.php:178
250
+ #: ../lib/pz-linkcard-settings.php:345 ../lib/pz-linkcard-settings.php:527
251
+ #: ../lib/pz-linkcard-settings.php:645 ../lib/pz-linkcard-settings.php:723
252
+ #: ../lib/pz-linkcard-settings.php:796 ../lib/pz-linkcard-settings.php:842
253
+ #: ../lib/pz-linkcard-settings.php:866 ../lib/pz-linkcard-settings.php:891
254
+ #: ../lib/pz-linkcard-settings.php:921 ../lib/pz-linkcard-settings.php:962
255
+ #: ../lib/pz-linkcard-settings.php:1036 ../lib/pz-linkcard-settings.php:1111
256
  msgid "Help"
257
  msgstr "ヘルプ"
258
 
262
 
263
  #: ../lib/pz-linkcard-cacheman.php:83 ../lib/pz-linkcard-cacheman.php:86
264
  msgid "Update failed"
265
+ msgstr "更新に失敗しました"
266
 
267
  #: ../lib/pz-linkcard-cacheman.php:91
268
  msgid "Social count renew"
275
 
276
  #: ../lib/pz-linkcard-cacheman.php:106
277
  msgid "Thumbnail renew"
278
+ msgstr "サムネイル画像を再取得"
279
 
280
  #: ../lib/pz-linkcard-cacheman.php:119
281
  msgid "Alive check"
299
 
300
  #: ../lib/pz-linkcard-edit.php:77
301
  msgid "Next update"
302
+ msgstr "次回の更新日時"
303
 
304
  #: ../lib/pz-linkcard-modal.php:6
305
  msgid "Input URL"
309
  msgid "Insert"
310
  msgstr "挿入"
311
 
312
+ #: ../lib/pz-linkcard-settings-validate.php:84
313
+ msgid "Color code does not conform to HTML color code."
314
+ msgstr ""
315
+ "色の指定がHTMLカラーコードになっていません。正しい色が表示できない可能性があ"
316
+ "ります。"
317
+
318
+ #: ../lib/pz-linkcard-settings.php:4 ../pz-linkcard.php:1793
319
  msgid "LinkCard Settings"
320
  msgstr "リンクカード設定"
321
 
322
+ #: ../lib/pz-linkcard-settings.php:56
323
+ msgid "Succeeded in saving the settings."
324
+ msgstr "設定を更新しました。"
325
 
326
+ #: ../lib/pz-linkcard-settings.php:58
327
+ msgid "Failed to save settings."
328
+ msgstr "設定の更新に失敗しました。"
329
 
330
+ #: ../lib/pz-linkcard-settings.php:62
331
+ msgid "The settings have not changed."
332
+ msgstr "設定は変更されていません。"
333
 
334
+ #: ../lib/pz-linkcard-settings.php:75
335
  msgid "Error"
336
  msgstr "エラー"
337
 
338
+ #: ../lib/pz-linkcard-settings.php:76
339
  msgid "Basic"
340
  msgstr "基本"
341
 
342
+ #: ../lib/pz-linkcard-settings.php:77
343
  msgid "Position"
344
  msgstr "配置"
345
 
346
+ #: ../lib/pz-linkcard-settings.php:78
347
  msgid "Display"
348
  msgstr "表示"
349
 
350
+ #: ../lib/pz-linkcard-settings.php:79
351
  msgid "Letter"
352
  msgstr "文字"
353
 
354
+ #: ../lib/pz-linkcard-settings.php:80
355
  msgid "External link"
356
  msgstr "外部リンク"
357
 
358
+ #: ../lib/pz-linkcard-settings.php:81
359
  msgid "Internal link"
360
  msgstr "内部リンク"
361
 
362
+ #: ../lib/pz-linkcard-settings.php:82
363
  msgid "Same page link"
364
+ msgstr "同ページへのリンク"
365
 
366
+ #: ../lib/pz-linkcard-settings.php:83
367
  msgid "Web API"
368
+ msgstr "Web API"
369
 
370
+ #: ../lib/pz-linkcard-settings.php:84
371
  msgid "Image"
372
  msgstr "画像"
373
 
374
+ #: ../lib/pz-linkcard-settings.php:85
375
+ msgid "CSS"
376
+ msgstr "CSS"
377
+
378
+ #: ../lib/pz-linkcard-settings.php:86
379
  msgid "Link check"
380
+ msgstr "リンク先の検査"
381
 
382
+ #: ../lib/pz-linkcard-settings.php:87
383
  msgid "Editor"
384
  msgstr "エディタ"
385
 
386
+ #: ../lib/pz-linkcard-settings.php:88
387
  msgid "Advanced"
388
  msgstr "上級者向け"
389
 
390
+ #: ../lib/pz-linkcard-settings.php:89 ../lib/pz-linkcard-settings.php:1111
391
  msgid "Initialize"
392
  msgstr "初期化"
393
 
394
+ #: ../lib/pz-linkcard-settings.php:94
395
  msgid "Error settings"
396
  msgstr "エラーの設定"
397
 
398
+ #: ../lib/pz-linkcard-settings.php:97
399
+ msgid "Error reset"
400
+ msgstr "エラーの解除"
401
 
402
+ #: ../lib/pz-linkcard-settings.php:98
403
  msgid "Uncheck to cancel the error condition."
404
  msgstr "チェックを外すとエラー状態を解除します。"
405
 
406
+ #: ../lib/pz-linkcard-settings.php:101
407
  msgid "Error URL"
408
+ msgstr "URLの指定エラー"
409
 
410
+ #: ../lib/pz-linkcard-settings.php:108
411
  msgid "Error Time"
412
+ msgstr "エラーの発生日時"
413
 
414
+ #: ../lib/pz-linkcard-settings.php:119
415
  msgid "Basic settings"
416
  msgstr "基本の設定"
417
 
418
+ #: ../lib/pz-linkcard-settings.php:122
419
  msgid "Easy format"
420
  msgstr "かんたん書式設定"
421
 
422
+ #: ../lib/pz-linkcard-settings.php:125 ../lib/pz-linkcard-settings.php:356
423
+ #: ../lib/pz-linkcard-settings.php:397 ../lib/pz-linkcard-settings.php:406
424
+ #: ../lib/pz-linkcard-settings.php:445 ../lib/pz-linkcard-settings.php:459
425
+ #: ../lib/pz-linkcard-settings.php:476 ../lib/pz-linkcard-settings.php:499
426
+ #: ../lib/pz-linkcard-settings.php:513 ../lib/pz-linkcard-settings.php:664
427
+ #: ../lib/pz-linkcard-settings.php:676 ../lib/pz-linkcard-settings.php:695
428
+ #: ../lib/pz-linkcard-settings.php:741 ../lib/pz-linkcard-settings.php:752
429
+ #: ../lib/pz-linkcard-settings.php:771
430
  msgid "None"
431
  msgstr "なし"
432
 
433
+ #: ../lib/pz-linkcard-settings.php:126
434
  msgid "Pz-LkC Default"
435
  msgstr "Pz リンクカード オリジナル"
436
 
437
+ #: ../lib/pz-linkcard-settings.php:127
438
  msgid "Normal"
439
  msgstr "ノーマル(はてなブログカード風)"
440
 
441
+ #: ../lib/pz-linkcard-settings.php:128
442
  msgid "Enclose"
443
  msgstr "囲み"
444
 
445
+ #: ../lib/pz-linkcard-settings.php:129
446
  msgid "Compact"
447
  msgstr "コンパクト"
448
 
449
+ #: ../lib/pz-linkcard-settings.php:130
450
  msgid "Reflection"
451
  msgstr "反射"
452
 
453
+ #: ../lib/pz-linkcard-settings.php:131
454
  msgid "Simple"
455
  msgstr "シンプル"
456
 
457
+ #: ../lib/pz-linkcard-settings.php:132
458
  msgid "Headline"
459
  msgstr "見出し(付加情報のテキストが見出しとして表示されます)"
460
 
461
+ #: ../lib/pz-linkcard-settings.php:133
462
  msgid "Cellophane tape \"center\""
463
  msgstr "セロハンテープ(中央)"
464
 
465
+ #: ../lib/pz-linkcard-settings.php:134
466
  msgid "Cellophane tape \"Top corner\""
467
  msgstr "セロハンテープ(左上と右上)"
468
 
469
+ #: ../lib/pz-linkcard-settings.php:135
470
  msgid "Cellophane tape \"long\""
471
  msgstr "セロハンテープ(長め)"
472
 
473
+ #: ../lib/pz-linkcard-settings.php:136
474
  msgid "Cellophane tape \"digonal\""
475
  msgstr "セロハンテープ(斜め)"
476
 
477
+ #: ../lib/pz-linkcard-settings.php:137
478
  msgid "Curling paper"
479
  msgstr "紙がめくれた効果"
480
 
481
+ #: ../lib/pz-linkcard-settings.php:138
482
  msgid "Cellophane tape and curling"
483
  msgstr "セロハンテープと紙めくれた効果"
484
 
485
+ #: ../lib/pz-linkcard-settings.php:139
486
  msgid "Stitch blue & red"
487
  msgstr "縫い目(青と赤)"
488
 
489
+ #: ../lib/pz-linkcard-settings.php:140
490
  msgid "Stitch green & yellow"
491
  msgstr "縫い目(緑と黄色)"
492
 
493
+ #: ../lib/pz-linkcard-settings.php:141
494
  msgid "Square"
495
  msgstr "スクエア"
496
 
497
+ #: ../lib/pz-linkcard-settings.php:142
498
  msgid "Infomation orange"
499
  msgstr "インフォメーション オレンジ"
500
 
501
+ #: ../lib/pz-linkcard-settings.php:143
502
  msgid "Neutral bluegreen"
503
  msgstr "ニュートラル ブルーグリーン"
504
 
505
+ #: ../lib/pz-linkcard-settings.php:144
506
  msgid "Enlightened green"
507
  msgstr "エンライテド グリーン"
508
 
509
+ #: ../lib/pz-linkcard-settings.php:145
510
  msgid "Resistance blue"
511
  msgstr "レジスタンス ブルー"
512
 
513
+ #: ../lib/pz-linkcard-settings.php:146
514
  msgid "Windows XP"
515
+ msgstr "Windows XP 風"
516
 
517
+ #: ../lib/pz-linkcard-settings.php:147
518
  msgid "Windows 95"
519
+ msgstr "Windows 95 風"
520
 
521
+ #: ../lib/pz-linkcard-settings.php:148
522
  msgid "Slanting"
523
  msgstr "斜め"
524
 
525
+ #: ../lib/pz-linkcard-settings.php:149
526
  msgid "3D Rotate"
527
  msgstr "3D回転"
528
 
529
+ #: ../lib/pz-linkcard-settings.php:150
530
  msgid "Pushpin"
531
  msgstr "押しピン"
532
 
533
+ #: ../lib/pz-linkcard-settings.php:152 ../lib/pz-linkcard-settings.php:505
534
+ #: ../pz-linkcard.php:1752
535
  msgid "*"
536
  msgstr "※"
537
 
538
+ #: ../lib/pz-linkcard-settings.php:152
539
  msgid "It applies over other formatting settings."
540
  msgstr "ほかの項目よりも優先して適用されます。"
541
 
542
+ #: ../lib/pz-linkcard-settings.php:157
543
  msgid "How to (Japanese only)"
544
  msgstr "使い方"
545
 
546
+ #: ../lib/pz-linkcard-settings.php:162
547
  msgid "Author's site"
548
  msgstr "作者のサイト"
549
 
550
+ #: ../lib/pz-linkcard-settings.php:163
551
  msgid "Popozure."
552
  msgstr "ぽぽづれ。"
553
 
554
+ #: ../lib/pz-linkcard-settings.php:163
555
  msgid "Poporon's PC daily diary"
556
  msgstr "ぽぽろんのパソコンつれづれ(ズレズレ?)日記"
557
 
558
+ #: ../lib/pz-linkcard-settings.php:166
559
  msgid "When in trouble"
560
  msgstr "困ったときは"
561
 
562
+ #: ../lib/pz-linkcard-settings.php:167
563
  msgid "Twitter account"
564
  msgstr "ツイッター アカウント"
565
 
566
+ #: ../lib/pz-linkcard-settings.php:170
567
  msgid "Donation"
568
  msgstr "寄付"
569
 
570
+ #: ../lib/pz-linkcard-settings.php:178
571
  msgid "Position settings"
572
  msgstr "配置の設定"
573
 
574
+ #: ../lib/pz-linkcard-settings.php:181
 
 
 
 
 
 
 
 
575
  msgid "Link the whole"
576
+ msgstr "カード全体をリンクする"
577
 
578
+ #: ../lib/pz-linkcard-settings.php:185
579
  msgid "Enclose the entire card at anchor"
580
  msgstr ""
581
+ "カード全体をAタグで囲って、どこをクリックしてもリンク先を開くようにします"
582
 
583
+ #: ../lib/pz-linkcard-settings.php:191
584
  msgid "Margin"
585
  msgstr "余白"
586
 
587
+ #: ../lib/pz-linkcard-settings.php:198 ../lib/pz-linkcard-settings.php:231
588
  msgid "Margin top"
589
  msgstr "上の余白"
590
 
591
+ #: ../lib/pz-linkcard-settings.php:200 ../lib/pz-linkcard-settings.php:216
592
+ #: ../lib/pz-linkcard-settings.php:233 ../lib/pz-linkcard-settings.php:249
593
+ #: ../lib/pz-linkcard-settings.php:263 ../lib/pz-linkcard-settings.php:285
594
+ #: ../lib/pz-linkcard-settings.php:303 ../lib/pz-linkcard-settings.php:321
595
  msgid "Not defined"
596
  msgstr "設定しない"
597
 
598
+ #: ../lib/pz-linkcard-settings.php:201 ../lib/pz-linkcard-settings.php:217
599
+ #: ../lib/pz-linkcard-settings.php:241 ../lib/pz-linkcard-settings.php:257
600
+ #: ../lib/pz-linkcard-settings.php:271 ../lib/pz-linkcard-settings.php:293
601
+ #: ../lib/pz-linkcard-settings.php:304 ../lib/pz-linkcard-settings.php:322
602
  msgid "0"
603
+ msgstr "0"
604
 
605
+ #: ../lib/pz-linkcard-settings.php:202 ../lib/pz-linkcard-settings.php:218
606
+ #: ../lib/pz-linkcard-settings.php:234 ../lib/pz-linkcard-settings.php:250
607
+ #: ../lib/pz-linkcard-settings.php:264 ../lib/pz-linkcard-settings.php:286
608
+ #: ../lib/pz-linkcard-settings.php:305 ../lib/pz-linkcard-settings.php:323
609
+ #: ../lib/pz-linkcard-settings.php:446
610
  msgid "4px"
611
+ msgstr "4px"
612
 
613
+ #: ../lib/pz-linkcard-settings.php:203 ../lib/pz-linkcard-settings.php:219
614
+ #: ../lib/pz-linkcard-settings.php:235 ../lib/pz-linkcard-settings.php:251
615
+ #: ../lib/pz-linkcard-settings.php:265 ../lib/pz-linkcard-settings.php:287
616
+ #: ../lib/pz-linkcard-settings.php:306 ../lib/pz-linkcard-settings.php:324
617
+ #: ../lib/pz-linkcard-settings.php:447
618
  msgid "8px"
619
+ msgstr "8px"
620
 
621
+ #: ../lib/pz-linkcard-settings.php:204 ../lib/pz-linkcard-settings.php:220
622
+ #: ../lib/pz-linkcard-settings.php:236 ../lib/pz-linkcard-settings.php:252
623
+ #: ../lib/pz-linkcard-settings.php:266 ../lib/pz-linkcard-settings.php:288
624
+ #: ../lib/pz-linkcard-settings.php:307 ../lib/pz-linkcard-settings.php:325
625
+ #: ../lib/pz-linkcard-settings.php:448
626
  msgid "16px"
627
+ msgstr "16px"
628
 
629
+ #: ../lib/pz-linkcard-settings.php:205 ../lib/pz-linkcard-settings.php:221
630
+ #: ../lib/pz-linkcard-settings.php:238 ../lib/pz-linkcard-settings.php:254
631
+ #: ../lib/pz-linkcard-settings.php:268 ../lib/pz-linkcard-settings.php:290
632
+ #: ../lib/pz-linkcard-settings.php:308 ../lib/pz-linkcard-settings.php:326
633
+ #: ../lib/pz-linkcard-settings.php:449
634
  msgid "32px"
635
+ msgstr "32px"
636
 
637
+ #: ../lib/pz-linkcard-settings.php:206 ../lib/pz-linkcard-settings.php:222
638
+ #: ../lib/pz-linkcard-settings.php:239 ../lib/pz-linkcard-settings.php:255
639
+ #: ../lib/pz-linkcard-settings.php:269 ../lib/pz-linkcard-settings.php:291
640
+ #: ../lib/pz-linkcard-settings.php:309 ../lib/pz-linkcard-settings.php:327
641
  msgid "40px"
642
+ msgstr "40px"
643
 
644
+ #: ../lib/pz-linkcard-settings.php:207 ../lib/pz-linkcard-settings.php:223
645
+ #: ../lib/pz-linkcard-settings.php:240 ../lib/pz-linkcard-settings.php:256
646
+ #: ../lib/pz-linkcard-settings.php:270 ../lib/pz-linkcard-settings.php:292
647
+ #: ../lib/pz-linkcard-settings.php:310 ../lib/pz-linkcard-settings.php:328
648
+ #: ../lib/pz-linkcard-settings.php:450
649
  msgid "64px"
650
+ msgstr "64px"
651
 
652
+ #: ../lib/pz-linkcard-settings.php:214 ../lib/pz-linkcard-settings.php:247
653
  msgid "Margin left"
654
  msgstr "左の余白"
655
 
656
+ #: ../lib/pz-linkcard-settings.php:237 ../lib/pz-linkcard-settings.php:253
657
+ #: ../lib/pz-linkcard-settings.php:267 ../lib/pz-linkcard-settings.php:289
658
  msgid "24px"
659
+ msgstr "24px"
660
 
661
+ #: ../lib/pz-linkcard-settings.php:261 ../lib/pz-linkcard-settings.php:301
662
  msgid "Margin right"
663
  msgstr "右の余白"
664
 
665
+ #: ../lib/pz-linkcard-settings.php:277 ../lib/pz-linkcard-settings.php:412
666
+ #: ../lib/pz-linkcard-settings.php:486 ../lib/pz-linkcard-settings.php:871
667
  msgid "Width"
668
  msgstr "幅"
669
 
670
+ #: ../lib/pz-linkcard-settings.php:278 ../lib/pz-linkcard-settings.php:414
671
+ #: ../lib/pz-linkcard-settings.php:541 ../lib/pz-linkcard-settings.php:560
672
+ #: ../lib/pz-linkcard-settings.php:579 ../lib/pz-linkcard-settings.php:597
673
+ #: ../lib/pz-linkcard-settings.php:614 ../lib/pz-linkcard-settings.php:632
674
+ #: ../lib/pz-linkcard-settings.php:871
675
  msgid "Height"
676
  msgstr "高さ"
677
 
678
+ #: ../lib/pz-linkcard-settings.php:283 ../lib/pz-linkcard-settings.php:319
679
  msgid "Margin bottom"
680
  msgstr "下の余白"
681
 
682
+ #: ../lib/pz-linkcard-settings.php:316
683
  msgid "Centering"
684
  msgstr "中央に寄せる"
685
 
686
+ #: ../lib/pz-linkcard-settings.php:338
687
+ msgid "Use blockquote tag"
688
+ msgstr "BLOCKQUOTEタグを使用する"
689
+
690
+ #: ../lib/pz-linkcard-settings.php:339
691
+ msgid "without using DIV tag, and use BLOCKQUOTE tag"
692
+ msgstr "&lt;BLOCKQUOTE&gt;で囲んで引用扱いにします"
693
+
694
+ #: ../lib/pz-linkcard-settings.php:339 ../lib/pz-linkcard-settings.php:709
695
+ #: ../lib/pz-linkcard-settings.php:717 ../lib/pz-linkcard-settings.php:1075
696
+ #: ../lib/pz-linkcard-settings.php:1104
697
+ msgid "(Not recommended)"
698
+ msgstr "(非推奨)"
699
+
700
+ #: ../lib/pz-linkcard-settings.php:345
701
  msgid "Display settings"
702
  msgstr "表示の設定"
703
 
704
+ #: ../lib/pz-linkcard-settings.php:348
705
  msgid "Layout"
706
+ msgstr "レイアウト"
707
 
708
+ #: ../lib/pz-linkcard-settings.php:354 ../lib/pz-linkcard-settings.php:604
709
  msgid "Site information"
710
  msgstr "サイト情報"
711
 
712
+ #: ../lib/pz-linkcard-settings.php:357 ../lib/pz-linkcard-settings.php:409
713
+ msgid "Upper side"
714
  msgstr "上側"
715
 
716
+ #: ../lib/pz-linkcard-settings.php:358
717
  msgid "Above the title"
718
  msgstr "タイトルの上側"
719
 
720
+ #: ../lib/pz-linkcard-settings.php:359
721
+ msgid "Under side"
722
  msgstr "下側"
723
 
724
+ #: ../lib/pz-linkcard-settings.php:361
725
  msgid "Use SiteName"
726
  msgstr "サイト名称を使用"
727
 
728
+ #: ../lib/pz-linkcard-settings.php:366
729
  msgid "For internal links, display the posting date"
730
  msgstr "内部リンクの場合に投稿日を表示する"
731
 
732
+ #: ../lib/pz-linkcard-settings.php:373
733
  msgid "Make additional information heading display"
734
  msgstr "付加情報を見出し表示にする"
735
 
736
+ #: ../lib/pz-linkcard-settings.php:380
737
  msgid "Turn off the anchor text underlining"
738
  msgstr "リンク文字のアンダーラインを除去する"
739
 
740
+ #: ../lib/pz-linkcard-settings.php:387
741
  msgid "Separator line"
742
  msgstr "区切り線"
743
 
744
+ #: ../lib/pz-linkcard-settings.php:395
745
  msgid "Display URL"
746
  msgstr "リンク先URLの表示"
747
 
748
+ #: ../lib/pz-linkcard-settings.php:398
749
  msgid "Under title"
750
  msgstr "タイトルの下"
751
 
752
+ #: ../lib/pz-linkcard-settings.php:399 ../lib/pz-linkcard-settings.php:515
753
  msgid "Bihind site-info"
754
  msgstr "サイト情報の後ろ"
755
 
756
+ #: ../lib/pz-linkcard-settings.php:404 ../lib/pz-linkcard-settings.php:661
757
+ #: ../lib/pz-linkcard-settings.php:738 ../lib/pz-linkcard-settings.php:811
758
  msgid "Thumbnail"
759
  msgstr "サムネイル"
760
 
761
+ #: ../lib/pz-linkcard-settings.php:407
762
+ msgid "Right side"
763
  msgstr "右側"
764
 
765
+ #: ../lib/pz-linkcard-settings.php:408
766
+ msgid "Left side"
767
  msgstr "左側"
768
 
769
+ #: ../lib/pz-linkcard-settings.php:416 ../lib/pz-linkcard-settings.php:438
 
 
 
 
770
  msgid "Shadow"
771
  msgstr "影を付ける"
772
 
773
+ #: ../lib/pz-linkcard-settings.php:421
774
  msgid "Hollow content area"
775
  msgstr "記事の情報に枠を付ける"
776
 
777
+ #: ../lib/pz-linkcard-settings.php:426
778
  msgid "Display excerpt"
779
  msgstr "抜粋文を表示する"
780
 
781
+ #: ../lib/pz-linkcard-settings.php:431
782
  msgid "Hollow"
783
  msgstr "内側に影を付ける"
784
 
785
+ #: ../lib/pz-linkcard-settings.php:443
786
  msgid "Round a square"
787
  msgstr "角を丸める"
788
 
789
+ #: ../lib/pz-linkcard-settings.php:457
790
  msgid "When the mouse is on"
791
  msgstr "マウスが上に乗ったとき、"
792
 
793
+ #: ../lib/pz-linkcard-settings.php:460
794
  msgid "Lighten"
795
  msgstr "薄色にする"
796
 
797
+ #: ../lib/pz-linkcard-settings.php:461
798
  msgid "Hover (light)"
799
  msgstr "浮かせる(薄色)"
800
 
801
+ #: ../lib/pz-linkcard-settings.php:462
802
  msgid "Hover (dark)"
803
  msgstr "浮かせる(濃色)"
804
 
805
+ #: ../lib/pz-linkcard-settings.php:463
806
  msgid "Radius"
807
  msgstr "角を丸める"
808
 
809
+ #: ../lib/pz-linkcard-settings.php:473
810
  msgid "Border"
811
  msgstr "枠線の太さ"
812
 
813
+ #: ../lib/pz-linkcard-settings.php:477
814
+ msgid "Solid"
815
+ msgstr "Solid(実線)"
816
 
817
+ #: ../lib/pz-linkcard-settings.php:478
818
+ msgid "Dotted"
819
+ msgstr "Dotted(点線)"
820
 
821
+ #: ../lib/pz-linkcard-settings.php:479
822
+ msgid "Dashed"
823
+ msgstr "Dashed(破線)"
 
 
 
 
824
 
825
+ #: ../lib/pz-linkcard-settings.php:480
826
+ msgid "Double"
827
+ msgstr "Double(二重線)"
828
 
829
+ #: ../lib/pz-linkcard-settings.php:481
830
+ msgid "Groove"
831
+ msgstr "Groove(立体・へこみ)"
832
 
833
+ #: ../lib/pz-linkcard-settings.php:482
834
+ msgid "Ridge"
835
+ msgstr "Ridge(立体・隆起)"
836
 
837
+ #: ../lib/pz-linkcard-settings.php:483
838
+ msgid "Inset"
839
+ msgstr "Inset(立体・押されたボタンのような効果)"
840
 
841
+ #: ../lib/pz-linkcard-settings.php:484
842
+ msgid "Outset"
843
+ msgstr "Outset(立体・ボタンのような効果)"
844
 
845
+ #: ../lib/pz-linkcard-settings.php:491
846
  msgid "Reset img style"
847
  msgstr "CSSリセット(img)"
848
 
849
+ #: ../lib/pz-linkcard-settings.php:492
850
  msgid ""
851
  "When unnecessary frame is displayed on the image, you can improve it by case"
852
  msgstr "画像がずれて表示されるときに改善される可能性が有ります(推奨)"
853
 
854
+ #: ../lib/pz-linkcard-settings.php:496 ../lib/pz-linkcard-settings.php:587
855
  msgid "More button"
856
  msgstr "続きを読むボタン"
857
 
858
+ #: ../lib/pz-linkcard-settings.php:500
859
  msgid "Text link"
860
  msgstr "テキストリンク"
861
 
862
+ #: ../lib/pz-linkcard-settings.php:501
863
  msgid "Simple button"
864
  msgstr "シンプルなボタン"
865
 
866
+ #: ../lib/pz-linkcard-settings.php:502
867
  msgid "Blue"
868
  msgstr "ブルー"
869
 
870
+ #: ../lib/pz-linkcard-settings.php:503
871
  msgid "Dark"
872
  msgstr "ダーク"
873
 
874
+ #: ../lib/pz-linkcard-settings.php:505
875
  msgid ""
876
  "It is recommended that you leave the card height blank when using this "
877
  "setting."
878
  msgstr "この設定を使用するときはカードの高さを空欄にすることをお勧めします。"
879
 
880
+ #: ../lib/pz-linkcard-settings.php:510
881
  msgid "Display SNS Count"
882
  msgstr "シェア数を表示する"
883
 
884
+ #: ../lib/pz-linkcard-settings.php:514
885
  msgid "Bihind title"
886
  msgstr "タイトルの後ろ"
887
 
888
+ #: ../lib/pz-linkcard-settings.php:517
889
  msgid "Twitter"
890
  msgstr "ツイッター"
891
 
892
+ #: ../lib/pz-linkcard-settings.php:518
893
  msgid "Facebook"
894
  msgstr "フェイスブック(シェア数)"
895
 
896
+ #: ../lib/pz-linkcard-settings.php:519
897
  msgid "Hatena"
898
  msgstr "はてなブックマーク"
899
 
900
+ #: ../lib/pz-linkcard-settings.php:520
901
  msgid "Pocket"
902
+ msgstr "Pocket"
903
 
904
+ #: ../lib/pz-linkcard-settings.php:527
905
  msgid "Letter settings"
906
  msgstr "文字の設定"
907
 
908
+ #: ../lib/pz-linkcard-settings.php:533 ../lib/pz-linkcard-settings.php:552
909
+ #: ../lib/pz-linkcard-settings.php:571 ../lib/pz-linkcard-settings.php:589
910
+ #: ../lib/pz-linkcard-settings.php:606 ../lib/pz-linkcard-settings.php:624
911
  msgid "Color"
912
  msgstr "色"
913
 
914
+ #: ../lib/pz-linkcard-settings.php:534 ../lib/pz-linkcard-settings.php:553
915
+ #: ../lib/pz-linkcard-settings.php:572 ../lib/pz-linkcard-settings.php:590
916
+ #: ../lib/pz-linkcard-settings.php:607 ../lib/pz-linkcard-settings.php:625
917
  msgid "Outline"
918
  msgstr "縁取り"
919
 
920
+ #: ../lib/pz-linkcard-settings.php:538 ../lib/pz-linkcard-settings.php:557
921
+ #: ../lib/pz-linkcard-settings.php:576 ../lib/pz-linkcard-settings.php:594
922
+ #: ../lib/pz-linkcard-settings.php:611 ../lib/pz-linkcard-settings.php:629
923
  msgid "Size"
924
  msgstr "大きさ"
925
 
926
+ #: ../lib/pz-linkcard-settings.php:544 ../lib/pz-linkcard-settings.php:563
927
+ #: ../lib/pz-linkcard-settings.php:582 ../lib/pz-linkcard-settings.php:617
928
  msgid "Length"
929
  msgstr "桁数"
930
 
931
+ #: ../lib/pz-linkcard-settings.php:545 ../lib/pz-linkcard-settings.php:564
932
  msgid "No wrap"
933
  msgstr "折り返さない"
934
 
935
+ #: ../lib/pz-linkcard-settings.php:622 ../lib/pz-linkcard-settings.php:684
936
+ #: ../lib/pz-linkcard-settings.php:760 ../lib/pz-linkcard-settings.php:819
937
  msgid "Added information"
938
  msgstr "付加情報"
939
 
940
+ #: ../lib/pz-linkcard-settings.php:637
941
  msgid "Resize"
942
  msgstr "幅に合わせて縮小"
943
 
944
+ #: ../lib/pz-linkcard-settings.php:638
945
  msgid "Adjust thumbnail and letter size according to width"
946
+ msgstr "画面幅に合わせて文字とサムネイルの大きさを調整します"
947
 
948
+ #: ../lib/pz-linkcard-settings.php:645
949
  msgid "External link settings"
950
  msgstr "外部リンクの設定"
951
 
952
+ #: ../lib/pz-linkcard-settings.php:649 ../lib/pz-linkcard-settings.php:726
953
+ #: ../lib/pz-linkcard-settings.php:799
954
  msgid "Border Color"
955
  msgstr "枠線の色"
956
 
957
+ #: ../lib/pz-linkcard-settings.php:653 ../lib/pz-linkcard-settings.php:730
958
+ #: ../lib/pz-linkcard-settings.php:803
959
  msgid "Background Color"
960
  msgstr "背景色"
961
 
962
+ #: ../lib/pz-linkcard-settings.php:657
963
  msgid "Background image"
964
  msgstr "背景画像"
965
 
966
+ #: ../lib/pz-linkcard-settings.php:665 ../lib/pz-linkcard-settings.php:677
967
+ #: ../lib/pz-linkcard-settings.php:742 ../lib/pz-linkcard-settings.php:753
968
  msgid "Direct"
969
  msgstr "直接取得する"
970
 
971
+ #: ../lib/pz-linkcard-settings.php:666 ../lib/pz-linkcard-settings.php:678
972
+ #: ../lib/pz-linkcard-settings.php:743 ../lib/pz-linkcard-settings.php:754
973
  msgid "Use WebAPI"
974
  msgstr "WebAPIを利用する"
975
 
976
+ #: ../lib/pz-linkcard-settings.php:667 ../lib/pz-linkcard-settings.php:679
977
+ #: ../lib/pz-linkcard-settings.php:744 ../lib/pz-linkcard-settings.php:755
978
  msgid "Use WebAPI ,If can not direct"
979
  msgstr "直接取得できない場合、WebAPIを利用する"
980
 
981
+ #: ../lib/pz-linkcard-settings.php:673 ../lib/pz-linkcard-settings.php:749
982
+ #: ../lib/pz-linkcard-settings.php:815
983
+ msgid "Site icon"
984
  msgstr "サイトアイコン"
985
 
986
+ #: ../lib/pz-linkcard-settings.php:688 ../lib/pz-linkcard-settings.php:764
987
+ #: ../lib/pz-linkcard-settings.php:823
988
  msgid "Text of more button"
989
  msgstr "続きを読むボタンの文字"
990
 
991
+ #: ../lib/pz-linkcard-settings.php:692 ../lib/pz-linkcard-settings.php:768
992
+ #: ../lib/pz-linkcard-settings.php:827
993
  msgid "Open new window/tab"
994
+ msgstr "新しいタブで開く"
995
 
996
+ #: ../lib/pz-linkcard-settings.php:696 ../lib/pz-linkcard-settings.php:772
997
  msgid "All client"
998
  msgstr "すべての端末"
999
 
1000
+ #: ../lib/pz-linkcard-settings.php:697 ../lib/pz-linkcard-settings.php:773
1001
  msgid "Other than mobile"
1002
  msgstr "モバイル端末以外"
1003
 
1004
+ #: ../lib/pz-linkcard-settings.php:702 ../lib/pz-linkcard-settings.php:778
1005
+ #: ../lib/pz-linkcard-settings.php:831
1006
  msgid "Get contents"
1007
  msgstr "記事取得方法"
1008
 
1009
+ #: ../lib/pz-linkcard-settings.php:704 ../lib/pz-linkcard-settings.php:784
1010
  msgid "Initially acquired only from the content"
1011
  msgstr "カード管理画面に記録されている内容から表示する"
1012
 
1013
+ #: ../lib/pz-linkcard-settings.php:708
1014
  msgid "Set nofollow"
1015
+ msgstr "リンク先を信用しない"
1016
 
1017
+ #: ../lib/pz-linkcard-settings.php:709
1018
  msgid "In the case of an external site, it puts the \"nofollow\""
1019
+ msgstr ""
1020
+ "アンカータグに rel=\"nofollow\" を追加して、検索エンジンの評価から外すことを"
1021
+ "宣言します"
1022
+
1023
+ #: ../lib/pz-linkcard-settings.php:712
1024
+ msgid "Set noopener"
1025
+ msgstr "リンク元タブを保護する"
1026
+
1027
+ #: ../lib/pz-linkcard-settings.php:713
1028
+ msgid "In the case of an external site, it puts the \"noopener\""
1029
+ msgstr ""
1030
+ "アンカータグに rel=\"noopener\" を追加して、リンク先サイトからリンク元タブに"
1031
+ "対する操作を無効にします"
1032
 
1033
+ #: ../lib/pz-linkcard-settings.php:716
1034
  msgid "Use HatenaBlogCard"
1035
+ msgstr "はてなブログカードを使用する"
1036
 
1037
+ #: ../lib/pz-linkcard-settings.php:717
1038
  msgid "External links will use Always HatenaBlogCard."
1039
  msgstr "外部リンクは「はてなブログカード」を利用する。"
1040
 
1041
+ #: ../lib/pz-linkcard-settings.php:723
 
 
 
 
1042
  msgid "Internal link settings"
1043
  msgstr "内部リンクの設定"
1044
 
1045
+ #: ../lib/pz-linkcard-settings.php:734 ../lib/pz-linkcard-settings.php:807
1046
  msgid "Background Image"
1047
  msgstr "背景画像"
1048
 
1049
+ #: ../lib/pz-linkcard-settings.php:782
1050
  msgid "Always get the latest from the content"
1051
  msgstr "常に最新の記事内容から抜粋文を作成する"
1052
 
1053
+ #: ../lib/pz-linkcard-settings.php:783
1054
  msgid "Always get the latest from the excerpt"
1055
  msgstr "抜粋文が設定されている投稿はそちらを優先する"
1056
 
1057
+ #: ../lib/pz-linkcard-settings.php:789 ../lib/pz-linkcard-settings.php:835
1058
  msgid "Retry get PID"
1059
  msgstr "記事URLの再取得"
1060
 
1061
+ #: ../lib/pz-linkcard-settings.php:790
1062
  msgid "When the `Post ID` can not be acquired, it is acquired again."
1063
  msgstr "記事IDが取得できなかった場合に、リダイレクト先のURLを取得する。"
1064
 
1065
+ #: ../lib/pz-linkcard-settings.php:796
1066
  msgid "Same-page link settings"
1067
  msgstr "同ページへのリンクの設定"
1068
 
1069
+ #: ../lib/pz-linkcard-settings.php:812 ../lib/pz-linkcard-settings.php:816
1070
+ #: ../lib/pz-linkcard-settings.php:828 ../lib/pz-linkcard-settings.php:832
1071
+ #: ../lib/pz-linkcard-settings.php:836
1072
  msgid "It is common with setting Internal-link"
1073
  msgstr "内部リンク用の設定が使用されます"
1074
 
1075
+ #: ../lib/pz-linkcard-settings.php:824
1076
  msgid "Cannot set"
1077
  msgstr "設定できません"
1078
 
1079
+ #: ../lib/pz-linkcard-settings.php:842
1080
  msgid "Web-API settings"
1081
  msgstr "画像取得APIの設定"
1082
 
1083
+ #: ../lib/pz-linkcard-settings.php:845
1084
+ msgid "Site icon API"
1085
+ msgstr "サイトアイコン取得API"
1086
 
1087
+ #: ../lib/pz-linkcard-settings.php:848
1088
  msgid "%DOMAIN% replace to domain name."
1089
  msgstr "%DOMAIN% と記述するとドメイン名に置き換わります。"
1090
 
1091
+ #: ../lib/pz-linkcard-settings.php:848 ../lib/pz-linkcard-settings.php:857
1092
+ #: ../pz-linkcard.php:1294 ../pz-linkcard.php:1307
1093
  msgid "("
1094
  msgstr "("
1095
 
1096
+ #: ../lib/pz-linkcard-settings.php:848 ../lib/pz-linkcard-settings.php:857
1097
  msgid "ex."
1098
  msgstr "例."
1099
 
1100
+ #: ../lib/pz-linkcard-settings.php:848 ../lib/pz-linkcard-settings.php:857
1101
+ #: ../pz-linkcard.php:1294 ../pz-linkcard.php:1307
1102
  msgid ")"
1103
  msgstr ")"
1104
 
1105
+ #: ../lib/pz-linkcard-settings.php:848
1106
  msgid "%DOMAIN_URL% replace to domain URL."
1107
  msgstr "%DOMAIN_URL% と記述するとドメインのURLに置き換わります。"
1108
 
1109
+ #: ../lib/pz-linkcard-settings.php:848 ../lib/pz-linkcard-settings.php:857
1110
  msgid "%URL% replace to URL."
1111
  msgstr "%URL% と記述すると記事のURLに置き換わります。"
1112
 
1113
+ #: ../lib/pz-linkcard-settings.php:849 ../lib/pz-linkcard-settings.php:858
1114
  msgid "ex1."
1115
  msgstr "例1."
1116
 
1117
+ #: ../lib/pz-linkcard-settings.php:850 ../lib/pz-linkcard-settings.php:859
1118
  msgid "ex2."
1119
  msgstr "例2."
1120
 
1121
+ #: ../lib/pz-linkcard-settings.php:854
1122
  msgid "Thumbnail API"
1123
+ msgstr "サムネイル画像取得API"
1124
 
1125
+ #: ../lib/pz-linkcard-settings.php:866
1126
  msgid "Image settings"
1127
  msgstr "画像の設定"
1128
 
1129
+ #: ../lib/pz-linkcard-settings.php:869
1130
+ msgid "Image size to save"
1131
+ msgstr "保存する画像サイズ"
1132
+
1133
+ #: ../lib/pz-linkcard-settings.php:875
1134
+ msgid "Image cache directory"
1135
+ msgstr "保存するディレクトリ"
1136
+
1137
+ #: ../lib/pz-linkcard-settings.php:878
1138
+ msgid "Used"
1139
+ msgstr "使用中"
1140
+
1141
+ #: ../lib/pz-linkcard-settings.php:878
1142
+ msgid ": "
1143
+ msgstr ":"
1144
+
1145
+ #: ../lib/pz-linkcard-settings.php:882
1146
+ msgid "Image cache URL"
1147
+ msgstr "保存するディレクトリのURL"
1148
+
1149
+ #: ../lib/pz-linkcard-settings.php:891
1150
+ msgid "Stylesheet settings"
1151
+ msgstr "スタイルシートの設定"
1152
+
1153
+ #: ../lib/pz-linkcard-settings.php:894
1154
+ msgid "Stylesheet URL"
1155
+ msgstr "CSSファイルのURL"
1156
+
1157
+ #: ../lib/pz-linkcard-settings.php:898
1158
+ msgid "Stylesheet URL to add"
1159
+ msgstr "追加するCSSファイル"
1160
+
1161
+ #: ../lib/pz-linkcard-settings.php:899
1162
+ msgid "(ex. https://exsample.com/style.css )"
1163
+ msgstr "(例.https://exsample.com/style.css)"
1164
+
1165
+ #: ../lib/pz-linkcard-settings.php:902
1166
+ msgid "Stylesheet text to add"
1167
+ msgstr "追加するCSSテキスト"
1168
+
1169
+ #: ../lib/pz-linkcard-settings.php:906
1170
+ msgid "Stylesheet version"
1171
+ msgstr "CSSの補助バージョン"
1172
+
1173
+ #: ../lib/pz-linkcard-settings.php:910
1174
+ msgid "Stylesheet file"
1175
+ msgstr "CSSファイルのパス"
1176
 
1177
+ #: ../lib/pz-linkcard-settings.php:914
1178
+ msgid "Stylesheet templete file"
1179
+ msgstr "ひな型CSSファイルのパス"
1180
+
1181
+ #: ../lib/pz-linkcard-settings.php:921
1182
  msgid "Link check settings"
1183
  msgstr "リンク先検査の設定"
1184
 
1185
+ #: ../lib/pz-linkcard-settings.php:924
1186
  msgid "Do not link at error"
1187
  msgstr "エラーのときリンクしない"
1188
 
1189
+ #: ../lib/pz-linkcard-settings.php:925
1190
  msgid "When access status is \"403\", \"404\", \"410\", unlink"
1191
  msgstr "ステータスが「403」「404」「410」のときにリンクを無効にします"
1192
 
1193
+ #: ../lib/pz-linkcard-settings.php:928
1194
  msgid "SSL verification disabled"
1195
  msgstr "SSL検証を無効"
1196
 
1197
+ #: ../lib/pz-linkcard-settings.php:929
1198
  msgid "Try setting if the contents of the SSL site can not be acquired."
1199
  msgstr ""
1200
  "SSLサイトのタイトルや記事内容が取得できない場合に設定することで取得できる可能"
1201
  "性があります。"
1202
 
1203
+ #: ../lib/pz-linkcard-settings.php:932
1204
  msgid "Follow location"
1205
+ msgstr "リダイレクト処理する"
1206
 
1207
+ #: ../lib/pz-linkcard-settings.php:933
1208
  msgid "Track when the link destination is redirected."
1209
  msgstr "リンク先がリダイレクトされている場合に追跡します。"
1210
 
1211
+ #: ../lib/pz-linkcard-settings.php:936
1212
  msgid "Set referer"
1213
  msgstr "リファラーの通知"
1214
 
1215
+ #: ../lib/pz-linkcard-settings.php:937
1216
  msgid "Notify the article URL to the link destination."
1217
  msgstr "リンク先に記事のURLを知らせます。"
1218
 
1219
+ #: ../lib/pz-linkcard-settings.php:940
1220
  msgid "Use User-Agent"
1221
  msgstr "ユーザーエージェントの通知"
1222
 
1223
+ #: ../lib/pz-linkcard-settings.php:942
1224
  msgid "Notify using Pz-LinkCard to the link destination."
1225
  msgstr "リンク先にPz-LinkCardを使用していることを知らせます。"
1226
 
1227
+ #: ../lib/pz-linkcard-settings.php:947
1228
  msgid "Broken link checker"
1229
  msgstr "リンク切れチェック"
1230
 
1231
+ #: ../lib/pz-linkcard-settings.php:948
1232
  msgid "Alive confirmation of the link destination."
1233
  msgstr "リンク先がアクセスできるか定期的に確認します。"
1234
 
1235
+ #: ../lib/pz-linkcard-settings.php:951
1236
  msgid "Broken link count"
1237
  msgstr "リンク切れカウント"
1238
 
1239
+ #: ../lib/pz-linkcard-settings.php:952
1240
  msgid "The number of broken links is displayed next to the submenu."
1241
  msgstr "サブメニューの横にリンク切れの件数を表示します。"
1242
 
1243
+ #: ../lib/pz-linkcard-settings.php:955
1244
  msgid "Multi-site compatible"
1245
  msgstr "サブディレクトリを外部リンクにする"
1246
 
1247
+ #: ../lib/pz-linkcard-settings.php:956
1248
  msgid ""
1249
  "In the case of the multi-site of the subdirectory type, the site under the "
1250
  "subdirectory is judged as an external site."
1252
  "サブディレクトリ型のマルチサイトの場合で、メインサイトからサブサイトを外部サ"
1253
  "イトとして判定する。"
1254
 
1255
+ #: ../lib/pz-linkcard-settings.php:962
1256
  msgid "Editor settings"
1257
  msgstr "エディターの設定"
1258
 
1259
+ #: ../lib/pz-linkcard-settings.php:965
1260
  msgid "ShortCode 1"
1261
  msgstr "ショートコード 1"
1262
 
1263
+ #: ../lib/pz-linkcard-settings.php:967 ../lib/pz-linkcard-settings.php:985
1264
+ #: ../lib/pz-linkcard-settings.php:990 ../lib/pz-linkcard-settings.php:995
1265
  msgid "Case-sensitive"
1266
  msgstr "大文字と小文字を区別します"
1267
 
1268
+ #: ../lib/pz-linkcard-settings.php:970
1269
  msgid "Use inlinetext"
1270
  msgstr "ショートコードで囲んだ文字列"
1271
 
1272
+ #: ../lib/pz-linkcard-settings.php:974
1273
  msgid "No use"
1274
  msgstr "使用しない"
1275
 
1276
+ #: ../lib/pz-linkcard-settings.php:975
1277
  msgid "Use to excerpt"
1278
  msgstr "抜粋文として使用"
1279
 
1280
+ #: ../lib/pz-linkcard-settings.php:976
1281
  msgid "Use to title"
1282
  msgstr "タイトルとして使用"
1283
 
1284
+ #: ../lib/pz-linkcard-settings.php:979
1285
  msgid "This setting applies only to the Shortcode1"
1286
  msgstr "ショートコード1にのみ適用されます"
1287
 
1288
+ #: ../lib/pz-linkcard-settings.php:983
1289
  msgid "ShortCode 2"
1290
  msgstr "ショートコード 2"
1291
 
1292
+ #: ../lib/pz-linkcard-settings.php:988
1293
  msgid "ShortCode 3"
1294
  msgstr "ショートコード 3"
1295
 
1296
+ #: ../lib/pz-linkcard-settings.php:993
1297
  msgid "ShortCode 4"
1298
  msgstr "ショートコード 4"
1299
 
1300
+ #: ../lib/pz-linkcard-settings.php:998
1301
  msgid "Parameters"
1302
  msgstr "パラメータ"
1303
 
1304
+ #: ../lib/pz-linkcard-settings.php:1001
1305
  msgid ""
1306
  "For any shortcode you can change the title and excerpt with `title` "
1307
  "parameter and `content` parameter"
1308
  msgstr ""
1309
  "どのショートコードでも title パラメータと content パラメータでタイトルと抜粋"
1310
+ "文を指定できます"
1311
 
1312
+ #: ../lib/pz-linkcard-settings.php:1006
1313
  msgid "Convert text link"
1314
  msgstr "テキストリンク行の変換"
1315
 
1316
+ #: ../lib/pz-linkcard-settings.php:1007
1317
  msgid "Convert lines with text link only to Linkcard."
1318
  msgstr "テキストリンクだけの行をリンクカードに変換する。"
1319
 
1320
+ #: ../lib/pz-linkcard-settings.php:1010
1321
  msgid "Convert URL"
1322
  msgstr "URL行の変換"
1323
 
1324
+ #: ../lib/pz-linkcard-settings.php:1011
1325
  msgid "Convert lines with URL only to Linkcard."
1326
  msgstr "URLだけの行をリンクカードに変換する。"
1327
 
1328
+ #: ../lib/pz-linkcard-settings.php:1014
1329
  msgid "External link only"
1330
  msgstr "外部リンクのみ"
1331
 
1332
+ #: ../lib/pz-linkcard-settings.php:1015
1333
  msgid "Convert only external links."
1334
  msgstr "外部リンクのときのみ変換します。"
1335
 
1336
+ #: ../lib/pz-linkcard-settings.php:1019
1337
  msgid "Do shortcode"
1338
  msgstr "ショートコード 実行"
1339
 
1340
+ #: ../lib/pz-linkcard-settings.php:1020
1341
  msgid "Force shortcode development."
1342
  msgstr "リンク・URLから変換したときにショートコードを強制的に実行する。"
1343
 
1344
+ #: ../lib/pz-linkcard-settings.php:1024
1345
  msgid "Add insert button"
1346
  msgstr "リンクカードボタンを追加"
1347
 
1348
+ #: ../lib/pz-linkcard-settings.php:1025
1349
  msgid "Add insert button to visual editor."
1350
+ msgstr ""
1351
+ "ビジュアル エディタにリンクカードのショートコードを挿入するボタンを追加する。"
1352
 
1353
+ #: ../lib/pz-linkcard-settings.php:1028
1354
  msgid "Add quick tag"
1355
  msgstr "クイックタグを追加"
1356
 
1357
+ #: ../lib/pz-linkcard-settings.php:1029
1358
  msgid "Add quick tag button to text editor."
1359
+ msgstr ""
1360
+ "テキスト エディタにリンクカードのショートコードを挿入するクイックタグを追加す"
1361
+ "る。"
1362
 
1363
+ #: ../lib/pz-linkcard-settings.php:1036
1364
  msgid "Advanced settings"
1365
  msgstr "上級者向けの設定"
1366
 
1367
+ #: ../lib/pz-linkcard-settings.php:1039
1368
  msgid "Trailing slash"
1369
+ msgstr "末尾のスラッシュの除去"
1370
 
1371
+ #: ../lib/pz-linkcard-settings.php:1043
1372
  msgid "As it"
1373
  msgstr "そのまま"
1374
 
1375
+ #: ../lib/pz-linkcard-settings.php:1044
1376
  msgid "When only domain name, remove"
1377
  msgstr "ドメイン名のみのときだけ削除"
1378
 
1379
+ #: ../lib/pz-linkcard-settings.php:1045
1380
  msgid "Always remove"
1381
  msgstr "常に削除"
1382
 
1383
+ #: ../lib/pz-linkcard-settings.php:1050
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1384
  msgid "Class ID to be added(for PC)"
1385
  msgstr "PCのときに追加するクラス名"
1386
 
1387
+ #: ../lib/pz-linkcard-settings.php:1054
1388
  msgid "Class ID to be added(for Mobile)"
1389
  msgstr "モバイルのときに追加するクラス名"
1390
 
1391
+ #: ../lib/pz-linkcard-settings.php:1059
1392
  msgid "Google AMP URL"
1393
  msgstr "URLによるAMP判断"
1394
 
1395
+ #: ../lib/pz-linkcard-settings.php:1060
1396
  msgid "If the URL is AMP, display simple."
1397
  msgstr ""
1398
  "アクセスされたURLの末尾が「/amp」「/amp/」「/?amp=1」の場合、簡易表示に切り替"
1399
  "える。"
1400
 
1401
+ #: ../lib/pz-linkcard-settings.php:1064
1402
  msgid "IDNA Convert"
1403
  msgstr "IDNAドメインの表示"
1404
 
1405
+ #: ../lib/pz-linkcard-settings.php:1065
1406
  msgid "Convert domain name from IDNA ASCII to Unicode."
1407
  msgstr ""
1408
  "IDNAのASCII方式でエンコードされたドメイン名をUnicodeに変換して表示します(日"
1409
  "本語ドメインなど)"
1410
 
1411
+ #: ../lib/pz-linkcard-settings.php:1069
1412
  msgid "Relative URL"
1413
  msgstr "相対指定URL"
1414
 
1415
+ #: ../lib/pz-linkcard-settings.php:1070
1416
  msgid "For relative-specified URLs, complement the site URL."
1417
  msgstr "相対指定のURLの場合、サイトURLを補完します。"
1418
 
1419
+ #: ../lib/pz-linkcard-settings.php:1074
1420
+ msgid "Hide URL error"
1421
+ msgstr "URLエラーを非表示"
1422
+
1423
+ #: ../lib/pz-linkcard-settings.php:1075
1424
+ msgid "Do not display an error on the admin page"
1425
+ msgstr "管理画面にURLエラーを表示しない"
1426
+
1427
+ #: ../lib/pz-linkcard-settings.php:1079
1428
  msgid "Display link to author page"
1429
  msgstr "プラグイン名を表示する"
1430
 
1431
+ #: ../lib/pz-linkcard-settings.php:1083
1432
  msgid "Plugin URL"
1433
  msgstr "プラグインページURL"
1434
 
1435
+ #: ../lib/pz-linkcard-settings.php:1087
1436
  msgid "Plugin name"
1437
  msgstr "プラグイン名"
1438
 
1439
+ #: ../lib/pz-linkcard-settings.php:1091
1440
  msgid "Plugin version"
1441
  msgstr "プラグインバージョン"
1442
 
1443
+ #: ../lib/pz-linkcard-settings.php:1095
1444
  msgid "Saved datetime"
1445
  msgstr "保存した日時"
1446
 
1447
+ #: ../lib/pz-linkcard-settings.php:1103
1448
  msgid "Display elapsed time"
1449
  msgstr "実行時間の表示"
1450
 
1451
+ #: ../lib/pz-linkcard-settings.php:1104
1452
  msgid "Output the elapsed time to HTML comment."
1453
+ msgstr "作成にかかった時間をコメントとしてHTMLへ出力する。"
1454
 
1455
+ #: ../lib/pz-linkcard-settings.php:1114
1456
  msgid "Return to the initial setting"
1457
  msgstr "設定を初期状態へ戻す"
1458
 
1459
+ #: ../lib/pz-linkcard-style.php:637
1460
+ msgid "Succeeded in saving the Stylesheet."
1461
+ msgstr "スタイルシートの生成に成功しました。"
1462
+
1463
+ #: ../lib/pz-linkcard-style.php:639
1464
+ msgid "Failed to save Stylesheet."
1465
+ msgstr "スタイルシートの生成に失敗しました。"
1466
 
1467
  #: ../lib/pz-linkcard-style.php:643
1468
+ msgid "Failed to call the Stylesheet template."
1469
+ msgstr "スタイルシートのひな型の呼び出しに失敗しました。"
1470
 
1471
+ #: ../pz-linkcard.php:369
1472
  msgid "Incorrect URL specification."
1473
+ msgstr "URLの記述に誤りがあります。"
1474
 
1475
+ #: ../pz-linkcard.php:1293
1476
  msgid "Category"
1477
  msgstr "カテゴリー"
1478
 
1479
+ #: ../pz-linkcard.php:1293 ../pz-linkcard.php:1306
1480
  msgid "‘"
1481
  msgstr "「"
1482
 
1483
+ #: ../pz-linkcard.php:1293 ../pz-linkcard.php:1306
1484
  msgid "’"
1485
  msgstr "」"
1486
 
1487
+ #: ../pz-linkcard.php:1294 ../pz-linkcard.php:1307
1488
  msgid "Count"
1489
  msgstr "件数"
1490
 
1491
+ #: ../pz-linkcard.php:1306
1492
  msgid "Tag"
1493
  msgstr "タグ"
1494
 
1495
+ #: ../pz-linkcard.php:1741
1496
  msgid "Linkcard"
1497
  msgstr "リンクカード"
1498
 
1499
+ #: ../pz-linkcard.php:1741
1500
  msgid "Make Linkcard"
1501
  msgstr "リンクカードのショートコードを挿入する"
1502
 
1503
+ #: ../pz-linkcard.php:1752
1504
  msgid "Invalid URL parameter in "
1505
  msgstr "URLパラメーターの指定が無効です→"
1506
 
1507
+ #: ../pz-linkcard.php:1752
1508
  msgid ""
1509
  "You can cancel this message from <a href=\"./options-general.php?page=pz-"
1510
  "linkcard-settings\">the setting screen</a>."
1512
  "このメッセージの表示は<a href=\"./options-general.php?page=pz-linkcard-"
1513
  "settings\">設定画面</a>から解除できます。"
1514
 
1515
+ #: ../pz-linkcard.php:1783
1516
  msgid "Pz LkC Cache"
1517
  msgstr "Pz カード管理"
1518
 
1519
+ #: ../pz-linkcard.php:1784
1520
  msgid "Pz LinkCard"
1521
  msgstr "Pz カード設定"
1522
 
1523
+ #: ../pz-linkcard.php:1876
1524
  msgid "Settings"
1525
  msgstr "設定"
1526
 
1527
+ #: ../pz-linkcard.php:1876
1528
  msgid "Manage"
1529
  msgstr "管理"
1530
 
1531
+ #~ msgid "Changes saved."
1532
+ #~ msgstr "設定を保存しました。"
1533
+
1534
+ #~ msgid "Update failed."
1535
+ #~ msgstr "更新に失敗しました。"
1536
+
1537
+ #~ msgid "Not changed."
1538
+ #~ msgstr "設定は変更されませんでした。"
1539
+
1540
+ #~ msgid "Stylesheet template call failed."
1541
+ #~ msgstr "スタイルシートのひな形の呼び出しに失敗しました。"
1542
+
1543
+ #~ msgid "Top"
1544
+ #~ msgstr "上"
1545
+
1546
+ #~ msgid "Bottom"
1547
+ #~ msgstr "下側"
1548
+
1549
+ #~ msgid "none"
1550
+ #~ msgstr "なし"
1551
+
1552
+ #~ msgid "inset"
1553
+ #~ msgstr "inset(立体・押されたボタンのような効果)"
1554
+
1555
+ #~ msgid "Short code is not set."
1556
+ #~ msgstr "ショートコードが指定されていません。"
1557
+
1558
+ #~ msgid "Invalid URL"
1559
+ #~ msgstr "URL指定エラー"
1560
+
1561
+ #~ msgid "Favicon"
1562
+ #~ msgstr "サイトアイコン"
1563
+
1564
+ #~ msgid "Favicon API"
1565
+ #~ msgstr "ファビコンの取得API"
1566
+
1567
+ #~ msgid "Cache image size"
1568
+ #~ msgstr "キャッシュする画像の大きさ"
1569
+
1570
+ #~ msgid "CSS to be added"
1571
+ #~ msgstr "追加するスタイルシート"
1572
+
1573
+ #~ msgid "specified CSS"
1574
+ #~ msgstr "指定したCSSを使用"
1575
+
1576
+ #~ msgid "Use specified CSS file"
1577
+ #~ msgstr "指定したCSSファイルを使用する"
1578
+
1579
+ #~ msgid "CSS file"
1580
+ #~ msgstr "CSSファイル名"
1581
+
1582
+ #~ msgid "CSS URL"
1583
+ #~ msgstr "CSSファイルのURL"
1584
+
1585
  #~ msgid ""
1586
  #~ "%DOMAIN% replace to domain name (ex. poporon.poponet.jp )<br>%DOMAIN_URL% "
1587
  #~ "replace to domain URL (ex. http://poporon.poponet.jp )"
1724
  #~ msgid "Instructed to get the number again"
1725
  #~ msgstr "ソーシャルカウントの再取得を指示しました"
1726
 
 
 
 
1727
  #~ msgid "Sorry. This feature is not implemented yet..."
1728
  #~ msgstr "もうしわけありません。この機能は未実装です。"
1729
 
lib/pz-linkcard-cacheman-edit.php CHANGED
@@ -87,6 +87,8 @@
87
  $data['use_post_id4'] = isset($use_post_id_t[3]) ? $use_post_id_t[3] : '' ;
88
  $data['use_post_id5'] = isset($use_post_id_t[4]) ? $use_post_id_t[4] : '' ;
89
  $data['use_post_id6'] = isset($use_post_id_t[5]) ? $use_post_id_t[5] : '' ;
 
 
90
  ?>
91
  <tr>
92
  <th><?php _e('Post ID', $this->text_domain) ?></th>
@@ -108,15 +110,15 @@
108
  </tr>
109
  <tr>
110
  <th><?php _e('Uptime', $this->text_domain) ?></th>
111
- <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>
112
  </tr>
113
  <tr>
114
  <th><?php _e('Next SNS', $this->text_domain) ?></th>
115
- <td><input name="data[sns_nexttime]" type="text" id="inputtext" value="<?php echo $data['sns_nexttime']; ?>" size="10" readonly="readonly" /><?php echo date('Y-m-d H:i:s', $data['sns_nexttime']); ?></td>
116
  </tr>
117
  <tr>
118
  <th><?php _e('Next alive', $this->text_domain) ?></th>
119
- <td><input name="data[alive_nexttime]" type="text" id="inputtext" value="<?php echo $data['alive_nexttime']; ?>" size="10" readonly="readonly" /><?php echo date('Y-m-d H:i:s', $data['alive_nexttime']); ?></td>
120
  </tr>
121
  <tr>
122
  <th><?php _e('Regist', $this->text_domain) ?></th>
87
  $data['use_post_id4'] = isset($use_post_id_t[3]) ? $use_post_id_t[3] : '' ;
88
  $data['use_post_id5'] = isset($use_post_id_t[4]) ? $use_post_id_t[4] : '' ;
89
  $data['use_post_id6'] = isset($use_post_id_t[5]) ? $use_post_id_t[5] : '' ;
90
+
91
+ $datetime_format = get_option( 'date_format' ).' '.get_option( 'time_format' );
92
  ?>
93
  <tr>
94
  <th><?php _e('Post ID', $this->text_domain) ?></th>
110
  </tr>
111
  <tr>
112
  <th><?php _e('Uptime', $this->text_domain) ?></th>
113
+ <td><input name="data[uptime]" type="text" id="inputtext" value="<?php echo $data['uptime']; ?>" size="8" readonly="readonly" /><?php echo ' '.date($datetime_format, $data['uptime']); ?></td>
114
  </tr>
115
  <tr>
116
  <th><?php _e('Next SNS', $this->text_domain) ?></th>
117
+ <td><input name="data[sns_nexttime]" type="text" id="inputtext" value="<?php echo $data['sns_nexttime']; ?>" size="8" readonly="readonly" /><?php echo ' '.date($datetime_format, $data['sns_nexttime']); ?></td>
118
  </tr>
119
  <tr>
120
  <th><?php _e('Next alive', $this->text_domain) ?></th>
121
+ <td><input name="data[alive_nexttime]" type="text" id="inputtext" value="<?php echo $data['alive_nexttime']; ?>" size="8" readonly="readonly" /><?php echo ' '.date($datetime_format, $data['alive_nexttime']); ?></td>
122
  </tr>
123
  <tr>
124
  <th><?php _e('Regist', $this->text_domain) ?></th>
lib/pz-linkcard-cacheman-list.php CHANGED
@@ -1,431 +1,431 @@
1
- <?php if (!function_exists("get_option")) die; ?>
2
- <?php
3
-
4
- $orderby = strtolower($orderby); // 気持ち程度のインジェクション対策
5
- switch ($orderby) {
6
- case 'id':
7
- case 'url':
8
- case 'url_key':
9
- case 'link_type':
10
- case 'site_name':
11
- case 'domain':
12
- case 'charset':
13
- case 'title':
14
- case 'excerpt':
15
- case 'result_code':
16
- case 'alive_result':
17
- case 'use_post_id1':
18
- case 'use_post_id2':
19
- case 'use_post_id3':
20
- case 'use_post_id4':
21
- case 'use_post_id5':
22
- case 'use_post_id6':
23
- case 'sns_twitter':
24
- case 'sns_facebook':
25
- case 'sns_hatena':
26
- case 'sns_pocket':
27
- case 'regist':
28
- case 'sns_nexttime':
29
- break;
30
- default:
31
- $orderby = 'regist';
32
- $order = 'desc';
33
- }
34
-
35
- $order = strtolower($order);
36
- if ($order != 'asc' && $orderby == $orderby_now) {
37
- $order = 'desc';
38
- }
39
-
40
- // 抽出条件
41
- $where = null;
42
- $link_type = strtolower($link_type);
43
- switch ($link_type) {
44
- case 'all':
45
- $where = "";
46
- break;
47
- case 'internal':
48
- $where = "url LIKE '".get_bloginfo('url')."%'";
49
- break;
50
- case 'external':
51
- $where = "url NOT LIKE '".get_bloginfo('url')."%'";
52
- break;
53
- case 'modify':
54
- $where = "alive_result <> result_code";
55
- break;
56
- case 'unlink':
57
- $where = "alive_result = '404'";
58
- break;
59
- default:
60
- if ($this->options['flg-alive'] && $this->options['flg-alive-count']) {
61
- $link_type = 'unlink';
62
- $where = "alive_result = '404'";
63
- } else {
64
- $link_type = 'all';
65
- $where = "";
66
- }
67
- }
68
-
69
- // キーワード
70
- $key1 = '';
71
- $key2 = '';
72
- $key3 = '';
73
- if (isset($keyword) && $keyword) {
74
- $key1 = $keyword;
75
- $key2 = $keyword;
76
- if ($where) {
77
- $where .= " AND (title LIKE '%%%s%%' OR excerpt LIKE '%%%s%%')";
78
- } else {
79
- $where .= " (title LIKE '%%%s%%' OR excerpt LIKE '%%%s%%')";
80
- }
81
- }
82
-
83
- // ドメイン指定
84
- if (isset($refine) && $refine) {
85
- if (isset($keyword) && $keyword) {
86
- $key3 = $refine;
87
- } else {
88
- $key1 = $refine;
89
- }
90
- if ($where) {
91
- $where .= " AND domain=%s";
92
- } else {
93
- $where .= " domain=%s";
94
- }
95
- }
96
-
97
- // 検索SQL作成
98
- $sql = "SELECT * FROM $this->db_name";
99
- if (isset($where) && $where) {
100
- $sql .= " WHERE $where";
101
- }
102
- if (isset($orderby) && $orderby) {
103
- $sql .= " ORDER BY $orderby $order";
104
- }
105
- if ( strpos($sql, 'UPDATE') || strpos($sql, 'UNION') ) { // 気持ち程度のインジェクション対策
106
- $sql = '';
107
- }
108
-
109
- // データ抽出
110
- if ($key3) {
111
- $data_all = $wpdb->get_results($wpdb->prepare($sql, $key1, $key2, $key3));
112
- } elseif ($key2) {
113
- $data_all = $wpdb->get_results($wpdb->prepare($sql, $key1, $key2));
114
- } elseif ($key1) {
115
- $data_all = $wpdb->get_results($wpdb->prepare($sql, $key1));
116
- } else {
117
- $data_all = $wpdb->get_results($sql);
118
- }
119
- $count_now = count($data_all);
120
-
121
- // ページ数
122
- $page_min = ($count_now > 0) ? 1 : 0;
123
- $page_max = ceil($count_now / 10);
124
- $page_now = ($paged < $page_min) ? $page_min : (($paged > $page_max) ? $page_max : $paged);
125
- $page_prev = ($page_now > 1) ? $page_now - 1 : null;
126
- $page_next = ($page_now < $page_max) ? $page_now + 1 : null;
127
-
128
- $page_top = ($page_now < 1) ? 0 : (($page_now - 1) * 10); // 0 origin
129
- $page_limit = isset($page_limit) ? intval($page_limit) : 10 ;
130
-
131
- // 表示用データ
132
- if (isset($page_limit)) {
133
- $page_top = intval($page_top);
134
- $page_limit = intval($page_limit);
135
- $sql .= ' LIMIT '.$page_top.' , '.$page_limit;
136
- }
137
- // データ抽出
138
- //$data_all = $wpdb->get_results($wpdb->prepare($sql, $key1, $key2, $key3));
139
-
140
- // ドメイン一覧作成
141
- $sql = "SELECT domain, site_name, count(*) as count FROM $this->db_name GROUP BY domain ASC";
142
- if (strpos($sql, '--') || strpos($sql, 'UPDATE') || strpos($sql, 'UNION') ) { // 気持ち程度のインジェクション対策
143
- die;
144
- }
145
- $domain_list = $wpdb->get_results($sql); // テーブルデータ
146
-
147
- // SUB(CASE WHEN ... END) で一気に取れないぽい?
148
- $count_all = 0;
149
- $count_internal = 0;
150
- $count_external = 0;
151
- $count_modify = 0;
152
- $result = $wpdb->get_row("SELECT COUNT(*) AS count FROM $this->db_name");
153
- if (isset($result) && isset($result->count)) {
154
- $count_all = $result->count;
155
- }
156
- $result = $wpdb->get_row("SELECT COUNT(*) AS count FROM $this->db_name WHERE url LIKE '".get_bloginfo('url')."%'");
157
- if (isset($result) && isset($result->count)) {
158
- $count_internal = $result->count;
159
- }
160
- $result = $wpdb->get_row("SELECT COUNT(*) AS count FROM $this->db_name WHERE url NOT LIKE '".get_bloginfo('url')."%'");
161
- if (isset($result) && isset($result->count)) {
162
- $count_external = $result->count;
163
- }
164
- $result = $wpdb->get_row("SELECT COUNT(*) AS count FROM $this->db_name WHERE alive_result <> result_code");
165
- if (isset($result) && isset($result->count)) {
166
- $count_modify = $result->count;
167
- }
168
- $result = $wpdb->get_row("SELECT COUNT(*) AS count FROM $this->db_name WHERE alive_result = '404'");
169
- if (isset($result) && isset($result->count)) {
170
- $count_unlink = $result->count;
171
- }
172
- ?>
173
-
174
- <form id="posts-filter" action="" method="post">
175
- <ul class='subsubsub'>
176
- <li class="all"><a href="?page=pz-linkcard-cache&link_type=all&orderby=regist&order=desc" <?php if ($link_type == 'all') echo 'class="current"'; ?>><?php _e('All', $this->text_domain); ?> <span class="count">(<?php echo $count_all; ?>)</span></a> |</li>
177
- <li class="all"><a href="?page=pz-linkcard-cache&link_type=internal&orderby=regist&order=desc" <?php if ($link_type == 'internal') echo 'class="current"'; ?>><?php _e('Internal', $this->text_domain); ?> <span class="count">(<?php echo $count_internal; ?>)</span></a> |</li>
178
- <li class="all"><a href="?page=pz-linkcard-cache&link_type=external&orderby=regist&order=desc" <?php if ($link_type == 'external') echo 'class="current"'; ?>><?php _e('External', $this->text_domain); ?> <span class="count">(<?php echo $count_external; ?>)</span></a> |</li>
179
- <li class="all"><a href="?page=pz-linkcard-cache&link_type=modify&orderby=regist&order=desc" <?php if ($link_type == 'modify') echo 'class="current"'; ?>><?php _e('Modify', $this->text_domain); ?> <span class="count">(<?php echo $count_modify; ?>)</span></a> |</li>
180
- <li class="all"><a href="?page=pz-linkcard-cache&link_type=unlink&orderby=regist&order=desc" <?php if ($link_type == 'unlink') echo 'class="current"'; ?>><?php _e('Unlink', $this->text_domain); ?> <span class="count">(<?php echo $count_unlink; ?>)</span></a></li>
181
- </ul>
182
-
183
- <p class="search-box">
184
- <label class="screen-reader-text"><?php _e('Search keyword', $this->text_domain); ?></label>
185
- <input type="search" id="post-search-input" name="keyword" value="<?php echo $keyword; ?>">
186
- <input type="submit" id="search-submit" class="button action" value="<?php _e('Search', $this->text_domain); ?>">
187
- </p>
188
-
189
- <?php wp_nonce_field('pz_cacheman'); ?>
190
- <input type="hidden" name="page" value="pz-linkcard-cache">
191
- <input type="hidden" name="paged" value="<?php echo $page_now; ?>">
192
-
193
- <div class="tablenav top">
194
- <div class="alignleft bulkactions">
195
- <label for="bulk-action-selector-top" class="screen-reader-text"><?php _e('Select batch', $this->text_domain); ?></label>
196
- <select name="action" id="bulk-action-selector-top">
197
- <option value="-1" selected="selected"><?php _e('Select', $this->text_domain); ?></option>
198
- <option value="renew"><?php _e('Renew cache', $this->text_domain); ?></option>
199
- <option value="renew_thumbnail"><?php _e('Renew Thumbnail', $this->text_domain); ?></option>
200
- <option value="renew_sns"><?php _e('Renew SNS count', $this->text_domain); ?></option>
201
- <option value="alive"><?php _e('Check status', $this->text_domain); ?></option>
202
- <option value="delete"><?php _e('Delete from cache', $this->text_domain); ?></option>
203
- </select>
204
- <input type="submit" id="doaction" class="button action" value="<?php _e('Submit', $this->text_domain); ?>" onclick="return confirm(\''.__('Are you sure?', $this->text_domain).'\');" />
205
- </div>
206
-
207
- <div class="alignleft bulkactions">
208
- <label for="bulk-action-selector-top" class="screen-reader-text"><?php _e('Select domain', $this->text_domain); ?></label>
209
- <select name="refine" id="bulk-action-selector-top">
210
- <option value="" selected="selected"><?php _e('All domain', $this->text_domain); ?></option>
211
- <?php
212
- $i = 0;
213
- foreach ($domain_list as $rec) {
214
- $i++;
215
- echo '<option value="'.$rec->domain.'"';
216
- if ($rec->domain == $refine) {
217
- echo 'selected="selecter"';
218
- }
219
- echo '>'.$rec->domain.' ('.$rec->count.')</option>';
220
- }
221
- ?>
222
- </select>
223
- <input type="submit" id="doaction" class="button action" value="<?php _e('Refine search', $this->text_domain); ?>" />
224
- </div>
225
-
226
- <?php // ページング
227
- echo '<div class="tablenav-pages">';
228
- echo ' <span class="displaying-num">'.$count_now.__('items').'</span>';
229
- echo ' <span class="pagination-links">';
230
- echo_PageButton($page_min, $paged, '&laquo;', 'first-page');
231
- echo_PageButton($page_prev, $paged, '&lsaquo;', 'prev-page');
232
- 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>';
233
- echo_PageButton($page_next, $paged, '&rsaquo;', 'first-page');
234
- echo_PageButton($page_max, $paged, '&raquo;', 'last-page');
235
- echo ' </span>';
236
- echo '</div>';
237
- ?>
238
- <br class="clear">
239
- </div>
240
-
241
- <div id="settings" style="clear:both;">
242
- <table name="cachelist" class="widefat striped">
243
- <thead>
244
- <tr>
245
- <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>
246
- <th scope="col" class="id" style="width: 3em;"> <?php echo_THC('id', __('ID', $this->text_domain) ); ?></th>
247
- <th scope="col" class="url_key" style="width: 9em; display: none;"> <?php echo_THC('url_key', __('URL key', $this->text_domain) ); ?></th>
248
- <th scope="col" class="url" style="min-width: 10em;"> <?php echo_THC('url', __('URL', $this->text_domain) ); ?></th>
249
- <th scope="col" class="title" style="min-width: 10em;"> <?php echo_THC('title', __('Title', $this->text_domain) ); ?></th>
250
- <th scope="col" class="excerpt" style="min-width: 20em;"> <?php echo_THC('excerpt', __('Excerpt', $this->text_domain) ); ?></th>
251
- <th scope="col" class="charset" style="width: 4em; display: none;"> <?php echo_THC('charset', __('Charset', $this->text_domain) ); ?></th>
252
- <th scope="col" class="domain" style="min-width: 6em;"> <?php echo_THC('domain', __('Domain', $this->text_domain) ); ?></th>
253
- <th scope="col" class="sns" style="width: 2.5em;"> <?php echo_THC('sns_twitter', __('Tw', $this->text_domain)); echo '<br>'; echo_THC('sns_facebook', __('fb', $this->text_domain)); echo '<br>'; echo_THC('sns_hatena', __('B!', $this->text_domain)); echo '<br>'; echo_THC('sns_pocket', __('Po', $this->text_domain)); ?></th>
254
- <th scope="col" class="regist" style="width: 5em;"> <?php echo_THC('regist', __('Regist', $this->text_domain) ); ?></th>
255
- <th scope="col" class="postid" style="width: 3em;"> <?php echo_THC('use_post_id1', __('Post ID', $this->text_domain) ); ?></th>
256
- <th scope="col" class="result" style="width: 2.5em;"> <?php echo_THC('result_code', __('Result code', $this->text_domain) ); ?><br><?php echo_THC('alive_result', __('(last)', $this->text_domain) ); ?></th>
257
- </tr>
258
- </thead>
259
- <tbody>
260
- <?php
261
- foreach ($data_all as $data) {
262
- echo '<tr>';
263
- // echo '<td colspan=12">'.Pz_LinkCard::pz_getHTML(array('url' => $data->url)).'</td>';
264
-
265
- $data_id = $data->id;
266
- echo ' <th scope="row" class="check-column">';
267
- echo ' <label class="screen-reader-text" for="cb-select-'.$data_id.'">'.__('Select', $this->text_domain).'</label>';
268
- echo ' <input id="cb-select-'.$data_id.'" type="checkbox" name="id[]" value="'.$data_id.'" />';
269
- echo ' <div class="locked-indicator"></div>';
270
- echo ' </th>';
271
-
272
- echo ' <td>'.$data_id;
273
- if ( $data->domain == $mydomain ) {
274
- $post_id = url_to_postid( $data->url ); // 記事IDを取得
275
- $thumbnail_id = get_post_thumbnail_id( $post_id ); // サムネイルIDを取得
276
- $attach = wp_get_attachment_image_src( $thumbnail_id, 'thumbnail', true ); // サムネイルを取得
277
- if (isset($attach) && count($attach) > 3 && isset($attach[0])) {
278
- echo '<div><img src="'.$attach[0].'" style="max-height: 48px; max-width: 48px;" alt=""></div>';
279
- }
280
- } else {
281
- if ($data->thumbnail) {
282
- $thumbnail_key = bin2hex(hash( 'sha256', $data->thumbnail, true));
283
- $file_path = $this->options['thumbnail-dir'].$thumbnail_key;
284
- $file_url = $this->options['thumbnail-url'].$thumbnail_key;
285
- if (file_exists($file_path )) {
286
- echo '<div><img src="'.$file_url.'" style="max-height: 48px; max-width: 48px;" alt=""></div>';
287
- }
288
- }
289
- }
290
- echo '</td>';
291
-
292
- echo ' <td style="display: none;">'.bin2hex($data->url_key).'</td>';
293
-
294
- $url = esc_url($data->url);
295
- $disp_url = $url;
296
- $domain = $data->domain;
297
- // 日本語ドメイン対応
298
- if (isset($this->options['flg-idn']) ? true : false) {
299
- if (function_exists('idn_to_utf8')) {
300
- if ( substr( $domain, 0, 4 ) == 'xn--') {
301
- $domain = idn_to_utf8( $domain );
302
- $url_m = parse_url( $url );
303
- $url_m['host'] = idn_to_utf8( $url_m[host] );
304
- $disp_url = $url_m['scheme'].'://'.$url_m['host'].$url_m['path'].$url_m['query'].$url_m['fragment'];
305
- }
306
- }
307
- }
308
- $title = htmlspecialchars($data->title);
309
- if ($data->mod_title) {
310
- $title = '<b>'.$title.'</b>';
311
- }
312
- echo ' <td colspan="2">';
313
- echo ' <div style="word-break: break-all; font-size: 60%;">';
314
- if ( $data->domain == $mydomain ) {
315
- echo '<a href="'.$url.'">'.$disp_url.'</a>';
316
- } else {
317
- echo $disp_url;
318
- }
319
- echo '</div><div>'.$title.'</div>';
320
- echo ' <div id="inline_'.$data_id.'"style="font-size: 90%;">';
321
- 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> | ';
322
- 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> | ';
323
- 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>';
324
- echo '</div>';
325
- echo ' </td>';
326
-
327
- $excerpt= htmlspecialchars(mb_strimwidth(html_entity_decode($data->excerpt), 0, 100, '...'));
328
- if ($data->mod_excerpt) {
329
- $excerpt = '<b>'.$excerpt.'</b>';
330
- }
331
- echo ' <td>'.$excerpt.'</td>';
332
- echo ' <td style="display: none;">'.$data->charset.'</td>';
333
-
334
- echo ' <td><div title="'.$domain.'">'.$domain.'</div><div><span style="background-color: #888; color: #fff; font-size: 9px;">'.$data->site_name.'</span></div></td>';
335
- // echo ' <td><img src="'.$data->thumbnail.'" style="max-height: 100px; max-width: 100px;"></td>';
336
- // echo ' <td style="word-break: break-all;">'.$data->thumbnail.'</td>';
337
- // echo ' <td></td>';
338
- // echo ' <td><img src="'.$data->favicon.'" style="max-height: 100px; max-width: 100px;"></td>';
339
- // echo ' <td style="word-break: break-all;">'.$data->favicon.'</td>';
340
- // echo ' <td></td>';
341
- echo ' <td style="font-size: 60%; text-align: right;">';
342
- $sns_count = $data->sns_twitter;
343
- echo (($sns_count >= 0) ? numKM($sns_count) : '-').'<br>';
344
- $sns_count = $data->sns_facebook;
345
- echo (($sns_count >= 0) ? numKM($sns_count) : '-').'<br>';
346
- $sns_count = $data->sns_hatena;
347
- echo (($sns_count >= 0) ? numKM($sns_count) : '-').'<br>';
348
- $sns_count = $data->sns_pocket;
349
- echo (($sns_count >= 0) ? numKM($sns_count) : '-').'<br>';
350
- echo '</td>';
351
-
352
- echo ' <td>'.$data->regist.'</td>';
353
- echo ' <td style="word-break: break-all;">';
354
- if ($data->use_post_id1 > 0 ) {
355
- echo '<a href="'.get_permalink($data->use_post_id1).'" target="_blank" title="'.get_the_title($data->use_post_id1).'">'.$data->use_post_id1;
356
- }
357
- if ($data->use_post_id2 > 0 ) {
358
- echo '<br><a href="'.get_permalink($data->use_post_id2).'" target="_blank" title="'.get_the_title($data->use_post_id2).'">'.$data->use_post_id2;
359
- }
360
- if ($data->use_post_id3 > 0 ) {
361
- echo '<br><a href="'.get_permalink($data->use_post_id3).'" target="_blank" title="'.get_the_title($data->use_post_id3).'">'.$data->use_post_id3;
362
- }
363
- echo '</td>';
364
- echo ' <td>'.$data->result_code.($data->result_code <> $data->alive_result ? '<br><span style="color:#f00;">('.$data->alive_result.')</span>' : '').'</td>';
365
- echo '</tr>';
366
- }
367
-
368
- ?>
369
- </tbody>
370
- </table>
371
- </div>
372
- </form>
373
- <!--
374
- <div class="filemenu">
375
- <form id="export" action="" method="post">
376
- <?php wp_nonce_field('pz_cacheman'); ?>
377
- <input type="hidden" name="page" value="pz-linkcard-cache">
378
- <input type="hidden" name="action" value="filemenu">
379
- <p class="submit">
380
- <input type="submit" id="doaction" class="button" value="<?php echo __('Export'); ?>" />
381
- </p>
382
- </form>
383
- </div>
384
- -->
385
- <?php
386
- function echo_PageButton($page_link, $page_now, $text, $class_name) {
387
- $orderby = isset($_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : null;
388
- $order = isset($_REQUEST['order'] ) ? $_REQUEST['order'] : null;
389
- $refine = isset($_REQUEST['refine'] ) ? $_REQUEST['refine'] : null;
390
- $keyword = isset($_REQUEST['keyword'] ) ? $_REQUEST['keyword'] : null;
391
- $link_type = isset($_REQUEST['link_type'] ) ? $_REQUEST['link_type'] : null;
392
-
393
- if ($page_link != $page_now && !is_null($page_link)) {
394
- echo '<a class="'.$class_name.'" href="?page=pz-linkcard-cache&link_type='.$link_type.'&orderby='.$orderby.'&order='.$order.'&refine='.$refine.'&keyword='.$keyword.'&paged='.$page_link.'">'.$text.'</a>';
395
- } else {
396
- echo '<span class="tablenav-pages-navspan">'.$text.'</span>';
397
- }
398
- }
399
-
400
- function echo_THC($item, $text) {
401
- $orderby = isset($_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : null;
402
- $order = isset($_REQUEST['order'] ) ? $_REQUEST['order'] : null;
403
- $refine = isset($_REQUEST['refine'] ) ? $_REQUEST['refine'] : null;
404
- $keyword = isset($_REQUEST['keyword'] ) ? $_REQUEST['keyword'] : null;
405
- $link_type = isset($_REQUEST['link_type'] ) ? $_REQUEST['link_type'] : null;
406
-
407
- if ($item == $orderby) {
408
- if ($order == 'desc') {
409
- $mark = '▼';
410
- $order = 'asc';
411
- } else {
412
- $mark = '▲';
413
- $order = 'desc';
414
- }
415
- } else {
416
- $mark = '';
417
- $order = 'desc';
418
- }
419
- echo '<a href="?page=pz-linkcard-cache&link_type='.$link_type.'&orderby='.$item.'&order='.$order.'&refine='.$refine.'&keyword='.$keyword.'">'.$text.$mark.'</a>';
420
- }
421
-
422
- function numKM($count_str) {
423
- $count = intval($count_str);
424
- if ($count >= 10000000) {
425
- return number_format($count / 1000000).'&nbsp;m';
426
- } elseif ($count >= 1000) {
427
- return number_format($count / 1000).'&nbsp;k';
428
- } else {
429
- return number_format($count);
430
- }
431
  }
1
+ <?php if (!function_exists("get_option")) die; ?>
2
+ <?php
3
+
4
+ $orderby = strtolower($orderby); // 気持ち程度のインジェクション対策
5
+ switch ($orderby) {
6
+ case 'id':
7
+ case 'url':
8
+ case 'url_key':
9
+ case 'link_type':
10
+ case 'site_name':
11
+ case 'domain':
12
+ case 'charset':
13
+ case 'title':
14
+ case 'excerpt':
15
+ case 'result_code':
16
+ case 'alive_result':
17
+ case 'use_post_id1':
18
+ case 'use_post_id2':
19
+ case 'use_post_id3':
20
+ case 'use_post_id4':
21
+ case 'use_post_id5':
22
+ case 'use_post_id6':
23
+ case 'sns_twitter':
24
+ case 'sns_facebook':
25
+ case 'sns_hatena':
26
+ case 'sns_pocket':
27
+ case 'regist':
28
+ case 'sns_nexttime':
29
+ break;
30
+ default:
31
+ $orderby = 'regist';
32
+ $order = 'desc';
33
+ }
34
+
35
+ $order = strtolower($order);
36
+ if ($order != 'asc' && $orderby == $orderby_now) {
37
+ $order = 'desc';
38
+ }
39
+
40
+ // 抽出条件
41
+ $where = null;
42
+ $link_type = strtolower($link_type);
43
+ switch ($link_type) {
44
+ case 'all':
45
+ $where = "";
46
+ break;
47
+ case 'internal':
48
+ $where = "url LIKE '".get_bloginfo('url')."%'";
49
+ break;
50
+ case 'external':
51
+ $where = "url NOT LIKE '".get_bloginfo('url')."%'";
52
+ break;
53
+ case 'modify':
54
+ $where = "alive_result <> result_code";
55
+ break;
56
+ case 'unlink':
57
+ $where = "alive_result = '404'";
58
+ break;
59
+ default:
60
+ if ($this->options['flg-alive'] && $this->options['flg-alive-count']) {
61
+ $link_type = 'unlink';
62
+ $where = "alive_result = '404'";
63
+ } else {
64
+ $link_type = 'all';
65
+ $where = "";
66
+ }
67
+ }
68
+
69
+ // キーワード
70
+ $key1 = '';
71
+ $key2 = '';
72
+ $key3 = '';
73
+ if (isset($keyword) && $keyword) {
74
+ $key1 = $keyword;
75
+ $key2 = $keyword;
76
+ if ($where) {
77
+ $where .= " AND (title LIKE '%%%s%%' OR excerpt LIKE '%%%s%%')";
78
+ } else {
79
+ $where .= " (title LIKE '%%%s%%' OR excerpt LIKE '%%%s%%')";
80
+ }
81
+ }
82
+
83
+ // ドメイン指定
84
+ if (isset($refine) && $refine) {
85
+ if (isset($keyword) && $keyword) {
86
+ $key3 = $refine;
87
+ } else {
88
+ $key1 = $refine;
89
+ }
90
+ if ($where) {
91
+ $where .= " AND domain=%s";
92
+ } else {
93
+ $where .= " domain=%s";
94
+ }
95
+ }
96
+
97
+ // 検索SQL作成
98
+ $sql = "SELECT * FROM $this->db_name";
99
+ if (isset($where) && $where) {
100
+ $sql .= " WHERE $where";
101
+ }
102
+ if (isset($orderby) && $orderby) {
103
+ $sql .= " ORDER BY $orderby $order";
104
+ }
105
+ if ( strpos($sql, 'UPDATE') || strpos($sql, 'UNION') ) { // 気持ち程度のインジェクション対策
106
+ $sql = '';
107
+ }
108
+
109
+ // データ抽出
110
+ if ($key3) {
111
+ $data_all = $wpdb->get_results($wpdb->prepare($sql, $key1, $key2, $key3));
112
+ } elseif ($key2) {
113
+ $data_all = $wpdb->get_results($wpdb->prepare($sql, $key1, $key2));
114
+ } elseif ($key1) {
115
+ $data_all = $wpdb->get_results($wpdb->prepare($sql, $key1));
116
+ } else {
117
+ $data_all = $wpdb->get_results($sql);
118
+ }
119
+ $count_now = count($data_all);
120
+
121
+ // ページ数
122
+ $page_min = ($count_now > 0) ? 1 : 0;
123
+ $page_max = ceil($count_now / 10);
124
+ $page_now = ($paged < $page_min) ? $page_min : (($paged > $page_max) ? $page_max : $paged);
125
+ $page_prev = ($page_now > 1) ? $page_now - 1 : null;
126
+ $page_next = ($page_now < $page_max) ? $page_now + 1 : null;
127
+
128
+ $page_top = ($page_now < 1) ? 0 : (($page_now - 1) * 10); // 0 origin
129
+ $page_limit = isset($page_limit) ? intval($page_limit) : 10 ;
130
+
131
+ // 表示用データ
132
+ if (isset($page_limit)) {
133
+ $page_top = intval($page_top);
134
+ $page_limit = intval($page_limit);
135
+ $sql .= ' LIMIT '.$page_top.' , '.$page_limit;
136
+ }
137
+ // データ抽出
138
+ //$data_all = $wpdb->get_results($wpdb->prepare($sql, $key1, $key2, $key3));
139
+
140
+ // ドメイン一覧作成
141
+ $sql = "SELECT domain, site_name, count(*) as count FROM $this->db_name GROUP BY domain ASC";
142
+ if (strpos($sql, '--') || strpos($sql, 'UPDATE') || strpos($sql, 'UNION') ) { // 気持ち程度のインジェクション対策
143
+ die;
144
+ }
145
+ $domain_list = $wpdb->get_results($sql); // テーブルデータ
146
+
147
+ // SUB(CASE WHEN ... END) で一気に取れないぽい?
148
+ $count_all = 0;
149
+ $count_internal = 0;
150
+ $count_external = 0;
151
+ $count_modify = 0;
152
+ $result = $wpdb->get_row("SELECT COUNT(*) AS count FROM $this->db_name");
153
+ if (isset($result) && isset($result->count)) {
154
+ $count_all = $result->count;
155
+ }
156
+ $result = $wpdb->get_row("SELECT COUNT(*) AS count FROM $this->db_name WHERE url LIKE '".get_bloginfo('url')."%'");
157
+ if (isset($result) && isset($result->count)) {
158
+ $count_internal = $result->count;
159
+ }
160
+ $result = $wpdb->get_row("SELECT COUNT(*) AS count FROM $this->db_name WHERE url NOT LIKE '".get_bloginfo('url')."%'");
161
+ if (isset($result) && isset($result->count)) {
162
+ $count_external = $result->count;
163
+ }
164
+ $result = $wpdb->get_row("SELECT COUNT(*) AS count FROM $this->db_name WHERE alive_result <> result_code");
165
+ if (isset($result) && isset($result->count)) {
166
+ $count_modify = $result->count;
167
+ }
168
+ $result = $wpdb->get_row("SELECT COUNT(*) AS count FROM $this->db_name WHERE alive_result = '404'");
169
+ if (isset($result) && isset($result->count)) {
170
+ $count_unlink = $result->count;
171
+ }
172
+ ?>
173
+
174
+ <form id="posts-filter" action="" method="post">
175
+ <ul class='subsubsub'>
176
+ <li class="all"><a href="?page=pz-linkcard-cache&link_type=all&orderby=regist&order=desc" <?php if ($link_type == 'all') echo 'class="current"'; ?>><?php _e('All', $this->text_domain); ?> <span class="count">(<?php echo $count_all; ?>)</span></a> |</li>
177
+ <li class="all"><a href="?page=pz-linkcard-cache&link_type=internal&orderby=regist&order=desc" <?php if ($link_type == 'internal') echo 'class="current"'; ?>><?php _e('Internal', $this->text_domain); ?> <span class="count">(<?php echo $count_internal; ?>)</span></a> |</li>
178
+ <li class="all"><a href="?page=pz-linkcard-cache&link_type=external&orderby=regist&order=desc" <?php if ($link_type == 'external') echo 'class="current"'; ?>><?php _e('External', $this->text_domain); ?> <span class="count">(<?php echo $count_external; ?>)</span></a> |</li>
179
+ <li class="all"><a href="?page=pz-linkcard-cache&link_type=modify&orderby=regist&order=desc" <?php if ($link_type == 'modify') echo 'class="current"'; ?>><?php _e('Modify', $this->text_domain); ?> <span class="count">(<?php echo $count_modify; ?>)</span></a> |</li>
180
+ <li class="all"><a href="?page=pz-linkcard-cache&link_type=unlink&orderby=regist&order=desc" <?php if ($link_type == 'unlink') echo 'class="current"'; ?>><?php _e('Unlink', $this->text_domain); ?> <span class="count">(<?php echo $count_unlink; ?>)</span></a></li>
181
+ </ul>
182
+
183
+ <p class="search-box">
184
+ <label class="screen-reader-text"><?php _e('Search keyword', $this->text_domain); ?></label>
185
+ <input type="search" id="post-search-input" name="keyword" value="<?php echo $keyword; ?>">
186
+ <input type="submit" id="search-submit" class="button action" value="<?php _e('Search', $this->text_domain); ?>">
187
+ </p>
188
+
189
+ <?php wp_nonce_field('pz_cacheman'); ?>
190
+ <input type="hidden" name="page" value="pz-linkcard-cache">
191
+ <input type="hidden" name="paged" value="<?php echo $page_now; ?>">
192
+
193
+ <div class="tablenav top">
194
+ <div class="alignleft bulkactions">
195
+ <label for="bulk-action-selector-top" class="screen-reader-text"><?php _e('Select batch', $this->text_domain); ?></label>
196
+ <select name="action" id="bulk-action-selector-top">
197
+ <option value="-1" selected="selected"><?php _e('Select', $this->text_domain); ?></option>
198
+ <option value="renew"><?php _e('Renew cache', $this->text_domain); ?></option>
199
+ <option value="renew_thumbnail"><?php _e('Renew Thumbnail', $this->text_domain); ?></option>
200
+ <option value="renew_sns"><?php _e('Renew SNS count', $this->text_domain); ?></option>
201
+ <option value="alive"><?php _e('Check status', $this->text_domain); ?></option>
202
+ <option value="delete"><?php _e('Delete from cache', $this->text_domain); ?></option>
203
+ </select>
204
+ <input type="submit" id="doaction" class="button action" value="<?php _e('Submit', $this->text_domain); ?>" onclick="return confirm(\''.__('Are you sure?', $this->text_domain).'\');" />
205
+ </div>
206
+
207
+ <div class="alignleft bulkactions">
208
+ <label for="bulk-action-selector-top" class="screen-reader-text"><?php _e('Select domain', $this->text_domain); ?></label>
209
+ <select name="refine" id="bulk-action-selector-top">
210
+ <option value="" selected="selected"><?php _e('All domain', $this->text_domain); ?></option>
211
+ <?php
212
+ $i = 0;
213
+ foreach ($domain_list as $rec) {
214
+ $i++;
215
+ echo '<option value="'.$rec->domain.'"';
216
+ if ($rec->domain == $refine) {
217
+ echo 'selected="selecter"';
218
+ }
219
+ echo '>'.$rec->domain.' ('.$rec->count.')</option>';
220
+ }
221
+ ?>
222
+ </select>
223
+ <input type="submit" id="doaction" class="button action" value="<?php _e('Refine search', $this->text_domain); ?>" />
224
+ </div>
225
+
226
+ <?php // ページング
227
+ echo '<div class="tablenav-pages">';
228
+ echo ' <span class="displaying-num">'.$count_now.__('items').'</span>';
229
+ echo ' <span class="pagination-links">';
230
+ echo_PageButton($page_min, $paged, '&laquo;', 'first-page');
231
+ echo_PageButton($page_prev, $paged, '&lsaquo;', 'prev-page');
232
+ 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>';
233
+ echo_PageButton($page_next, $paged, '&rsaquo;', 'first-page');
234
+ echo_PageButton($page_max, $paged, '&raquo;', 'last-page');
235
+ echo ' </span>';
236
+ echo '</div>';
237
+ ?>
238
+ <br class="clear">
239
+ </div>
240
+
241
+ <div id="settings" style="clear:both;">
242
+ <table name="cachelist" class="widefat striped">
243
+ <thead>
244
+ <tr>
245
+ <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>
246
+ <th scope="col" class="id" style="width: 3em;"> <?php echo_THC('id', __('ID', $this->text_domain) ); ?></th>
247
+ <th scope="col" class="url_key" style="width: 9em; display: none;"> <?php echo_THC('url_key', __('URL key', $this->text_domain) ); ?></th>
248
+ <th scope="col" class="url" style="min-width: 10em;"> <?php echo_THC('url', __('URL', $this->text_domain) ); ?></th>
249
+ <th scope="col" class="title" style="min-width: 10em;"> <?php echo_THC('title', __('Title', $this->text_domain) ); ?></th>
250
+ <th scope="col" class="excerpt" style="min-width: 20em;"> <?php echo_THC('excerpt', __('Excerpt', $this->text_domain) ); ?></th>
251
+ <th scope="col" class="charset" style="width: 4em; display: none;"> <?php echo_THC('charset', __('Charset', $this->text_domain) ); ?></th>
252
+ <th scope="col" class="domain" style="min-width: 6em;"> <?php echo_THC('domain', __('Domain', $this->text_domain) ); ?></th>
253
+ <th scope="col" class="sns" style="width: 2.5em;"> <?php echo_THC('sns_twitter', __('Tw', $this->text_domain)); echo '<br>'; echo_THC('sns_facebook', __('fb', $this->text_domain)); echo '<br>'; echo_THC('sns_hatena', __('B!', $this->text_domain)); echo '<br>'; echo_THC('sns_pocket', __('Po', $this->text_domain)); ?></th>
254
+ <th scope="col" class="regist" style="width: 5em;"> <?php echo_THC('regist', __('Regist', $this->text_domain) ); ?></th>
255
+ <th scope="col" class="postid" style="width: 3em;"> <?php echo_THC('use_post_id1', __('Post ID', $this->text_domain) ); ?></th>
256
+ <th scope="col" class="result" style="width: 2.5em;"> <?php echo_THC('result_code', __('Result CD', $this->text_domain) ); ?><br><?php echo_THC('alive_result', __('(last)', $this->text_domain) ); ?></th>
257
+ </tr>
258
+ </thead>
259
+ <tbody>
260
+ <?php
261
+ foreach ($data_all as $data) {
262
+ echo '<tr>';
263
+ // echo '<td colspan=12">'.Pz_LinkCard::pz_getHTML(array('url' => $data->url)).'</td>';
264
+
265
+ $data_id = $data->id;
266
+ echo ' <th scope="row" class="check-column">';
267
+ echo ' <label class="screen-reader-text" for="cb-select-'.$data_id.'">'.__('Select', $this->text_domain).'</label>';
268
+ echo ' <input id="cb-select-'.$data_id.'" type="checkbox" name="id[]" value="'.$data_id.'" />';
269
+ echo ' <div class="locked-indicator"></div>';
270
+ echo ' </th>';
271
+
272
+ echo ' <td>'.$data_id;
273
+ if ( $data->domain == $mydomain ) {
274
+ $post_id = url_to_postid( $data->url ); // 記事IDを取得
275
+ $thumbnail_id = get_post_thumbnail_id( $post_id ); // サムネイルIDを取得
276
+ $attach = wp_get_attachment_image_src( $thumbnail_id, 'thumbnail', true ); // サムネイルを取得
277
+ if (isset($attach) && count($attach) > 3 && isset($attach[0])) {
278
+ echo '<div><img src="'.$attach[0].'" style="max-height: 48px; max-width: 48px;" alt=""></div>';
279
+ }
280
+ } else {
281
+ if ($data->thumbnail) {
282
+ $thumbnail_key = bin2hex(hash( 'sha256', $data->thumbnail, true));
283
+ $file_path = $this->options['thumbnail-dir'].$thumbnail_key;
284
+ $file_url = $this->options['thumbnail-url'].$thumbnail_key;
285
+ if (file_exists($file_path )) {
286
+ echo '<div><img src="'.$file_url.'" style="max-height: 48px; max-width: 48px;" alt=""></div>';
287
+ }
288
+ }
289
+ }
290
+ echo '</td>';
291
+
292
+ echo ' <td style="display: none;">'.bin2hex($data->url_key).'</td>';
293
+
294
+ $url = esc_url($data->url);
295
+ $disp_url = $url;
296
+ $domain = $data->domain;
297
+ // 日本語ドメイン対応
298
+ if (isset($this->options['flg-idn']) ? true : false) {
299
+ if (function_exists('idn_to_utf8')) {
300
+ if ( substr( $domain, 0, 4 ) == 'xn--') {
301
+ $domain = idn_to_utf8( $domain );
302
+ $url_m = parse_url( $url );
303
+ $url_m['host'] = idn_to_utf8( $url_m[host] );
304
+ $disp_url = $url_m['scheme'].'://'.$url_m['host'].$url_m['path'].$url_m['query'].$url_m['fragment'];
305
+ }
306
+ }
307
+ }
308
+ $title = htmlspecialchars($data->title);
309
+ if ($data->mod_title) {
310
+ $title = '<b>'.$title.'</b>';
311
+ }
312
+ echo ' <td colspan="2">';
313
+ echo ' <div style="word-break: break-all; font-size: 60%;">';
314
+ if ( $data->domain == $mydomain ) {
315
+ echo '<a href="'.$url.'">'.$disp_url.'</a>';
316
+ } else {
317
+ echo $disp_url;
318
+ }
319
+ echo '</div><div>'.$title.'</div>';
320
+ echo ' <div id="inline_'.$data_id.'"style="font-size: 90%;">';
321
+ 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> | ';
322
+ 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> | ';
323
+ 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>';
324
+ echo '</div>';
325
+ echo ' </td>';
326
+
327
+ $excerpt= htmlspecialchars(mb_strimwidth(html_entity_decode($data->excerpt), 0, 100, '...'));
328
+ if ($data->mod_excerpt) {
329
+ $excerpt = '<b>'.$excerpt.'</b>';
330
+ }
331
+ echo ' <td>'.$excerpt.'</td>';
332
+ echo ' <td style="display: none;">'.$data->charset.'</td>';
333
+
334
+ echo ' <td><div title="'.$domain.'">'.$domain.'</div><div><span style="background-color: #888; color: #fff; font-size: 9px;">'.$data->site_name.'</span></div></td>';
335
+ // echo ' <td><img src="'.$data->thumbnail.'" style="max-height: 100px; max-width: 100px;"></td>';
336
+ // echo ' <td style="word-break: break-all;">'.$data->thumbnail.'</td>';
337
+ // echo ' <td></td>';
338
+ // echo ' <td><img src="'.$data->favicon.'" style="max-height: 100px; max-width: 100px;"></td>';
339
+ // echo ' <td style="word-break: break-all;">'.$data->favicon.'</td>';
340
+ // echo ' <td></td>';
341
+ echo ' <td style="font-size: 60%; text-align: right;">';
342
+ $sns_count = $data->sns_twitter;
343
+ echo (($sns_count >= 0) ? numKM($sns_count) : '-').'<br>';
344
+ $sns_count = $data->sns_facebook;
345
+ echo (($sns_count >= 0) ? numKM($sns_count) : '-').'<br>';
346
+ $sns_count = $data->sns_hatena;
347
+ echo (($sns_count >= 0) ? numKM($sns_count) : '-').'<br>';
348
+ $sns_count = $data->sns_pocket;
349
+ echo (($sns_count >= 0) ? numKM($sns_count) : '-').'<br>';
350
+ echo '</td>';
351
+
352
+ echo ' <td>'.$data->regist.'</td>';
353
+ echo ' <td style="word-break: break-all;">';
354
+ if ($data->use_post_id1 > 0 ) {
355
+ echo '<a href="'.get_permalink($data->use_post_id1).'" target="_blank" title="'.get_the_title($data->use_post_id1).'">'.$data->use_post_id1;
356
+ }
357
+ if ($data->use_post_id2 > 0 ) {
358
+ echo '<br><a href="'.get_permalink($data->use_post_id2).'" target="_blank" title="'.get_the_title($data->use_post_id2).'">'.$data->use_post_id2;
359
+ }
360
+ if ($data->use_post_id3 > 0 ) {
361
+ echo '<br><a href="'.get_permalink($data->use_post_id3).'" target="_blank" title="'.get_the_title($data->use_post_id3).'">'.$data->use_post_id3;
362
+ }
363
+ echo '</td>';
364
+ echo ' <td>'.$data->result_code.($data->result_code <> $data->alive_result ? '<br><span style="color:#f00;">('.$data->alive_result.')</span>' : '').'</td>';
365
+ echo '</tr>';
366
+ }
367
+
368
+ ?>
369
+ </tbody>
370
+ </table>
371
+ </div>
372
+ </form>
373
+ <!--
374
+ <div class="filemenu">
375
+ <form id="export" action="" method="post">
376
+ <?php wp_nonce_field('pz_cacheman'); ?>
377
+ <input type="hidden" name="page" value="pz-linkcard-cache">
378
+ <input type="hidden" name="action" value="filemenu">
379
+ <p class="submit">
380
+ <input type="submit" id="doaction" class="button" value="<?php echo __('Export'); ?>" />
381
+ </p>
382
+ </form>
383
+ </div>
384
+ -->
385
+ <?php
386
+ function echo_PageButton($page_link, $page_now, $text, $class_name) {
387
+ $orderby = isset($_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : null;
388
+ $order = isset($_REQUEST['order'] ) ? $_REQUEST['order'] : null;
389
+ $refine = isset($_REQUEST['refine'] ) ? $_REQUEST['refine'] : null;
390
+ $keyword = isset($_REQUEST['keyword'] ) ? $_REQUEST['keyword'] : null;
391
+ $link_type = isset($_REQUEST['link_type'] ) ? $_REQUEST['link_type'] : null;
392
+
393
+ if ($page_link != $page_now && !is_null($page_link)) {
394
+ echo '<a class="'.$class_name.'" href="?page=pz-linkcard-cache&link_type='.$link_type.'&orderby='.$orderby.'&order='.$order.'&refine='.$refine.'&keyword='.$keyword.'&paged='.$page_link.'">'.$text.'</a>';
395
+ } else {
396
+ echo '<span class="tablenav-pages-navspan">'.$text.'</span>';
397
+ }
398
+ }
399
+
400
+ function echo_THC($item, $text) {
401
+ $orderby = isset($_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : null;
402
+ $order = isset($_REQUEST['order'] ) ? $_REQUEST['order'] : null;
403
+ $refine = isset($_REQUEST['refine'] ) ? $_REQUEST['refine'] : null;
404
+ $keyword = isset($_REQUEST['keyword'] ) ? $_REQUEST['keyword'] : null;
405
+ $link_type = isset($_REQUEST['link_type'] ) ? $_REQUEST['link_type'] : null;
406
+
407
+ if ($item == $orderby) {
408
+ if ($order == 'desc') {
409
+ $mark = '▼';
410
+ $order = 'asc';
411
+ } else {
412
+ $mark = '▲';
413
+ $order = 'desc';
414
+ }
415
+ } else {
416
+ $mark = '';
417
+ $order = 'desc';
418
+ }
419
+ echo '<a href="?page=pz-linkcard-cache&link_type='.$link_type.'&orderby='.$item.'&order='.$order.'&refine='.$refine.'&keyword='.$keyword.'">'.$text.$mark.'</a>';
420
+ }
421
+
422
+ function numKM($count_str) {
423
+ $count = intval($count_str);
424
+ if ($count >= 10000000) {
425
+ return number_format($count / 1000000).'&nbsp;m';
426
+ } elseif ($count >= 1000) {
427
+ return number_format($count / 1000).'&nbsp;k';
428
+ } else {
429
+ return number_format($count);
430
+ }
431
  }
lib/pz-linkcard-cron-alive.php CHANGED
@@ -1,3 +1,3 @@
1
- <?php
2
- defined('ABSPATH') || die;
3
-
1
+ <?php
2
+ defined('ABSPATH') || die;
3
+
lib/pz-linkcard-cron-sns.php CHANGED
@@ -1,3 +1,3 @@
1
- <?php
2
- defined('ABSPATH') || die;
3
-
1
+ <?php
2
+ defined('ABSPATH') || die;
3
+
lib/pz-linkcard-edit.php CHANGED
@@ -1,90 +1,90 @@
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('Link type', $this->text_domain) ?></th>
26
- <td><input name="data[link_type]" type="text" id="inputtext" value="<?php echo $data['link_type']; ?>" size="5" readonly="readonly" /></td>
27
- </tr>
28
- <tr>
29
- <th><?php _e('Site name', $this->text_domain) ?></th>
30
- <td><input name="data[site_name]" type="text" id="inputtext" value="<?php echo esc_attr($data['site_name']); ?>" size="71" /></td>
31
- </tr>
32
- <tr>
33
- <th><?php _e('Domain', $this->text_domain) ?></th>
34
- <td><input name="data[domain]" type="text" id="inputtext" value="<?php echo $data['domain']; ?>" size="71" readonly="readonly" ondblclick="this.readOnly=false;" /></td>
35
- </tr>
36
- <tr>
37
- <th><?php _e('Title', $this->text_domain) ?></th>
38
- <td><input name="data[title]" type="text" id="inputtext" value="<?php echo esc_attr($data['title']); ?>" size="71" /></td>
39
- </tr>
40
- <tr>
41
- <th><?php _e('Excerpt', $this->text_domain) ?></th>
42
- <td><input name="data[excerpt]" type="text" id="inputtext" value="<?php echo esc_attr($data['excerpt']); ?>" size="71" /></td>
43
- </tr>
44
- <tr>
45
- <th><?php _e('Charset', $this->text_domain) ?></th>
46
- <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>
47
- </tr>
48
- <tr>
49
- <th><?php _e('Thumbnail URL', $this->text_domain) ?></th>
50
- <td><input name="data[thumbnail]" type="text" id="inputtext" value="<?php echo $data['thumbnail']; ?>" size="71" readonly="readonly" ondblclick="this.readOnly=false;" /></td>
51
- </tr>
52
- <tr>
53
- <th><?php _e('Favicon URL', $this->text_domain) ?></th>
54
- <td><input name="data[favicon]" type="text" id="inputtext" value="<?php echo $data['favicon']; ?>" size="71" readonly="readonly" ondblclick="this.readOnly=false;" /></td>
55
- </tr>
56
- <tr>
57
- <th><?php _e('Result code', $this->text_domain) ?></th>
58
- <td><input name="data[result_code]" type="text" id="inputtext" value="<?php echo $data['result_code']; ?>" size="5" readonly="readonly" ondblclick="this.readOnly=false;" /></td>
59
- </tr>
60
- <tr>
61
- <th><?php _e('Post ID', $this->text_domain) ?></th>
62
- <td><input name="data[post_id]" type="text" id="inputtext" value="<?php echo $data['post_id']; ?>" size="5" readonly="readonly" /></td>
63
- </tr>
64
- <tr>
65
- <th><?php _e('SNS', $this->text_domain) ?></th>
66
- <td>
67
- <?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" ondblclick="this.readOnly=false;" />
68
- <?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" ondblclick="this.readOnly=false;" />
69
- <?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" ondblclick="this.readOnly=false;" />
70
- </td>
71
- </tr>
72
- <tr>
73
- <th><?php _e('Uptime', $this->text_domain) ?></th>
74
- <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>
75
- </tr>
76
- <tr>
77
- <th><?php _e('Next update', $this->text_domain) ?></th>
78
- <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>
79
- </tr>
80
- <tr>
81
- <th><?php _e('Regist', $this->text_domain) ?></th>
82
- <td><input name="data[regist]" type="text" id="inputtext" value="<?php echo current_time('mysql'); ?>" size="17" readonly="readonly" /><?php echo $data['regist']; ?></td>
83
- </tr>
84
- <tr>
85
- <th></th>
86
- <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>
87
- </tr>
88
- </table>
89
- </div>
90
- </form>
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('Link type', $this->text_domain) ?></th>
26
+ <td><input name="data[link_type]" type="text" id="inputtext" value="<?php echo $data['link_type']; ?>" size="5" readonly="readonly" /></td>
27
+ </tr>
28
+ <tr>
29
+ <th><?php _e('Site name', $this->text_domain) ?></th>
30
+ <td><input name="data[site_name]" type="text" id="inputtext" value="<?php echo esc_attr($data['site_name']); ?>" size="71" /></td>
31
+ </tr>
32
+ <tr>
33
+ <th><?php _e('Domain', $this->text_domain) ?></th>
34
+ <td><input name="data[domain]" type="text" id="inputtext" value="<?php echo $data['domain']; ?>" size="71" readonly="readonly" ondblclick="this.readOnly=false;" /></td>
35
+ </tr>
36
+ <tr>
37
+ <th><?php _e('Title', $this->text_domain) ?></th>
38
+ <td><input name="data[title]" type="text" id="inputtext" value="<?php echo esc_attr($data['title']); ?>" size="71" /></td>
39
+ </tr>
40
+ <tr>
41
+ <th><?php _e('Excerpt', $this->text_domain) ?></th>
42
+ <td><input name="data[excerpt]" type="text" id="inputtext" value="<?php echo esc_attr($data['excerpt']); ?>" size="71" /></td>
43
+ </tr>
44
+ <tr>
45
+ <th><?php _e('Charset', $this->text_domain) ?></th>
46
+ <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>
47
+ </tr>
48
+ <tr>
49
+ <th><?php _e('Thumbnail URL', $this->text_domain) ?></th>
50
+ <td><input name="data[thumbnail]" type="text" id="inputtext" value="<?php echo $data['thumbnail']; ?>" size="71" readonly="readonly" ondblclick="this.readOnly=false;" /></td>
51
+ </tr>
52
+ <tr>
53
+ <th><?php _e('Favicon URL', $this->text_domain) ?></th>
54
+ <td><input name="data[favicon]" type="text" id="inputtext" value="<?php echo $data['favicon']; ?>" size="71" readonly="readonly" ondblclick="this.readOnly=false;" /></td>
55
+ </tr>
56
+ <tr>
57
+ <th><?php _e('Result code', $this->text_domain) ?></th>
58
+ <td><input name="data[result_code]" type="text" id="inputtext" value="<?php echo $data['result_code']; ?>" size="5" readonly="readonly" ondblclick="this.readOnly=false;" /></td>
59
+ </tr>
60
+ <tr>
61
+ <th><?php _e('Post ID', $this->text_domain) ?></th>
62
+ <td><input name="data[post_id]" type="text" id="inputtext" value="<?php echo $data['post_id']; ?>" size="5" readonly="readonly" /></td>
63
+ </tr>
64
+ <tr>
65
+ <th><?php _e('SNS', $this->text_domain) ?></th>
66
+ <td>
67
+ <?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" ondblclick="this.readOnly=false;" />
68
+ <?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" ondblclick="this.readOnly=false;" />
69
+ <?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" ondblclick="this.readOnly=false;" />
70
+ </td>
71
+ </tr>
72
+ <tr>
73
+ <th><?php _e('Uptime', $this->text_domain) ?></th>
74
+ <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>
75
+ </tr>
76
+ <tr>
77
+ <th><?php _e('Next update', $this->text_domain) ?></th>
78
+ <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>
79
+ </tr>
80
+ <tr>
81
+ <th><?php _e('Regist', $this->text_domain) ?></th>
82
+ <td><input name="data[regist]" type="text" id="inputtext" value="<?php echo current_time('mysql'); ?>" size="17" readonly="readonly" /><?php echo $data['regist']; ?></td>
83
+ </tr>
84
+ <tr>
85
+ <th></th>
86
+ <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>
87
+ </tr>
88
+ </table>
89
+ </div>
90
+ </form>
lib/pz-linkcard-init.php CHANGED
@@ -1,188 +1,220 @@
1
- <?php if (!function_exists("get_option")) die; ?>
2
- <?php
3
- $this->options = get_option( 'Pz_LinkCard_options', $this->defaults );
4
- foreach( $this->defaults as $key => $value ) {
5
- if ( !isset( $this->options[$key] ) ) {
6
- $this->options[$key] = null;
7
- }
8
- }
9
-
10
- // サムネイルのキャッシュディレクトリの用意
11
- $wp_upload_dir = wp_upload_dir();
12
- $thumbnail_dir = $wp_upload_dir['basedir'].'/'.$this->slug.'/cache/';
13
- $thumbnail_url = $wp_upload_dir['baseurl'].'/'.$this->slug.'/cache/';
14
- if (!is_dir($thumbnail_dir)) {
15
- if (!wp_mkdir_p($thumbnail_dir)) {
16
- $thumbnail_dir = $this->plugin_dir_path.'cache/';
17
- $thumbnail_url = $this->plugin_dir_url .'cache/';
18
- if (!wp_mkdir_p($file_dir)) {
19
- $thumbnail_dir = null;
20
- $thumbnail_url = null;
21
- }
22
- }
23
- }
24
- $this->options['thumbnail-dir'] = $thumbnail_dir;
25
- $this->options['thumbnail-url'] = $thumbnail_url;
26
-
27
- // 暫定措置
28
- if ($this->options['plugin-version'] < '2.1.1') {
29
- $this->options['flg-edit-insert'] = '1';
30
- $this->options['flg-edit-qtag'] = '1';
31
- }
32
- if ($this->options['plugin-version'] < '2.1.7') {
33
- $this->options['flg-anker'] = '1';
34
- }
35
- if ($this->options['plugin-version'] < '2.1.8') {
36
- if ($this->options['sns-tw'] && $this->options['sns-fb'] && $this->options['sns-hb']) {
37
- $this->options['sns-po'] = '1';
38
- }
39
- }
40
- if ($this->options['plugin-version'] < '2.2.7') {
41
- $this->options['trim-url'] = '400';
42
- $this->options['nowrap-url'] = '1';
43
- $this->options['hover'] = $this->options['opacity'];
44
- }
45
- if ($this->options['plugin-version'] < '2.2.9') {
46
- $this->options['ex-border-color'] = $this->options['border-color'];
47
- $this->options['in-border-color'] = $this->options['border-color'];
48
- $this->options['th-border-color'] = $this->options['border-color'];
49
- }
50
-
51
- // 現バージョン
52
- $this->options['plugin-version'] = $this->defaults['plugin-version'];
53
-
54
- // オプションの更新
55
- update_option('Pz_LinkCard_options', $this->options);
56
-
57
- $this->pz_SetStyle(); // スタイルシート生成
58
-
59
- global $wpdb;
60
- $wpdb->hide_errors();
61
-
62
- require_once (ABSPATH.'wp-admin/includes/upgrade.php');
63
- $sql = "CREATE TABLE ".$this->db_name." (
64
- id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
65
- url VARCHAR(2048) DEFAULT '',
66
- url_key VARBINARY(255) NOT NULL,
67
- scheme VARCHAR(16) DEFAULT '',
68
- domain VARCHAR(253) DEFAULT '',
69
- location VARCHAR(2048) DEFAULT '',
70
- address VARCHAR(2048) DEFAULT '',
71
- site_name VARCHAR(100) DEFAULT '',
72
- title VARCHAR(200) DEFAULT '',
73
- excerpt VARCHAR(500) DEFAULT '',
74
- thumbnail VARCHAR(2048) DEFAULT '',
75
- favicon VARCHAR(2048) DEFAULT '',
76
- means VARCHAR(32) DEFAULT '',
77
- charset VARCHAR(32) DEFAULT '',
78
- sns_time BIGINT UNSIGNED NOT NULL DEFAULT 0,
79
- sns_nexttime BIGINT UNSIGNED NOT NULL DEFAULT 0,
80
- sns_twitter INT DEFAULT -1,
81
- sns_facebook INT DEFAULT -1,
82
- sns_hatena INT DEFAULT -1,
83
- sns_pocket INT DEFAULT -1,
84
- post_id INT UNSIGNED DEFAULT 0,
85
- post_date DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
86
- use_post_id1 INT UNSIGNED,
87
- use_post_id2 INT UNSIGNED,
88
- use_post_id3 INT UNSIGNED,
89
- use_post_id4 INT UNSIGNED,
90
- use_post_id5 INT UNSIGNED,
91
- use_post_id6 INT UNSIGNED,
92
- regist_title VARCHAR(200) DEFAULT '',
93
- regist_excerpt VARCHAR(500) DEFAULT '',
94
- regist_charset VARCHAR(32) DEFAULT '',
95
- regist_time BIGINT UNSIGNED NOT NULL DEFAULT 0,
96
- regist_result INT DEFAULT -1,
97
- update_time BIGINT UNSIGNED NOT NULL DEFAULT 0,
98
- update_result INT DEFAULT -1,
99
- mod_title INT UNSIGNED NOT NULL DEFAULT 0,
100
- mod_excerpt INT UNSIGNED NOT NULL DEFAULT 0,
101
- alive_time BIGINT UNSIGNED NOT NULL DEFAULT 0,
102
- alive_nexttime BIGINT UNSIGNED NOT NULL DEFAULT 0,
103
- alive_result INT DEFAULT -1,
104
- uptime BIGINT UNSIGNED NOT NULL DEFAULT 0,
105
- nexttime BIGINT UNSIGNED NOT NULL DEFAULT 0,
106
- link_type INT UNSIGNED,
107
- result_code INT DEFAULT -1,
108
- regist DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
109
- PRIMARY KEY ( id ),
110
- UNIQUE KEY ( url_key )
111
- ) ".$wpdb->get_charset_collate()." ;";
112
- dbDelta($sql);
113
-
114
- // バグデータのメンテナンス(重複URLの削除)
115
- $result = (array) $wpdb->get_results("SELECT url,id FROM $this->db_name ORDER BY url,id");
116
- $last_url = null;
117
- $last_id = null;
118
- if (isset($result) && is_array($result) && count($result) > 0) {
119
- foreach($result as $data) {
120
- if ($data->url == $last_url && $data->id <> $last_id) {
121
- $after = $wpdb->delete($this->db_name, array('id' => $data->id), array('%d') );
122
- }
123
- $last_url = $data->url;
124
- $last_id = $data->id;
125
- }
126
- }
127
-
128
- // バグデータのメンテナンス(ハッシュURLの再生成)
129
- $result = (array) $wpdb->get_results("SELECT id,url,url_key FROM $this->db_name ORDER BY id");
130
- if (isset($result) && is_array($result) && count($result) > 0) {
131
- foreach($result as $data) {
132
- $new_url_key = hash( 'sha256', esc_url( $data->url ), true);
133
- if ($data->url_key <> $new_url_key) {
134
- $wpdb->update($this->db_name, array('url_key' => $new_url_key ) , array('id' => $data->id ) );
135
- }
136
- }
137
- }
138
-
139
- // 記事IDの再取得
140
- $result = $wpdb->get_results("UPDATE $this->db_name SET use_post_id1 = post_id , post_id = 0 WHERE (use_post_id1 IS NULL OR result_code = 0) AND post_id > 0");
141
-
142
- // // 記事IDの再取得(時間がかかるので未実行)
143
- // $result = (array) $wpdb->get_results("SELECT id,url,use_post_id1,use_post_id2,use_post_id3,use_post_id4,use_post_id5,use_post_id6 FROM $this->db_name ORDER BY id");
144
- // if (isset($result) && is_array($result) && count($result) > 0) {
145
- // foreach($result as $data) {
146
- // $use_post_id_t = array();
147
- // if ($data->use_post_id1 > 0) {
148
- // $use_post_id_t[] = $data->use_post_id1;
149
- // }
150
- // if ($data->use_post_id2 > 0) {
151
- // $use_post_id_t[] = $data->use_post_id2;
152
- // }
153
- // if ($data->use_post_id3 > 0) {
154
- // $use_post_id_t[] = $data->use_post_id3;
155
- // }
156
- // if ($data->use_post_id4 > 0) {
157
- // $use_post_id_t[] = $data->use_post_id4;
158
- // }
159
- // if ($data->use_post_id5 > 0) {
160
- // $use_post_id_t[] = $data->use_post_id5;
161
- // }
162
- // if ($data->use_post_id6 > 0) {
163
- // $use_post_id_t[] = $data->use_post_id6;
164
- // }
165
- // $use_post_id_m = $wpdb->get_results($wpdb->prepare("SELECT id FROM $wpdb->prefix"."posts WHERE post_type = 'post' AND post_content LIKE '%%\"%s\"%%' ORDER BY id ASC", '"'.$data->url.'"' ));
166
- // foreach($use_post_id_m as $use_post_id) {
167
- // $use_post_id_t[] = $use_post_id->id;
168
- // }
169
- // $use_post_id_t = array_unique($use_post_id_t);
170
- // $use_post_id_t = array_values($use_post_id_t);
171
- // $wpdb->update($this->db_name, array('use_post_id1' => $use_post_id_m[0]->id, 'use_post_id2' => $use_post_id_m[1]->id, 'use_post_id3' => $use_post_id_m[2]->id, 'use_post_id4' => $use_post_id_m[3]->id, 'use_post_id5' => $use_post_id_m[4]->id, 'use_post_id6' => $use_post_id_m[5]->id ) , array('id' => $data->id ) );
172
- // }
173
- // }
174
-
175
- // 過去バージョンからのコンバート(生存確認用のデータ作成)
176
- $result = $wpdb->get_results("UPDATE $this->db_name SET result_code = 200 WHERE result_code IS NULL OR result_code = 0");
177
- $result = $wpdb->get_results("UPDATE $this->db_name SET alive_result = result_code , alive_time = uptime WHERE alive_result IS NULL OR alive_result = 0 OR alive_time = 0");
178
- $result = $wpdb->get_results("UPDATE $this->db_name SET alive_nexttime = alive_time WHERE alive_nexttime IS NULL OR alive_nexttime = 0");
179
-
180
- // 過去バージョンからのコンバート(取得時テキストの作成)
181
- $result = $wpdb->get_results("UPDATE $this->db_name SET regist_title = title , regist_excerpt = excerpt , regist_time = uptime , regist_result = result_code , regist_charset = charset WHERE (regist_title = '' AND regist_excerpt = '' ) AND (title <> '' OR excerpt <> '')");
182
-
183
- // 過去バージョンからのコンバート(次回SNS取得日時)
184
- $result = $wpdb->get_results("UPDATE $this->db_name SET sns_time = uptime , sns_nexttime = nexttime WHERE sns_nexttime = 0");
185
-
186
- // WP-CRONのフック
187
- wp_clear_scheduled_hook('pz_linkcard_check');
188
- wp_clear_scheduled_hook('pz_linkcard_alive');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if (!function_exists("get_option")) die; ?>
2
+ <?php
3
+ // WP-CRONの割り込みを停止
4
+ if (wp_next_scheduled('pz_linkcard_check')) {
5
+ wp_clear_scheduled_hook('pz_linkcard_check');
6
+ }
7
+ if (wp_next_scheduled('pz_linkcard_alive')) {
8
+ wp_clear_scheduled_hook('pz_linkcard_alive');
9
+ }
10
+
11
+ // オプション読み込み
12
+ $this->options = get_option('Pz_LinkCard_options', $this->defaults );
13
+ foreach ($this->defaults as $key => $value) {
14
+ if (!isset($this->options[$key])) {
15
+ $this->options[$key] = null;
16
+ }
17
+ }
18
+
19
+ // 暫定措置
20
+ if ($this->options['plugin-version'] < '2.1.1') {
21
+ $this->options['flg-edit-insert'] = 1; // 新機能実装のため
22
+ $this->options['flg-edit-qtag'] = 1; // 新機能実装のため
23
+ }
24
+ if ($this->options['plugin-version'] < '2.1.7') {
25
+ $this->options['flg-anker'] = 1;
26
+ }
27
+ if ($this->options['plugin-version'] < '2.1.8') {
28
+ if ($this->options['sns-tw'] && $this->options['sns-fb'] && $this->options['sns-hb']) {
29
+ $this->options['sns-po'] = 1; // SNSカウントにPocket追加のため
30
+ }
31
+ }
32
+ if ($this->options['plugin-version'] < '2.2.7') {
33
+ $this->options['trim-url'] = 400;
34
+ $this->options['nowrap-url'] = 1;
35
+ $this->options['hover'] = $this->options['opacity']; // パラメータ名変更のため
36
+ }
37
+ if ($this->options['plugin-version'] < '2.2.9') {
38
+ $this->options['ex-border-color'] = $this->options['border-color']; // パラメータ細分化のため
39
+ $this->options['in-border-color'] = $this->options['border-color']; // パラメータ細分化のため
40
+ $this->options['th-border-color'] = $this->options['border-color']; // パラメータ細分化のため
41
+ }
42
+ if ($this->options['plugin-version'] < '2.4.2') {
43
+ $this->options['flg-do-shortcode'] = 1; // 設定漏れによる不具合が多発しているため
44
+ }
45
+
46
+ // 現バージョン
47
+ $this->options['plugin-version'] = $this->defaults['plugin-version'];
48
+
49
+ // スタイルシートのバージョンをクリア
50
+ $this->options['css-count'] = 0;
51
+
52
+ // スタイルシートのパスを用意
53
+ $this->options['css-templete'] = $this->plugin_dir_path.'templete/pz-linkcard-templete.css'; // 元となるテンプレート
54
+ $css_dir = $this->upload_dir_path;
55
+ $css_dir_url = $this->upload_dir_url;
56
+ $css_file = null;
57
+ $css_file_url = null;
58
+ if (!is_dir($css_dir)) {
59
+ if (!wp_mkdir_p($css_dir)) {
60
+ $css_dir = null;
61
+ $css_dir_url = null;
62
+ }
63
+ }
64
+ if ($css_dir) {
65
+ $css_file = $css_dir .'style.css';
66
+ $css_file_url = $css_dir_url.'style.css';
67
+ if (preg_match('/.*(\/\/.*)/', $css_file_url, $m)) { // スキームを外す
68
+ $css_url = $m[1];
69
+ }
70
+ }
71
+ $this->options['css-path'] = $css_file;
72
+ $this->options['css-url'] = $css_file_url;
73
+
74
+ // サムネイルのキャッシュディレクトリの用意
75
+ $wp_upload_dir = wp_upload_dir();
76
+ $thumbnail_dir = $wp_upload_dir['basedir'].'/'.$this->slug.'/cache/';
77
+ $thumbnail_dir_url = $wp_upload_dir['baseurl'].'/'.$this->slug.'/cache/';
78
+ if (!is_dir($thumbnail_dir)) {
79
+ if (!wp_mkdir_p($thumbnail_dir)) {
80
+ $thumbnail_dir = null;
81
+ $thumbnail_dir_url = null;
82
+ }
83
+ }
84
+ $this->options['thumbnail-dir'] = $thumbnail_dir;
85
+ $this->options['thumbnail-url'] = $thumbnail_dir_url;
86
+
87
+ // オプションの更新
88
+ $this->options['saved-date'] = $this->now; // 保存日時をセット
89
+ $result = update_option('Pz_LinkCard_options', $this->options); // オプションを更新
90
+
91
+ // スタイルシート生成
92
+ $this->pz_SetStyle();
93
+
94
+ // DB作成
95
+ global $wpdb;
96
+ $wpdb->hide_errors();
97
+
98
+ require_once (ABSPATH.'wp-admin/includes/upgrade.php');
99
+ $sql = "CREATE TABLE ".$this->db_name." (
100
+ id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
101
+ url VARCHAR(2048) DEFAULT '',
102
+ url_key VARBINARY(255) NOT NULL,
103
+ scheme VARCHAR(16) DEFAULT '',
104
+ domain VARCHAR(253) DEFAULT '',
105
+ location VARCHAR(2048) DEFAULT '',
106
+ address VARCHAR(2048) DEFAULT '',
107
+ site_name VARCHAR(100) DEFAULT '',
108
+ title VARCHAR(200) DEFAULT '',
109
+ excerpt VARCHAR(500) DEFAULT '',
110
+ thumbnail VARCHAR(2048) DEFAULT '',
111
+ favicon VARCHAR(2048) DEFAULT '',
112
+ means VARCHAR(32) DEFAULT '',
113
+ charset VARCHAR(32) DEFAULT '',
114
+ sns_time BIGINT UNSIGNED NOT NULL DEFAULT 0,
115
+ sns_nexttime BIGINT UNSIGNED NOT NULL DEFAULT 0,
116
+ sns_twitter INT DEFAULT -1,
117
+ sns_facebook INT DEFAULT -1,
118
+ sns_hatena INT DEFAULT -1,
119
+ sns_pocket INT DEFAULT -1,
120
+ post_id INT UNSIGNED DEFAULT 0,
121
+ post_date DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
122
+ use_post_id1 INT UNSIGNED,
123
+ use_post_id2 INT UNSIGNED,
124
+ use_post_id3 INT UNSIGNED,
125
+ use_post_id4 INT UNSIGNED,
126
+ use_post_id5 INT UNSIGNED,
127
+ use_post_id6 INT UNSIGNED,
128
+ regist_title VARCHAR(200) DEFAULT '',
129
+ regist_excerpt VARCHAR(500) DEFAULT '',
130
+ regist_charset VARCHAR(32) DEFAULT '',
131
+ regist_time BIGINT UNSIGNED NOT NULL DEFAULT 0,
132
+ regist_result INT DEFAULT -1,
133
+ update_time BIGINT UNSIGNED NOT NULL DEFAULT 0,
134
+ update_result INT DEFAULT -1,
135
+ mod_title INT UNSIGNED NOT NULL DEFAULT 0,
136
+ mod_excerpt INT UNSIGNED NOT NULL DEFAULT 0,
137
+ alive_time BIGINT UNSIGNED NOT NULL DEFAULT 0,
138
+ alive_nexttime BIGINT UNSIGNED NOT NULL DEFAULT 0,
139
+ alive_result INT DEFAULT -1,
140
+ uptime BIGINT UNSIGNED NOT NULL DEFAULT 0,
141
+ nexttime BIGINT UNSIGNED NOT NULL DEFAULT 0,
142
+ link_type INT UNSIGNED,
143
+ result_code INT DEFAULT -1,
144
+ regist DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
145
+ PRIMARY KEY ( id ),
146
+ UNIQUE KEY ( url_key )
147
+ ) ".$wpdb->get_charset_collate()." ;";
148
+ dbDelta($sql);
149
+
150
+ // バグデータのメンテナンス(重複URLの削除)
151
+ $result = (array) $wpdb->get_results("SELECT url,id FROM $this->db_name ORDER BY url,id");
152
+ $last_url = null;
153
+ $last_id = null;
154
+ if (isset($result) && is_array($result) && count($result) > 0) {
155
+ foreach($result as $data) {
156
+ if ($data->url == $last_url && $data->id <> $last_id) {
157
+ $after = $wpdb->delete($this->db_name, array('id' => $data->id), array('%d') );
158
+ }
159
+ $last_url = $data->url;
160
+ $last_id = $data->id;
161
+ }
162
+ }
163
+
164
+ // バグデータのメンテナンス(ハッシュURLの再生成)
165
+ $result = (array) $wpdb->get_results("SELECT id,url,url_key FROM $this->db_name ORDER BY id");
166
+ if (isset($result) && is_array($result) && count($result) > 0) {
167
+ foreach($result as $data) {
168
+ $new_url_key = hash( 'sha256', esc_url( $data->url ), true);
169
+ if ($data->url_key <> $new_url_key) {
170
+ $wpdb->update($this->db_name, array('url_key' => $new_url_key ) , array('id' => $data->id ) );
171
+ }
172
+ }
173
+ }
174
+
175
+ // 記事IDの再取得
176
+ $result = $wpdb->get_results("UPDATE $this->db_name SET use_post_id1 = post_id , post_id = 0 WHERE (use_post_id1 IS NULL OR result_code = 0) AND post_id > 0");
177
+
178
+ // // 記事IDの再取得(時間がかかるので未実行)
179
+ // $result = (array) $wpdb->get_results("SELECT id,url,use_post_id1,use_post_id2,use_post_id3,use_post_id4,use_post_id5,use_post_id6 FROM $this->db_name ORDER BY id");
180
+ // if (isset($result) && is_array($result) && count($result) > 0) {
181
+ // foreach($result as $data) {
182
+ // $use_post_id_t = array();
183
+ // if ($data->use_post_id1 > 0) {
184
+ // $use_post_id_t[] = $data->use_post_id1;
185
+ // }
186
+ // if ($data->use_post_id2 > 0) {
187
+ // $use_post_id_t[] = $data->use_post_id2;
188
+ // }
189
+ // if ($data->use_post_id3 > 0) {
190
+ // $use_post_id_t[] = $data->use_post_id3;
191
+ // }
192
+ // if ($data->use_post_id4 > 0) {
193
+ // $use_post_id_t[] = $data->use_post_id4;
194
+ // }
195
+ // if ($data->use_post_id5 > 0) {
196
+ // $use_post_id_t[] = $data->use_post_id5;
197
+ // }
198
+ // if ($data->use_post_id6 > 0) {
199
+ // $use_post_id_t[] = $data->use_post_id6;
200
+ // }
201
+ // $use_post_id_m = $wpdb->get_results($wpdb->prepare("SELECT id FROM $wpdb->prefix"."posts WHERE post_type = 'post' AND post_content LIKE '%%\"%s\"%%' ORDER BY id ASC", '"'.$data->url.'"' ));
202
+ // foreach($use_post_id_m as $use_post_id) {
203
+ // $use_post_id_t[] = $use_post_id->id;
204
+ // }
205
+ // $use_post_id_t = array_unique($use_post_id_t);
206
+ // $use_post_id_t = array_values($use_post_id_t);
207
+ // $wpdb->update($this->db_name, array('use_post_id1' => $use_post_id_m[0]->id, 'use_post_id2' => $use_post_id_m[1]->id, 'use_post_id3' => $use_post_id_m[2]->id, 'use_post_id4' => $use_post_id_m[3]->id, 'use_post_id5' => $use_post_id_m[4]->id, 'use_post_id6' => $use_post_id_m[5]->id ) , array('id' => $data->id ) );
208
+ // }
209
+ // }
210
+
211
+ // 過去バージョンからのコンバート(生存確認用のデータ作成)
212
+ $result = $wpdb->get_results("UPDATE $this->db_name SET result_code = 200 WHERE result_code IS NULL OR result_code = 0");
213
+ $result = $wpdb->get_results("UPDATE $this->db_name SET alive_result = result_code , alive_time = uptime WHERE alive_result IS NULL OR alive_result = 0 OR alive_time = 0");
214
+ $result = $wpdb->get_results("UPDATE $this->db_name SET alive_nexttime = alive_time WHERE alive_nexttime IS NULL OR alive_nexttime = 0");
215
+
216
+ // 過去バージョンからのコンバート(取得時テキストの作成)
217
+ $result = $wpdb->get_results("UPDATE $this->db_name SET regist_title = title , regist_excerpt = excerpt , regist_time = uptime , regist_result = result_code , regist_charset = charset WHERE (regist_title = '' AND regist_excerpt = '' ) AND (title <> '' OR excerpt <> '')");
218
+
219
+ // 過去バージョンからのコンバート(次回SNS取得日時)
220
+ $result = $wpdb->get_results("UPDATE $this->db_name SET sns_time = uptime , sns_nexttime = nexttime WHERE sns_nexttime = 0");
lib/pz-linkcard-settings-validate.php ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if (!function_exists("get_option")) die; ?>
2
+ <?php
3
+ // エラー
4
+ $flg_error = false;
5
+
6
+ // Webフォームから入力されたクォート文字を除去する
7
+ $this->options['ex-image'] = stripslashes($this->options['ex-image']);
8
+ $this->options['in-image'] = stripslashes($this->options['in-image']);
9
+ $this->options['th-image'] = stripslashes($this->options['th-image']);
10
+ $this->options['ex-info'] = stripslashes($this->options['ex-info']);
11
+ $this->options['in-info'] = stripslashes($this->options['in-info']);
12
+ $this->options['th-info'] = stripslashes($this->options['th-info']);
13
+
14
+ // Web APIで指定されたURL内のパラメータを大文字に修正する %Domain% → %DOMAIN%
15
+ $this->options['favicon-api'] = preg_replace( array('/%DOMAIN%/i', '/%DOMAIN_URL%/i', '/%URL%/i' ), array('%DOMAIN%', '%DOMAIN_URL%', '%URL%'), (isset($this->options['favicon-api'])) ? $this->options['favicon-api'] : null );
16
+ $this->options['thumbnail-api'] = preg_replace( array('/%DOMAIN%/i', '/%DOMAIN_URL%/i', '/%URL%/i' ), array('%DOMAIN%', '%DOMAIN_URL%', '%URL%'), (isset($this->options['thumbnail-api'])) ? $this->options['thumbnail-api'] : null );
17
+
18
+ // カード幅
19
+ $width = $this->options['width'];
20
+ if ($width) {
21
+ if (substr($width, -1 ) == '%') {
22
+ $width = pz_TrimNum($width, 0);
23
+ if ($width < 1 || $width > 100) {
24
+ $this->options['width'] = $this->defaults['width'];
25
+ } else {
26
+ $this->options['width'] = $width.'%';
27
+ }
28
+ } else {
29
+ $this->options['width'] = pz_TrimNum($width, $this->defaults['width']).'px';
30
+ }
31
+ }
32
+
33
+ // 記事の高さ
34
+ if ($this->options['content-height']) {
35
+ $this->options['content-height'] = pz_TrimNum($this->options['content-height'], $this->defaults['content-height'] ).'px';
36
+ }
37
+
38
+ // 数値項目の不正文字をチェック(数字以外が入っていたら修正)
39
+ $this->options['trim-title'] = pz_TrimNum($this->options['trim-title'], $this->defaults['trim-title']);
40
+ $this->options['trim-url'] = pz_TrimNum($this->options['trim-url'], $this->defaults['trim-url']);
41
+ $this->options['trim-excerpt'] = pz_TrimNum($this->options['trim-excerpt'], $this->defaults['trim-excerpt']);
42
+ $this->options['trim-info'] = pz_TrimNum($this->options['trim-info'], $this->defaults['trim-info']);
43
+ $this->options['size-title'] = pz_TrimNum($this->options['size-title'], $this->defaults['size-title']).'px';
44
+ $this->options['size-url'] = pz_TrimNum($this->options['size-url'], $this->defaults['size-url']).'px';
45
+ $this->options['size-excerpt'] = pz_TrimNum($this->options['size-excerpt'], $this->defaults['size-excerpt']).'px';
46
+ $this->options['size-more'] = pz_TrimNum($this->options['size-more'], $this->defaults['size-more']).'px';
47
+ $this->options['size-info'] = pz_TrimNum($this->options['size-info'], $this->defaults['size-info']).'px';
48
+ $this->options['size-added'] = pz_TrimNum($this->options['size-added'], $this->defaults['size-added']).'px';
49
+ $this->options['height-title'] = pz_TrimNum($this->options['height-title'], $this->defaults['height-title']).'px';
50
+ $this->options['height-url'] = pz_TrimNum($this->options['height-url'], $this->defaults['height-url']).'px';
51
+ $this->options['height-excerpt'] = pz_TrimNum($this->options['height-excerpt'], $this->defaults['height-excerpt']).'px';
52
+ $this->options['height-more'] = pz_TrimNum($this->options['height-more'], $this->defaults['height-more']).'px';
53
+ $this->options['height-info'] = pz_TrimNum($this->options['height-info'], $this->defaults['height-info']).'px';
54
+ $this->options['height-added'] = pz_TrimNum($this->options['height-added'], $this->defaults['height-added']).'px';
55
+ $this->options['thumbnail-width'] = pz_TrimNum($this->options['thumbnail-width'], $this->defaults['thumbnail-width']).'px';
56
+ $this->options['thumbnail-height'] = pz_TrimNum($this->options['thumbnail-height'], $this->defaults['thumbnail-height']).'px';
57
+ $this->options['cache-image-size'] = pz_TrimNum($this->options['cache-image-size'], $this->defaults['cache-image-size']);
58
+ $this->options['border-width'] = pz_TrimNum($this->options['border-width'], $this->defaults['border-width']).'px';
59
+
60
+ // 最大値・最低値のチェック
61
+ if ($this->options['cache-image-size'] < 100) {
62
+ $this->options['cache-image-size'] = 100;
63
+ }
64
+
65
+ // カラーコードの不正文字をチェック
66
+ if ( !pz_CheckColorCode($this->options['color-title'])
67
+ || !pz_CheckColorCode($this->options['color-url'])
68
+ || !pz_CheckColorCode($this->options['color-excerpt'])
69
+ || !pz_CheckColorCode($this->options['color-more'])
70
+ || !pz_CheckColorCode($this->options['color-info'])
71
+ || !pz_CheckColorCode($this->options['color-added'])
72
+ || ($this->options['color-title'] && !pz_CheckColorCode($this->options['color-title']) )
73
+ || ($this->options['color-url'] && !pz_CheckColorCode($this->options['color-url']) )
74
+ || ($this->options['color-excerpt'] && !pz_CheckColorCode($this->options['color-excerpt']) )
75
+ || ($this->options['color-more'] && !pz_CheckColorCode($this->options['color-more']) )
76
+ || ($this->options['color-info'] && !pz_CheckColorCode($this->options['color-info']) )
77
+ || ($this->options['color-added'] && !pz_CheckColorCode($this->options['color-added']) )
78
+ || !pz_CheckColorCode($this->options['ex-border-color'])
79
+ || !pz_CheckColorCode($this->options['in-border-color'])
80
+ || !pz_CheckColorCode($this->options['th-border-color'])
81
+ || !pz_CheckColorCode($this->options['ex-bgcolor'])
82
+ || !pz_CheckColorCode($this->options['in-bgcolor'])
83
+ || !pz_CheckColorCode($this->options['th-bgcolor']) ) {
84
+ echo '<div class="notice notice-warning is-dismissible"><p><strong>'.__('Color code does not conform to HTML color code.', $this->text_domain).'</strong></p></div>';
85
+ }
lib/pz-linkcard-settings.php CHANGED
@@ -4,128 +4,69 @@
4
  <h2><?php echo __('LinkCard Settings', $this->text_domain).' ver.'.$this->options['plugin-version'];?></h2>
5
  <div id="settings" style="clear:both;">
6
  <?php
 
7
  if ( isset($_POST['properties'])) {
8
  check_admin_referer('pz_options');
9
- $this->options = $_POST['properties'];
 
10
 
11
- // セットされていないオプション項目をnullでセットする
12
  foreach ($this->defaults as $key => $value) {
13
  if (!isset($this->options[$key])) {
14
  $this->options[$key] = null;
15
  }
16
  }
17
 
18
- if (isset($this->options['initialize']) && $this->options['initialize'] == '1') {
 
 
 
 
19
  delete_option('Pz_LinkCard_options');
20
- $this->options = $this->defaults;
21
- }
22
-
23
- $this->options['ex-image'] = stripslashes($this->options['ex-image']);
24
- $this->options['in-image'] = stripslashes($this->options['in-image']);
25
- $this->options['th-image'] = stripslashes($this->options['th-image']);
26
-
27
- $this->options['ex-info'] = stripslashes($this->options['ex-info']);
28
- $this->options['in-info'] = stripslashes($this->options['in-info']);
29
- $this->options['th-info'] = stripslashes($this->options['th-info']);
30
-
31
- $this->options['favicon-api'] = preg_replace( array('/%DOMAIN%/i', '/%DOMAIN_URL%/i', '/%URL%/i' ), array('%DOMAIN%', '%DOMAIN_URL%', '%URL%'), (isset($this->options['favicon-api'])) ? $this->options['favicon-api'] : null );
32
- $this->options['thumbnail-api'] = preg_replace( array('/%DOMAIN%/i', '/%DOMAIN_URL%/i', '/%URL%/i' ), array('%DOMAIN%', '%DOMAIN_URL%', '%URL%'), (isset($this->options['thumbnail-api'])) ? $this->options['thumbnail-api'] : null );
33
-
34
- $this->options['saved-date'] = time();
35
-
36
- $result = true;
37
- if ($this->options['code1'] == '') {
38
- echo '<div class="error fade"><p><strong>'.__('Short code is not set.', $this->text_domain).'</strong></p></div>';
39
- $result = false;
40
- }
41
-
42
- $width = $this->options['width'];
43
- if ($width) {
44
- if (substr($width, -1 ) == '%') {
45
- $width = pz_TrimNum($width, 0);
46
- if ($width < 1 || $width > 100) {
47
- $this->options['width'] = $this->defaults['width'];
48
- } else {
49
- $this->options['width'] = $width.'%';
50
  }
51
- } else {
52
- $this->options['width'] = pz_TrimNum($width, $this->defaults['width']).'px';
53
- }
54
- }
55
-
56
- if ($this->options['content-height']) {
57
- $this->options['content-height'] = pz_TrimNum($this->options['content-height'], $this->defaults['content-height'] ).'px';
58
- }
59
- $this->options['trim-title'] = pz_TrimNum($this->options['trim-title'], $this->defaults['trim-title']);
60
- $this->options['trim-url'] = pz_TrimNum($this->options['trim-url'], $this->defaults['trim-url']);
61
- $this->options['trim-count'] = pz_TrimNum($this->options['trim-count'], $this->defaults['trim-count']);
62
- $this->options['trim-sitename'] = pz_TrimNum($this->options['trim-sitename'], $this->defaults['trim-sitename']);
63
- $this->options['size-title'] = pz_TrimNum($this->options['size-title'], $this->defaults['size-title']).'px';
64
- $this->options['height-title'] = pz_TrimNum($this->options['height-title'], $this->defaults['height-title']).'px';
65
- $this->options['size-url'] = pz_TrimNum($this->options['size-url'], $this->defaults['size-url']).'px';
66
- $this->options['height-url'] = pz_TrimNum($this->options['height-url'], $this->defaults['height-url']).'px';
67
- $this->options['size-excerpt'] = pz_TrimNum($this->options['size-excerpt'], $this->defaults['size-excerpt']).'px';
68
- $this->options['height-excerpt'] = pz_TrimNum($this->options['height-excerpt'], $this->defaults['height-excerpt']).'px';
69
- $this->options['size-info'] = pz_TrimNum($this->options['size-info'], $this->defaults['size-info']).'px';
70
- $this->options['height-info'] = pz_TrimNum($this->options['height-info'], $this->defaults['height-info']).'px';
71
- $this->options['size-added'] = pz_TrimNum($this->options['size-added'], $this->defaults['size-added']).'px';
72
- $this->options['height-added'] = pz_TrimNum($this->options['height-added'], $this->defaults['height-added']).'px';
73
- $this->options['size-more'] = pz_TrimNum($this->options['size-more'], $this->defaults['size-more']).'px';
74
- $this->options['height-more'] = pz_TrimNum($this->options['height-more'], $this->defaults['height-more']).'px';
75
- $this->options['thumbnail-width'] = pz_TrimNum($this->options['thumbnail-width'], $this->defaults['thumbnail-width']).'px';
76
- $this->options['thumbnail-height'] = pz_TrimNum($this->options['thumbnail-height'], $this->defaults['thumbnail-height']).'px';
77
- $this->options['cache-image-size'] = pz_TrimNum($this->options['cache-image-size'], $this->defaults['cache-image-size']);
78
- $this->options['border-width'] = pz_TrimNum($this->options['border-width'], $this->defaults['border-width']).'px';
79
-
80
- $color_code = preg_replace('/[^0-9a-f]/i', '', $this->options['ex-border-color']);
81
- $this->options['ex-border-color'] = '#'.$color_code;
82
-
83
- $color_code = preg_replace('/[^0-9a-f]/i', '', $this->options['in-border-color']);
84
- $this->options['in-border-color'] = '#'.$color_code;
85
-
86
- $color_code = preg_replace('/[^0-9a-f]/i', '', $this->options['th-border-color']);
87
- $this->options['th-border-color'] = '#'.$color_code;
88
-
89
- $color_code = preg_replace('/[^0-9a-f]/i', '', $this->options['color-info']);
90
- $this->options['color-info'] = '#'.$color_code;
91
-
92
- $color_code = preg_replace('/[^0-9a-f]/i', '', $this->options['color-added']);
93
- $this->options['color-added'] = '#'.$color_code;
94
-
95
- $color_code = preg_replace('/[^0-9a-f]/i', '', $this->options['color-title']);
96
- $this->options['color-title'] = '#'.$color_code;
97
-
98
- $color_code = preg_replace('/[^0-9a-f]/i', '', $this->options['color-url']);
99
- $this->options['color-url'] = '#'.$color_code;
100
-
101
- $color_code = preg_replace('/[^0-9a-f]/i', '', $this->options['color-excerpt']);
102
- $this->options['color-excerpt'] = '#'.$color_code;
103
-
104
- // サムネイルのキャッシュディレクトリの用意
105
- $thumbnail_dir = $this->upload_dir_path.'cache/';
106
- $thumbnail_url = $this->upload_dir_url .'cache/';
107
- if (!is_dir($thumbnail_dir) && !wp_mkdir_p($thumbnail_dir)) {
108
- $thumbnail_dir = $this->plugin_dir_path.'cache/';
109
- $thumbnail_url = $this->plugin_dir_url .'cache/';
110
- if (!is_dir($thumbnail_dir)) {
111
- $thumbnail_dir = null;
112
- $thumbnail_url = null;
113
  }
 
 
 
114
  }
115
- $this->options['thumbnail-dir'] = $thumbnail_dir;
116
- $this->options['thumbnail-url'] = $thumbnail_url;
117
 
118
  // オプションの更新
119
- if ($result == true) {
120
- $result = update_option('Pz_LinkCard_options', $this->options);
121
- if ($result == true) {
122
- echo '<div class="updated fade"><p><strong>'.__('Changes saved.', $this->text_domain).'</strong></p></div>';
 
 
 
 
 
 
123
  } else {
124
- echo '<div class="error fade"><p><strong>'.__('Not changed.', $this->text_domain).'</strong></p></div>';
 
125
  }
 
126
  $this->pz_SetStyle();
127
  }
128
  }
 
 
 
129
  ?>
130
  <form action="" method="post">
131
  <?php wp_nonce_field('pz_options'); ?>
@@ -141,34 +82,41 @@
141
  <a class="pz-lkc-tab" href="#pz-lkc-samepage"><?php _e('Same page link', $this->text_domain); ?></a>
142
  <a class="pz-lkc-tab" href="#pz-lkc-api"><?php _e('Web API', $this->text_domain); ?></a>
143
  <a class="pz-lkc-tab" href="#pz-lkc-image"><?php _e('Image', $this->text_domain); ?></a>
 
144
  <a class="pz-lkc-tab" href="#pz-lkc-check"><?php _e('Link check', $this->text_domain); ?></a>
145
  <a class="pz-lkc-tab" href="#pz-lkc-editor"><?php _e('Editor', $this->text_domain); ?></a>
146
  <a class="pz-lkc-tab" href="#pz-lkc-advanced"><?php _e('Advanced', $this->text_domain); ?></a>
147
  <a class="pz-lkc-tab" href="#pz-lkc-initialize"><?php _e('Initialize', $this->text_domain); ?></a>
148
  </div>
149
-
150
  <div class="pz-lkc-item<?php if ($this->options['flg-invalid']) { echo ' pz-lkc-item-active'; } ?>" id="pz-lkc-error">
151
  <div<?php if (!$this->options['flg-invalid']) { echo ' style="display: none;"'; } ?>>
152
- <h3><?php echo __('Error settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-error" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
153
  <table class="form-table">
154
  <tr valign="top">
155
- <th scope="row"><?php _e('Invalid URL', $this->text_domain); ?></th>
156
- <td><label><input name="properties[flg-invalid]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['flg-invalid']) ? $this->options['flg-invalid'] : null, 1); ?> /><?php _e('Uncheck to cancel the error condition.', $this->text_domain); ?></label></td>
157
  </tr>
158
- <tr valign="top" style="display: none;">
159
  <th scope="row"><?php _e('Error URL', $this->text_domain); ?></th>
160
- <td><input name="properties[invalid-url]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['invalid-url']); ?>" size="80" /></td>
 
 
 
161
  </tr>
162
- <tr valign="top" style="display: none;">
163
  <th scope="row"><?php _e('Error Time', $this->text_domain); ?></th>
164
- <td><input name="properties[invalid-time]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['invalid-time']); ?>" size="10" /></td>
 
 
 
165
  </tr>
166
  </table>
167
  </div>
168
  </div>
169
-
170
  <div class="pz-lkc-item<?php if (!$this->options['flg-invalid']) { echo ' pz-lkc-item-active'; } ?>" id="pz-lkc-basic">
171
- <h3><?php echo __('Basic settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-basic" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
172
  <table class="form-table">
173
  <tr valign="top">
174
  <th scope="row"><?php _e('Easy format', $this->text_domain); ?></th>
@@ -207,16 +155,16 @@
207
 
208
  <tr valign="top">
209
  <th scope="row"><?php _e("How to (Japanese only)", $this->text_domain); ?></th>
210
- <td><A href="https://popozure.info/pz-linkcard" target="_blank">https://popozure.info/pz-linkcard</A></td>
211
  </tr>
212
 
213
  <tr valign="top">
214
  <th scope="row"><?php _e("Author's site", $this->text_domain); ?></th>
215
- <td><?php echo __('Popozure.', $this->text_domain).' ('.__("Poporon's PC daily diary", $this->text_domain).')'; ?><BR><A href="https://popozure.info" target="_blank">https://popozure.info</A></td>
216
  </tr>
217
  <tr valign="top">
218
  <th scope="row"><?php _e("When in trouble", $this->text_domain); ?></th>
219
- <td><?php echo __('Twitter account', $this->text_domain); ?><BR><A href="https://twitter.com/popozure" target="_blank">@popozure</A></td>
220
  </tr>
221
  <tr valign="top" style="display: none;">
222
  <th scope="row"><?php _e("Donation", $this->text_domain); ?></th>
@@ -227,18 +175,13 @@
227
  </div>
228
 
229
  <div class="pz-lkc-item" id="pz-lkc-position">
230
- <h3><?php echo __('Position settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-position" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
231
  <table class="form-table">
232
- <tr valign="top">
233
- <th scope="row"><?php _e('Use blockquote tag', $this->text_domain); ?></th>
234
- <td><label><input name="properties[blockquote]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['blockquote']) ? $this->options['blockquote'] : null, 1); ?> /><?php _e('without using DIV tag, and use BLOCKQUOTE tag', $this->text_domain); ?></label></td>
235
- </tr>
236
-
237
  <tr valign="top">
238
  <th scope="row"><?php _e('Link the whole', $this->text_domain); ?></th>
239
  <td>
240
  <label>
241
- <input name="properties[link-all]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['link-all']) ? $this->options['link-all'] : null, 1); ?> />
242
  <?php _e('Enclose the entire card at anchor', $this->text_domain); ?>
243
  </label>
244
  </td>
@@ -331,8 +274,8 @@
331
  </tr>
332
  <tr>
333
  <td colspan="2" align="center">
334
- <?php _e('Width', $this->text_domain); ?><input name="properties[width]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['width']); ?>" style="width: 80px;" /><br>
335
- <?php _e('Height', $this->text_domain); ?><input name="properties[content-height]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['content-height']); ?>" style="width: 80px;" /><br>
336
  </td>
337
  </tr>
338
  <tr>
@@ -370,7 +313,7 @@
370
  </tr>
371
  <tr>
372
  <td>
373
- <input name="properties[centering]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['centering']) ? $this->options['centering'] : null, 1); ?> /><?php _e('Centering', $this->text_domain); ?>
374
  </td>
375
  <td align="center">
376
  <?php _e('Margin bottom', $this->text_domain); ?><br>
@@ -391,53 +334,57 @@
391
  </table>
392
  </td>
393
  </tr>
 
 
 
 
394
  </table>
395
  </div>
396
 
397
  <div class="pz-lkc-item" id="pz-lkc-display">
398
- <h3><?php echo __('Display settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-display" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
399
  <table class="form-table">
400
  <tr>
401
  <th scope="row"><?php _e('Layout', $this->text_domain); ?></th>
402
  <td>
403
 
404
- <table style="border: 1px solid #000; background-color: #fff; width: 500px;">
405
  <tr>
406
  <td colspan="2">
407
  <?php _e('Site information', $this->text_domain); ?>
408
  <select name="properties[info-position]">
409
  <option value="" <?php if($this->options['info-position'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
410
- <option value="1" <?php if($this->options['info-position'] == '1') echo 'selected="selected"'; ?>><?php _e('Top', $this->text_domain); ?></option>
411
  <option value="3" <?php if($this->options['info-position'] == '3') echo 'selected="selected"'; ?>><?php _e('Above the title', $this->text_domain); ?></option>
412
- <option value="2" <?php if($this->options['info-position'] == '2') echo 'selected="selected"'; ?>><?php _e('Bottom', $this->text_domain); ?></option>
413
  </select>
414
- <label><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); ?></label>
415
  </td>
416
  </tr>
417
  <tr>
418
  <td>
419
- <label><input name="properties[display-date]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['display-date']) ? $this->options['display-date'] : null, 1); ?> /><?php _e('For internal links, display the posting date', $this->text_domain); ?></label>
420
  </td>
421
  <td>
422
  </td>
423
  </tr>
424
  <tr>
425
  <td>
426
- <label><input name="properties[heading]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['heading']) ? $this->options['heading'] : null, 1); ?> /><?php _e('Make additional information heading display', $this->text_domain); ?></label>
427
  </td>
428
  <td>
429
  </td>
430
  </tr>
431
  <tr>
432
  <td>
433
- <label><input name="properties[flg-anker]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['flg-anker']) ? $this->options['flg-anker'] : null, 1); ?> /><?php _e('Turn off the anchor text underlining', $this->text_domain); ?></label>
434
  </td>
435
  <td>
436
  </td>
437
  </tr>
438
  <tr>
439
  <td>
440
- <label><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); ?></label>
441
  </td>
442
  <td>
443
  </td>
@@ -457,38 +404,38 @@
457
  <?php _e('Thumbnail', $this->text_domain); ?>
458
  <select name="properties[thumbnail-position]">
459
  <option value="0" <?php if($this->options['thumbnail-position'] == '0') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
460
- <option value="1" <?php if($this->options['thumbnail-position'] == '1') echo 'selected="selected"'; ?>><?php _e('Right', $this->text_domain); ?></option>
461
- <option value="2" <?php if($this->options['thumbnail-position'] == '2') echo 'selected="selected"'; ?>><?php _e('Left', $this->text_domain); ?></option>
462
- <option value="3" <?php if($this->options['thumbnail-position'] == '3') echo 'selected="selected"'; ?>><?php _e('Upper', $this->text_domain); ?></option>
463
  </select>
464
  <br>
465
- <?php _e('Width', $this->text_domain); ?><input name="properties[thumbnail-width]" type="text" id="inputtext" value="<?php echo (isset($this->options['thumbnail-width']) ? $this->options['thumbnail-width'] : $this->defaults['thumbnail-width']); ?>" style="width: 4em;" />
466
  <br>
467
- <?php _e('Height', $this->text_domain); ?><input name="properties[thumbnail-height]" type="text" id="inputtext" value="<?php echo (isset($this->options['thumbnail-height']) ? $this->options['thumbnail-height'] : $this->defaults['thumbnail-height']); ?>" style="width: 4em;" />
468
  <br>
469
- <label><input name="properties[thumbnail-shadow]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['thumbnail-shadow']) ? $this->options['thumbnail-shadow'] : null, 1); ?> /><?php _e('Shadow', $this->text_domain); ?></label>
470
  </td>
471
  </tr>
472
  <tr>
473
  <td>
474
- <label><input name="properties[content-inset]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['content-inset']) ? $this->options['content-inset'] : null, 1); ?> /><?php _e('Hollow content area', $this->text_domain); ?></label>
475
  </td>
476
  </tr>
477
  <tr>
478
  <td>
479
- <label><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); ?></label>
480
  </td>
481
  </tr>
482
  <tr>
483
  <td>
484
- <label><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); ?></label>
485
  </td>
486
  <td>
487
  </td>
488
  </tr>
489
  <tr>
490
  <td>
491
- <label><input name="properties[shadow]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['shadow']) ? $this->options['shadow'] : null, 1); ?> /><?php _e('Shadow', $this->text_domain); ?></label></td>
492
  </td>
493
  </tr>
494
  <tr>
@@ -526,23 +473,23 @@
526
  <th scope="row"><?php _e('Border', $this->text_domain); ?></th>
527
  <td>
528
  <select name="properties[border-style]">
529
- <option value="none" <?php if ($this->options['border-style'] == 'none') echo 'selected="selected"'; ?>><?php _e('none', $this->text_domain); ?></option>
530
- <option value="solid" <?php if ($this->options['border-style'] == 'solid') echo 'selected="selected"'; ?>><?php _e('solid', $this->text_domain); ?></option>
531
- <option value="dotted" <?php if ($this->options['border-style'] == 'dotted') echo 'selected="selected"'; ?>><?php _e('dotted', $this->text_domain); ?></option>
532
- <option value="dashed" <?php if ($this->options['border-style'] == 'dashed') echo 'selected="selected"'; ?>><?php _e('dashed', $this->text_domain); ?></option>
533
- <option value="double" <?php if ($this->options['border-style'] == 'double') echo 'selected="selected"'; ?>><?php _e('double', $this->text_domain); ?></option>
534
- <option value="groove" <?php if ($this->options['border-style'] == 'groove') echo 'selected="selected"'; ?>><?php _e('groove', $this->text_domain); ?></option>
535
- <option value="ridge" <?php if ($this->options['border-style'] == 'ridge') echo 'selected="selected"'; ?>><?php _e('ridge', $this->text_domain); ?></option>
536
- <option value="inset" <?php if ($this->options['border-style'] == 'inset') echo 'selected="selected"'; ?>><?php _e('inset', $this->text_domain); ?></option>
537
- <option value="outset" <?php if ($this->options['border-style'] == 'outset') echo 'selected="selected"'; ?>><?php _e('outset', $this->text_domain); ?></option>
538
  </select>
539
- &nbsp;<?php _e('Width', $this->text_domain); ?><input name="properties[border-width]" type="text" id="inputtext" value="<?php echo $this->options['border-width']; ?>" style="width: 4em;" />
540
  </td>
541
  </tr>
542
 
543
  <tr valign="top">
544
  <th scope="row"><?php _e('Reset img style', $this->text_domain); ?></th>
545
- <td><label><input name="properties[style-reset-img]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['style-reset-img']) ? $this->options['style-reset-img'] : null, 1); ?> /><?php _e('When unnecessary frame is displayed on the image, you can improve it by case', $this->text_domain); ?></label></td>
546
  </tr>
547
 
548
  <tr valign="top">
@@ -567,148 +514,134 @@
567
  <option value="1" <?php if($this->options['sns-position'] == '1') echo 'selected="selected"'; ?>><?php _e('Bihind title', $this->text_domain); ?></option>
568
  <option value="2" <?php if($this->options['sns-position'] == '2') echo 'selected="selected"'; ?>><?php _e('Bihind site-info', $this->text_domain); ?></option>
569
  </select>
570
- <label><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); ?></label>
571
- <label><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); ?></label>
572
- <label><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); ?></label>
573
- <label><input name="properties[sns-po]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['sns-po']) ? $this->options['sns-po'] : null, 1); ?> /><?php _e('Pocket', $this->text_domain); ?></label>
574
  </td>
575
  </tr>
576
  </table>
577
  </div>
578
 
579
  <div class="pz-lkc-item" id="pz-lkc-letter">
580
- <h3><?php echo __('Letter settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-letter" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
581
- <table class="form-table" style="max-width: 900px;">
582
-
583
  <tr valign="top">
584
  <th scope="row"><?php _e('Title', $this->text_domain); ?></th>
585
  <td>
586
- <?php _e('Color', $this->text_domain); ?><input name="properties[color-title]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr($this->options['color-title']); ?>" />
587
- <label><input name="properties[outline-title]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['outline-title']) ? $this->options['outline-title'] : null, 1); ?> /><?php _e('Outline', $this->text_domain); ?></label>
588
- <input name="properties[outline-color-title]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr((isset($this->options['outline-color-title']) ? $this->options['outline-color-title'] : $this->defaults['outline-color-title'])); ?>" />
589
- </td>
590
- <td>
591
- <?php _e('Size', $this->text_domain); ?><input name="properties[size-title]" type="text" id="inputtext" value="<?php echo (isset($this->options['size-title']) ? $this->options['size-title'] : $this->defaults['size-title']); ?>" style="width: 4em;" />
592
- </td>
593
- <td>
594
- <?php _e('Height', $this->text_domain); ?><input name="properties[height-title]" type="text" id="inputtext" value="<?php echo (isset($this->options['height-title']) ? $this->options['height-title'] : $this->defaults['height-title']); ?>" style="width: 4em;" />
595
- </td>
596
- <td>
597
- <?php _e('Length', $this->text_domain); ?><input name="properties[trim-title]" type="text" id="inputtext" value="<?php echo (isset($this->options['trim-title']) ? $this->options['trim-title'] : $this->defaults['trim-title']); ?>" style="width: 3em;" />
598
- <br><label><input name="properties[nowrap-title]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['nowrap-title']) ? $this->options['nowrap-title'] : null, 1); ?> /><?php _e('No wrap', $this->text_domain); ?></label>
599
  </td>
600
  </tr>
601
-
602
  <tr valign="top">
603
- <th scope="row"><?php _e('URL', $this->text_domain); ?></th>
604
- <td>
605
- <?php _e('Color', $this->text_domain); ?><input name="properties[color-url]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr($this->options['color-url']); ?>" />
606
- <label><input name="properties[outline-url]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['outline-url']) ? $this->options['outline-url'] : null, 1); ?> /><?php _e('Outline', $this->text_domain); ?></label>
607
- <input name="properties[outline-color-url]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr((isset($this->options['outline-color-url']) ? $this->options['outline-color-url'] : $this->defaults['outline-color-url'])); ?>" />
608
- </td>
609
- <td>
610
- <?php _e('Size', $this->text_domain); ?><input name="properties[size-url]" type="text" id="inputtext" value="<?php echo (isset($this->options['size-url']) ? $this->options['size-url'] : $this->defaults['size-url']); ?>" style="width: 4em;" />
611
- </td>
612
- <td>
613
- <?php _e('Height', $this->text_domain); ?><input name="properties[height-url]" type="text" id="inputtext" value="<?php echo (isset($this->options['height-url']) ? $this->options['height-url'] : $this->defaults['height-url']); ?>" style="width: 4em;" />
614
- </td>
615
  <td>
616
- <?php _e('Length', $this->text_domain); ?><input name="properties[trim-url]" type="text" id="inputtext" value="<?php echo (isset($this->options['trim-url']) ? $this->options['trim-url'] : $this->defaults['trim-url']); ?>" style="width: 3em;" />
617
- <br><label><input name="properties[nowrap-url]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['nowrap-url']) ? $this->options['nowrap-url'] : null, 1); ?> /><?php _e('No wrap', $this->text_domain); ?></label>
 
 
 
 
 
 
 
 
 
618
  </td>
619
  </tr>
620
-
621
  <tr valign="top">
622
  <th scope="row"><?php _e('Excerpt', $this->text_domain); ?></th>
623
  <td>
624
- <?php _e('Color', $this->text_domain); ?><input name="properties[color-excerpt]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr($this->options['color-excerpt']); ?>" />
625
- <label><input name="properties[outline-excerpt]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['outline-excerpt']) ? $this->options['outline-excerpt'] : null, 1); ?> /><?php _e('Outline', $this->text_domain); ?></label>
626
- <input name="properties[outline-color-excerpt]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr((isset($this->options['outline-color-excerpt']) ? $this->options['outline-color-excerpt'] : $this->defaults['outline-color-excerpt'])); ?>" />
627
- </td>
628
- <td>
629
- <?php _e('Size', $this->text_domain); ?><input name="properties[size-excerpt]" type="text" id="inputtext" value="<?php echo (isset($this->options['size-excerpt']) ? $this->options['size-excerpt'] : $this->defaults['size-excerpt']); ?>" style="width: 4em;" />
630
- </td>
631
- <td>
632
- <?php _e('Height', $this->text_domain); ?><input name="properties[height-excerpt]" type="text" id="inputtext" value="<?php echo (isset($this->options['height-excerpt']) ? $this->options['height-excerpt'] : $this->defaults['height-excerpt']); ?>" style="width: 4em;" />
633
- </td>
634
- <td>
635
- &nbsp;<?php _e('Length', $this->text_domain); ?><input name="properties[trim-count]" type="text" id="inputtext" value="<?php echo (isset($this->options['trim-count']) ? $this->options['trim-count'] : $this->defaults['trim-sount']); ?>" style="width: 3em;" />
636
  </td>
637
  </tr>
638
-
639
  <tr valign="top">
640
  <th scope="row"><?php _e('More button', $this->text_domain); ?></th>
641
  <td>
642
- <?php _e('Color', $this->text_domain); ?><input name="properties[color-more]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr($this->options['color-more']); ?>" />
643
- <label><input name="properties[outline-more]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['outline-more']) ? $this->options['outline-more'] : null, 1); ?> /><?php _e('Outline', $this->text_domain); ?></label>
644
- <input name="properties[outline-color-more]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr((isset($this->options['outline-color-more']) ? $this->options['outline-color-more'] : $this->defaults['outline-color-more'])); ?>" />
645
- </td>
646
- <td>
647
- <?php _e('Size', $this->text_domain); ?><input name="properties[size-more]" type="text" id="inputtext" value="<?php echo (isset($this->options['size-more']) ? $this->options['size-more'] : $this->defaults['size-more']); ?>" style="width: 4em;" />
648
- </td>
649
- <td>
650
- <?php _e('Height', $this->text_domain); ?><input name="properties[height-more]" type="text" id="inputtext" value="<?php echo (isset($this->options['height-more']) ? $this->options['height-more'] : $this->defaults['height-more']); ?>" style="width: 4em;" />
651
- </td>
652
- <td>
653
  </td>
654
  </tr>
655
-
656
  <tr valign="top">
657
  <th scope="row"><?php _e('Site information', $this->text_domain); ?></th>
658
  <td>
659
- <?php _e('Color', $this->text_domain); ?><input name="properties[color-info]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr($this->options['color-info']); ?>" />
660
- <label><input name="properties[outline-info]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['outline-info']) ? $this->options['outline-info'] : null, 1); ?> /><?php _e('Outline', $this->text_domain); ?></label>
661
- <input name="properties[outline-color-info]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr((isset($this->options['outline-color-info']) ? $this->options['outline-color-info'] : $this->defaults['outline-color-info'])); ?>" />
662
- </td>
663
- <td>
664
- <?php _e('Size', $this->text_domain); ?><input name="properties[size-info]" type="text" id="inputtext" value="<?php echo (isset($this->options['size-info']) ? $this->options['size-info'] : $this->defaults['size-info']); ?>" style="width: 4em;" />
665
- </td>
666
- <td>
667
- <?php _e('Height', $this->text_domain); ?><input name="properties[height-info]" type="text" id="inputtext" value="<?php echo (isset($this->options['height-info']) ? $this->options['height-info'] : $this->defaults['height-info']); ?>" style="width: 4em;" />
668
- </td>
669
- <td>
670
- <?php _e('Length', $this->text_domain); ?><input name="properties[trim-sitename]" type="text" id="inputtext" value="<?php echo (isset($this->options['trim-sitename']) ? $this->options['trim-sitename'] : $this->defaults['trim-sitename']); ?>" style="width: 3em;" />
671
  </td>
672
  </tr>
673
-
674
  <tr valign="top">
675
  <th scope="row"><?php _e('Added information', $this->text_domain); ?></th>
676
  <td>
677
- <?php _e('Color', $this->text_domain); ?><input name="properties[color-added]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr($this->options['color-added']); ?>" />
678
- <label><input name="properties[outline-added]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['outline-added']) ? $this->options['outline-added'] : null, 1); ?> /><?php _e('Outline', $this->text_domain); ?></label>
679
- <input name="properties[outline-color-added]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr((isset($this->options['outline-color-added']) ? $this->options['outline-color-added'] : $this->defaults['outline-color-added'])); ?>" />
680
- </td>
681
- <td>
682
- <?php _e('Size', $this->text_domain); ?><input name="properties[size-added]" type="text" id="inputtext" value="<?php echo (isset($this->options['size-added']) ? $this->options['size-added'] : $this->defaults['size-added']); ?>" style="width: 4em;" />
683
- </td>
684
- <td>
685
- <?php _e('Height', $this->text_domain); ?><input name="properties[height-added]" type="text" id="inputtext" value="<?php echo (isset($this->options['height-added']) ? $this->options['height-added'] : $this->defaults['height-added']); ?>" style="width: 4em;" />
 
686
  </td>
687
  </tr>
688
-
689
  <tr valign="top">
690
  <th scope="row"><?php _e('Resize', $this->text_domain); ?></th>
691
- <td colspan="4"><label><input name="properties[thumbnail-resize]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['thumbnail-resize']) ? $this->options['thumbnail-resize'] : null, 1); ?> /><?php _e('Adjust thumbnail and letter size according to width', $this->text_domain); ?></label></td>
692
  </tr>
693
-
694
  </table>
695
  </div>
696
 
697
  <div class="pz-lkc-item" id="pz-lkc-external">
698
- <h3><?php echo __('External link settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-external-link" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
699
  <table class="form-table">
700
 
701
  <tr valign="top">
702
  <th scope="row"><?php _e('Border Color', $this->text_domain); ?></th>
703
- <td><input name="properties[ex-border-color]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr($this->options['ex-border-color']); ?>" /></td>
704
  </tr>
705
  <tr valign="top">
706
  <th scope="row"><?php _e('Background Color', $this->text_domain); ?></th>
707
- <td><input name="properties[ex-bgcolor]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr($this->options['ex-bgcolor']); ?>" /></td>
708
  </tr>
709
  <tr valign="top">
710
  <th scope="row"><?php _e('Background image', $this->text_domain); ?></th>
711
- <td><input name="properties[ex-image]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['ex-image']); ?>" size="80" /></td>
712
  </tr>
713
  <tr valign="top">
714
  <th scope="row"><?php _e('Thumbnail', $this->text_domain); ?></th>
@@ -723,7 +656,7 @@
723
  </td>
724
  </tr>
725
  <tr valign="top">
726
- <th scope="row"><?php _e('Favicon', $this->text_domain); ?></th>
727
  <td>
728
  <select name="properties[ex-favicon]">
729
  <option value="" <?php if($this->options['ex-favicon'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
@@ -735,11 +668,11 @@
735
  </tr>
736
  <tr valign="top">
737
  <th scope="row"><?php _e('Added information', $this->text_domain); ?></th>
738
- <td><input name="properties[ex-info]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['ex-info']); ?>" class="regular-text" /></td>
739
  </tr>
740
  <tr valign="top">
741
  <th scope="row"><?php _e('Text of more button', $this->text_domain); ?></th>
742
- <td><input name="properties[ex-more-text]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['ex-more-text']); ?>" class="regular-text" /></td>
743
  </tr>
744
  <tr valign="top">
745
  <th scope="row"><?php _e('Open new window/tab', $this->text_domain); ?></th>
@@ -759,29 +692,33 @@
759
  </tr>
760
  <tr valign="top">
761
  <th scope="row"><?php _e('Set nofollow', $this->text_domain); ?></th>
762
- <td><label><input name="properties[nofollow]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['nofollow']) ? $this->options['nofollow'] : null, 1); ?> /><?php _e('In the case of an external site, it puts the "nofollow"', $this->text_domain); ?></label></td>
 
 
 
 
763
  </tr>
764
  <tr valign="top">
765
  <th scope="row"><?php _e('Use HatenaBlogCard', $this->text_domain); ?></th>
766
- <td><label><input name="properties[use-hatena]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['use-hatena']) ? $this->options['use-hatena'] : null, 1); ?> /><?php _e('External links will use Always HatenaBlogCard.', $this->text_domain); _e('(Not recommended)', $this->text_domain); ?></label></td>
767
  </tr>
768
  </table>
769
  </div>
770
 
771
  <div class="pz-lkc-item" id="pz-lkc-internal">
772
- <h3><?php echo __('Internal link settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-internal-link" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
773
  <table class="form-table">
774
  <tr valign="top">
775
  <th scope="row"><?php _e('Border Color', $this->text_domain); ?></th>
776
- <td><input name="properties[in-border-color]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr($this->options['in-border-color']); ?>" /></td>
777
  </tr>
778
  <tr valign="top">
779
  <th scope="row"><?php _e('Background Color', $this->text_domain); ?></th>
780
- <td><input name="properties[in-bgcolor]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr($this->options['in-bgcolor']); ?>" /></td>
781
  </tr>
782
  <tr valign="top">
783
  <th scope="row"><?php _e('Background Image', $this->text_domain); ?></th>
784
- <td><input name="properties[in-image]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['in-image']); ?>" size="80" /></td>
785
  </tr>
786
  <tr valign="top">
787
  <th scope="row"><?php _e('Thumbnail', $this->text_domain); ?></th>
@@ -795,7 +732,7 @@
795
  </td>
796
  </tr>
797
  <tr valign="top">
798
- <th scope="row"><?php _e('Favicon', $this->text_domain); ?></th>
799
  <td>
800
  <select name="properties[in-favicon]">
801
  <option value="" <?php if($this->options['in-favicon'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
@@ -807,11 +744,11 @@
807
  </tr>
808
  <tr valign="top">
809
  <th scope="row"><?php _e('Added information', $this->text_domain); ?></th>
810
- <td><input name="properties[in-info]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['in-info']); ?>" class="regular-text" /><br></td>
811
  </tr>
812
  <tr valign="top">
813
  <th scope="row"><?php _e('Text of more button', $this->text_domain); ?></th>
814
- <td><input name="properties[in-more-text]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['in-more-text']); ?>" class="regular-text" /></td>
815
  </tr>
816
  <tr valign="top">
817
  <th scope="row"><?php _e('Open new window/tab', $this->text_domain); ?></th>
@@ -836,37 +773,37 @@
836
  </tr>
837
  <tr valign="top">
838
  <th scope="row"><?php _e('Retry get PID', $this->text_domain); ?></th>
839
- <td><label><input name="properties[flg-get-pid]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['flg-get-pid']) ? $this->options['flg-get-pid'] : null, 1); ?> /><?php _e('When the `Post ID` can not be acquired, it is acquired again.', $this->text_domain); ?></label></td>
840
  </tr>
841
  </table>
842
  </div>
843
 
844
  <div class="pz-lkc-item" id="pz-lkc-samepage">
845
- <h3><?php echo __('Same-page link settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-same-page-link" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
846
  <table class="form-table">
847
  <tr valign="top">
848
  <th scope="row"><?php _e('Border Color', $this->text_domain); ?></th>
849
- <td><input name="properties[th-border-color]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr($this->options['th-border-color']); ?>" /></td>
850
  </tr>
851
  <tr valign="top">
852
  <th scope="row"><?php _e('Background Color', $this->text_domain); ?></th>
853
- <td><input name="properties[th-bgcolor]" type="text" class="color-picker" id="pickedcolor" value="<?php echo esc_attr($this->options['th-bgcolor']); ?>" /></td>
854
  </tr>
855
  <tr valign="top">
856
  <th scope="row"><?php _e('Background Image', $this->text_domain); ?></th>
857
- <td><input name="properties[th-image]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['th-image']); ?>" size="80" /></td>
858
  </tr>
859
  <tr valign="top">
860
  <th scope="row"><?php _e('Thumbnail', $this->text_domain); ?></th>
861
  <td><?php _e('It is common with setting Internal-link', $this->text_domain); ?></td>
862
  </re>
863
  <tr valign="top">
864
- <th scope="row"><?php _e('Favicon', $this->text_domain); ?></th>
865
  <td><?php _e('It is common with setting Internal-link', $this->text_domain); ?></td>
866
  </re>
867
  <tr valign="top">
868
  <th scope="row"><?php _e('Added information', $this->text_domain); ?></th>
869
- <td><input name="properties[th-info]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['th-info']); ?>" class="regular-text" /></td>
870
  </tr>
871
  <tr valign="top">
872
  <th scope="row"><?php _e('Text of more button', $this->text_domain); ?></th>
@@ -888,84 +825,127 @@
888
  </div>
889
 
890
  <div class="pz-lkc-item" id="pz-lkc-api">
891
- <h3><?php echo __('Web-API settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-web-api" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
892
  <table class="form-table"
893
  <tr valign="top">
894
- <th scope="row"><?php _e('Favicon API', $this->text_domain); ?></th>
895
  <td>
896
- <input name="properties[favicon-api]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['favicon-api']); ?>" size="80" onclick="this.select(0,this.value.length);" />
897
  <p><?php echo __('%DOMAIN% replace to domain name.', $this->text_domain).' '.__('(', $this->text_domain).__('ex.', $this->text_domain).' popozure.info '.__(')', $this->text_domain).'<br>'.__('%DOMAIN_URL% replace to domain URL.').' '.__('(', $this->text_domain).__('ex.', $this->text_domain).' https://popozure.info '.__(')', $this->text_domain).'<br>'.__('%URL% replace to URL.', $this->text_domain).' '.__('(', $this->text_domain).__('ex.', $this->text_domain).' https://popozure.info/pz-linkcard '.__(')', $this->text_domain); ?>
898
- <p><?php _e('ex1.', $this->text_domain); ?><input name="" type="text" id="inputtext" value="https://www.google.com/s2/favicons?domain=%DOMAIN%" size="70" onclick="this.select(0,this.value.length);" readonly /></p>
899
- <p><?php _e('ex2.', $this->text_domain); ?><input name="" type="text" id="inputtext" value="https://favicon.hatena.ne.jp/?url=%URL%" size="70" onclick="this.select(0,this.value.length);" readonly /></p>
900
  </td>
901
  </tr>
902
  <tr valign="top">
903
  <th scope="row" rowspan="3"><?php _e('Thumbnail API', $this->text_domain); ?></th>
904
  <td>
905
- <input name="properties[thumbnail-api]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['thumbnail-api']); ?>" size="80" onclick="this.select(0,this.value.length);" />
906
  <p><?php echo __('%URL% replace to URL.', $this->text_domain).' '.__('(', $this->text_domain).__('ex.', $this->text_domain).' https://popozure.info/pz-linkcard '.__(')', $this->text_domain); ?></p>
907
- <p><?php _e('ex1.', $this->text_domain); ?><input name="" type="text" id="inputtext" value="https://s.wordpress.com/mshots/v1/%URL%?w=100" size="70" onclick="this.select(0,this.value.length);" readonly /></p>
908
- <p><?php _e('ex2.', $this->text_domain); ?><input name="" type="text" id="inputtext" value="https://capture.heartrails.com/100x100?%URL%" size="70" onclick="this.select(0,this.value.length);" readonly /></p>
909
  </td>
910
  </tr>
911
  </table>
912
  </div>
913
 
914
  <div class="pz-lkc-item" id="pz-lkc-image">
915
- <h3><?php echo __('Image settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-image" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
916
  <table class="form-table"
917
  <tr valign="top">
918
- <th scope="row"><?php _e('Cache image size', $this->text_domain); ?></th>
919
  <td>
920
- <p><?php _e('Width', $this->text_domain); echo '/'; _e('Height', $this->text_domain); ?><input name="properties[cache-image-size]" type="text" id="inputtext" value="<?php echo (isset($this->options['cache-image-size']) ? $this->options['cache-image-size'] : $this->defaults['cache-image-size']); ?>" style="width: 4em;" />px</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
921
  </td>
922
  </tr>
923
  </table>
924
  </div>
925
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
926
  <div class="pz-lkc-item" id="pz-lkc-check">
927
- <h3><?php echo __('Link check settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-link-check" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
928
  <table class="form-table">
929
  <tr valign="top">
930
  <th scope="row"><?php _e('Do not link at error', $this->text_domain); ?></th>
931
- <td><label><input name="properties[flg-unlink]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['flg-unlink']) ? $this->options['flg-unlink'] : null, 1); ?> /><?php _e('When access status is "403", "404", "410", unlink', $this->text_domain); ?></label></td>
932
  </tr>
933
  <tr valign="top">
934
  <th scope="row"><?php _e('SSL verification disabled', $this->text_domain); ?></th>
935
- <td><label><input name="properties[flg-ssl]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['flg-ssl']) ? $this->options['flg-ssl'] : null, 1); ?> /><?php _e('Try setting if the contents of the SSL site can not be acquired.', $this->text_domain); ?></label></td>
936
  </tr>
937
  <tr valign="top">
938
  <th scope="row"><?php _e('Follow location', $this->text_domain); ?></th>
939
- <td><label><input name="properties[flg-redir]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['flg-redir']) ? $this->options['flg-redir'] : null, 1); ?> /><?php _e('Track when the link destination is redirected.', $this->text_domain); ?></label></td>
940
  </tr>
941
  <tr valign="top">
942
  <th scope="row"><?php _e('Set referer', $this->text_domain); ?></th>
943
- <td><label><input name="properties[flg-referer]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['flg-referer']) ? $this->options['flg-referer'] : null, 1); ?> /><?php _e('Notify the article URL to the link destination.', $this->text_domain); ?></label></td>
944
  </tr>
945
  <tr valign="top">
946
  <th scope="row"><?php _e('Use User-Agent', $this->text_domain); ?></th>
947
  <td>
948
- <label><input name="properties[flg-agent]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['flg-agent']) ? $this->options['flg-agent'] : null, 1); ?> /></label><?php _e('Notify using Pz-LinkCard to the link destination.', $this->text_domain); ?></label>
949
- <p style="margin-left: 20px;"><input name="properties[user-agent]" type="text" id="inputtext" value="<?php echo esc_attr('Pz-LinkCard-Crawler/'.$this->options['plugin-version']); ?>" size="77" readonly /></p>
950
  </td>
951
  </tr>
952
  <tr valign="top">
953
  <th scope="row"><?php _e('Broken link checker', $this->text_domain); ?></th>
954
- <td><label><input name="properties[flg-alive]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['flg-alive']) ? $this->options['flg-alive'] : null, 1); ?> /><?php _e('Alive confirmation of the link destination.', $this->text_domain); ?></label></td>
955
  </tr>
956
  <tr valign="top">
957
  <th scope="row"><?php _e('Broken link count', $this->text_domain); ?></th>
958
- <td><label><input name="properties[flg-alive-count]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['flg-alive-count']) ? $this->options['flg-alive-count'] : null, 1); ?> /><?php _e('The number of broken links is displayed next to the submenu.', $this->text_domain); ?></label></td>
959
  </tr>
960
  <tr valign="top">
961
  <th scope="row"><?php _e('Multi-site compatible', $this->text_domain); ?></th>
962
- <td><label><input name="properties[flg-subdir]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['flg-subdir']) ? $this->options['flg-subdir'] : null, 1); ?> /><?php _e('In the case of the multi-site of the subdirectory type, the site under the subdirectory is judged as an external site.', $this->text_domain); ?></label></td>
963
  </tr>
964
  </table>
965
  </div>
966
 
967
  <div class="pz-lkc-item" id="pz-lkc-editor">
968
- <h3><?php echo __('Editor settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-editor" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
969
  <table class="form-table">
970
  <tr valign="top">
971
  <th scope="row"><?php _e('ShortCode 1', $this->text_domain); ?></th>
@@ -987,17 +967,17 @@
987
  </tr>
988
  <tr valign="top">
989
  <th scope="row"><?php _e('ShortCode 2', $this->text_domain); ?></th>
990
- <td>[<input name="properties[code2]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['code2']); ?>" class="regular-text" style="width: 8em;" /> url="http://xxx" <span style="color: #aabbff; font-weight: bold;">title=</span><span style="color: #aabbff;">"xxxxxx"</span> <span style="color: #bbaaff; font-weight: bold;">content=</span><span style="color: #bbaaff;">"xxxxxx"</span>]
991
  <p><?php _e('Case-sensitive', $this->text_domain); ?></p></td>
992
  </tr>
993
  <tr valign="top">
994
  <th scope="row"><?php _e('ShortCode 3', $this->text_domain); ?></th>
995
- <td>[<input name="properties[code3]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['code3']); ?>"class="regular-text" style="width: 8em;" /> url="http://xxx" <span style="color: #aabbff; font-weight: bold;">title=</span><span style="color: #aabbff;">"xxxxxx"</span> <span style="color: #bbaaff; font-weight: bold;">content=</span><span style="color: #bbaaff;">"xxxxxx"</span>]
996
  <p><?php _e('Case-sensitive', $this->text_domain); ?></p></td>
997
  </tr>
998
  <tr valign="top" style="display: none;">
999
  <th scope="row"><?php _e('ShortCode 4', $this->text_domain); ?></th>
1000
- <td>[<input name="properties[code4]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['code4']); ?>" class="regular-text" style="width: 8em;" /> url="http://xxx" <span style="color: #aabbff; font-weight: bold;">title=</span><span style="color: #aabbff;">"xxxxxx"</span> <span style="color: #bbaaff; font-weight: bold;">content=</span><span style="color: #bbaaff;">"xxxxxx"</span>]
1001
  <p><?php _e('Case-sensitive', $this->text_domain); ?></p></td>
1002
  </tr>
1003
  <tr valign="top">
@@ -1010,36 +990,36 @@
1010
 
1011
  <tr valign="top">
1012
  <th scope="row"><?php _e('Convert text link', $this->text_domain); ?></th>
1013
- <td><label><input name="properties[auto-atag]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['auto-atag']) ? $this->options['auto-atag'] : null, 1); ?> /><?php _e('Convert lines with text link only to Linkcard.', $this->text_domain); ?></label></td>
1014
  </tr>
1015
  <tr valign="top">
1016
  <th scope="row"><?php _e('Convert URL', $this->text_domain); ?></th>
1017
- <td><label><input name="properties[auto-url]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['auto-url']) ? $this->options['auto-url'] : null, 1); ?> /><?php _e('Convert lines with URL only to Linkcard.', $this->text_domain); ?></label></td>
1018
  </tr>
1019
  <tr valign="top">
1020
  <th scope="row"><?php _e('External link only', $this->text_domain); ?></th>
1021
- <td><label><input name="properties[auto-external]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['auto-external']) ? $this->options['auto-external'] : null, 1); ?> /><?php _e('Convert only external links.', $this->text_domain); ?></label></td>
1022
  </tr>
1023
 
1024
  <tr valign="top">
1025
  <th scope="row"><?php _e('Do shortcode', $this->text_domain); ?></th>
1026
- <td><label><input name="properties[flg-do-shortcode]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['flg-do-shortcode']) ? $this->options['flg-do-shortcode'] : null, 1); ?> /><?php _e('Force shortcode development.', $this->text_domain); ?></label></td>
1027
  </tr>
1028
 
1029
  <tr valign="top">
1030
  <th scope="row"><?php _e('Add insert button', $this->text_domain); ?></th>
1031
- <td><label><input name="properties[flg-edit-insert]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['flg-edit-insert']) ? $this->options['flg-edit-insert'] : null, 1); ?> /><?php _e('Add insert button to visual editor.', $this->text_domain); ?></label></td>
1032
  </tr>
1033
  <tr valign="top">
1034
  <th scope="row"><?php _e('Add quick tag', $this->text_domain); ?></th>
1035
- <td><label><input name="properties[flg-edit-qtag]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['flg-edit-qtag']) ? $this->options['flg-edit-qtag'] : null, 1); ?> /><?php _e('Add quick tag button to text editor.', $this->text_domain); ?></label></td>
1036
  </tr>
1037
 
1038
  </table>
1039
  </div>
1040
 
1041
  <div class="pz-lkc-item" id="pz-lkc-advanced">
1042
- <h3><?php echo __('Advanced settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-advanced" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
1043
  <table class="form-table">
1044
  <tr valign="top">
1045
  <th scope="row"><?php _e('Trailing slash', $this->text_domain); ?></th>
@@ -1052,87 +1032,73 @@
1052
  </select>
1053
  </td>
1054
  </tr>
1055
-
1056
- <tr valign="top">
1057
- <th scope="row"><?php _e('CSS to be added', $this->text_domain); ?></th>
1058
- <td><input name="properties[css-add]" type="text" id="inputtext" value="<?php echo (isset($this->options['css-add']) ? esc_attr($this->options['css-add']) : ''); ?>" size="80" /><br>
1059
- </tr>
1060
- <tr valign="top" style="display: none;">
1061
- <th scope="row"><?php _e('specified CSS', $this->text_domain); ?></th>
1062
- <td><label><input name="properties[css-sp]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['css-sp']) ? $this->options['css-sp'] : null, 1); ?> /><?php _e('Use specified CSS file', $this->text_domain); ?></label></td>
1063
- </tr>
1064
- <tr valign="top" style="display: none;">
1065
- <th scope="row"><?php _e('CSS file', $this->text_domain); ?></th>
1066
- <td><input name="properties[css-file]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['css-file']); ?>" size="80" /><br><p><?php _e('(ex. https://exsample.com/style.css )', $this->text_domain); ?></p></td>
1067
- </tr>
1068
- <tr valign="top" style="display: none;">
1069
- <th scope="row"><?php _e('CSS file', $this->text_domain); ?></th>
1070
- <td><input name="properties[css-path]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['css-path']); ?>" size="80" /><br>
1071
- </tr>
1072
- <tr valign="top" style="display: none;">
1073
- <th scope="row"><?php _e('CSS URL', $this->text_domain); ?></th>
1074
- <td><input name="properties[css-url]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['css-url']); ?>" size="80" /><br>
1075
- </tr>
1076
-
1077
  <tr valign="top">
1078
  <th scope="row"><?php _e('Class ID to be added(for PC)', $this->text_domain); ?></th>
1079
- <td><input name="properties[class-pc]" type="text" id="inputtext" value="<?php echo (isset($this->options['class-pc']) ? esc_attr($this->options['class-pc']) : ''); ?>" size="40" /><br>
1080
  </tr>
1081
  <tr valign="top">
1082
  <th scope="row"><?php _e('Class ID to be added(for Mobile)', $this->text_domain); ?></th>
1083
- <td><input name="properties[class-mobile]" type="text" id="inputtext" value="<?php echo (isset($this->options['class-mobile']) ? esc_attr($this->options['class-mobile']) : ''); ?>" size="40" /><br>
1084
  </tr>
1085
 
1086
  <tr valign="top">
1087
  <th scope="row"><?php _e('Google AMP URL', $this->text_domain); ?></th>
1088
- <td><label><input name="properties[flg-amp-url]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['flg-amp-url']) ? $this->options['flg-amp-url'] : null, 1); ?> /><?php _e('If the URL is AMP, display simple.', $this->text_domain); ?></label></td>
1089
  </tr>
1090
 
1091
  <tr valign="top">
1092
  <th scope="row"><?php _e('IDNA Convert', $this->text_domain); ?></th>
1093
- <td><label><input name="properties[flg-idn]" type="checkbox" id="check" value="1" <?php checked( (isset($this->options['flg-idn']) && function_exists('idn_to_utf8') ) ? $this->options['flg-idn'] : null, 1); ?> /><?php _e('Convert domain name from IDNA ASCII to Unicode.', $this->text_domain); ?></label></td>
1094
  </tr>
1095
 
1096
  <tr valign="top">
1097
  <th scope="row"><?php _e('Relative URL', $this->text_domain); ?></th>
1098
- <td><label><input name="properties[flg-relative-url]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['flg-relative-url']) ? $this->options['flg-relative-url'] : null, 1); ?> /><?php _e('For relative-specified URLs, complement the site URL.', $this->text_domain); ?></label></td>
 
 
 
 
 
1099
  </tr>
1100
 
1101
  <tr valign="top" style="display: none;">
1102
  <th scope="row"><?php _e('Display link to author page', $this->text_domain); ?></th>
1103
- <td><input name="properties[plugin-link]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['plugin-link']) ? $this->options['plugin-link'] : null, 1); ?> disabled="disabled" /><a href="<?php echo $this->options['plugin-url']; ?>" target="_blank"><?php echo $this->options['plugin-name']; ?></a></td>
1104
  </tr>
1105
  <tr valign="top" style="display: none;">
1106
  <th scope="row"><?php _e('Plugin URL', $this->text_domain); ?></th>
1107
- <td><input name="properties[plugin-url]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['plugin-url']); ?>" class="regular-text" /></td>
1108
  </tr>
1109
  <tr valign="top" style="display: none;">
1110
  <th scope="row"><?php _e('Plugin name', $this->text_domain); ?></th>
1111
- <td><input name="properties[plugin-name]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['plugin-name']); ?>" class="regular-text" /></td>
1112
  </tr>
1113
  <tr valign="top" style="display: none;">
1114
  <th scope="row"><?php _e('Plugin version', $this->text_domain); ?></th>
1115
- <td><input name="properties[plugin-version]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['plugin-version']); ?>" class="regular-text" /></td>
1116
  </tr>
1117
- <tr valign="top" style="display: none;">
1118
  <th scope="row"><?php _e('Saved datetime', $this->text_domain); ?></th>
1119
- <td><input name="properties[saved-date]" type="text" id="inputtext" value="<?php echo esc_attr($this->options['saved-date']); ?>" /></td>
 
 
 
1120
  </tr>
1121
 
1122
  <tr valign="top">
1123
  <th scope="row"><?php _e('Display elapsed time', $this->text_domain); ?></th>
1124
- <td><label><input name="properties[debug-time]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['debug-time']) ? $this->options['debug-time'] : null, 1); ?> /><?php _e('Output the elapsed time to HTML comment.', $this->text_domain); _e('(Not recommended)', $this->text_domain); ?></label></td>
1125
  </tr>
1126
 
1127
  </table>
1128
  </div>
1129
 
1130
  <div class="pz-lkc-item" id="pz-lkc-initialize">
1131
- <h3><?php echo __('Initialize', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-initialize" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
1132
  <table class="form-table">
1133
  <tr valign="top">
1134
  <th scope="row"><?php _e('Return to the initial setting', $this->text_domain); ?></th>
1135
- <td><label><input name="properties[initialize]" type="checkbox" id="check" value="1" <?php checked(isset($this->options['initialize']) ? $this->options['initialize'] : null, 1); ?> /></label></td>
1136
  </tr>
1137
  </table>
1138
  </div>
@@ -1143,11 +1109,51 @@
1143
  </div>
1144
  </div>
1145
  <?php
1146
- function pz_TrimNum($val, $zero = 0 ) {
 
1147
  $val = intval(preg_replace('/[^0-9]/', '', $val));
1148
  if ($val == 0) {
1149
- $val = $zero;
1150
  $val = intval(preg_replace('/[^0-9]/', '', $val));
1151
  }
1152
  return $val;
1153
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  <h2><?php echo __('LinkCard Settings', $this->text_domain).' ver.'.$this->options['plugin-version'];?></h2>
5
  <div id="settings" style="clear:both;">
6
  <?php
7
+ // 変更を保存を押した時
8
  if ( isset($_POST['properties'])) {
9
  check_admin_referer('pz_options');
10
+ $options_before = $this->options;
11
+ $this->options = $_POST['properties'];
12
 
13
+ // 無いキーを生成
14
  foreach ($this->defaults as $key => $value) {
15
  if (!isset($this->options[$key])) {
16
  $this->options[$key] = null;
17
  }
18
  }
19
 
20
+ // 初期化の判定
21
+ $flg_update = false;
22
+ $flg_error = false;
23
+ if ($this->options['initialize']) {
24
+ // 初期化
25
  delete_option('Pz_LinkCard_options');
26
+ $this->options = $this->defaults;
27
+ $this->options['css-templete'] = $options_before['css-templete'];
28
+ $this->options['css-path'] = $options_before['css-path'];
29
+ $this->options['css-url'] = $options_before['css-url'];
30
+ $this->options['css-count'] = $options_before['css-count'];
31
+ $this->options['thumbnail-dir'] = $options_before['thumbnail-dir'];
32
+ $this->options['thumbnail-url'] = $options_before['thumbnail-url'];
33
+ unset($save);
34
+ $flg_update = 1;
35
+ } else {
36
+ // 更新チェック
37
+ foreach ($this->defaults as $key => $value) {
38
+ if ($options_before[$key] != $this->options[$key]) {
39
+ $flg_update = true;
40
+ break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  }
43
+
44
+ // 値の検証
45
+ require_once ('pz-linkcard-settings-validate.php');
46
  }
 
 
47
 
48
  // オプションの更新
49
+ if (!$flg_error) {
50
+ if ($flg_update) {
51
+ $this->options['css-count'] += 1; // CSSバージョンに1加算
52
+ $this->options['saved-date'] = $this->now; // 保存日時をセット
53
+ $result = update_option('Pz_LinkCard_options', $this->options); // オプションを更新
54
+ if ($result) {
55
+ echo '<div class="notice notice-success is-dismissible"><p><strong>'.__('Succeeded in saving the settings.', $this->text_domain).'</strong></p></div>';
56
+ } else {
57
+ echo '<div class="notice notice-error is-dismissible"><p><strong>'.__('Failed to save settings.', $this->text_domain).'</strong></p></div>';
58
+ }
59
  } else {
60
+ // 変更なし
61
+ echo '<div class="notice notice-info is-dismissible"><p><strong>'.__('The settings have not changed.', $this->text_domain).'</strong></p></div>';
62
  }
63
+ // スタイルシート生成
64
  $this->pz_SetStyle();
65
  }
66
  }
67
+
68
+ // WordPressに設定されている日時のフォーマットを取得
69
+ $datetime_format = get_option( 'date_format' ).' '.get_option( 'time_format' );
70
  ?>
71
  <form action="" method="post">
72
  <?php wp_nonce_field('pz_options'); ?>
82
  <a class="pz-lkc-tab" href="#pz-lkc-samepage"><?php _e('Same page link', $this->text_domain); ?></a>
83
  <a class="pz-lkc-tab" href="#pz-lkc-api"><?php _e('Web API', $this->text_domain); ?></a>
84
  <a class="pz-lkc-tab" href="#pz-lkc-image"><?php _e('Image', $this->text_domain); ?></a>
85
+ <a class="pz-lkc-tab" href="#pz-lkc-css"><?php _e('CSS', $this->text_domain); ?></a>
86
  <a class="pz-lkc-tab" href="#pz-lkc-check"><?php _e('Link check', $this->text_domain); ?></a>
87
  <a class="pz-lkc-tab" href="#pz-lkc-editor"><?php _e('Editor', $this->text_domain); ?></a>
88
  <a class="pz-lkc-tab" href="#pz-lkc-advanced"><?php _e('Advanced', $this->text_domain); ?></a>
89
  <a class="pz-lkc-tab" href="#pz-lkc-initialize"><?php _e('Initialize', $this->text_domain); ?></a>
90
  </div>
91
+
92
  <div class="pz-lkc-item<?php if ($this->options['flg-invalid']) { echo ' pz-lkc-item-active'; } ?>" id="pz-lkc-error">
93
  <div<?php if (!$this->options['flg-invalid']) { echo ' style="display: none;"'; } ?>>
94
+ <h3><?php echo __('Error settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-error" rel="noopener external help" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
95
  <table class="form-table">
96
  <tr valign="top">
97
+ <th scope="row"><?php _e('Error reset', $this->text_domain); ?></th>
98
+ <td><label><input name="properties[flg-invalid]" type="checkbox" value="1" <?php checked($this->options['flg-invalid']); ?> /><?php _e('Uncheck to cancel the error condition.', $this->text_domain); ?></label></td>
99
  </tr>
100
+ <tr valign="top">
101
  <th scope="row"><?php _e('Error URL', $this->text_domain); ?></th>
102
+ <td>
103
+ <a href="<?php echo esc_attr($this->options['invalid-url']); ?>#lkc-error" target="_blank"><?php echo esc_attr($this->options['invalid-url']); ?></a>
104
+ <input name="properties[invalid-url]" type="hidden" value="<?php echo esc_attr($this->options['invalid-url']); ?>" />
105
+ </td>
106
  </tr>
107
+ <tr valign="top">
108
  <th scope="row"><?php _e('Error Time', $this->text_domain); ?></th>
109
+ <td>
110
+ <input type="text" value="<?php echo date($datetime_format, $this->options['invalid-time']); ?>" size="40" readonly="readonly" />
111
+ <input name="properties[invalid-time]" type="hidden" value="<?php echo $this->options['invalid-time']; ?>" />
112
+ </td>
113
  </tr>
114
  </table>
115
  </div>
116
  </div>
117
+
118
  <div class="pz-lkc-item<?php if (!$this->options['flg-invalid']) { echo ' pz-lkc-item-active'; } ?>" id="pz-lkc-basic">
119
+ <h3><?php echo __('Basic settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-basic" rel="noopener external help" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
120
  <table class="form-table">
121
  <tr valign="top">
122
  <th scope="row"><?php _e('Easy format', $this->text_domain); ?></th>
155
 
156
  <tr valign="top">
157
  <th scope="row"><?php _e("How to (Japanese only)", $this->text_domain); ?></th>
158
+ <td><a href="https://popozure.info/pz-linkcard" rel="noopener external" target="_blank">https://popozure.info/pz-linkcard</A></td>
159
  </tr>
160
 
161
  <tr valign="top">
162
  <th scope="row"><?php _e("Author's site", $this->text_domain); ?></th>
163
+ <td><?php echo __('Popozure.', $this->text_domain).' ('.__("Poporon's PC daily diary", $this->text_domain).')'; ?><BR><a href="https://popozure.info" rel="noopener external" target="_blank">https://popozure.info</A></td>
164
  </tr>
165
  <tr valign="top">
166
  <th scope="row"><?php _e("When in trouble", $this->text_domain); ?></th>
167
+ <td><?php echo __('Twitter account', $this->text_domain); ?><BR><a href="https://twitter.com/popozure" rel="noopener external" target="_blank">@popozure</A></td>
168
  </tr>
169
  <tr valign="top" style="display: none;">
170
  <th scope="row"><?php _e("Donation", $this->text_domain); ?></th>
175
  </div>
176
 
177
  <div class="pz-lkc-item" id="pz-lkc-position">
178
+ <h3><?php echo __('Position settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-position" rel="noopener external help" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
179
  <table class="form-table">
 
 
 
 
 
180
  <tr valign="top">
181
  <th scope="row"><?php _e('Link the whole', $this->text_domain); ?></th>
182
  <td>
183
  <label>
184
+ <input name="properties[link-all]" type="checkbox" value="1" <?php checked($this->options['link-all']); ?> />
185
  <?php _e('Enclose the entire card at anchor', $this->text_domain); ?>
186
  </label>
187
  </td>
274
  </tr>
275
  <tr>
276
  <td colspan="2" align="center">
277
+ <?php _e('Width', $this->text_domain); ?><input name="properties[width]" type="text" value="<?php echo esc_attr($this->options['width']); ?>" style="width: 80px;" /><br>
278
+ <?php _e('Height', $this->text_domain); ?><input name="properties[content-height]" type="text" value="<?php echo esc_attr($this->options['content-height']); ?>" style="width: 80px;" /><br>
279
  </td>
280
  </tr>
281
  <tr>
313
  </tr>
314
  <tr>
315
  <td>
316
+ <input name="properties[centering]" type="checkbox" value="1" <?php checked($this->options['centering']); ?> /><?php _e('Centering', $this->text_domain); ?>
317
  </td>
318
  <td align="center">
319
  <?php _e('Margin bottom', $this->text_domain); ?><br>
334
  </table>
335
  </td>
336
  </tr>
337
+ <tr valign="top">
338
+ <th scope="row"><?php _e('Use blockquote tag', $this->text_domain); ?></th>
339
+ <td><label><input name="properties[blockquote]" type="checkbox" value="1" <?php checked($this->options['blockquote']); ?> /><?php _e('without using DIV tag, and use BLOCKQUOTE tag', $this->text_domain); _e('(Not recommended)', $this->text_domain); ?></label></td>
340
+ </tr>
341
  </table>
342
  </div>
343
 
344
  <div class="pz-lkc-item" id="pz-lkc-display">
345
+ <h3><?php echo __('Display settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-display" rel="noopener external help" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
346
  <table class="form-table">
347
  <tr>
348
  <th scope="row"><?php _e('Layout', $this->text_domain); ?></th>
349
  <td>
350
 
351
+ <table style="border: 1px solid #000; background-color: #fff; width: 600px;">
352
  <tr>
353
  <td colspan="2">
354
  <?php _e('Site information', $this->text_domain); ?>
355
  <select name="properties[info-position]">
356
  <option value="" <?php if($this->options['info-position'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
357
+ <option value="1" <?php if($this->options['info-position'] == '1') echo 'selected="selected"'; ?>><?php _e('Upper side', $this->text_domain); ?></option>
358
  <option value="3" <?php if($this->options['info-position'] == '3') echo 'selected="selected"'; ?>><?php _e('Above the title', $this->text_domain); ?></option>
359
+ <option value="2" <?php if($this->options['info-position'] == '2') echo 'selected="selected"'; ?>><?php _e('Under side', $this->text_domain); ?></option>
360
  </select>
361
+ <label><input name="properties[use-sitename]" type="checkbox" value="1" <?php checked($this->options['use-sitename']); ?> /><?php _e('Use SiteName', $this->text_domain); ?></label>
362
  </td>
363
  </tr>
364
  <tr>
365
  <td>
366
+ <label><input name="properties[display-date]" type="checkbox" value="1" <?php checked($this->options['display-date']); ?> /><?php _e('For internal links, display the posting date', $this->text_domain); ?></label>
367
  </td>
368
  <td>
369
  </td>
370
  </tr>
371
  <tr>
372
  <td>
373
+ <label><input name="properties[heading]" type="checkbox" value="1" <?php checked($this->options['heading']); ?> /><?php _e('Make additional information heading display', $this->text_domain); ?></label>
374
  </td>
375
  <td>
376
  </td>
377
  </tr>
378
  <tr>
379
  <td>
380
+ <label><input name="properties[flg-anker]" type="checkbox" value="1" <?php checked($this->options['flg-anker']); ?> /><?php _e('Turn off the anchor text underlining', $this->text_domain); ?></label>
381
  </td>
382
  <td>
383
  </td>
384
  </tr>
385
  <tr>
386
  <td>
387
+ <label><input name="properties[separator]" type="checkbox" value="1" <?php checked($this->options['separator']); ?> /><?php _e('Separator line', $this->text_domain); ?></label>
388
  </td>
389
  <td>
390
  </td>
404
  <?php _e('Thumbnail', $this->text_domain); ?>
405
  <select name="properties[thumbnail-position]">
406
  <option value="0" <?php if($this->options['thumbnail-position'] == '0') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
407
+ <option value="1" <?php if($this->options['thumbnail-position'] == '1') echo 'selected="selected"'; ?>><?php _e('Right side', $this->text_domain); ?></option>
408
+ <option value="2" <?php if($this->options['thumbnail-position'] == '2') echo 'selected="selected"'; ?>><?php _e('Left side', $this->text_domain); ?></option>
409
+ <option value="3" <?php if($this->options['thumbnail-position'] == '3') echo 'selected="selected"'; ?>><?php _e('Upper side', $this->text_domain); ?></option>
410
  </select>
411
  <br>
412
+ <?php _e('Width', $this->text_domain); ?><input name="properties[thumbnail-width]" type="text" value="<?php echo (isset($this->options['thumbnail-width']) ? $this->options['thumbnail-width'] : $this->defaults['thumbnail-width']); ?>" style="width: 4em;" />
413
  <br>
414
+ <?php _e('Height', $this->text_domain); ?><input name="properties[thumbnail-height]" type="text" value="<?php echo (isset($this->options['thumbnail-height']) ? $this->options['thumbnail-height'] : $this->defaults['thumbnail-height']); ?>" style="width: 4em;" />
415
  <br>
416
+ <label><input name="properties[thumbnail-shadow]" type="checkbox" value="1" <?php checked($this->options['thumbnail-shadow']); ?> /><?php _e('Shadow', $this->text_domain); ?></label>
417
  </td>
418
  </tr>
419
  <tr>
420
  <td>
421
+ <label><input name="properties[content-inset]" type="checkbox" value="1" <?php checked($this->options['content-inset']); ?> /><?php _e('Hollow content area', $this->text_domain); ?></label>
422
  </td>
423
  </tr>
424
  <tr>
425
  <td>
426
+ <label><input name="properties[display-excerpt]" type="checkbox" value="1" <?php checked($this->options['display-excerpt']); ?> /><?php _e('Display excerpt', $this->text_domain); ?></label>
427
  </td>
428
  </tr>
429
  <tr>
430
  <td>
431
+ <label><input name="properties[shadow-inset]" type="checkbox" value="1" <?php checked($this->options['shadow-inset']); ?> /><?php _e('Hollow', $this->text_domain); ?></label>
432
  </td>
433
  <td>
434
  </td>
435
  </tr>
436
  <tr>
437
  <td>
438
+ <label><input name="properties[shadow]" type="checkbox" value="1" <?php checked($this->options['shadow']); ?> /><?php _e('Shadow', $this->text_domain); ?></label></td>
439
  </td>
440
  </tr>
441
  <tr>
473
  <th scope="row"><?php _e('Border', $this->text_domain); ?></th>
474
  <td>
475
  <select name="properties[border-style]">
476
+ <option value="none" <?php if ($this->options['border-style'] == 'none') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
477
+ <option value="solid" <?php if ($this->options['border-style'] == 'solid') echo 'selected="selected"'; ?>><?php _e('Solid', $this->text_domain); ?></option>
478
+ <option value="dotted" <?php if ($this->options['border-style'] == 'dotted') echo 'selected="selected"'; ?>><?php _e('Dotted', $this->text_domain); ?></option>
479
+ <option value="dashed" <?php if ($this->options['border-style'] == 'dashed') echo 'selected="selected"'; ?>><?php _e('Dashed', $this->text_domain); ?></option>
480
+ <option value="double" <?php if ($this->options['border-style'] == 'double') echo 'selected="selected"'; ?>><?php _e('Double', $this->text_domain); ?></option>
481
+ <option value="groove" <?php if ($this->options['border-style'] == 'groove') echo 'selected="selected"'; ?>><?php _e('Groove', $this->text_domain); ?></option>
482
+ <option value="ridge" <?php if ($this->options['border-style'] == 'ridge') echo 'selected="selected"'; ?>><?php _e('Ridge', $this->text_domain); ?></option>
483
+ <option value="inset" <?php if ($this->options['border-style'] == 'inset') echo 'selected="selected"'; ?>><?php _e('Inset', $this->text_domain); ?></option>
484
+ <option value="outset" <?php if ($this->options['border-style'] == 'outset') echo 'selected="selected"'; ?>><?php _e('Outset', $this->text_domain); ?></option>
485
  </select>
486
+ &nbsp;<?php _e('Width', $this->text_domain); ?><input name="properties[border-width]" type="text" value="<?php echo $this->options['border-width']; ?>" style="width: 4em;" />
487
  </td>
488
  </tr>
489
 
490
  <tr valign="top">
491
  <th scope="row"><?php _e('Reset img style', $this->text_domain); ?></th>
492
+ <td><label><input name="properties[style-reset-img]" type="checkbox" value="1" <?php checked($this->options['style-reset-img']); ?> /><?php _e('When unnecessary frame is displayed on the image, you can improve it by case', $this->text_domain); ?></label></td>
493
  </tr>
494
 
495
  <tr valign="top">
514
  <option value="1" <?php if($this->options['sns-position'] == '1') echo 'selected="selected"'; ?>><?php _e('Bihind title', $this->text_domain); ?></option>
515
  <option value="2" <?php if($this->options['sns-position'] == '2') echo 'selected="selected"'; ?>><?php _e('Bihind site-info', $this->text_domain); ?></option>
516
  </select>
517
+ <label><input name="properties[sns-tw]" type="checkbox" value="1" <?php checked($this->options['sns-tw']); ?> /><?php _e('Twitter', $this->text_domain); ?></label>
518
+ <label><input name="properties[sns-fb]" type="checkbox" value="1" <?php checked($this->options['sns-fb']); ?> /><?php _e('Facebook', $this->text_domain); ?></label>
519
+ <label><input name="properties[sns-hb]" type="checkbox" value="1" <?php checked($this->options['sns-hb']); ?> /><?php _e('Hatena', $this->text_domain); ?></label>
520
+ <label><input name="properties[sns-po]" type="checkbox" value="1" <?php checked($this->options['sns-po']); ?> /><?php _e('Pocket', $this->text_domain); ?></label>
521
  </td>
522
  </tr>
523
  </table>
524
  </div>
525
 
526
  <div class="pz-lkc-item" id="pz-lkc-letter">
527
+ <h3><?php echo __('Letter settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-letter" rel="noopener external help" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
528
+ <table class="form-table">
 
529
  <tr valign="top">
530
  <th scope="row"><?php _e('Title', $this->text_domain); ?></th>
531
  <td>
532
+ <div style="padding: 10px; border: 1px solid #000; background-color: #fff; width: 500px;">
533
+ <div style="padding: 10px">
534
+ <?php _e('Color', $this->text_domain); ?><input name="properties[color-title]" type="text" value="<?php echo esc_attr($this->options['color-title']); ?>" class="color-picker" />
535
+ &emsp;<label><input name="properties[outline-title]" type="checkbox" value="1" <?php checked($this->options['outline-title']); ?> /><?php _e('Outline', $this->text_domain); ?></label><input name="properties[outline-color-title]" type="text" value="<?php echo esc_attr($this->options['outline-color-title']); ?>" class="color-picker" />
536
+ </div>
537
+ <div style="padding: 10px">
538
+ <?php _e('Size', $this->text_domain); ?><input name="properties[size-title]" type="text" value="<?php echo esc_attr($this->options['size-title']); ?>" size="2" />
539
+ &emsp;<?php _e('Height', $this->text_domain); ?><input name="properties[height-title]" type="text" value="<?php echo esc_attr($this->options['height-title']); ?>" size="2" />
540
+ &emsp;<?php _e('Length', $this->text_domain); ?><input name="properties[trim-title]" type="text" value="<?php echo esc_attr($this->options['trim-title']); ?>" size="2" /><label><input name="properties[nowrap-title]" type="checkbox" value="1" <?php checked($this->options['nowrap-title']); ?>><?php _e('No wrap', $this->text_domain); ?></label>
541
+ </div>
542
+ </div>
 
 
543
  </td>
544
  </tr>
 
545
  <tr valign="top">
546
+ <th scope="row"><?php _e('URL', $this->text_domain); ?></th>
 
 
 
 
 
 
 
 
 
 
 
547
  <td>
548
+ <div style="padding: 10px; border: 1px solid #000; background-color: #fff; width: 500px;">
549
+ <div style="padding: 10px">
550
+ <?php _e('Color', $this->text_domain); ?><input name="properties[color-url]" type="text" value="<?php echo esc_attr($this->options['color-url']); ?>" class="color-picker" />
551
+ &emsp;<label><input name="properties[outline-url]" type="checkbox" value="1" <?php checked($this->options['outline-url']); ?> /><?php _e('Outline', $this->text_domain); ?></label><input name="properties[outline-color-url]" type="text" value="<?php echo esc_attr($this->options['outline-color-url']); ?>" class="color-picker" />
552
+ </div>
553
+ <div style="padding: 10px">
554
+ <?php _e('Size', $this->text_domain); ?><input name="properties[size-url]" type="text" value="<?php echo esc_attr($this->options['size-url']); ?>" size="2" />
555
+ &emsp;<?php _e('Height', $this->text_domain); ?><input name="properties[height-url]" type="text" value="<?php echo esc_attr($this->options['height-url']); ?>" size="2" />
556
+ &emsp;<?php _e('Length', $this->text_domain); ?><input name="properties[trim-url]" type="text" value="<?php echo esc_attr($this->options['trim-url']); ?>" size="2" /><label><input name="properties[nowrap-url]" type="checkbox" value="1" <?php checked($this->options['nowrap-url']); ?>><?php _e('No wrap', $this->text_domain); ?></label>
557
+ </div>
558
+ </div>
559
  </td>
560
  </tr>
 
561
  <tr valign="top">
562
  <th scope="row"><?php _e('Excerpt', $this->text_domain); ?></th>
563
  <td>
564
+ <div style="padding: 10px; border: 1px solid #000; background-color: #fff; width: 500px;">
565
+ <div style="padding: 10px">
566
+ <?php _e('Color', $this->text_domain); ?><input name="properties[color-excerpt]" type="text" value="<?php echo esc_attr($this->options['color-excerpt']); ?>" class="color-picker" />
567
+ &emsp;<label><input name="properties[outline-excerpt]" type="checkbox" value="1" <?php checked($this->options['outline-excerpt']); ?> /><?php _e('Outline', $this->text_domain); ?></label><input name="properties[outline-color-excerpt]" type="text" value="<?php echo esc_attr($this->options['outline-color-excerpt']); ?>" class="color-picker" />
568
+ </div>
569
+ <div style="padding: 10px">
570
+ <?php _e('Size', $this->text_domain); ?><input name="properties[size-excerpt]" type="text" value="<?php echo esc_attr($this->options['size-excerpt']); ?>" size="2" />
571
+ &emsp;<?php _e('Height', $this->text_domain); ?><input name="properties[height-excerpt]" type="text" value="<?php echo esc_attr($this->options['height-excerpt']); ?>" size="2" />
572
+ &emsp;<?php _e('Length', $this->text_domain); ?><input name="properties[trim-excerpt]" type="text" value="<?php echo esc_attr($this->options['trim-excerpt']); ?>" size="2" />
573
+ </div>
574
+ </div>
 
575
  </td>
576
  </tr>
 
577
  <tr valign="top">
578
  <th scope="row"><?php _e('More button', $this->text_domain); ?></th>
579
  <td>
580
+ <div style="padding: 10px; border: 1px solid #000; background-color: #fff; width: 500px;">
581
+ <div style="padding: 10px">
582
+ <?php _e('Color', $this->text_domain); ?><input name="properties[color-more]" type="text" value="<?php echo esc_attr($this->options['color-more']); ?>" class="color-picker" />
583
+ &emsp;<label><input name="properties[outline-more]" type="checkbox" value="1" <?php checked($this->options['outline-more']); ?> /><?php _e('Outline', $this->text_domain); ?></label><input name="properties[outline-color-more]" type="text" value="<?php echo esc_attr($this->options['outline-color-more']); ?>" class="color-picker" />
584
+ </div>
585
+ <div style="padding: 10px">
586
+ <?php _e('Size', $this->text_domain); ?><input name="properties[size-more]" type="text" value="<?php echo esc_attr($this->options['size-more']); ?>" size="2" />
587
+ &emsp;<?php _e('Height', $this->text_domain); ?><input name="properties[height-more]" type="text" value="<?php echo esc_attr($this->options['height-more']); ?>" size="2" />
588
+ </div>
589
+ </div>
 
590
  </td>
591
  </tr>
 
592
  <tr valign="top">
593
  <th scope="row"><?php _e('Site information', $this->text_domain); ?></th>
594
  <td>
595
+ <div style="padding: 10px; border: 1px solid #000; background-color: #fff; width: 500px;">
596
+ <div style="padding: 10px">
597
+ <?php _e('Color', $this->text_domain); ?><input name="properties[color-info]" type="text" value="<?php echo esc_attr($this->options['color-info']); ?>" class="color-picker" />
598
+ &emsp;<label><input name="properties[outline-info]" type="checkbox" value="1" <?php checked($this->options['outline-info']); ?> /><?php _e('Outline', $this->text_domain); ?></label><input name="properties[outline-color-info]" type="text" value="<?php echo esc_attr($this->options['outline-color-info']); ?>" class="color-picker" />
599
+ </div>
600
+ <div style="padding: 10px">
601
+ <?php _e('Size', $this->text_domain); ?><input name="properties[size-info]" type="text" value="<?php echo esc_attr($this->options['size-info']); ?>" size="2" />
602
+ &emsp;<?php _e('Height', $this->text_domain); ?><input name="properties[height-info]" type="text" value="<?php echo esc_attr($this->options['height-info']); ?>" size="2" />
603
+ &emsp;<?php _e('Length', $this->text_domain); ?><input name="properties[trim-info]" type="text" value="<?php echo esc_attr($this->options['trim-info']); ?>" size="2" />
604
+ </div>
605
+ </div>
 
606
  </td>
607
  </tr>
 
608
  <tr valign="top">
609
  <th scope="row"><?php _e('Added information', $this->text_domain); ?></th>
610
  <td>
611
+ <div style="padding: 10px; border: 1px solid #000; background-color: #fff; width: 500px;">
612
+ <div style="padding: 10px">
613
+ <?php _e('Color', $this->text_domain); ?><input name="properties[color-added]" type="text" value="<?php echo esc_attr($this->options['color-added']); ?>" class="color-picker" />
614
+ &emsp;<label><input name="properties[outline-added]" type="checkbox" value="1" <?php checked($this->options['outline-added']); ?> /><?php _e('Outline', $this->text_domain); ?></label><input name="properties[outline-color-added]" type="text" value="<?php echo esc_attr($this->options['outline-color-added']); ?>" class="color-picker" />
615
+ </div>
616
+ <div style="padding: 10px">
617
+ <?php _e('Size', $this->text_domain); ?><input name="properties[size-added]" type="text" value="<?php echo esc_attr($this->options['size-added']); ?>" size="2" />
618
+ &emsp;<?php _e('Height', $this->text_domain); ?><input name="properties[height-added]" type="text" value="<?php echo esc_attr($this->options['height-added']); ?>" size="2" />
619
+ </div>
620
+ </div>
621
  </td>
622
  </tr>
 
623
  <tr valign="top">
624
  <th scope="row"><?php _e('Resize', $this->text_domain); ?></th>
625
+ <td colspan="4"><label><input name="properties[thumbnail-resize]" type="checkbox" value="1" <?php checked($this->options['thumbnail-resize']); ?> /><?php _e('Adjust thumbnail and letter size according to width', $this->text_domain); ?></label></td>
626
  </tr>
 
627
  </table>
628
  </div>
629
 
630
  <div class="pz-lkc-item" id="pz-lkc-external">
631
+ <h3><?php echo __('External link settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-external-link" rel="noopener external help" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
632
  <table class="form-table">
633
 
634
  <tr valign="top">
635
  <th scope="row"><?php _e('Border Color', $this->text_domain); ?></th>
636
+ <td><input name="properties[ex-border-color]" type="text" class="color-picker" value="<?php echo esc_attr($this->options['ex-border-color']); ?>" /></td>
637
  </tr>
638
  <tr valign="top">
639
  <th scope="row"><?php _e('Background Color', $this->text_domain); ?></th>
640
+ <td><input name="properties[ex-bgcolor]" type="text" class="color-picker" value="<?php echo esc_attr($this->options['ex-bgcolor']); ?>" /></td>
641
  </tr>
642
  <tr valign="top">
643
  <th scope="row"><?php _e('Background image', $this->text_domain); ?></th>
644
+ <td><input name="properties[ex-image]" type="text" value="<?php echo esc_attr($this->options['ex-image']); ?>" size="80" /></td>
645
  </tr>
646
  <tr valign="top">
647
  <th scope="row"><?php _e('Thumbnail', $this->text_domain); ?></th>
656
  </td>
657
  </tr>
658
  <tr valign="top">
659
+ <th scope="row"><?php _e('Site icon', $this->text_domain); ?></th>
660
  <td>
661
  <select name="properties[ex-favicon]">
662
  <option value="" <?php if($this->options['ex-favicon'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
668
  </tr>
669
  <tr valign="top">
670
  <th scope="row"><?php _e('Added information', $this->text_domain); ?></th>
671
+ <td><input name="properties[ex-info]" type="text" value="<?php echo esc_attr($this->options['ex-info']); ?>" class="regular-text" /></td>
672
  </tr>
673
  <tr valign="top">
674
  <th scope="row"><?php _e('Text of more button', $this->text_domain); ?></th>
675
+ <td><input name="properties[ex-more-text]" type="text" value="<?php echo esc_attr($this->options['ex-more-text']); ?>" class="regular-text" /></td>
676
  </tr>
677
  <tr valign="top">
678
  <th scope="row"><?php _e('Open new window/tab', $this->text_domain); ?></th>
692
  </tr>
693
  <tr valign="top">
694
  <th scope="row"><?php _e('Set nofollow', $this->text_domain); ?></th>
695
+ <td><label><input name="properties[nofollow]" type="checkbox" value="1" <?php checked($this->options['nofollow']); ?> /><?php _e('In the case of an external site, it puts the "nofollow"', $this->text_domain); _e('(Not recommended)', $this->text_domain); ?></label></td>
696
+ </tr>
697
+ <tr valign="top">
698
+ <th scope="row"><?php _e('Set noopener', $this->text_domain); ?></th>
699
+ <td><label><input name="properties[noopener]" type="checkbox" value="1" <?php checked($this->options['noopener']); ?> /><?php _e('In the case of an external site, it puts the "noopener"', $this->text_domain); ?></label></td>
700
  </tr>
701
  <tr valign="top">
702
  <th scope="row"><?php _e('Use HatenaBlogCard', $this->text_domain); ?></th>
703
+ <td><label><input name="properties[use-hatena]" type="checkbox" value="1" <?php checked($this->options['use-hatena']); ?> /><?php _e('External links will use Always HatenaBlogCard.', $this->text_domain); _e('(Not recommended)', $this->text_domain); ?></label></td>
704
  </tr>
705
  </table>
706
  </div>
707
 
708
  <div class="pz-lkc-item" id="pz-lkc-internal">
709
+ <h3><?php echo __('Internal link settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-internal-link" rel="noopener external help" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
710
  <table class="form-table">
711
  <tr valign="top">
712
  <th scope="row"><?php _e('Border Color', $this->text_domain); ?></th>
713
+ <td><input name="properties[in-border-color]" type="text" class="color-picker" value="<?php echo esc_attr($this->options['in-border-color']); ?>" /></td>
714
  </tr>
715
  <tr valign="top">
716
  <th scope="row"><?php _e('Background Color', $this->text_domain); ?></th>
717
+ <td><input name="properties[in-bgcolor]" type="text" class="color-picker" value="<?php echo esc_attr($this->options['in-bgcolor']); ?>" /></td>
718
  </tr>
719
  <tr valign="top">
720
  <th scope="row"><?php _e('Background Image', $this->text_domain); ?></th>
721
+ <td><input name="properties[in-image]" type="text" value="<?php echo esc_attr($this->options['in-image']); ?>" size="80" /></td>
722
  </tr>
723
  <tr valign="top">
724
  <th scope="row"><?php _e('Thumbnail', $this->text_domain); ?></th>
732
  </td>
733
  </tr>
734
  <tr valign="top">
735
+ <th scope="row"><?php _e('Site icon', $this->text_domain); ?></th>
736
  <td>
737
  <select name="properties[in-favicon]">
738
  <option value="" <?php if($this->options['in-favicon'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
744
  </tr>
745
  <tr valign="top">
746
  <th scope="row"><?php _e('Added information', $this->text_domain); ?></th>
747
+ <td><input name="properties[in-info]" type="text" value="<?php echo esc_attr($this->options['in-info']); ?>" class="regular-text" /><br></td>
748
  </tr>
749
  <tr valign="top">
750
  <th scope="row"><?php _e('Text of more button', $this->text_domain); ?></th>
751
+ <td><input name="properties[in-more-text]" type="text" value="<?php echo esc_attr($this->options['in-more-text']); ?>" class="regular-text" /></td>
752
  </tr>
753
  <tr valign="top">
754
  <th scope="row"><?php _e('Open new window/tab', $this->text_domain); ?></th>
773
  </tr>
774
  <tr valign="top">
775
  <th scope="row"><?php _e('Retry get PID', $this->text_domain); ?></th>
776
+ <td><label><input name="properties[flg-get-pid]" type="checkbox" value="1" <?php checked($this->options['flg-get-pid']); ?> /><?php _e('When the `Post ID` can not be acquired, it is acquired again.', $this->text_domain); ?></label></td>
777
  </tr>
778
  </table>
779
  </div>
780
 
781
  <div class="pz-lkc-item" id="pz-lkc-samepage">
782
+ <h3><?php echo __('Same-page link settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-same-page-link" rel="noopener external help" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
783
  <table class="form-table">
784
  <tr valign="top">
785
  <th scope="row"><?php _e('Border Color', $this->text_domain); ?></th>
786
+ <td><input name="properties[th-border-color]" type="text" class="color-picker" value="<?php echo esc_attr($this->options['th-border-color']); ?>" /></td>
787
  </tr>
788
  <tr valign="top">
789
  <th scope="row"><?php _e('Background Color', $this->text_domain); ?></th>
790
+ <td><input name="properties[th-bgcolor]" type="text" class="color-picker" value="<?php echo esc_attr($this->options['th-bgcolor']); ?>" /></td>
791
  </tr>
792
  <tr valign="top">
793
  <th scope="row"><?php _e('Background Image', $this->text_domain); ?></th>
794
+ <td><input name="properties[th-image]" type="text" value="<?php echo esc_attr($this->options['th-image']); ?>" size="80" /></td>
795
  </tr>
796
  <tr valign="top">
797
  <th scope="row"><?php _e('Thumbnail', $this->text_domain); ?></th>
798
  <td><?php _e('It is common with setting Internal-link', $this->text_domain); ?></td>
799
  </re>
800
  <tr valign="top">
801
+ <th scope="row"><?php _e('Site icon', $this->text_domain); ?></th>
802
  <td><?php _e('It is common with setting Internal-link', $this->text_domain); ?></td>
803
  </re>
804
  <tr valign="top">
805
  <th scope="row"><?php _e('Added information', $this->text_domain); ?></th>
806
+ <td><input name="properties[th-info]" type="text" value="<?php echo esc_attr($this->options['th-info']); ?>" class="regular-text" /></td>
807
  </tr>
808
  <tr valign="top">
809
  <th scope="row"><?php _e('Text of more button', $this->text_domain); ?></th>
825
  </div>
826
 
827
  <div class="pz-lkc-item" id="pz-lkc-api">
828
+ <h3><?php echo __('Web-API settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-web-api" rel="noopener external help" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
829
  <table class="form-table"
830
  <tr valign="top">
831
+ <th scope="row"><?php _e('Site icon API', $this->text_domain); ?></th>
832
  <td>
833
+ <input name="properties[favicon-api]" type="text" value="<?php echo esc_attr($this->options['favicon-api']); ?>" size="80" onclick="this.select(0,this.value.length);" />
834
  <p><?php echo __('%DOMAIN% replace to domain name.', $this->text_domain).' '.__('(', $this->text_domain).__('ex.', $this->text_domain).' popozure.info '.__(')', $this->text_domain).'<br>'.__('%DOMAIN_URL% replace to domain URL.').' '.__('(', $this->text_domain).__('ex.', $this->text_domain).' https://popozure.info '.__(')', $this->text_domain).'<br>'.__('%URL% replace to URL.', $this->text_domain).' '.__('(', $this->text_domain).__('ex.', $this->text_domain).' https://popozure.info/pz-linkcard '.__(')', $this->text_domain); ?>
835
+ <p><?php _e('ex1.', $this->text_domain); ?><input name="" type="text" value="https://www.google.com/s2/favicons?domain=%DOMAIN%" size="70" onclick="this.select(0,this.value.length);" readonly="readonly" /></p>
836
+ <p><?php _e('ex2.', $this->text_domain); ?><input name="" type="text" value="https://favicon.hatena.ne.jp/?url=%URL%" size="70" onclick="this.select(0,this.value.length);" readonly="readonly" /></p>
837
  </td>
838
  </tr>
839
  <tr valign="top">
840
  <th scope="row" rowspan="3"><?php _e('Thumbnail API', $this->text_domain); ?></th>
841
  <td>
842
+ <input name="properties[thumbnail-api]" type="text" value="<?php echo esc_attr($this->options['thumbnail-api']); ?>" size="80" onclick="this.select(0,this.value.length);" />
843
  <p><?php echo __('%URL% replace to URL.', $this->text_domain).' '.__('(', $this->text_domain).__('ex.', $this->text_domain).' https://popozure.info/pz-linkcard '.__(')', $this->text_domain); ?></p>
844
+ <p><?php _e('ex1.', $this->text_domain); ?><input name="" type="text" value="https://s.wordpress.com/mshots/v1/%URL%?w=100" size="70" onclick="this.select(0,this.value.length);" readonly="readonly" /></p>
845
+ <p><?php _e('ex2.', $this->text_domain); ?><input name="" type="text" value="https://capture.heartrails.com/100x100?%URL%" size="70" onclick="this.select(0,this.value.length);" readonly="readonly" /></p>
846
  </td>
847
  </tr>
848
  </table>
849
  </div>
850
 
851
  <div class="pz-lkc-item" id="pz-lkc-image">
852
+ <h3><?php echo __('Image settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-image" rel="noopener external help" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
853
  <table class="form-table"
854
  <tr valign="top">
855
+ <th scope="row"><?php _e('Image size to save', $this->text_domain); ?></th>
856
  <td>
857
+ <p><?php _e('Width', $this->text_domain); echo '/'; _e('Height', $this->text_domain); ?><input name="properties[cache-image-size]" type="text" value="<?php echo (isset($this->options['cache-image-size']) ? $this->options['cache-image-size'] : $this->defaults['cache-image-size']); ?>" style="width: 4em;" />px</p>
858
+ </td>
859
+ </tr>
860
+ <tr valign="top">
861
+ <th scope="row"><?php _e('Image cache directory', $this->text_domain); ?></th>
862
+ <td>
863
+ <p><input name="properties[thumbnail-dir]" type="text" title="<?php echo $this->options['thumbnail-dir']; ?>" value="<?php echo $this->options['thumbnail-dir']; ?>" size="80" onclick="this.select(0,this.value.length);" readonly="readonly" /></p>
864
+ <p><?php $size = pz_GetDirSize($this->options['thumbnail-dir']); echo __('Used', $this->text_domain).__(': ', $this->text_domain).pz_GetSizeStringSi($size).' ('.pz_GetStringBytes($size).')'; ?></p>
865
+ </td>
866
+ </tr>
867
+ <tr valign="top">
868
+ <th scope="row"><?php _e('Image cache URL', $this->text_domain); ?></th>
869
+ <td>
870
+ <p><input name="properties[thumbnail-url]" type="text" title="<?php echo $this->options['thumbnail-url']; ?>" value="<?php echo $this->options['thumbnail-url']; ?>" size="80" onclick="this.select(0,this.value.length);" readonly="readonly" /></p>
871
  </td>
872
  </tr>
873
  </table>
874
  </div>
875
 
876
+ <div class="pz-lkc-item" id="pz-lkc-css">
877
+ <h3><?php echo __('Stylesheet settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-css" rel="noopener external help" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
878
+ <table class="form-table"
879
+ <tr valign="top">
880
+ <th scope="row"><?php _e('Stylesheet URL', $this->text_domain); ?></th>
881
+ <td><input name="properties[css-url]" type="text" title="<?php echo esc_attr($this->options['css-url']); ?>" value="<?php echo esc_attr($this->options['css-url']); ?>" size="80" readonly="readonly" /></td>
882
+ </tr>
883
+ <tr valign="top">
884
+ <th scope="row"><?php _e('Stylesheet URL to add', $this->text_domain); ?></th>
885
+ <td><input name="properties[css-url-add]" type="text" title="<?php echo esc_attr($this->options['css-url-add']); ?>" value="<?php echo esc_attr($this->options['css-url-add']); ?>" size="80" /><br><p><?php _e('(ex. https://exsample.com/style.css )', $this->text_domain); ?></p></td>
886
+ </tr>
887
+ <tr valign="top">
888
+ <th scope="row"><?php _e('Stylesheet text to add', $this->text_domain); ?></th>
889
+ <td><input name="properties[css-add]" type="text" title="<?php echo esc_attr($this->options['css-add']); ?>" value="<?php echo esc_attr($this->options['css-add']); ?>" size="80" /></td>
890
+ </tr>
891
+ <tr valign="top">
892
+ <th scope="row"><?php _e('Stylesheet version', $this->text_domain); ?></th>
893
+ <td><input name="properties[css-count]" type="text" title="<?php echo esc_attr($this->options['css-count']); ?>" value="<?php echo esc_attr($this->options['css-count']); ?>" size="10" readonly="readonly" /></td>
894
+ </tr>
895
+ <tr valign="top">
896
+ <th scope="row"><?php _e('Stylesheet file', $this->text_domain); ?></th>
897
+ <td><input name="properties[css-path]" type="text" title="<?php echo esc_attr($this->options['css-path']); ?>" value="<?php echo esc_attr($this->options['css-path']); ?>" size="80" readonly="readonly" /></td>
898
+ </tr>
899
+ <tr valign="top">
900
+ <th scope="row"><?php _e('Stylesheet templete file', $this->text_domain); ?></th>
901
+ <td><input name="properties[css-templete]" type="text" title="<?php echo esc_attr($this->options['css-templete']); ?>" value="<?php echo esc_attr($this->options['css-templete']); ?>" size="80" readonly="readonly" /></td>
902
+ </tr>
903
+ </table>
904
+ </div>
905
+
906
  <div class="pz-lkc-item" id="pz-lkc-check">
907
+ <h3><?php echo __('Link check settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-link-check" rel="noopener external help" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
908
  <table class="form-table">
909
  <tr valign="top">
910
  <th scope="row"><?php _e('Do not link at error', $this->text_domain); ?></th>
911
+ <td><label><input name="properties[flg-unlink]" type="checkbox" value="1" <?php checked($this->options['flg-unlink']); ?> /><?php _e('When access status is "403", "404", "410", unlink', $this->text_domain); ?></label></td>
912
  </tr>
913
  <tr valign="top">
914
  <th scope="row"><?php _e('SSL verification disabled', $this->text_domain); ?></th>
915
+ <td><label><input name="properties[flg-ssl]" type="checkbox" value="1" <?php checked($this->options['flg-ssl']); ?> /><?php _e('Try setting if the contents of the SSL site can not be acquired.', $this->text_domain); ?></label></td>
916
  </tr>
917
  <tr valign="top">
918
  <th scope="row"><?php _e('Follow location', $this->text_domain); ?></th>
919
+ <td><label><input name="properties[flg-redir]" type="checkbox" value="1" <?php checked($this->options['flg-redir']); ?> /><?php _e('Track when the link destination is redirected.', $this->text_domain); ?></label></td>
920
  </tr>
921
  <tr valign="top">
922
  <th scope="row"><?php _e('Set referer', $this->text_domain); ?></th>
923
+ <td><label><input name="properties[flg-referer]" type="checkbox" value="1" <?php checked($this->options['flg-referer']); ?> /><?php _e('Notify the article URL to the link destination.', $this->text_domain); ?></label></td>
924
  </tr>
925
  <tr valign="top">
926
  <th scope="row"><?php _e('Use User-Agent', $this->text_domain); ?></th>
927
  <td>
928
+ <label><input name="properties[flg-agent]" type="checkbox" value="1" <?php checked($this->options['flg-agent']); ?> /><?php _e('Notify using Pz-LinkCard to the link destination.', $this->text_domain); ?></label>
929
+ <p style="margin-left: 20px;"><input name="properties[user-agent]" type="text" value="<?php echo esc_attr('Pz-LinkCard-Crawler/'.$this->options['plugin-version']); ?>" size="77" readonly="readonly" /></p>
930
  </td>
931
  </tr>
932
  <tr valign="top">
933
  <th scope="row"><?php _e('Broken link checker', $this->text_domain); ?></th>
934
+ <td><label><input name="properties[flg-alive]" type="checkbox" value="1" <?php checked($this->options['flg-alive']); ?> /><?php _e('Alive confirmation of the link destination.', $this->text_domain); ?></label></td>
935
  </tr>
936
  <tr valign="top">
937
  <th scope="row"><?php _e('Broken link count', $this->text_domain); ?></th>
938
+ <td><label><input name="properties[flg-alive-count]" type="checkbox" value="1" <?php checked($this->options['flg-alive-count']); ?> /><?php _e('The number of broken links is displayed next to the submenu.', $this->text_domain); ?></label></td>
939
  </tr>
940
  <tr valign="top">
941
  <th scope="row"><?php _e('Multi-site compatible', $this->text_domain); ?></th>
942
+ <td><label><input name="properties[flg-subdir]" type="checkbox" value="1" <?php checked($this->options['flg-subdir']); ?> /><?php _e('In the case of the multi-site of the subdirectory type, the site under the subdirectory is judged as an external site.', $this->text_domain); ?></label></td>
943
  </tr>
944
  </table>
945
  </div>
946
 
947
  <div class="pz-lkc-item" id="pz-lkc-editor">
948
+ <h3><?php echo __('Editor settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-editor" rel="noopener external help" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
949
  <table class="form-table">
950
  <tr valign="top">
951
  <th scope="row"><?php _e('ShortCode 1', $this->text_domain); ?></th>
967
  </tr>
968
  <tr valign="top">
969
  <th scope="row"><?php _e('ShortCode 2', $this->text_domain); ?></th>
970
+ <td>[<input name="properties[code2]" type="text" value="<?php echo esc_attr($this->options['code2']); ?>" class="regular-text" style="width: 8em;" /> url="http://xxx" <span style="color: #aabbff; font-weight: bold;">title=</span><span style="color: #aabbff;">"xxxxxx"</span> <span style="color: #bbaaff; font-weight: bold;">content=</span><span style="color: #bbaaff;">"xxxxxx"</span>]
971
  <p><?php _e('Case-sensitive', $this->text_domain); ?></p></td>
972
  </tr>
973
  <tr valign="top">
974
  <th scope="row"><?php _e('ShortCode 3', $this->text_domain); ?></th>
975
+ <td>[<input name="properties[code3]" type="text" value="<?php echo esc_attr($this->options['code3']); ?>"class="regular-text" style="width: 8em;" /> url="http://xxx" <span style="color: #aabbff; font-weight: bold;">title=</span><span style="color: #aabbff;">"xxxxxx"</span> <span style="color: #bbaaff; font-weight: bold;">content=</span><span style="color: #bbaaff;">"xxxxxx"</span>]
976
  <p><?php _e('Case-sensitive', $this->text_domain); ?></p></td>
977
  </tr>
978
  <tr valign="top" style="display: none;">
979
  <th scope="row"><?php _e('ShortCode 4', $this->text_domain); ?></th>
980
+ <td>[<input name="properties[code4]" type="text" value="<?php echo esc_attr($this->options['code4']); ?>" class="regular-text" style="width: 8em;" /> url="http://xxx" <span style="color: #aabbff; font-weight: bold;">title=</span><span style="color: #aabbff;">"xxxxxx"</span> <span style="color: #bbaaff; font-weight: bold;">content=</span><span style="color: #bbaaff;">"xxxxxx"</span>]
981
  <p><?php _e('Case-sensitive', $this->text_domain); ?></p></td>
982
  </tr>
983
  <tr valign="top">
990
 
991
  <tr valign="top">
992
  <th scope="row"><?php _e('Convert text link', $this->text_domain); ?></th>
993
+ <td><label><input name="properties[auto-atag]" type="checkbox" value="1" <?php checked($this->options['auto-atag']); ?> /><?php _e('Convert lines with text link only to Linkcard.', $this->text_domain); ?></label></td>
994
  </tr>
995
  <tr valign="top">
996
  <th scope="row"><?php _e('Convert URL', $this->text_domain); ?></th>
997
+ <td><label><input name="properties[auto-url]" type="checkbox" value="1" <?php checked($this->options['auto-url']); ?> /><?php _e('Convert lines with URL only to Linkcard.', $this->text_domain); ?></label></td>
998
  </tr>
999
  <tr valign="top">
1000
  <th scope="row"><?php _e('External link only', $this->text_domain); ?></th>
1001
+ <td><label><input name="properties[auto-external]" type="checkbox" value="1" <?php checked($this->options['auto-external']); ?> /><?php _e('Convert only external links.', $this->text_domain); ?></label></td>
1002
  </tr>
1003
 
1004
  <tr valign="top">
1005
  <th scope="row"><?php _e('Do shortcode', $this->text_domain); ?></th>
1006
+ <td><label><input name="properties[flg-do-shortcode]" type="checkbox" value="1" <?php checked($this->options['flg-do-shortcode']); ?> /><?php _e('Force shortcode development.', $this->text_domain); ?></label></td>
1007
  </tr>
1008
 
1009
  <tr valign="top">
1010
  <th scope="row"><?php _e('Add insert button', $this->text_domain); ?></th>
1011
+ <td><label><input name="properties[flg-edit-insert]" type="checkbox" value="1" <?php checked($this->options['flg-edit-insert']); ?> /><?php _e('Add insert button to visual editor.', $this->text_domain); ?></label></td>
1012
  </tr>
1013
  <tr valign="top">
1014
  <th scope="row"><?php _e('Add quick tag', $this->text_domain); ?></th>
1015
+ <td><label><input name="properties[flg-edit-qtag]" type="checkbox" value="1" <?php checked($this->options['flg-edit-qtag']); ?> /><?php _e('Add quick tag button to text editor.', $this->text_domain); ?></label></td>
1016
  </tr>
1017
 
1018
  </table>
1019
  </div>
1020
 
1021
  <div class="pz-lkc-item" id="pz-lkc-advanced">
1022
+ <h3><?php echo __('Advanced settings', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-advanced" rel="noopener external help" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
1023
  <table class="form-table">
1024
  <tr valign="top">
1025
  <th scope="row"><?php _e('Trailing slash', $this->text_domain); ?></th>
1032
  </select>
1033
  </td>
1034
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1035
  <tr valign="top">
1036
  <th scope="row"><?php _e('Class ID to be added(for PC)', $this->text_domain); ?></th>
1037
+ <td><input name="properties[class-pc]" type="text" value="<?php echo (isset($this->options['class-pc']) ? esc_attr($this->options['class-pc']) : ''); ?>" size="40" /></td>
1038
  </tr>
1039
  <tr valign="top">
1040
  <th scope="row"><?php _e('Class ID to be added(for Mobile)', $this->text_domain); ?></th>
1041
+ <td><input name="properties[class-mobile]" type="text" value="<?php echo (isset($this->options['class-mobile']) ? esc_attr($this->options['class-mobile']) : ''); ?>" size="40" /><br>
1042
  </tr>
1043
 
1044
  <tr valign="top">
1045
  <th scope="row"><?php _e('Google AMP URL', $this->text_domain); ?></th>
1046
+ <td><label><input name="properties[flg-amp-url]" type="checkbox" value="1" <?php checked($this->options['flg-amp-url']); ?> /><?php _e('If the URL is AMP, display simple.', $this->text_domain); ?></label></td>
1047
  </tr>
1048
 
1049
  <tr valign="top">
1050
  <th scope="row"><?php _e('IDNA Convert', $this->text_domain); ?></th>
1051
+ <td><label><input name="properties[flg-idn]" type="checkbox" value="1" <?php checked( (isset($this->options['flg-idn']) && function_exists('idn_to_utf8') ) ? $this->options['flg-idn'] : null, 1); ?> /><?php _e('Convert domain name from IDNA ASCII to Unicode.', $this->text_domain); ?></label></td>
1052
  </tr>
1053
 
1054
  <tr valign="top">
1055
  <th scope="row"><?php _e('Relative URL', $this->text_domain); ?></th>
1056
+ <td><label><input name="properties[flg-relative-url]" type="checkbox" value="1" <?php checked($this->options['flg-relative-url']); ?> /><?php _e('For relative-specified URLs, complement the site URL.', $this->text_domain); ?></label></td>
1057
+ </tr>
1058
+
1059
+ <tr valign="top">
1060
+ <th scope="row"><?php _e('Hide URL error', $this->text_domain); ?></th>
1061
+ <td><label><input name="properties[flg-invalid-hide]" type="checkbox" value="1" <?php checked($this->options['flg-invalid-hide']); ?> /><?php _e('Do not display an error on the admin page', $this->text_domain); _e('(Not recommended)', $this->text_domain); ?></label></td>
1062
  </tr>
1063
 
1064
  <tr valign="top" style="display: none;">
1065
  <th scope="row"><?php _e('Display link to author page', $this->text_domain); ?></th>
1066
+ <td><input name="properties[plugin-link]" type="checkbox" value="1" <?php checked($this->options['plugin-link']); ?> disabled="disabled" /><a href="<?php echo $this->options['plugin-url']; ?>" rel="noopener external" target="_blank"><?php echo $this->options['plugin-name']; ?></a></td>
1067
  </tr>
1068
  <tr valign="top" style="display: none;">
1069
  <th scope="row"><?php _e('Plugin URL', $this->text_domain); ?></th>
1070
+ <td><input name="properties[plugin-url]" type="text" value="<?php echo esc_attr($this->options['plugin-url']); ?>" class="regular-text" /></td>
1071
  </tr>
1072
  <tr valign="top" style="display: none;">
1073
  <th scope="row"><?php _e('Plugin name', $this->text_domain); ?></th>
1074
+ <td><input name="properties[plugin-name]" type="text" value="<?php echo esc_attr($this->options['plugin-name']); ?>" class="regular-text" /></td>
1075
  </tr>
1076
  <tr valign="top" style="display: none;">
1077
  <th scope="row"><?php _e('Plugin version', $this->text_domain); ?></th>
1078
+ <td><input name="properties[plugin-version]" type="text" value="<?php echo esc_attr($this->options['plugin-version']); ?>" class="regular-text" /></td>
1079
  </tr>
1080
+ <tr valign="top">
1081
  <th scope="row"><?php _e('Saved datetime', $this->text_domain); ?></th>
1082
+ <td>
1083
+ <input type="text" value="<?php echo date($datetime_format, $this->options['saved-date']); ?>" size="40" readonly="readonly" />
1084
+ <input name="properties[saved-date]" type="hidden" value="<?php echo $this->options['saved-date']; ?>" />
1085
+ </td>
1086
  </tr>
1087
 
1088
  <tr valign="top">
1089
  <th scope="row"><?php _e('Display elapsed time', $this->text_domain); ?></th>
1090
+ <td><label><input name="properties[debug-time]" type="checkbox" value="1" <?php checked($this->options['debug-time']); ?> /><?php _e('Output the elapsed time to HTML comment.', $this->text_domain); _e('(Not recommended)', $this->text_domain); ?></label></td>
1091
  </tr>
1092
 
1093
  </table>
1094
  </div>
1095
 
1096
  <div class="pz-lkc-item" id="pz-lkc-initialize">
1097
+ <h3><?php echo __('Initialize', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-settings-initialize" rel="noopener external help" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a>'; ?></h3>
1098
  <table class="form-table">
1099
  <tr valign="top">
1100
  <th scope="row"><?php _e('Return to the initial setting', $this->text_domain); ?></th>
1101
+ <td><label><input name="properties[initialize]" type="checkbox" value="1" <?php checked($this->options['initialize']); ?> /></label></td>
1102
  </tr>
1103
  </table>
1104
  </div>
1109
  </div>
1110
  </div>
1111
  <?php
1112
+ function pz_TrimNum($val, $init = 0 ) {
1113
+ $val = mb_convert_kana($val, 'n');
1114
  $val = intval(preg_replace('/[^0-9]/', '', $val));
1115
  if ($val == 0) {
1116
+ $val = $init;
1117
  $val = intval(preg_replace('/[^0-9]/', '', $val));
1118
  }
1119
  return $val;
1120
  }
1121
+ function pz_CheckColorCode($val ) {
1122
+ // HTMLカラーコード
1123
+ if ( preg_match( "/^#([0-9A-F]{6}|[0-9A-F]{3})$/i", $val ) ) {
1124
+ return true;
1125
+ }
1126
+ }
1127
+ // ディレクトリ配下の使用サイズ
1128
+ function pz_GetDirSize($dir) {
1129
+ if (!isset($size)) {
1130
+ $size = 0;
1131
+ }
1132
+ $handle = opendir($dir);
1133
+ while ($file = readdir($handle)) {
1134
+ $fullpath = $dir.'/'.$file;
1135
+ if (is_dir($fullpath)) {
1136
+ if ($file != '..' && $file != '.') {
1137
+ $size += pz_GetDirSize($fullpath);
1138
+ }
1139
+ } else {
1140
+ $size += filesize($fullpath);
1141
+ }
1142
+ }
1143
+ return $size;
1144
+ }
1145
+
1146
+ // 数値をKB、MB、TBの単位に変換
1147
+ function pz_GetSizeStringSi($val) {
1148
+ $label = array( 'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB' );
1149
+ for( $i = 0; $val >= 1024 && $i < ( count( $label ) -1 ); $val /= 1024, $i++ );
1150
+ return ( round( $val, 2 ).' '.$label[$i] );
1151
+ }
1152
+ // 数値をKB、MB、TBの単位に変換
1153
+ function pz_GetStringBytes($val) {
1154
+ if ($val == 1) {
1155
+ return number_format($val).' byte';
1156
+ } else {
1157
+ return number_format($val).' bytes';
1158
+ }
1159
+ }
lib/pz-linkcard-style.php CHANGED
@@ -1,15 +1,11 @@
1
  <?php if (!function_exists("get_option")) die; ?>
2
  <?php
3
  if (!isset($this->options['style']) || !$this->options['style']) {
4
- $css_dir = $this->upload_dir_path;
5
- $css_path = $this->upload_dir_path.'style.css';
6
- if (!is_dir($css_dir) && !wp_mkdir_p($css_dir)) {
7
- $css_path = $this->plugin_dir_path.'style.css';
8
- }
9
-
10
- $temp_name = $this->plugin_dir_path.'templete/pz-linkcard-templete.css'; // 元となるテンプレート
11
 
12
- $file_text = file_get_contents($temp_name);
 
13
  if ($file_text) {
14
  // バージョン
15
  $file_text = str_replace('/*VERSION*/', $this->options['plugin-version'], $file_text );
@@ -638,13 +634,15 @@
638
  global $pagenow;
639
  if (isset($pagenow) && $pagenow == 'options-general.php') {
640
  if ($result == true) {
641
- echo '<div class="updated fade"><p><strong>'.__('Style sheet saved.', $this->text_domain).'</strong></p></div>';
642
  } else {
643
- echo '<div class="error fade"><p><strong>'.__('Style sheet failed.', $this->text_domain).'</strong></p></div>';
644
  }
645
  }
 
 
646
  }
647
- unset($temp_name);
648
  unset($file_text);
649
  unset($result);
650
- }
1
  <?php if (!function_exists("get_option")) die; ?>
2
  <?php
3
  if (!isset($this->options['style']) || !$this->options['style']) {
4
+ $css_path = $this->options['css-path'];
5
+ $css_temp = $this->options['css-templete'];
 
 
 
 
 
6
 
7
+ // テンプレートファイルの読み込み
8
+ $file_text = file_get_contents($css_temp);
9
  if ($file_text) {
10
  // バージョン
11
  $file_text = str_replace('/*VERSION*/', $this->options['plugin-version'], $file_text );
634
  global $pagenow;
635
  if (isset($pagenow) && $pagenow == 'options-general.php') {
636
  if ($result == true) {
637
+ echo '<div class="notice notice-success is-dismissible"><p><strong>'.__('Succeeded in saving the Stylesheet.', $this->text_domain).'</strong></p></div>';
638
  } else {
639
+ echo '<div class="notice notice-error is-dismissible"><p><strong>'.__('Failed to save Stylesheet.', $this->text_domain).'</strong></p></div>';
640
  }
641
  }
642
+ } else {
643
+ echo '<div class="notice notice-error is-dismissible"><p><strong>'.__('Failed to call the Stylesheet template.', $this->text_domain).'</strong></p></div>';
644
  }
645
+ unset($css_temp);
646
  unset($file_text);
647
  unset($result);
648
+ }
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: 2.4.1
7
  Author: poporon
8
  Author URI: http://poporon.poponet.jp
9
  License: GPLv2 or later
@@ -12,176 +12,197 @@ License: GPLv2 or later
12
  defined('ABSPATH') || die;
13
 
14
  class Pz_LinkCard {
15
- public $slug; // スラッグ
16
- public $text_domain; // テキスト ドメイン(スラッグと同じ内容)
17
 
18
- public $charset; // 文字セット
19
 
20
- public $amp; // Google AMP
21
 
22
- public $now; // 現在日時(ローカル時間)
23
- public $now_mysql; // 現在日時(SQL形式)
24
 
25
- public $plugin_basename; // プラグイン ディレクトリの名前
26
- public $plugin_dir_path; // プラグイン ディレクトリのパス
27
- public $plugin_dir_url; // プラグイン ディレクトリのURL
28
- public $plugin_link; // プラグインページのURL
29
 
30
- public $upload_dir_path; // アップロード ディレクトリのパス
31
- public $upload_dir_url; // アップロード ディレクトリのURL
32
 
33
  private $db_name; // DB名
34
 
35
- public $options;
36
  protected $defaults = array(
37
- 'code1' => 'blogcard',
38
- 'code2' => null,
39
- 'code3' => null,
40
- 'code4' => null,
41
- 'auto-atag' => null,
42
- 'auto-url' => null,
43
- 'auto-external' => null,
44
- 'trail-slash' => '1',
45
- 'border-width' => '1px',
46
- 'border-style' => 'solid',
47
- 'border-color' => '#888888',
48
- 'width' => '500px',
49
- 'content-height' => '108px',
50
- 'margin-top' => '4px',
51
- 'margin-right' => '16px',
52
- 'margin-bottom' => '16px',
53
- 'margin-left' => '4px',
54
- 'card-top' => null,
55
- 'card-right' => null,
56
- 'card-bottom' => null,
57
- 'card-left' => null,
58
- 'centering' => null,
59
- 'radius' => null,
60
- 'shadow' => null,
61
- 'shadow-inset' => null,
62
- 'opacity' => null,
63
- 'hover' => null,
64
- 'special-format' => null,
65
- 'use-inline' => null,
66
- 'use-sitename' => '1',
67
- 'use-hatena' => null,
68
- 'display-url' => '1',
69
- 'display-excerpt' => '1',
70
- 'display-date' => '1',
71
- 'trim-title' => 80,
72
- 'trim-url' => 250,
73
- 'trim-count' => 250,
74
- 'trim-sitename' => 45,
75
- 'info-position' => '1',
76
- 'separator' => null,
77
- 'size-title' => '16px',
78
- 'size-url' => '10px',
79
- 'size-excerpt' => '11px',
80
- 'size-info' => '12px',
81
- 'size-added' => '12px',
82
- 'size-more' => '12px',
83
- 'size-plugin' => '10px',
84
- 'height-title' => '24px',
85
- 'height-url' => '10px',
86
- 'height-excerpt' => '17px',
87
- 'height-info' => '12px',
88
- 'height-added' => '12px',
89
- 'height-more' => '40px',
90
- 'height-plugin' => '10px',
91
  'color-title' => '#111111',
92
  'color-url' => '#4466ff',
93
  'color-excerpt' => '#333333',
 
94
  'color-info' => '#222222',
95
  'color-added' => '#222222',
96
- 'color-more' => '#444444',
97
  'color-plugin' => '#888888',
 
 
 
 
 
 
 
98
  'outline-color-title' => '#ffffff',
99
  'outline-color-url' => '#ffffff',
100
  'outline-color-excerpt' => '#ffffff',
 
101
  'outline-color-info' => '#ffffff',
102
  'outline-color-added' => '#ffffff',
103
- 'outline-color-more' => '#ffffff',
104
  'outline-color-plugin' => '#ffffff',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  'nowrap-title' => null,
106
- 'nowrap-url' => '1',
107
- 'ex-bgcolor' => '#ffffff',
108
- 'in-bgcolor' => '#f8f8f8',
109
- 'th-bgcolor' => '#eeeeee',
110
  'ex-border-color' => '#888888',
 
 
 
 
 
 
 
 
 
 
 
111
  'in-border-color' => '#888888',
 
 
 
 
 
 
 
 
 
 
112
  'th-border-color' => '#888888',
113
- 'in-get' => null,
114
- 'ex-image' => null,
115
- 'in-image' => null,
116
- 'th-image' => null,
117
- 'ex-info' => null,
118
- 'in-more-text' => null,
119
- 'th-more-text' => null,
120
- 'ex-more-text' => null,
121
- 'in-info' => null,
122
- 'th-info' => null,
123
- 'in-target' => null,
124
- 'ex-target' => '2',
125
- 'ex-thumbnail' => '13',
126
- 'in-thumbnail' => '1',
127
- 'ex-favicon' => '3',
128
- 'in-favicon' => '3',
129
- 'favicon-api' => 'https://www.google.com/s2/favicons?domain=%DOMAIN%',
130
- 'thumbnail-api' => 'https://s.wordpress.com/mshots/v1/%URL%?w=100',
131
- 'thumbnail-position'=> '2',
132
- 'thumbnail-width' => '100px',
133
- 'thumbnail-height' => '108px',
134
- 'thumbnail-shadow' => null,
135
- 'thumbnail-resize' => '1',
136
- 'cache-image-size' => '200',
137
- 'cache-time' => 31536000,
138
- 'user-agent' => null,
139
- 'flg-more' => null,
140
- 'flg-referer' => '1',
141
- 'flg-agent' => '1',
142
- 'flg-redir' => '1',
143
- 'flg-alive' => '1',
144
- 'flg-alive-count' => null,
145
- 'flg-ssl' => '1',
146
- 'flg-amp-url' => null,
147
- 'flg-relative-url' => null,
148
- 'flg-idn' => '1',
149
- 'flg-anker' => '1',
150
- 'flg-unlink' => '1',
151
- 'flg-get-pid' => null,
152
- 'flg-subdir' => '1',
153
- 'flg-invalid' => null,
154
- 'flg-edit-insert' => '1',
155
- 'flg-edit-qtag' => '1',
156
- 'flg-do-shortcode' => null,
157
- 'style-reset-img' => '1',
158
- 'style' => null,
159
- 'css-add' => null,
160
- 'css-sp' => null,
161
- 'css-file' => null,
162
- 'css-path' => null,
163
- 'css-url' => null,
164
- 'class-pc' => null,
165
- 'class-mobile' => null,
166
- 'sns-position' => '2',
167
- 'sns-tw' => '1',
168
- 'sns-fb' => '1',
169
- 'sns-hb' => '1',
170
- 'sns-po' => '1',
171
- 'link-all' => '1',
172
- 'blockquote' => null,
173
- 'nofollow' => null,
174
- 'presence' => null,
175
- 'thumbnail-dir' => null,
176
- 'thumbnail-url' => null,
177
- 'invalid-url' => null,
178
- 'invalid-time' => null,
179
- 'plugin-link' => null,
180
- 'plugin-name' => 'Pz-LinkCard',
181
- 'plugin-version' => '2.4.1',
182
- 'plugin-url' => 'https://popozure.info/pz-linkcard',
183
- 'pz-hbc-options' => null,
184
- 'debug-time' => null
185
  );
186
 
187
  public function __construct() {
@@ -203,6 +224,7 @@ class Pz_LinkCard {
203
  $this->upload_dir_path = $wp_upload_dir['basedir'].'/'.$this->slug.'/';
204
  $this->upload_dir_url = $wp_upload_dir['baseurl'].'/'.$this->slug.'/';
205
 
 
206
  $this->options = get_option('Pz_LinkCard_options', $this->defaults );
207
  foreach ($this->defaults as $key => $value) {
208
  if (!isset($this->options[$key])) {
@@ -219,31 +241,13 @@ class Pz_LinkCard {
219
  $this->activate();
220
  }
221
 
222
- // ショートコードの設定
223
- if ($this->options['auto-atag'] || $this->options['auto-url']) {
224
- add_filter ('the_content', array($this, 'auto_replace') ); // 自動置き換え
225
- add_shortcode ('pz-linkcard-auto-replace', array($this, 'shortcode') ); // 自動置き換え専用ショートコード
226
- }
227
- if ($this->options['code1']) {
228
- add_shortcode($this->options['code1'], array($this, 'shortcode'));
229
- }
230
- if ($this->options['code2']) {
231
- add_shortcode($this->options['code2'], array($this, 'shortcode'));
232
- }
233
- if ($this->options['code3']) {
234
- add_shortcode($this->options['code3'], array($this, 'shortcode'));
235
- }
236
- if ($this->options['code4']) {
237
- add_shortcode($this->options['code4'], array($this, 'shortcode'));
238
- }
239
-
240
  // 日本語化
241
  load_plugin_textdomain ($this->text_domain, false, $this->slug.'/languages');
242
 
243
  // 管理画面のとき
244
  if (is_admin()) {
245
- register_activation_hook (__FILE__, array($this, 'activate') ); // 有効化したときの処理
246
- register_deactivation_hook (__FILE__, array($this, 'deactivate') ); // 無効化したときの処理
247
  add_action ('admin_menu', array($this, 'add_menu') ); // 設定メニュー
248
  add_action ('admin_enqueue_scripts', array($this, 'enqueue_admin') ); // 設定メニュー用スクリプト
249
  add_action ('admin_print_footer_scripts', array($this, 'add_footer') ); // テキストエディタ用クイックタグ
@@ -252,12 +256,28 @@ class Pz_LinkCard {
252
  add_filter ('mce_external_plugins', array($this, 'add_mce_plugin') ); // ビジュアルエディタ用ボタン
253
  add_filter ('plugin_action_links_'.$this->plugin_basename, array($this, 'action_links') ); // プラグイン画面
254
  } else {
255
- add_action('wp_enqueue_scripts', array($this, 'enqueue'));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
256
  }
257
 
 
258
  add_action( 'pz_linkcard_check', array( $this, 'schedule_hook_check' ) );
259
  add_action( 'pz_linkcard_alive', array( $this, 'schedule_hook_alive' ) );
260
-
261
  if (!wp_next_scheduled('pz_linkcard_check')) {
262
  wp_schedule_event ( time() + 10 , 'hourly', 'pz_linkcard_check');
263
  }
@@ -267,196 +287,202 @@ class Pz_LinkCard {
267
  }
268
 
269
  // テキストリンクの行とURLのみの行をリンクカードへ置き換える処理(直接HTMLタグにするのでは無くショートコードに変換する。)
270
- public function auto_replace($content) {
271
- if (!$this->options['auto-external']) {
272
- if ($this->options['auto-atag']) {
273
- $content = preg_replace( '/(^|<br ?\/?>)(<p.*>)?<a .*href=[\'"](https?:\/\/[-_\.!~*()a-zA-Z0-9;\/?:\@&=+\$,%#]+)[\'"]((?!<IMG).)*<\/a>(<\/p>)?$/im', '[pz-linkcard-auto-replace url="$3"]', $content);
274
  }
275
- if ($this->options['auto-url']) {
276
- $content = preg_replace( '/(^|<br ?\/?>)(<p.*>)?(https?:\/\/[-_\.!~*()a-zA-Z0-9;\/?:\@&=+\$,%#]+)(<\/p>|<br ?\/?>)?$/im', '[pz-linkcard-auto-replace url="$3"]', $content);
277
  }
278
- if ($this->options['flg-do-shortcode']) {
279
- $content = do_shortcode($content);
280
  }
281
- return $content;
282
  } else {
283
- if ($this->options['auto-atag']) {
284
  preg_match_all('/(^|<br ?\/?>)(<p.*>)?(<a .*href=[\'"](https?:\/\/[-_\.!~*()a-zA-Z0-9;\/?:\@&=+\$,%#]+)[\'"]((?!<IMG).)*<\/a>)(<\/p>)?$/im', $content, $m );
285
- for ($i=0; $i<count($m[0]); $i++) {
286
- $url = $m[4][$i];
287
- if ($this->Pz_LinkType($url ) == 0) {
288
- $tag = '[pz-linkcard-auto-replace url="'.$url.'"]';
289
- $content = preg_replace('{'.$m[0][$i].'}', $tag, $content, 1);
290
  }
291
  }
292
  }
293
- if ($this->options['auto-url']) {
294
  preg_match_all('/(^|<br ?\/?>)(<p.*>)?(https?:\/\/[-_\.!~*()a-zA-Z0-9;\/?:\@&=+\$,%#]+)(<\/p>|<br ?\/?>)?$/im', $content, $m );
295
- for ($i=0; $i<count($m[0]); $i++) {
296
- $url = $m[3][$i];
297
  if ($this->Pz_LinkType($url ) == 0) {
298
- $tag = '[pz-linkcard-auto-replace url="'.$url.'"]';
299
- $content = preg_replace('{'.$m[0][$i].'}', $tag, $content, 1);
300
  }
301
  }
302
  }
303
- if ($this->options['flg-do-shortcode']) {
304
- $content = do_shortcode($content);
305
  }
306
- return $content;
307
  }
308
  }
309
 
310
  // ショートコード処理
311
- public function shortcode($atts, $content = null, $shortcode) {
312
  // 実行時間
313
  if ($this->options['debug-time']) {
314
  $start_time = microtime(true);
315
  echo PHP_EOL.'<!-- Pz-LkC [Debug mode: On] /-->'.PHP_EOL;
316
- echo '<!-- Pz-LkC [Shortcode] /-->'.PHP_EOL;
 
 
 
 
317
  }
318
-
319
- // URL
320
- $url = '';
321
- if (isset( $atts['url'] ) ) {
322
- $url = $atts['url'];
323
- } elseif (isset( $atts['href'] ) ) { // Aタグのようにhrefパラメータも有効にする
324
- $url = $atts['href'];
325
- } elseif (isset( $atts['uri'] ) ) { // 密かに記述ミス対応(uriやurIでもurlとして判定する)
326
- $url = $atts['uri'];
327
- } elseif (isset( $atts['ur1'] ) ) { // 密かに記述ミス対応(ur1でもurlとして判定する)
328
- $url = $atts['ur1'];
329
- } elseif (isset( $atts[0] ) ) { // 謎の記述ミスに対応
330
- if (preg_match('/url=[\s \'\"‘’“”″]*(.*?)[\s \'\"‘’“”″]*$/u', $atts[0], $m)) {
331
- $url = $m[1];
332
- } elseif (isset( $atts[1] ) ) { // 謎の記述ミスに対応
333
- if (preg_match('/url=[\s \'\"‘’“”″]*(.*?)[\s \'\"‘’“”″]*$/u', $atts[1], $m)) {
334
- $url = $m[1];
335
- }
336
- }
337
  }
338
- $url_org = $url; // 指定されたurlパラメータ
339
- if ($this->options['flg-relative-url']) {
340
- if (substr($url, 0, 1) == '/') {
341
- $url = home_url() . $url;
342
- }
343
  }
344
- $url = $this->pz_TrimURL( $url ); // URLエンティティ化など(無害化?)
345
- if ( !$url ) {
346
- if ($this->options['debug-time']) {
347
- echo '<!-- Pz-LkC ['.html_entity_decode(print_r($atts, true)).'] /-->'.PHP_EOL;
348
- }
349
  if (!$this->options['flg-invalid']) {
350
  $url_now = get_permalink();
351
  $post_id = url_to_postid($url_now );
352
  if ($post_id) {
353
- $this->options['flg-invalid'] = '1';
354
  $this->options['invalid-url'] = $url_now;
355
  $this->options['invalid-time'] = $this->now;
356
  $result = update_option('Pz_LinkCard_options', $this->options);
357
  }
358
  }
359
- return '<a name="pz-lkc-error"></a><div class="lkc-error"><div class="lkc-card"><div class="lkc-this-wrap"><div class="lkc-excerpt">'.$this->slug.': '.__('Incorrect URL specification.', $this->text_domain).'(url='.html_entity_decode($url_org).')'.PHP_EOL.'<!-- '.html_entity_decode(print_r($atts, true)).' /-->'.PHP_EOL.'</div></div></div></div>';
360
  }
361
  $atts['url'] = $url;
362
-
363
  // titleパラメータ
364
- $s_title = isset($atts['title'] ) ? $atts['title'] : null;
365
-
 
 
366
  // contentパラメータ
367
- if (isset($atts['content'] ) ) {
368
- $s_excerpt = $atts['content'];
369
- } elseif (isset($atts['contents'] ) ) {
370
- $s_excerpt = $atts['contents'];
371
- } elseif (isset($atts['description'] ) ) {
372
- $s_excerpt = $atts['description'];
373
- } else {
374
- $s_excerpt = null;
 
 
375
  }
376
-
377
  // 囲まれ文字(ショートコード1のみ有効)
378
- if ($shortcode == $this->options['code1']) {
379
- switch (isset($this->options['use-inline']) ? $this->options['use-inline'] : null) {
380
  case '1':
381
- $s_excerpt = isset($content) ? $content : '';
382
  break;
383
  case '2':
384
- $s_title = isset($content) ? $content : '';
385
  break;
386
  }
387
  }
388
-
389
  // 記事内容取得
390
- $data = $this->pz_GetHTML ( $atts );
391
-
392
  // 実行時間
393
  if ($this->options['debug-time']) {
394
  $end_time = microtime(true);
395
  $elasped_time = number_format($end_time - $start_time, 8, '.', ',');
396
- echo '<!-- Pz-LkC [ElaspedTime='.$elasped_time.'sec] /-->'.PHP_EOL;
 
 
397
  }
398
-
399
- return $data;
400
  }
401
 
402
  // キャッシュやリンク先からリンクカードのHTMLを生成
403
- function pz_GetHTML( $atts, $content = null ) {
404
  if ($this->options['debug-time']) {
405
- echo '<!-- Pz-LkC [GetHTML] /-->'.PHP_EOL;
 
 
406
  }
407
-
 
 
 
 
 
 
 
 
 
408
  // モバイルチェック
409
- if (function_exists('wp_is_mobile') && wp_is_mobile()) {
410
  $is_mobile = true;
411
- } else {
412
- $is_mobile = false;
413
  }
414
- if ($this->options['debug-time']) {
415
- echo '<!-- Pz-LkC [MOBILE='.$is_mobile.'] /-->'.PHP_EOL;
416
  }
417
-
418
- $url = $atts['url'];
419
- if (!isset($url) || $url == '' ) {
420
- return null;
421
- }
422
- if ($this->options['debug-time']) {
423
- echo '<!-- Pz-LkC [URL='.$url.'] /-->'.PHP_EOL;
424
- }
425
-
426
  // URLパース(ドメイン名などを抽出)
427
- $url_m = parse_url( $url );
428
- $scheme = $url_m['scheme']; // スキーム
429
- $domain = $url_m['host']; // ドメイン名
430
- $domain_url = $scheme.'://'.$url_m['host']; // ドメインURL
431
- $location = substr($url, mb_strlen($domain_url)); // ドメイン名以降
432
-
433
  // 自サイトチェック
434
- $link_type = $this->Pz_LinkType($url);
435
-
436
  // モバイルかPCかのクラス名を追加
437
- $class_id = 'linkcard';
438
- if ($is_mobile && $this->options['class-mobile']) {
439
- $class_id .= ' '.$this->options['class-mobile'];
440
  } elseif ($this->options['class-pc']) {
441
- $class_id .= ' '.$this->options['class-pc'];
442
  }
443
-
444
  // キャッシュから取得
445
- $data_id = null;
446
- $data = array();
447
- $data['url'] = $url;
448
- $result = $this->pz_GetCache( $data );
449
  if (isset($result) && is_array($result) && isset($result['url'])) {
450
- $data = $result;
451
- $data_id = $data['id'];
452
- $url = $data['url'];
453
  }
454
  if ($this->options['debug-time']) {
455
- echo '<!-- Pz-LkC [CACHE='.$data_id.'] /-->'.PHP_EOL;
456
  }
457
-
458
  // 内部リンクの処理
459
  if ( $link_type ) {
 
 
 
460
  // リンクターゲットの設定
461
  $target = ''; // 同ページに開く
462
  if (isset($this->options['in-target'])) {
@@ -465,55 +491,48 @@ class Pz_LinkCard {
465
  }
466
  }
467
 
468
- // followパラメータ
 
469
  if ( (isset($atts['follow'] ) && mb_strtolower($atts['follow']) == 'no') || (isset($atts['nofollow'] ) && mb_strtolower($atts['nofollow']) == 'true') ) {
470
- $nofollow = ' rel="nofollow"'; // nofollow指定。趣味の問題?
471
- } else {
472
- $nofollow = '';
473
  }
474
 
475
  // キャッシュが無い、もしくは強制取得
476
  if ( is_null($data_id) || ( isset($atts['force']) && $atts['force'] == true ) ) {
477
- if ($this->options['debug-time']) {
478
- echo '<!-- Pz-LkC [IN-POST] /-->'.PHP_EOL;
479
- }
480
- $data = $this->pz_GetPost( $data ); // 最新記事内容を取得
481
  $data['link_type'] = 1;
482
- if ($this->options['debug-time']) {
483
- echo '<!-- Pz-LkC [IN-SET] /-->'.PHP_EOL;
484
- }
485
- $result = $this->pz_SetCache( $data ); // 保存
486
  } elseif ($this->options['in-get'] <> 2) {
487
- if ($this->options['debug-time']) {
488
- echo '<!-- Pz-LkC [IN-POST] /-->'.PHP_EOL;
489
- }
490
  $data = $this->pz_GetPost( $data ); // 最新記事内容を取得
491
  $data['link_type'] = 1;
492
  }
493
  }
494
-
495
  // 外部リンクの処理
496
  if ( !$link_type ) {
 
 
 
497
  // リンクターゲットの設定
498
- $target = ''; // 同ページに開く
499
  if (isset($this->options['ex-target'] ) ) {
500
  if ($this->options['ex-target'] == '1' || ($this->options['ex-target'] == '2' && !$is_mobile ) ) {
501
- $target = ' target="_blank"'; // 新しいページで開く
502
  }
503
  }
504
 
505
- // followパラメータ
506
- if (isset($this->options['nofollow'] ) || (isset($atts['follow'] ) && mb_strtolower($atts['follow']) == 'no') || (isset($atts['nofollow'] ) && mb_strtolower($atts['nofollow']) == 'true') ) {
507
- $nofollow = ' rel="nofollow"'; // nofollow指定。趣味の問題?
508
- } else {
509
- $nofollow = '';
 
 
510
  }
 
511
 
512
  // キャッシュが無い、もしくは強制取得
513
  if ( is_null($data_id) || ( isset($atts['force']) && $atts['force'] == true ) ) {
514
- if ($this->options['debug-time']) {
515
- echo '<!-- Pz-LkC [OUT-CURL] /-->'.PHP_EOL;
516
- }
517
  $result = $this->pz_GetCURL( $data ); // cURLで記事内容を取得
518
  if ( isset($result) && is_array($result) && isset($result['url']) ) {
519
  $data = $result;
@@ -522,25 +541,25 @@ class Pz_LinkCard {
522
  }
523
  }
524
  }
525
-
526
  // 念のため初期化
527
- $data_id = (isset($data['id']) ? $data['id'] : null);
528
- $site_name = (isset($data['site_name']) ? $data['site_name'] : null);
529
- $title = (isset($data['title']) ? $data['title'] : null);
530
- $excerpt = (isset($data['excerpt']) ? $data['excerpt'] : null);
531
- $post_date = (isset($data['post_date']) ? $data['post_date'] : null);
532
- $thumbnail_url = (isset($data['thumbnail']) ? $data['thumbnail'] : null);
533
- $favicon_url = (isset($data['favicon']) ? $data['favicon'] : null);
534
- $result_code = (isset($data['result_code']) ? $data['result_code'] : null);
535
- $sns_tw = (isset($data['sns_twitter']) ? $data['sns_twitter'] : null);
536
- $sns_fb = (isset($data['sns_facebook']) ? $data['sns_facebook'] : null);
537
- $sns_hb = (isset($data['sns_hatena']) ? $data['sns_hatena'] : null);
538
- $sns_po = (isset($data['sns_pocket']) ? $data['sns_pocket'] : null);
539
- $alive_result = (isset($data['alive_result']) ? $data['alive_result'] : null);
540
-
541
- $thumbnail = null;
542
- $favicon = null;
543
-
544
  // ラッピング
545
  switch ($link_type) {
546
  case '1':
@@ -551,8 +570,8 @@ class Pz_LinkCard {
551
  $more = null;
552
  $more_text = null;
553
  $info = isset($this->options['th-info']) ? $this->options['th-info'] : null ;
554
- $sw_thumbnail = isset($this->options['in-thumbnail']) ? $this->options['in-thumbnail'] : '0' ;
555
- $sw_favicon = isset($this->options['in-favicon']) ? $this->options['in-favicon'] : '0' ;
556
  break;
557
  case '2':
558
  $wrap_op = '<div class="lkc-internal-wrap">';
@@ -562,8 +581,8 @@ class Pz_LinkCard {
562
  $more = isset($this->options['flg-more']) ? $this->options['flg-more'] : null ;
563
  $more_text = isset($this->options['in-more-text']) ? $this->options['in-more-text'] : null ;
564
  $info = isset($this->options['in-info']) ? $this->options['in-info'] : null ;
565
- $sw_thumbnail = isset($this->options['in-thumbnail']) ? $this->options['in-thumbnail'] : '0' ;
566
- $sw_favicon = isset($this->options['in-favicon']) ? $this->options['in-favicon'] : '0' ;
567
  break;
568
  default:
569
  $wrap_op = '<div class="lkc-external-wrap">';
@@ -572,258 +591,248 @@ class Pz_LinkCard {
572
  $added_cl = '</div>';
573
  $more = isset($this->options['flg-more']) ? $this->options['flg-more'] : null ;
574
  $more_text = isset($this->options['ex-more-text']) ? $this->options['ex-more-text'] : null ;
575
- $info = isset($this->options['ex-info']) ? $this->options['ex-info'] : '' ;
576
- $sw_thumbnail = isset($this->options['ex-thumbnail']) ? $this->options['ex-thumbnail'] : '0' ;
577
- $sw_favicon = isset($this->options['ex-favicon']) ? $this->options['ex-favicon'] : '0' ;
578
  break;
579
  }
580
-
581
  // 外部リンクの処理
582
  if ( !$link_type && isset($this->options['use-hatena']) && !is_null($this->options['use-hatena'] ) ) {
583
  // 「はてなブログカード」をそのまま利用する
584
- $tag = '<div class="lkc-iframe-wrap"><iframe src="https://hatenablog-parts.com/embed?url=' .$url.'" class="lkc-iframe" scrolling="no" frameborder="0"></iframe></div>';
585
  if (isset($this->options['blockquote']) ? $this->options['blockquote'] : null == '1') {
586
- $tag = '<div class="'.$class_id.'"><blockquote class="lkc-quote">'.$tag.'</blockquote></div>';
587
  } else {
588
- $tag = '<div class="'.$class_id.'">'.$tag.'</div>';
589
  }
590
- return $tag; // タグを出力してさっさと終了
591
  }
592
-
593
  // サムネイル取得
594
  if ( !$this->options['thumbnail-position'] || ( $result_code <> 0 && $result_code <> 200 ) ) {
595
  $thumbnail = null;
596
  } else {
597
- if ($sw_thumbnail == '1' || $sw_thumbnail == '13') { // 直接取得
598
- if ( !$link_type ) {
599
- $thumbnail_url = $this->pz_GetThumbnail($thumbnail_url); // 外部サイトのサムネイルをキャッシュ
600
  }
601
- if ( isset($thumbnail_url) && $thumbnail_url <> '' ) {
602
- $thumbnail = '<img class="lkc-thumbnail-img" src="'.$thumbnail_url.'" alt="" />';
603
- } elseif ($sw_thumbnail == '13') { // 直接取得に失敗
604
- $sw_thumbnail = '3';
605
  }
606
  }
607
- if ($sw_thumbnail == '3') { // WebAPIを利用
608
  // 画像取得(WebAPI)
609
- if (isset($this->options['thumbnail-api'])) {
610
- $thumbnail = preg_replace('/%DOMAIN_URL%/', $domain_url, $this->options['thumbnail-api'] );
611
- $thumbnail = preg_replace('/%DOMAIN%/', $domain, $thumbnail);
612
- $thumbnail = preg_replace('/%URL%/', rawurlencode($url), $thumbnail);
613
- $thumbnail = '<img class="lkc-thumbnail-img" src="'.$thumbnail.'" alt="" />';
614
  }
615
  }
616
  }
617
-
618
  // ファビコン取得
619
- if (!isset($this->options['info-position'])) {
620
  $favicon = null;
621
  } else{
622
- if ($sw_favicon == '1' || $sw_favicon == '13') { // 直接取得
623
- if ( !is_null($favicon_url ) ) {
624
  $favicon = '<img class="lkc-favicon" src="'.$favicon_url.'" alt="" width=16 height=16 />';
625
- } elseif ($sw_favicon == '13') { // 直接取得に失敗
626
- $sw_favicon == '3';
627
  }
628
  }
629
- if ($sw_favicon == '3') { // WebAPIを利用
630
  // サイトアイコン取得(WebAPI)
631
- if (isset($this->options['favicon-api'])) {
632
- $favicon = preg_replace('/%DOMAIN_URL%/', $domain_url, $this->options['favicon-api'] );
633
- $favicon = preg_replace('/%DOMAIN%/', $domain, $favicon);
634
- $favicon = preg_replace('/%URL%/', rawurlencode($url), $favicon);
635
- $favicon = '<img class="lkc-favicon" src="'.$favicon.'" alt="" width=16 height=16 />';
636
  }
637
  }
638
  }
639
-
640
  // タイトル
641
- if (!isset($title) || $title == '') {
642
- $title = esc_html($url); // タイトル取得できていなかったらURLをセットする
643
  }
644
-
645
  // パラメータ取得(タイトル・抜粋文)
646
- if (isset($atts['title'])) { // titleパラメータ
647
  $title = $atts['title'];
648
- $excerpt = '';
649
  }
650
- if ($excerpt == '') {
651
- if (isset($atts['content'])) { // contrentパラメータ
652
- $excerpt = $atts['content'];
653
- } elseif (isset($atts['contents'])) { // contentsパラメータ
654
- $excerpt = $atts['contents'];
655
- } elseif (isset($atts['description'])) { // descriptionパラメータ
656
- $excerpt = $atts['description'];
657
- }
658
  }
659
-
660
  // タイトル整形
661
- if (isset($title)) {
662
- $str = $title;
663
- $str = strip_tags($str); // タグの除去
664
- $str = str_replace(array("\r", "\n"), '', $str); // 改行削除
665
- $str = esc_html($str); // 念のためエスケープ
666
- $str = mb_strimwidth($str, 0, (isset($this->options['trim-title']) ? $this->options['trim-title'] : $this->defaults['trim-title'] ) , '...');
667
- $title = $str;
 
 
668
  }
669
-
670
  // 抜粋文整形(抜粋文非表示の場合、空欄にする)
671
- if (!isset($this->options['display-excerpt']) || is_null($this->options['display-excerpt'])) {
672
  $excerpt = '';
673
  } else {
674
- if (isset($excerpt)) {
675
- $str = $excerpt;
676
- $str = strip_tags($str); // タグの除去
677
- $str = preg_replace('/<!--more-->.+/is', '', $str); // moreタグ以降削除
678
- $str = preg_replace('/\[[^]]*\]/', '', $str); // ショートコードすべて除去
679
- $str = str_replace(array("\r", "\n"), '', $str); // 改行削除
680
- $str = esc_html($str); // 念のためエスケープ
681
- $str = mb_strimwidth($str, 0, (isset($this->options['trim-count']) ? $this->options['trim-count'] : $this->defaults['trim-count'] ) , '...');
682
- $excerpt = $str;
 
 
683
  }
684
  }
685
-
686
  // サイト名称を使わない場合、ドメイン名で上書き
687
- $site_title = '';
688
- if ((isset($this->options['use-sitename']) ? $this->options['use-sitename'] : null) && $site_name) {
689
- $c_site_name = $site_name;
690
- $site_name = mb_strimwidth($site_name, 0, (isset($this->options['trim-sitename']) ? $this->options['trim-sitename'] : $this->defaults['trim-sitename'] ) , '...');
691
- if ($site_name <> $c_site_name) {
692
- $site_title = ' title="'.$c_site_name.'"';
 
 
 
 
693
  }
694
  } else {
695
- $site_name = $domain;
696
  // 日本語ドメイン対応
697
- if (isset($this->options['flg-idn']) ? true : false) {
698
- if (function_exists('idn_to_utf8')) {
699
- if (substr( $domain, 0, 4 ) == 'xn--') {
700
- $site_name = idn_to_utf8( $domain );
701
- }
702
- }
703
  }
704
  }
705
-
706
  // リンク先URL
707
- if ( (isset($this->options['flg-unlink']) ? true : false) && (array_search($alive_result, array('403','404','410'))) ) {
708
- // Not found の時は見え消ししてリンクしない
709
- $a_op_all = '<div style="cursor: not-allowed;" title="">';
710
- $a_cl_all = '</div>';
711
- $a_op = '';
712
- $a_cl = '';
713
- $st_op = '<strike>';
714
- $st_cl = '</strike>';
715
- } elseif ((isset($this->options['link-all']) ? $this->options['link-all'] : null) == '1') {
716
  // カード全体をリンク(どこをクリックしても良いのが分かり易い)
717
- $a_op_all = '<a class="lkc-link no_icon" href="'.$url.'"'.$target.$nofollow.'>';
718
- $a_cl_all = '</a>';
719
- $a_op = '';
720
- $a_cl = '';
721
- $st_op = '';
722
- $st_cl = '';
723
  } else {
724
  // タイトルとかURLとかを個別でリンク(タイトルや抜粋文などの文字を範囲指定をしてコピー等がし易い)
725
- $a_op_all = '';
726
- $a_cl_all = '';
727
- $a_op = '<a class="lkc-link no_icon" href="'.$url.'"'.$target.$nofollow.'>';
728
- $a_cl = '</a>';
729
- $st_op = '';
730
- $st_cl = '';
731
  }
732
-
733
  // ソーシャルカウントの表示
734
- $sns = null;
735
- $sns_info = null;
736
- $sns_title = null;
737
- if ( isset($this->options['sns-position']) ? $this->options['sns-position'] : null ) {
738
- $sns = '';
739
  // カード全体をリンクにするときは表示のみ
740
- if ((isset($this->options['link-all']) ? $this->options['link-all'] : null) == '1') {
741
- if (isset($this->options['sns-tw']) && !is_null($this->options['sns-tw']) && $sns_tw > 0) {
742
- $sns .= ' <div class="lkc-sns-tw">'.$sns_tw.'&nbsp;tweet'.(($sns_tw > 1) ? 's' : '').'</div>';
743
  }
744
- if (isset($this->options['sns-fb']) && !is_null($this->options['sns-fb']) && $sns_fb > 0) {
745
- $sns .= ' <div class="lkc-sns-fb">'.$sns_fb.'&nbsp;share'.(($sns_fb > 1) ? 's' : '').'</div>';
746
  }
747
- if (isset($this->options['sns-hb']) && !is_null($this->options['sns-hb']) && $sns_hb > 0) {
748
- $sns .= ' <div class="lkc-sns-hb">'.$sns_hb.'&nbsp;user'.(($sns_hb > 1) ? 's' : '').'</div>';
749
  }
750
- if (isset($this->options['sns-po']) && !is_null($this->options['sns-po']) && $sns_po > 0) {
751
  $sns .= ' <div class="lkc-sns-po">'.$sns_po.'&nbsp;pocket'.(($sns_po > 1) ? 's' : '').'</div>';
752
  }
753
  } else {
754
  // 外部リンクアイコンを表示させるプラグイン対応のため no_icon を付与
755
- if (isset($this->options['sns-tw']) && !is_null($this->options['sns-tw']) && $sns_tw > 0) {
756
  $sns .= ' <a class="lkc-sns-tw no_icon" href="https://twitter.com/search?q=' .preg_replace('/.*\/\/(.*)/', '$1', $url).'&text='.esc_html($title).'" target="_blank">'.$sns_tw.'&nbsp;tweet'.(($sns_tw > 1) ? 's' : '').'</a>';
757
  }
758
- if (isset($this->options['sns-fb']) && !is_null($this->options['sns-fb']) && $sns_fb > 0) {
759
  $sns .= ' <a class="lkc-sns-fb no_icon" href="https://www.facebook.com/" target="_blank">'.$sns_fb.'&nbsp;share'.(($sns_fb > 1) ? 's' : '').'</a>';
760
  }
761
- if (isset($this->options['sns-hb']) && !is_null($this->options['sns-hb']) && $sns_hb > 0) {
762
  $sns .= ' <a class="lkc-sns-hb no_icon" href="https://b.hatena.ne.jp/entry/s/' .preg_replace('/.*\/\/(.*)/', '$1', $url).'" target="_blank">'.$sns_hb.'&nbsp;user'.(($sns_hb > 1) ? 's' : '').'</a>';
763
  }
764
- if (isset($this->options['sns-po']) && !is_null($this->options['sns-po']) && $sns_po > 0) {
765
  $sns .= ' <a class="lkc-sns-po no_icon" href="https://getpocket.com/" target="_blank">'.$sns_po.'&nbsp;pocket'.(($sns_po > 1) ? 's' : '').'</a>';
766
  }
767
  }
768
- if ($sns) {
769
- if ($this->options['sns-position'] == '1') {
770
- $sns_title = '<div class="lkc-share">'.$sns.'</div>';
771
  } else {
772
- $sns_info = '&nbsp;'.'<div class="lkc-share">'.$sns.'</div>';
773
  }
774
  }
775
  }
776
-
777
  // サムネイル
778
- if ($thumbnail) {
779
- $thumbnail = '<figure class="lkc-thumbnail">'.$thumbnail.'</figure>';
780
  }
781
-
782
  // 日本語ドメイン対応
783
- if (isset($this->options['flg-idn']) ? true : false) {
784
- if (function_exists('idn_to_utf8')) {
785
- if (substr( $domain, 0, 4 ) == 'xn--') {
786
- $url = $scheme.'://'.idn_to_utf8( $domain ).$location;
787
- }
788
- }
789
  }
790
-
791
  // 続きを読むボタン
792
- if ( $more && $more_text ) {
793
  $moretag = '<div class="lkc-more">'.$a_op.'<div class="lkc-more-text">'.$more_text.'</div>'.$a_cl.'</div>';
794
  } else {
795
- $moretag = '';
796
  }
797
-
798
  // リンク先URL
799
- $url1 = '';
800
- $url2 = '';
801
- if ($this->options['display-url']) {
802
- if ($this->options['display-url'] == '2') {
803
  $url2 = '&nbsp;<div class="lkc-url-info"><cite>'.$st_op.$a_op.$url.$st_cl.$a_cl.'</cite></div>';
804
  } else {
805
  $url1 = '<div class="lkc-url"><cite>'.$st_op.$a_op.$url.$st_cl.$a_cl.'</cite></div>';
806
  }
807
  }
808
-
809
  // サイト情報
810
- if ($info) {
811
  $added_info = $added_op.$info.$added_cl;
812
  } else {
813
- $added_info = '';
814
  }
815
- if ($this->options['display-date'] && $link_type) {
816
- $post_date = '<div class="lkc-date">'.date('Y.m.d', strtotime($post_date)).'</div>';
817
  } else {
818
- $post_date = '';
819
  }
820
  $domain_info = '<div class="lkc-info">'.$a_op.$favicon.'<div class="lkc-domain"'.$site_title.'>'.$site_name.'</div>'.$added_info.$a_cl.$sns_info.$url2.$post_date.'</div>';
821
-
822
- // 記事内容
823
- //$content = '<div class="lkc-content">'.$a_op.$thumbnail.'<div class="lkc-title"><div class="lkc-title-text">'.$title.'</div>'.$a_cl.$sns_title.'</div>'.$url1.'<div class="lkc-excerpt">'.$excerpt.'</div>'.$moretag.'</div>';
824
-
825
  // Google AMPに対応
826
- if ( (function_exists('is_amp_endpoint') && is_amp_endpoint()) || isset($this->amp) || ( isset($this->options['flg-amp-url']) && ( preg_match('/\/amp\/?$/i', $_SERVER["REQUEST_URI"]) || preg_match('/\?amp=1$/i', $_SERVER["REQUEST_URI"]) ) ) ) {
827
  // 簡易タグ作成
828
  $tag = '<table border="1" cellspacing="0" cellpadding="4"><tbody></tr><tr><td>'.$excerpt.'<br>'.$a_op_all.$a_op.$title.$a_cl.$a_cl_all.' - '.$site_name.'</td></tr></tbody></table>';
829
  } else {
@@ -842,39 +851,36 @@ class Pz_LinkCard {
842
  $tag = $wrap_op.$a_op_all.'<div class="lkc-card"><div class="lkc-content">'.$a_op.$thumbnail.'<div class="lkc-title"><div class="lkc-title-text">'.$title.'</div>'.$a_cl.$sns_title.'</div>'.$url1.'<div class="lkc-excerpt">'.$excerpt.'</div>'.$moretag.'</div><div class="clear"></div></div>'.$a_cl_all.$wrap_cl;
843
  }
844
  }
845
-
846
  // 引用文扱い
847
  if (isset($this->options['blockquote']) ? $this->options['blockquote'] : null == '1') {
848
  $tag = '<div class="'.$class_id.'"><blockquote class="lkc-quote">'.$tag.'</blockquote></div>';
849
  } else {
850
  $tag = '<div class="'.$class_id.'">'.$tag.'</div>';
851
  }
852
-
853
- return $tag;
854
  }
855
 
856
  // URLのエンティティ化など(無害化?)
857
- function pz_TrimURL($url = null) {
858
- if (!isset($url) || $url == '') {
859
- $url = null;
860
- return $url;
861
- }
862
-
863
- $url = html_entity_decode($url);
864
- if ($this->options['debug-time']) {
865
- echo '<!-- Pz-LkC [URL1='.$url.'] /-->'.PHP_EOL;
866
- }
867
- $url = preg_replace('/^[\s \'\"‘’“”″]*(.*?)[\s \'\"‘’“”″]*$/u', '\1', $url); // 色んな打ち間違え対応
868
  if ($this->options['debug-time']) {
869
- echo '<!-- Pz-LkC [URL2='.$url.'] /-->'.PHP_EOL;
 
 
870
  }
871
- $url = esc_url($url); // プロトコル除外など
872
- if ($this->options['debug-time']) {
873
- echo '<!-- Pz-LkC [URL3='.$url.'] /-->'.PHP_EOL;
874
  }
875
- switch (isset($this->options['trail-slash']) ? $this->options['trail-slash'] : null) {
 
 
 
 
 
876
  case '1': // URLがドメイン名だけの場合、最後のスラッシュを除外する
877
- $array_url = parse_url($url);
878
  if (!isset($array_url['path']) || $array_url['path'] == '/') {
879
  $url = rtrim($url, '/');
880
  }
@@ -883,15 +889,19 @@ class Pz_LinkCard {
883
  $url = rtrim($url, '/');
884
  break;
885
  }
 
886
  if ($this->options['debug-time']) {
887
- echo '<!-- Pz-LkC [URL4='.$url.'] /-->'.PHP_EOL;
 
 
 
888
  }
889
-
890
  return $url;
891
  }
892
 
893
  // 内部サイト・外部サイトの判断
894
- function pz_LinkType($url = null) {
895
  if (substr($url, 0, mb_strlen(home_url() ) ) == home_url() ) {
896
  if (get_permalink() == $url) {
897
  $link_type = 1; // 自ページ
@@ -928,7 +938,7 @@ class Pz_LinkCard {
928
  }
929
 
930
  // 相対パスをURLにする
931
- public function pz_RelToURL( $base_url = '', $rel_path = '' ) {
932
  if (preg_match('/^https?\:\/\//', $rel_path ) ) { // 絶対パスだった場合
933
  return $rel_path;
934
  } elseif (substr($rel_path, 0, 2) == '//' ) { // 絶対パスだった場合(スキーム省略)
@@ -942,7 +952,7 @@ class Pz_LinkCard {
942
  }
943
 
944
  // ソーシャルカウント取得
945
- public function pz_RenewSNSCount( $data ) {
946
  if (!isset($this->options['sns-position']) || $this->options['sns-position'] == '') {
947
  return null;
948
  }
@@ -967,14 +977,17 @@ class Pz_LinkCard {
967
  $sns_renew = true;
968
  }
969
 
970
- // Twitter count.json 2015/11/21 非公式サービス終了に伴い停止→代替APIへ変更
 
 
 
971
  if (isset($this->options['sns-tw']) && !is_null($this->options['sns-tw'])) {
972
  $count_before = isset($data['sns_twitter']) ? $data['sns_twitter'] : -1;
973
  if ($sns_renew || $count_before < 0) {
974
- //$result = wp_remote_get( 'http://urls.api.twitter.com/1/urls/count.json?url=' .rawurlencode($data['url']), $opt );
975
- $result = wp_remote_get( 'https://jsoon.digitiminimi.com/twitter/count.json?url=' .rawurlencode($data['url']), $opt );
976
  if (isset($result) && !is_wp_error($result) && $result['response']['code'] == 200) {
977
- $count = intval(json_decode($result['body'])->count);
 
978
  if ($count > $count_before) {
979
  $data['sns_twitter'] = $count;
980
  $update_cnt = true;
@@ -983,25 +996,27 @@ class Pz_LinkCard {
983
  }
984
  }
985
 
986
- if (isset($this->options['sns-fb']) && !is_null($this->options['sns-fb'])) {
987
- $count_before = intval(isset($data['sns_facebook']) ? $data['sns_facebook'] : -1);
988
- if ($sns_renew || $count_before < 0) {
989
- $result = wp_remote_get( 'https://graph.facebook.com/?id=' .rawurlencode($data['url']), $opt );
990
- if (isset($result) && !is_wp_error($result) && $result['response']['code'] == 200) {
991
- $json = json_decode($result['body']);
992
- $count = intval(isset($json->share->share_count) ? $json->share->share_count : 0);
993
- if ($count > $count_before) {
994
- $data['sns_facebook'] = $count;
995
- $update_cnt = true;
996
- }
997
- }
998
- }
999
- }
 
1000
 
 
1001
  if (isset($this->options['sns-hb']) && !is_null($this->options['sns-hb'])) {
1002
  $count_before = isset($data['sns_hatena']) ? $data['sns_hatena'] : -1;
1003
  if ($sns_renew || $count_before < 0) {
1004
- $result = wp_remote_get( 'http://api.b.st-hatena.com/entry.count?url=' .rawurlencode($data['url']), $opt );
1005
  if (isset($result) && !is_wp_error($result) && $result['response']['code'] == 200) {
1006
  $count = intval($result['body']);
1007
  if ($count > $count_before) {
@@ -1012,13 +1027,14 @@ class Pz_LinkCard {
1012
  }
1013
  }
1014
 
 
1015
  if (isset($this->options['sns-po']) && !is_null($this->options['sns-po'])) {
1016
  $count_before = isset($data['sns_pocket']) ? $data['sns_pocket'] : -1;
1017
  if ($sns_renew || $count_before < 0) {
1018
- $result = wp_remote_get( 'https://widgets.getpocket.com/v1/button?label=pocket&count=vertical&align=left&v=1&src=https&url=' .rawurlencode($data['url']), $opt );
1019
  if (isset($result) && !is_wp_error($result) && $result['response']['code'] == 200) {
1020
- preg_match('/<em id="cnt">([0-9]*)<\/em>/', $result['body'], $m);
1021
- $count = intval($m[1] ? $m[1] : 0);
1022
  if ($count > $count_before) {
1023
  $data['sns_pocket'] = $count;
1024
  $update_cnt = true;
@@ -1059,7 +1075,7 @@ class Pz_LinkCard {
1059
  }
1060
 
1061
  // キャッシュデータを取得
1062
- public function pz_GetCache( $data ) {
1063
  if (!isset($data) || !is_array($data)) {
1064
  return null;
1065
  }
@@ -1083,7 +1099,7 @@ class Pz_LinkCard {
1083
  }
1084
 
1085
  // キャッシュデータを保存
1086
- public function pz_SetCache($data) {
1087
  global $wpdb;
1088
  if (!isset($data) || !is_array($data)) {
1089
  return null;
@@ -1091,22 +1107,29 @@ class Pz_LinkCard {
1091
  if (!isset($data['url']) || is_null($data['url']) || $data['result_code'] < 100) {
1092
  return null;
1093
  }
 
 
1094
  $url = $this->pz_TrimURL($data['url']);
1095
  $data['url'] = $url;
 
 
1096
  if (!isset($data['url_key']) || is_null($data['url_key']) || $data['url_key'] == '' ) {
1097
  $data['url_key'] = hash( 'sha256', esc_url( $url ), true);
1098
  }
1099
 
1100
- if (!isset($data['regist_result']) || !$data['regist_result']) { // 最初登録時情報
 
1101
  $data['regist_title'] = $data['title'];
1102
  $data['regist_excerpt'] = $data['excerpt'];
1103
  $data['regist_charset'] = $data['charset'];
1104
  $data['regist_result'] = $data['result_code'];
1105
  $data['regist_time'] = $this->now;
1106
  }
1107
- $data['uptime'] = $this->now; // 最終更新日時
1108
 
1109
- // 更新してみる
 
 
 
1110
  if ( isset($data['id']) ) {
1111
  $result = $wpdb->update(
1112
  $this->db_name,
@@ -1124,33 +1147,38 @@ class Pz_LinkCard {
1124
  )
1125
  );
1126
  }
 
1127
  if (!$result) {
1128
- $data['regist'] = $this->now_mysql; // 登録日
1129
- // 更新できなかったら挿入
 
1130
  unset($data['id']);
1131
  $result = $wpdb->insert(
1132
  $this->db_name,
1133
  $data
1134
  );
 
1135
  if (!$result) {
1136
- // 挿入できなかったら日本語項目を落としてなるべく登録する
1137
  unset($data['site_name']);
1138
  $result = $wpdb->insert(
1139
  $this->db_name,
1140
  $data
1141
  );
 
1142
  if (!$result) {
1143
  unset($data['excerpt']);
1144
  $result = $wpdb->insert(
1145
  $this->db_name,
1146
  $data
1147
  );
 
1148
  if (!$result) {
1149
  unset($data['title']);
1150
  $result = $wpdb->insert(
1151
  $this->db_name,
1152
  $data
1153
  );
 
1154
  if (!$result) {
1155
  return $data;
1156
  }
@@ -1158,11 +1186,12 @@ class Pz_LinkCard {
1158
  }
1159
  }
1160
  }
 
1161
  return $this->pz_GetCache($data);
1162
  }
1163
 
1164
  // キャッシュデータを削除
1165
- public function pz_DelCache($data) {
1166
  global $wpdb;
1167
  if (!isset($data) || !is_array($data)) {
1168
  return null;
@@ -1180,7 +1209,7 @@ class Pz_LinkCard {
1180
  }
1181
 
1182
  // サイト内取得
1183
- public function pz_GetPost( $data ) {
1184
  // サイト名取得
1185
  $site_name = get_bloginfo('name');
1186
 
@@ -1309,12 +1338,12 @@ class Pz_LinkCard {
1309
  }
1310
 
1311
  // URLパース(ドメイン名などを抽出)
1312
- $url_m = parse_url( $url );
1313
- $scheme = $url_m['scheme']; // スキーム
1314
- //$domain = $url_m['host']; // ドメイン名
1315
- //$domain_url = $scheme.'://'.$url_m['host']; // ドメインURL
1316
- $location = substr($url, mb_strlen($domain_url)); // ドメイン名以降
1317
-
1318
  // データセット
1319
  if (isset($data['title']) && $data['title'] == $title ) {
1320
  $before['mod_title'] = 0;
@@ -1335,7 +1364,7 @@ class Pz_LinkCard {
1335
  $data['site_name'] = $site_name;
1336
  $data['title'] = $title;
1337
  $data['excerpt'] = $excerpt;
1338
- $data['post_date'] = $post_date;
1339
  $data['thumbnail'] = $thumbnail;
1340
  $data['favicon'] = $favicon;
1341
  $data['charset'] = 'UTF-8';
@@ -1347,7 +1376,7 @@ class Pz_LinkCard {
1347
  }
1348
 
1349
  // リダイレクト先URL取得
1350
- public function pz_GetRedirURL( $data ) {
1351
  $url = $data['url'];
1352
  if ( function_exists( 'curl_init' ) ) { // cURLを使用する
1353
  $result_code = 0;
@@ -1374,31 +1403,31 @@ class Pz_LinkCard {
1374
  }
1375
 
1376
  // 外部サイト取得
1377
- public function pz_GetCURL( $data ) {
1378
  $url = $this->pz_TrimURL( $data['url'] );
1379
  if (!isset( $url ) || $url == '') {
1380
  return null;
1381
  }
1382
-
1383
  // リンク先サイト取得
1384
  $html = null;
1385
  $error = true;
1386
-
1387
  $domain = null;
1388
  $site_name = null;
1389
  $title = null;
1390
  $excerpt = null;
1391
  $charset = null;
1392
  $result_code = null;
1393
-
1394
  // URLパース(ドメイン名などを抽出)
1395
- $url_m = parse_url( $url );
1396
- $scheme = $url_m['scheme']; // スキーム
1397
- $domain = $url_m['host']; // ドメイン名
1398
- $domain_url = $scheme.'://'.$url_m['host']; // ドメインURL
1399
- $location = substr($url, mb_strlen($domain_url)); // ドメイン名以降
1400
-
1401
- if ( function_exists( 'curl_init' ) ) { // cURLを使用する
1402
  $result_code = 0;
1403
  $ch = curl_init($url);
1404
  curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); // データで取得
@@ -1444,7 +1473,7 @@ class Pz_LinkCard {
1444
  $error = false;
1445
  }
1446
  }
1447
-
1448
  // 文字コード判定
1449
  $charset = null;
1450
  if ($html <> '') {
@@ -1557,9 +1586,6 @@ class Pz_LinkCard {
1557
  $data['mod_title'] = 0;
1558
  $data['mod_excerpt'] = 0;
1559
  $data['charset'] = $charset;
1560
- // if (isset($atts['force']) && $atts['force'] == true) {
1561
- // $data['regist'] = $this->now_mysql; // 登録日
1562
- // }
1563
  }
1564
  $data['url'] = $url;
1565
  $data['thumbnail'] = ( isset($thumbnail_url) ? $thumbnail_url : null );
@@ -1583,7 +1609,7 @@ class Pz_LinkCard {
1583
  }
1584
 
1585
  // TITLEとMETAタグを分解
1586
- function pz_GetMeta( $html, $tags = null, $clear = false ) {
1587
  if ($clear == true || !isset($tags)) {
1588
  $tags = null;
1589
  $tags = array('none' => 'none');
@@ -1620,108 +1646,131 @@ class Pz_LinkCard {
1620
  }
1621
 
1622
  // サムネイル取得(外部リンクOGP画像取得)
1623
- public function pz_GetThumbnail( $url, $force = false ) {
1624
  if (!isset($url) || $url == '' || $url == 'https://s0.wp.com/i/blank.jpg') {
1625
  return null;
1626
  }
1627
 
1628
- $file_dir = $this->options['thumbnail-dir']; // サムネイルのディレクトリ
1629
- if (!is_dir($file_dir)) {
1630
- return null;
 
1631
  }
1632
-
1633
- $file_name = bin2hex(hash('sha256', esc_url( $url ), true)); // URLをハッシュしてファイル名を生成する
1634
- $file_path = $file_dir.$file_name; // ファイルのフルパス
1635
- $file_url = $this->options['thumbnail-url'].$file_name; // 画像URL
1636
-
1637
- if (!$force && file_exists($file_path )) { // 既にあれば画像URLを返す
1638
- return $file_url;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1639
  }
1640
-
1641
- list($width, $height) = @getimagesize($url); // サイズを取得
1642
- if (!isset($width) || !isset($height) || $width < 8 || $height < 8) { // 8x8未満は画像ではないと見なす
 
 
 
 
 
 
 
 
 
1643
  return null;
1644
  }
1645
- $image = imagecreatefromstring( file_get_contents($url) ); // 画像読み込み
1646
-
1647
- // $new_width = 200; // 幅200px
1648
- // $new_height = 200; // 高さ200px
1649
- $new_width = $this->options['cache-image-size']; // 幅200px
1650
- $new_height = $this->options['cache-image-size']; // 高さ200px
1651
- if ($width <> $height) { // 正方形でない
1652
- if ($width > $height) { // 幅の方が大きい
1653
- $new_height = $height * ( $new_width / $width ); // 幅に合わせる
1654
- } else { // 高さの方が大きい
1655
- $new_width = $width * ( $new_height / $height ); // 高さに合わせる
1656
- }
1657
- }
1658
- $image_p = imagecreatetruecolor($new_width, $new_height); // パレットを用意
1659
- imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); // サイズ変更してコピー
1660
- imagejpeg($image_p, $file_path); // JPEGで保存
1661
- return $file_url; // 画像URLを返す
 
 
 
 
 
 
1662
  }
1663
 
1664
- // 管理画面時のスタイルシート、スクリプト設定
1665
- public function enqueue_admin($hook) {
1666
- wp_enqueue_script ('pz-lkc-admin', plugins_url('js/admin.js', __FILE__), array('jquery'), false, true);
 
 
1667
  wp_enqueue_style ('wp-color-picker');
1668
- wp_enqueue_script ('colorpicker-script', plugins_url('js/color-picker.js', __FILE__), array('wp-color-picker'), false, true);
1669
- // wp_enqueue_media();
1670
- // wp_enqueue_script ('media-uploader', plugins_url("media-uploader.js", __FILE__), array('jquery'), false, false);
1671
- wp_enqueue_style('pz-lkc-admin', plugin_dir_url (__FILE__).'css/admin.css');
1672
  }
1673
 
1674
- // 管理画面時のスタイルシート、スクリプト設定
1675
  public function add_footer() {
 
1676
  if ($this->options['flg-edit-qtag']) {
1677
  if (wp_script_is('quicktags') ) {
1678
  echo '<script>QTags.addButton(\'pz-lkc\',\''.__('Linkcard', $this->text_domain ).'\',\'['.$this->options['code1'].' url="\',\'"]\',\'\',\''.__('Make Linkcard', $this->text_domain ).'\');</script>';
1679
  }
1680
  }
1681
- require_once ('lib/pz-linkcard-modal.php');
 
1682
  }
1683
 
1684
  // 管理画面時の注意書き設定
1685
  public function add_notices() {
1686
  if ($this->options['flg-invalid']) {
1687
- echo '<div class="error fade is-dismissible"><p><strong>'.$this->slug.': '.__('Invalid URL parameter in ', $this->text_domain).'<a href="'.$this->options['invalid-url'].'" target="_blank">'.$this->options['invalid-url'].'</a></strong><br>'.__('*', $this->text_domain).' '.__('You can cancel this message from <a href="./options-general.php?page=pz-linkcard-settings">the setting screen</a>.', $this->text_domain).'</p></div>';
 
 
1688
  }
1689
  }
1690
 
1691
  // 管理画面時のスタイルシート、スクリプト設定
1692
- public function add_mce_button($buttons) {
1693
  if ($this->options['flg-edit-insert']) {
1694
- $buttons[] = 'pz_linkcard';
1695
  }
1696
  return $buttons;
1697
  }
1698
- public function add_mce_plugin($plugins) {
1699
  if ($this->options['flg-edit-insert']) {
1700
- $plugins['pz_linkcard'] = $this->plugin_dir_url.'js/mce.js';
1701
  }
1702
  return $plugins;
1703
  }
1704
 
1705
  // 通常時のスタイルシート
1706
- public function enqueue($hook) {
1707
- $this->amp = null;
1708
-
1709
- $css_path = $this->upload_dir_path.'style.css';
1710
- $css_url = $this->upload_dir_url .'style.css';
1711
- if (!file_exists($css_path )) {
1712
- $css_url = $this->plugin_dir_url .'style.css';
1713
- }
1714
- if (preg_match('/.*(\/\/.*)/', $css_url, $m)) { // スキームを外す
1715
- $css_url = $m[1];
1716
- }
1717
- wp_enqueue_style ('pz-linkcard', $css_url);
1718
- //if (!isset($this->options['style'])) {
1719
- // wp_enqueue_style ('pz-linkcard', $this->options['css-url']);
1720
- //} else {
1721
- // if (isset($this->options['css-file'])) {
1722
- // wp_enqueue_style('pz-linkcard', $this->options['css-file']);
1723
- // }
1724
- //}
1725
  }
1726
 
1727
  // 管理画面のサブメニュー追加
@@ -1803,29 +1852,29 @@ class Pz_LinkCard {
1803
  }
1804
 
1805
  // スタイルシート生成
1806
- public function pz_SetStyle() {
1807
- require_once ('lib/pz-linkcard-style.php');
1808
  }
1809
 
1810
  // Pz カード管理 キャッシュ・マネージャ
1811
  public function page_cacheman() {
1812
- require_once ('lib/pz-linkcard-cacheman.php');
1813
  }
1814
 
1815
  // Pz カード 設定画面
1816
  public function page_settings() {
1817
- require_once ('lib/pz-linkcard-settings.php');
1818
  }
1819
 
1820
  // プラグイン一覧のクイックメニュー
1821
- public function action_links($links) {
1822
  $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;
1823
  return $links;
1824
  }
1825
 
1826
  // プラグイン有効化
1827
  public function activate() {
1828
- require_once ('lib/pz-linkcard-init.php');
1829
  }
1830
 
1831
  // プラグイン停止
@@ -1833,6 +1882,5 @@ class Pz_LinkCard {
1833
  wp_clear_scheduled_hook('pz_linkcard_check');
1834
  wp_clear_scheduled_hook('pz_linkcard_alive');
1835
  }
1836
-
1837
  }
1838
  $Class_Pz_LinkCard = new Pz_LinkCard;
3
  Plugin Name: Pz-LinkCard
4
  Plugin URI: http://poporon.poponet.jp/pz-linkcard
5
  Description: リンクをカード形式で表示します。
6
+ Version: 2.4.2
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
+ private $slug; // スラッグ
16
+ private $text_domain; // テキスト ドメイン(スラッグと同じ内容)
17
 
18
+ private $charset; // 文字セット
19
 
20
+ private $amp; // Google AMP
21
 
22
+ private $now; // 現在日時(ローカル時間)
23
+ private $now_mysql; // 現在日時(SQL形式)
24
 
25
+ private $plugin_basename; // プラグイン ディレクトリの名前
26
+ private $plugin_dir_path; // プラグイン ディレクトリのパス
27
+ private $plugin_dir_url; // プラグイン ディレクトリのURL
28
+ private $plugin_link; // プラグインページのURL
29
 
30
+ private $upload_dir_path; // アップロード ディレクトリのパス
31
+ private $upload_dir_url; // アップロード ディレクトリのURL
32
 
33
  private $db_name; // DB名
34
 
35
+ private $options; // パラメータ
36
  protected $defaults = array(
37
+ 'flg-invalid' => null,
38
+ 'invalid-url' => null,
39
+ 'invalid-time' => null,
40
+
41
+ 'special-format' => null,
42
+
43
+ 'link-all' => 1,
44
+ 'margin-top' => '4px',
45
+ 'margin-right' => '16px',
46
+ 'margin-bottom' => '16px',
47
+ 'margin-left' => '4px',
48
+ 'card-top' => null,
49
+ 'card-right' => null,
50
+ 'card-bottom' => null,
51
+ 'card-left' => null,
52
+ 'width' => '500px',
53
+ 'content-height' => '108px',
54
+ 'centering' => null,
55
+ 'blockquote' => null,
56
+
57
+ 'info-position' => 1,
58
+ 'use-sitename' => 1,
59
+ 'display-date' => 1,
60
+ 'heading' => null,
61
+ 'flg-anker' => 1,
62
+ 'separator' => null,
63
+ 'display-url' => 1,
64
+ 'thumbnail-position' => 2,
65
+ 'thumbnail-width' => '100px',
66
+ 'thumbnail-height' => '108px',
67
+ 'thumbnail-shadow' => null,
68
+ 'content-inset' => null,
69
+ 'display-excerpt' => 1,
70
+ 'shadow-inset' => null,
71
+ 'shadow' => null,
72
+ 'radius' => null,
73
+ 'hover' => null,
74
+ 'border-style' => 'solid',
75
+ 'border-width' => '1px',
76
+ 'style-reset-img' => 1,
77
+ 'flg-more' => null,
78
+ 'sns-position' => 2,
79
+ 'sns-tw' => 1,
80
+ 'sns-fb' => 1,
81
+ 'sns-hb' => 1,
82
+ 'sns-po' => 1,
83
+
 
 
 
 
 
 
 
84
  'color-title' => '#111111',
85
  'color-url' => '#4466ff',
86
  'color-excerpt' => '#333333',
87
+ 'color-more' => '#444444',
88
  'color-info' => '#222222',
89
  'color-added' => '#222222',
 
90
  'color-plugin' => '#888888',
91
+ 'outline-title' => null,
92
+ 'outline-url' => null,
93
+ 'outline-excerpt' => null,
94
+ 'outline-more' => null,
95
+ 'outline-info' => null,
96
+ 'outline-added' => null,
97
+ 'outline-plugin' => null,
98
  'outline-color-title' => '#ffffff',
99
  'outline-color-url' => '#ffffff',
100
  'outline-color-excerpt' => '#ffffff',
101
+ 'outline-color-more' => '#ffffff',
102
  'outline-color-info' => '#ffffff',
103
  'outline-color-added' => '#ffffff',
 
104
  'outline-color-plugin' => '#ffffff',
105
+ 'size-title' => '16px',
106
+ 'size-url' => '10px',
107
+ 'size-excerpt' => '11px',
108
+ 'size-more' => '12px',
109
+ 'size-info' => '12px',
110
+ 'size-added' => '12px',
111
+ 'size-plugin' => '10px',
112
+ 'height-title' => '24px',
113
+ 'height-url' => '10px',
114
+ 'height-excerpt' => '17px',
115
+ 'height-more' => '40px',
116
+ 'height-info' => '12px',
117
+ 'height-added' => '12px',
118
+ 'height-plugin' => '10px',
119
+ 'trim-title' => 80,
120
+ 'trim-url' => 250,
121
+ 'trim-excerpt' => 500,
122
+ 'trim-info' => 200,
123
  'nowrap-title' => null,
124
+ 'nowrap-url' => 1,
125
+ 'thumbnail-resize' => 1,
126
+
 
127
  'ex-border-color' => '#888888',
128
+ 'ex-bgcolor' => '#ffffff',
129
+ 'ex-image' => null,
130
+ 'ex-thumbnail' => 13,
131
+ 'ex-favicon' => 3,
132
+ 'ex-info' => null,
133
+ 'ex-more-text' => null,
134
+ 'ex-target' => 2,
135
+ 'nofollow' => null,
136
+ 'noopener' => 1,
137
+ 'use-hatena' => null,
138
+
139
  'in-border-color' => '#888888',
140
+ 'in-bgcolor' => '#f8f8f8',
141
+ 'in-image' => null,
142
+ 'in-thumbnail' => 1,
143
+ 'in-favicon' => 3,
144
+ 'in-info' => null,
145
+ 'in-more-text' => null,
146
+ 'in-target' => null,
147
+ 'in-get' => null,
148
+ 'flg-get-pid' => null,
149
+
150
  'th-border-color' => '#888888',
151
+ 'th-bgcolor' => '#eeeeee',
152
+ 'th-image' => null,
153
+ 'th-info' => null,
154
+
155
+ 'favicon-api' => 'https://www.google.com/s2/favicons?domain=%DOMAIN%',
156
+ 'thumbnail-api' => 'https://s.wordpress.com/mshots/v1/%URL%?w=100',
157
+
158
+ 'cache-image-size' => 200,
159
+ 'thumbnail-dir' => null,
160
+ 'thumbnail-url' => null,
161
+ 'css-url' => null,
162
+ 'css-url-add' => null,
163
+ 'css-add' => null,
164
+ 'css-count' => 0,
165
+ 'css-path' => null,
166
+ 'css-templete' => null,
167
+
168
+ 'flg-unlink' => 1,
169
+ 'flg-ssl' => 1,
170
+ 'flg-redir' => 1,
171
+ 'flg-referer' => 1,
172
+ 'flg-agent' => 1,
173
+ 'user-agent' => null,
174
+ 'flg-alive' => 1,
175
+ 'flg-alive-count' => null,
176
+ 'flg-subdir' => 1,
177
+
178
+ 'code1' => 'blogcard',
179
+ 'use-inline' => null,
180
+ 'code2' => null,
181
+ 'code3' => null,
182
+ 'code4' => null,
183
+ 'auto-atag' => null,
184
+ 'auto-url' => null,
185
+ 'auto-external' => null,
186
+ 'flg-do-shortcode' => 1,
187
+ 'flg-edit-insert' => 1,
188
+ 'flg-edit-qtag' => 1,
189
+
190
+ 'trail-slash' => '1',
191
+ 'class-pc' => null,
192
+ 'class-mobile' => null,
193
+ 'flg-amp-url' => null,
194
+ 'flg-idn' => 1,
195
+ 'flg-relative-url' => null,
196
+ 'flg-invalid-hide' => null,
197
+ 'saved-date' => null,
198
+ 'debug-time' => null,
199
+
200
+ 'initialize' => null,
201
+
202
+ 'plugin-link' => null,
203
+ 'plugin-url' => 'https://popozure.info/pz-linkcard',
204
+ 'plugin-name' => 'Pz-LinkCard',
205
+ 'plugin-version' => '2.4.2'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
206
  );
207
 
208
  public function __construct() {
224
  $this->upload_dir_path = $wp_upload_dir['basedir'].'/'.$this->slug.'/';
225
  $this->upload_dir_url = $wp_upload_dir['baseurl'].'/'.$this->slug.'/';
226
 
227
+ // オプション読み込み
228
  $this->options = get_option('Pz_LinkCard_options', $this->defaults );
229
  foreach ($this->defaults as $key => $value) {
230
  if (!isset($this->options[$key])) {
241
  $this->activate();
242
  }
243
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
244
  // 日本語化
245
  load_plugin_textdomain ($this->text_domain, false, $this->slug.'/languages');
246
 
247
  // 管理画面のとき
248
  if (is_admin()) {
249
+ register_activation_hook (__FILE__, array($this, 'activate') ); // プラグインを有効化するときの処理
250
+ register_deactivation_hook (__FILE__, array($this, 'deactivate') ); // プラグインを無効化するときの処理
251
  add_action ('admin_menu', array($this, 'add_menu') ); // 設定メニュー
252
  add_action ('admin_enqueue_scripts', array($this, 'enqueue_admin') ); // 設定メニュー用スクリプト
253
  add_action ('admin_print_footer_scripts', array($this, 'add_footer') ); // テキストエディタ用クイックタグ
256
  add_filter ('mce_external_plugins', array($this, 'add_mce_plugin') ); // ビジュアルエディタ用ボタン
257
  add_filter ('plugin_action_links_'.$this->plugin_basename, array($this, 'action_links') ); // プラグイン画面
258
  } else {
259
+ add_action ('wp_enqueue_scripts', array($this, 'enqueue') ); // スタイルシート呼び出し
260
+ if ($this->options['auto-atag'] || $this->options['auto-url']) { // 自動置き換え
261
+ add_filter ('the_content', array($this, 'auto_replace') );
262
+ add_shortcode ('pz-linkcard-auto-replace', array($this, 'shortcode') );
263
+ }
264
+ if ($this->options['code1']) { // ショートコード1
265
+ add_shortcode($this->options['code1'], array($this, 'shortcode'));
266
+ }
267
+ if ($this->options['code2']) { // ショートコード2
268
+ add_shortcode($this->options['code2'], array($this, 'shortcode'));
269
+ }
270
+ if ($this->options['code3']) { // ショートコード3
271
+ add_shortcode($this->options['code3'], array($this, 'shortcode'));
272
+ }
273
+ if ($this->options['code4']) { // ショートコード4
274
+ add_shortcode($this->options['code4'], array($this, 'shortcode'));
275
+ }
276
  }
277
 
278
+ // SNS更新、リンク先チェック
279
  add_action( 'pz_linkcard_check', array( $this, 'schedule_hook_check' ) );
280
  add_action( 'pz_linkcard_alive', array( $this, 'schedule_hook_alive' ) );
 
281
  if (!wp_next_scheduled('pz_linkcard_check')) {
282
  wp_schedule_event ( time() + 10 , 'hourly', 'pz_linkcard_check');
283
  }
287
  }
288
 
289
  // テキストリンクの行とURLのみの行をリンクカードへ置き換える処理(直接HTMLタグにするのでは無くショートコードに変換する。)
290
+ public function auto_replace($content ) {
291
+ if (!$this->options['auto-external'] ) {
292
+ if ($this->options['auto-atag'] ) {
293
+ $content = preg_replace('/(^|<br ?\/?>)(<p.*>)?<a .*href=[\'"](https?:\/\/[-_\.!~*()a-zA-Z0-9;\/?:\@&=+\$,%#]+)[\'"]((?!<IMG).)*<\/a>(<\/p>)?$/im', '[pz-linkcard-auto-replace url="$3"]', $content );
294
  }
295
+ if ($this->options['auto-url'] ) {
296
+ $content = preg_replace('/(^|<br ?\/?>)(<p.*>)?(https?:\/\/[-_\.!~*()a-zA-Z0-9;\/?:\@&=+\$,%#]+)(<\/p>|<br ?\/?>)?$/im', '[pz-linkcard-auto-replace url="$3"]', $content );
297
  }
298
+ if ($this->options['flg-do-shortcode'] && ($this->options['auto-atag'] || $this->options['auto-url'] ) ) {
299
+ $content = do_shortcode($content );
300
  }
301
+ return $content;
302
  } else {
303
+ if ($this->options['auto-atag'] ) {
304
  preg_match_all('/(^|<br ?\/?>)(<p.*>)?(<a .*href=[\'"](https?:\/\/[-_\.!~*()a-zA-Z0-9;\/?:\@&=+\$,%#]+)[\'"]((?!<IMG).)*<\/a>)(<\/p>)?$/im', $content, $m );
305
+ for ($i = 0; $i < count($m[0]); $i++ ) {
306
+ $url = $m[4][$i];
307
+ if ($this->Pz_LinkType($url ) == 0 ) {
308
+ $tag = '[pz-linkcard-auto-replace url="'.$url.'"]';
309
+ $content = preg_replace('{'.$m[0][$i].'}', $tag, $content, 1 );
310
  }
311
  }
312
  }
313
+ if ($this->options['auto-url'] ) {
314
  preg_match_all('/(^|<br ?\/?>)(<p.*>)?(https?:\/\/[-_\.!~*()a-zA-Z0-9;\/?:\@&=+\$,%#]+)(<\/p>|<br ?\/?>)?$/im', $content, $m );
315
+ for ($i = 0; $i < count($m[0]); $i++ ) {
316
+ $url = $m[3][$i];
317
  if ($this->Pz_LinkType($url ) == 0) {
318
+ $tag = '[pz-linkcard-auto-replace url="'.$url.'"]';
319
+ $content = preg_replace('{'.$m[0][$i].'}', $tag, $content, 1 );
320
  }
321
  }
322
  }
323
+ if ($this->options['flg-do-shortcode'] && ($this->options['auto-atag'] || $this->options['auto-url'] ) ) {
324
+ $content = do_shortcode($content );
325
  }
326
+ return $content;
327
  }
328
  }
329
 
330
  // ショートコード処理
331
+ public function shortcode($atts, $content = null, $shortcode ) {
332
  // 実行時間
333
  if ($this->options['debug-time']) {
334
  $start_time = microtime(true);
335
  echo PHP_EOL.'<!-- Pz-LkC [Debug mode: On] /-->'.PHP_EOL;
336
+ echo '<!-- Pz-LkC [shortcode]'.PHP_EOL;
337
+ echo '$atts='.html_entity_decode(print_r($atts, true ) );
338
+ echo '$content="'.html_entity_decode($content ).'"'.PHP_EOL;
339
+ echo '$shortcode="'.html_entity_decode($shortcode ).'"'.PHP_EOL;
340
+ echo '/-->'.PHP_EOL;
341
  }
342
+
343
+ // URLパラメータ
344
+ if (isset($atts['url'] ) ) {
345
+ $url = $atts['url'];
346
+ } elseif (isset($atts['href'] ) ) { // Aタグのようにhrefパラメータも有効にする
347
+ $url = $atts['href'];
348
+ } elseif (isset($atts['uri'] ) ) { // 密かに記述ミス対応(uriやurIでもurlとして判定する)
349
+ $url = $atts['uri'];
350
+ } elseif (isset($atts['ur1'] ) ) { // 密かに記述ミス対応(ur1でもurlとして判定する)
351
+ $url = $atts['ur1'];
352
+ } elseif (isset($atts[0]) && preg_match('/url=[\s \'\"‘’“”″]*(.*?)[\s \'\"‘’“”″]*$/u', $atts[0], $m) ) { // 謎の記述ミスに対応
353
+ $url = $m[1];
354
+ } elseif (isset($atts[1]) && preg_match('/url=[\s \'\"‘’“”″]*(.*?)[\s \'\"‘’“”″]*$/u', $atts[1], $m) ) { // 謎の記述ミスに対応
355
+ $url = $m[1];
356
+ } else {
357
+ $url = null;
 
 
 
358
  }
359
+ $url_org = $url; // 指定されたurlパラメータ(エラー表示用)
360
+ if ($this->options['flg-relative-url'] && substr($url, 0, 1) == '/') {
361
+ $url = home_url().$url; // 相対パスを絶対パスに変換
 
 
362
  }
363
+ $url = $this->pz_TrimURL($url ); // URLエンティティ化など(無害化?)
364
+ if (!$url ) {
 
 
 
365
  if (!$this->options['flg-invalid']) {
366
  $url_now = get_permalink();
367
  $post_id = url_to_postid($url_now );
368
  if ($post_id) {
369
+ $this->options['flg-invalid'] = true;
370
  $this->options['invalid-url'] = $url_now;
371
  $this->options['invalid-time'] = $this->now;
372
  $result = update_option('Pz_LinkCard_options', $this->options);
373
  }
374
  }
375
+ return '<div id="lkc-error" class="lkc-error"><div class="lkc-card"><div class="lkc-this-wrap"><div class="lkc-excerpt">'.$this->slug.': '.__('Incorrect URL specification.', $this->text_domain).'(url='.html_entity_decode($url_org).')'.PHP_EOL.'<!-- '.html_entity_decode(print_r($atts, true)).' /-->'.PHP_EOL.'</div></div></div></div>';
376
  }
377
  $atts['url'] = $url;
378
+
379
  // titleパラメータ
380
+ if (!isset($atts['title'] ) ) {
381
+ $atts['title'] = null;
382
+ }
383
+
384
  // contentパラメータ
385
+ if (!isset($atts['excerpt'] ) ) {
386
+ if (isset($atts['content'] ) ) {
387
+ $atts['excerpt'] = $atts['content'];
388
+ } elseif (isset($atts['contents'] ) ) {
389
+ $atts['excerpt'] = $atts['contents'];
390
+ } elseif (isset($atts['description'] ) ) {
391
+ $atts['excerpt'] = $atts['description'];
392
+ } else {
393
+ $atts['excerpt'] = null;
394
+ }
395
  }
396
+
397
  // 囲まれ文字(ショートコード1のみ有効)
398
+ if ($shortcode == $this->options['code1']) {
399
+ switch (isset($this->options['use-inline']) ? $this->options['use-inline'] : null ) {
400
  case '1':
401
+ $atts['excerpt'] = isset($content) ? $content : null;
402
  break;
403
  case '2':
404
+ $atts['title'] = isset($content) ? $content : null;
405
  break;
406
  }
407
  }
408
+
409
  // 記事内容取得
410
+ $tag = $this->pz_GetHTML($atts );
411
+
412
  // 実行時間
413
  if ($this->options['debug-time']) {
414
  $end_time = microtime(true);
415
  $elasped_time = number_format($end_time - $start_time, 8, '.', ',');
416
+ echo '<!-- Pz-LkC [shortcode]'.PHP_EOL;
417
+ echo 'ElaspedTime='.$elasped_time.'sec'.PHP_EOL;
418
+ echo '] /-->'.PHP_EOL;
419
  }
420
+
421
+ return $tag;
422
  }
423
 
424
  // キャッシュやリンク先からリンクカードのHTMLを生成
425
+ private function pz_GetHTML($atts ) {
426
  if ($this->options['debug-time']) {
427
+ echo '<!-- Pz-LkC [pz_GetHTML]'.PHP_EOL;
428
+ echo '$atts='.html_entity_decode(print_r($atts, true ) );
429
+ echo '/-->'.PHP_EOL;
430
  }
431
+
432
+ // 変数の用意
433
+ $is_mobile = false;
434
+ $url = (isset($atts['url']) ? $atts['url'] : null);
435
+
436
+ // URL
437
+ if (!$url ) {
438
+ return null;
439
+ }
440
+
441
  // モバイルチェック
442
+ if (function_exists('wp_is_mobile') && wp_is_mobile() ) {
443
  $is_mobile = true;
 
 
444
  }
445
+ if ($this->options['debug-time'] ) {
446
+ echo '<!-- Pz-LkC [pz_GetHTML] $is_mobile="'.$is_mobile.'" /-->'.PHP_EOL;
447
  }
448
+
 
 
 
 
 
 
 
 
449
  // URLパース(ドメイン名などを抽出)
450
+ $url_m = parse_url($url );
451
+ $scheme = isset($url_m['scheme']) ? $url_m['scheme'] : null; // スキーム
452
+ $domain = isset($url_m['host']) ? $url_m['host'] : null; // ドメイン名
453
+ $domain_url = isset($url_m['host']) ? $scheme.'://'.$url_m['host'] : null; // ドメインURL
454
+ $location = isset($url_m['path']) ? $url_m['path'] : null; // ドメイン名以降
455
+
456
  // 自サイトチェック
457
+ $link_type = $this->Pz_LinkType($url );
458
+
459
  // モバイルかPCかのクラス名を追加
460
+ $class_id = 'linkcard';
461
+ if ($is_mobile && $this->options['class-mobile'] ) {
462
+ $class_id .= ' '.$this->options['class-mobile'];
463
  } elseif ($this->options['class-pc']) {
464
+ $class_id .= ' '.$this->options['class-pc'];
465
  }
466
+
467
  // キャッシュから取得
468
+ $data_id = null;
469
+ $data = array();
470
+ $data['url'] = $url;
471
+ $result = $this->pz_GetCache( $data );
472
  if (isset($result) && is_array($result) && isset($result['url'])) {
473
+ $data = $result;
474
+ $data_id = $data['id'];
475
+ $url = $data['url'];
476
  }
477
  if ($this->options['debug-time']) {
478
+ echo '<!-- Pz-LkC [pz_GetHTML] get from cache $data_id="'.$data_id.'" /-->'.PHP_EOL;
479
  }
480
+
481
  // 内部リンクの処理
482
  if ( $link_type ) {
483
+ if ($this->options['debug-time']) {
484
+ echo '<!-- Pz-LkC [pz_GetHTML] Internal link /-->'.PHP_EOL;
485
+ }
486
  // リンクターゲットの設定
487
  $target = ''; // 同ページに開く
488
  if (isset($this->options['in-target'])) {
491
  }
492
  }
493
 
494
+ // nofollowの指定
495
+ $rel = '';
496
  if ( (isset($atts['follow'] ) && mb_strtolower($atts['follow']) == 'no') || (isset($atts['nofollow'] ) && mb_strtolower($atts['nofollow']) == 'true') ) {
497
+ $rel = ' rel="nofollow"'; // 要望により内部リンクでもnofollow可能(ショートコードのパラメータで指定時のみ)
 
 
498
  }
499
 
500
  // キャッシュが無い、もしくは強制取得
501
  if ( is_null($data_id) || ( isset($atts['force']) && $atts['force'] == true ) ) {
502
+ $data = $this->pz_GetPost($data ); // 最新記事内容を取得
 
 
 
503
  $data['link_type'] = 1;
504
+ $result = $this->pz_SetCache($data ); // 保存
 
 
 
505
  } elseif ($this->options['in-get'] <> 2) {
 
 
 
506
  $data = $this->pz_GetPost( $data ); // 最新記事内容を取得
507
  $data['link_type'] = 1;
508
  }
509
  }
510
+
511
  // 外部リンクの処理
512
  if ( !$link_type ) {
513
+ if ($this->options['debug-time']) {
514
+ echo '<!-- Pz-LkC [pz_GetHTML] External link /-->'.PHP_EOL;
515
+ }
516
  // リンクターゲットの設定
517
+ $target = null; // 同ページに開く
518
  if (isset($this->options['ex-target'] ) ) {
519
  if ($this->options['ex-target'] == '1' || ($this->options['ex-target'] == '2' && !$is_mobile ) ) {
520
+ $target = ' target="_blank"'; // 新しいタブで開く
521
  }
522
  }
523
 
524
+ // noopenerとnofollowの指定
525
+ $rel = 'external';
526
+ if ($this->options['nofollow'] || (isset($atts['follow'] ) && mb_strtolower($atts['follow']) == 'no') || (isset($atts['nofollow'] ) && mb_strtolower($atts['nofollow']) == 'true') ) {
527
+ $rel .= ' nofollow'; // nofollow指定。趣味の問題?
528
+ }
529
+ if ($this->options['noopener']) {
530
+ $rel .= ' noopenner';
531
  }
532
+ $rel = ' rel="'.$rel.'"';
533
 
534
  // キャッシュが無い、もしくは強制取得
535
  if ( is_null($data_id) || ( isset($atts['force']) && $atts['force'] == true ) ) {
 
 
 
536
  $result = $this->pz_GetCURL( $data ); // cURLで記事内容を取得
537
  if ( isset($result) && is_array($result) && isset($result['url']) ) {
538
  $data = $result;
541
  }
542
  }
543
  }
544
+
545
  // 念のため初期化
546
+ $data_id = isset($data['id']) ? $data['id'] : null;
547
+ $site_name = isset($data['site_name']) ? $data['site_name'] : null;
548
+ $title = isset($data['title']) ? $data['title'] : null;
549
+ $excerpt = isset($data['excerpt']) ? $data['excerpt'] : null;
550
+ $post_date = isset($data['post_date']) ? $data['post_date'] : null;
551
+ $thumbnail_url = isset($data['thumbnail']) ? $data['thumbnail'] : null;
552
+ $favicon_url = isset($data['favicon']) ? $data['favicon'] : null;
553
+ $result_code = isset($data['result_code']) ? $data['result_code'] : null;
554
+ $sns_tw = isset($data['sns_twitter']) ? $data['sns_twitter'] : null;
555
+ $sns_fb = isset($data['sns_facebook']) ? $data['sns_facebook'] : null;
556
+ $sns_hb = isset($data['sns_hatena']) ? $data['sns_hatena'] : null;
557
+ $sns_po = isset($data['sns_pocket']) ? $data['sns_pocket'] : null;
558
+ $alive_result = isset($data['alive_result']) ? $data['alive_result'] : null;
559
+
560
+ $thumbnail = null;
561
+ $favicon = null;
562
+
563
  // ラッピング
564
  switch ($link_type) {
565
  case '1':
570
  $more = null;
571
  $more_text = null;
572
  $info = isset($this->options['th-info']) ? $this->options['th-info'] : null ;
573
+ $sw_thumbnail = isset($this->options['in-thumbnail']) ? $this->options['in-thumbnail'] : 0 ;
574
+ $sw_favicon = isset($this->options['in-favicon']) ? $this->options['in-favicon'] : 0 ;
575
  break;
576
  case '2':
577
  $wrap_op = '<div class="lkc-internal-wrap">';
581
  $more = isset($this->options['flg-more']) ? $this->options['flg-more'] : null ;
582
  $more_text = isset($this->options['in-more-text']) ? $this->options['in-more-text'] : null ;
583
  $info = isset($this->options['in-info']) ? $this->options['in-info'] : null ;
584
+ $sw_thumbnail = isset($this->options['in-thumbnail']) ? $this->options['in-thumbnail'] : 0 ;
585
+ $sw_favicon = isset($this->options['in-favicon']) ? $this->options['in-favicon'] : 0 ;
586
  break;
587
  default:
588
  $wrap_op = '<div class="lkc-external-wrap">';
591
  $added_cl = '</div>';
592
  $more = isset($this->options['flg-more']) ? $this->options['flg-more'] : null ;
593
  $more_text = isset($this->options['ex-more-text']) ? $this->options['ex-more-text'] : null ;
594
+ $info = isset($this->options['ex-info']) ? $this->options['ex-info'] : null ;
595
+ $sw_thumbnail = isset($this->options['ex-thumbnail']) ? $this->options['ex-thumbnail'] : 0 ;
596
+ $sw_favicon = isset($this->options['ex-favicon']) ? $this->options['ex-favicon'] : 0 ;
597
  break;
598
  }
599
+
600
  // 外部リンクの処理
601
  if ( !$link_type && isset($this->options['use-hatena']) && !is_null($this->options['use-hatena'] ) ) {
602
  // 「はてなブログカード」をそのまま利用する
603
+ $tag = '<div class="lkc-iframe-wrap"><iframe src="https://hatenablog-parts.com/embed?url=' .$url.'" class="lkc-iframe" scrolling="no" frameborder="0"></iframe></div>';
604
  if (isset($this->options['blockquote']) ? $this->options['blockquote'] : null == '1') {
605
+ $tag = '<div class="'.$class_id.'"><blockquote class="lkc-quote">'.$tag.'</blockquote></div>';
606
  } else {
607
+ $tag = '<div class="'.$class_id.'">'.$tag.'</div>';
608
  }
609
+ return $tag; // タグを出力してさっさと終了
610
  }
611
+
612
  // サムネイル取得
613
  if ( !$this->options['thumbnail-position'] || ( $result_code <> 0 && $result_code <> 200 ) ) {
614
  $thumbnail = null;
615
  } else {
616
+ if ($sw_thumbnail == 1 || $sw_thumbnail == 13 ) { // 直接取得
617
+ if (!$link_type ) {
618
+ $thumbnail_url = $this->pz_GetThumbnail($thumbnail_url ); // 外部サイトのサムネイルをキャッシュ
619
  }
620
+ if (isset($thumbnail_url ) && $thumbnail_url <> '' ) {
621
+ $thumbnail = '<img class="lkc-thumbnail-img" src="'.$thumbnail_url.'" alt="" />';
622
+ } elseif ($sw_thumbnail == 13) { // 直接取得に失敗
623
+ $sw_thumbnail = 3;
624
  }
625
  }
626
+ if ($sw_thumbnail == 3 ) { // WebAPIを利用
627
  // 画像取得(WebAPI)
628
+ if (isset($this->options['thumbnail-api'] ) ) {
629
+ $thumbnail = preg_replace('/%DOMAIN_URL%/', $domain_url, $this->options['thumbnail-api'] );
630
+ $thumbnail = preg_replace('/%DOMAIN%/', $domain, $thumbnail);
631
+ $thumbnail = preg_replace('/%URL%/', rawurlencode($url ), $thumbnail );
632
+ $thumbnail = '<img class="lkc-thumbnail-img" src="'.$thumbnail.'" alt="" />';
633
  }
634
  }
635
  }
636
+
637
  // ファビコン取得
638
+ if (!isset($this->options['info-position'] ) ) {
639
  $favicon = null;
640
  } else{
641
+ if ($sw_favicon == 1 || $sw_favicon == 13 ) { // 直接取得
642
+ if (!is_null($favicon_url ) ) {
643
  $favicon = '<img class="lkc-favicon" src="'.$favicon_url.'" alt="" width=16 height=16 />';
644
+ } elseif ($sw_favicon == 13 ) { // 直接取得に失敗
645
+ $sw_favicon == 3;
646
  }
647
  }
648
+ if ($sw_favicon == 3 ) { // WebAPIを利用
649
  // サイトアイコン取得(WebAPI)
650
+ if (isset($this->options['favicon-api'] ) ) {
651
+ $favicon = preg_replace('/%DOMAIN_URL%/', $domain_url, $this->options['favicon-api'] );
652
+ $favicon = preg_replace('/%DOMAIN%/', $domain, $favicon);
653
+ $favicon = preg_replace('/%URL%/', rawurlencode($url), $favicon);
654
+ $favicon = '<img class="lkc-favicon" src="'.$favicon.'" alt="" width=16 height=16 />';
655
  }
656
  }
657
  }
658
+
659
  // タイトル
660
+ if (!$title ) {
661
+ $title = esc_html($url ); // タイトル取得できていなかったらURLをセットする
662
  }
663
+
664
  // パラメータ取得(タイトル・抜粋文)
665
+ if ($atts['title'] ) { // title パラメータ
666
  $title = $atts['title'];
667
+ $excerpt = null;
668
  }
669
+ if ($atts['excerpt'] ) { // excerpt パラメータ
670
+ $excerpt = $atts['excerpt'];
 
 
 
 
 
 
671
  }
672
+
673
  // タイトル整形
674
+ if ($title ) {
675
+ $str = $title;
676
+ $str = strip_tags($str ); // タグの除去
677
+ $str = str_replace(array("\r", "\n"), '', $str); // 改行削除
678
+ $str = esc_html($str ); // 念のためエスケープ
679
+ if ($this->options['trim-title'] ) {
680
+ $str = mb_strimwidth($str, 0, $this->options['trim-title'] , '...' );
681
+ }
682
+ $title = $str;
683
  }
684
+
685
  // 抜粋文整形(抜粋文非表示の場合、空欄にする)
686
+ if (!$this->options['display-excerpt'] ) {
687
  $excerpt = '';
688
  } else {
689
+ if ($excerpt ) {
690
+ $str = $excerpt;
691
+ $str = strip_tags($str ); // タグの除去
692
+ $str = preg_replace('/<!--more-->.+/is', '', $str ); // moreタグ以降削除
693
+ $str = preg_replace('/\[[^]]*\]/', '', $str ); // ショートコードすべて除去
694
+ $str = str_replace(array("\r", "\n"), '', $str ); // 改行削除
695
+ $str = esc_html($str ); // 念のためエスケープ
696
+ if ($this->options['trim-excerpt'] ) {
697
+ $str = mb_strimwidth($str, 0, $this->options['trim-excerpt'] , '...' );
698
+ }
699
+ $excerpt = $str;
700
  }
701
  }
702
+
703
  // サイト名称を使わない場合、ドメイン名で上書き
704
+ $site_title = null;
705
+ if ($this->options['use-sitename'] && $site_name ) {
706
+ $c_site_name = $site_name;
707
+ if ($this->options['trim-info']) {
708
+ $str = $site_name;
709
+ $str = mb_strimwidth($str, 0, $this->options['trim-info'] , '...');
710
+ $site_name = $str;
711
+ }
712
+ if ($site_name <> $c_site_name ) {
713
+ $site_title = ' title="'.$c_site_name.'"';
714
  }
715
  } else {
716
+ $site_name = $domain;
717
  // 日本語ドメイン対応
718
+ if ($this->options['flg-idn'] && function_exists('idn_to_utf8' ) && substr($domain, 0, 4 ) == 'xn--' ) {
719
+ $site_name = idn_to_utf8($domain );
 
 
 
 
720
  }
721
  }
722
+
723
  // リンク先URL
724
+ if ($this->options['flg-unlink'] && array_search($alive_result, array('403','404','410' ) ) ) {
725
+ // Not Found の時は見え消ししてリンクしない
726
+ $a_op_all = '<div style="cursor: not-allowed;" title="">';
727
+ $a_cl_all = '</div>';
728
+ $a_op = '';
729
+ $a_cl = '';
730
+ $st_op = '<strike>';
731
+ $st_cl = '</strike>';
732
+ } elseif ($this->options['link-all'] ) {
733
  // カード全体をリンク(どこをクリックしても良いのが分かり易い)
734
+ $a_op_all = '<a class="lkc-link no_icon" href="'.$url.'"'.$target.$rel.'>';
735
+ $a_cl_all = '</a>';
736
+ $a_op = null;
737
+ $a_cl = null;
738
+ $st_op = null;
739
+ $st_cl = null;
740
  } else {
741
  // タイトルとかURLとかを個別でリンク(タイトルや抜粋文などの文字を範囲指定をしてコピー等がし易い)
742
+ $a_op_all = null;
743
+ $a_cl_all = null;
744
+ $a_op = '<a class="lkc-link no_icon" href="'.$url.'"'.$target.$rel.'>';
745
+ $a_cl = '</a>';
746
+ $st_op = null;
747
+ $st_cl = null;
748
  }
749
+
750
  // ソーシャルカウントの表示
751
+ $sns = null;
752
+ $sns_title = null;
753
+ $sns_info = null;
754
+ if ($this->options['sns-position'] ) {
 
755
  // カード全体をリンクにするときは表示のみ
756
+ if ($this->options['link-all'] ) {
757
+ if ($this->options['sns-tw'] && $sns_tw > 0 ) {
758
+ $sns .= ' <div class="lkc-sns-tw">'.$sns_tw.'&nbsp;tweet' .(($sns_tw > 1) ? 's' : '').'</div>';
759
  }
760
+ if ($this->options['sns-fb'] && $sns_fb > 0 ) {
761
+ $sns .= ' <div class="lkc-sns-fb">'.$sns_fb.'&nbsp;share' .(($sns_fb > 1) ? 's' : '').'</div>';
762
  }
763
+ if ($this->options['sns-hb'] && $sns_hb > 0 ) {
764
+ $sns .= ' <div class="lkc-sns-hb">'.$sns_hb.'&nbsp;user' .(($sns_hb > 1) ? 's' : '').'</div>';
765
  }
766
+ if ($this->options['sns-po'] && $sns_po > 0 ) {
767
  $sns .= ' <div class="lkc-sns-po">'.$sns_po.'&nbsp;pocket'.(($sns_po > 1) ? 's' : '').'</div>';
768
  }
769
  } else {
770
  // 外部リンクアイコンを表示させるプラグイン対応のため no_icon を付与
771
+ if ($this->options['sns-tw'] && $sns_tw > 0 ) {
772
  $sns .= ' <a class="lkc-sns-tw no_icon" href="https://twitter.com/search?q=' .preg_replace('/.*\/\/(.*)/', '$1', $url).'&text='.esc_html($title).'" target="_blank">'.$sns_tw.'&nbsp;tweet'.(($sns_tw > 1) ? 's' : '').'</a>';
773
  }
774
+ if ($this->options['sns-fb'] && $sns_fb > 0 ) {
775
  $sns .= ' <a class="lkc-sns-fb no_icon" href="https://www.facebook.com/" target="_blank">'.$sns_fb.'&nbsp;share'.(($sns_fb > 1) ? 's' : '').'</a>';
776
  }
777
+ if ($this->options['sns-hb'] && $sns_hb > 0 ) {
778
  $sns .= ' <a class="lkc-sns-hb no_icon" href="https://b.hatena.ne.jp/entry/s/' .preg_replace('/.*\/\/(.*)/', '$1', $url).'" target="_blank">'.$sns_hb.'&nbsp;user'.(($sns_hb > 1) ? 's' : '').'</a>';
779
  }
780
+ if ($this->options['sns-po'] && $sns_po > 0 ) {
781
  $sns .= ' <a class="lkc-sns-po no_icon" href="https://getpocket.com/" target="_blank">'.$sns_po.'&nbsp;pocket'.(($sns_po > 1) ? 's' : '').'</a>';
782
  }
783
  }
784
+ if ($sns ) {
785
+ if ($this->options['sns-position'] == '1') {
786
+ $sns_title = '<div class="lkc-share">'.$sns.'</div>';
787
  } else {
788
+ $sns_info = '&nbsp;'.'<div class="lkc-share">'.$sns.'</div>';
789
  }
790
  }
791
  }
792
+
793
  // サムネイル
794
+ if ($thumbnail ) {
795
+ $thumbnail = '<figure class="lkc-thumbnail">'.$thumbnail.'</figure>';
796
  }
797
+
798
  // 日本語ドメイン対応
799
+ if ($this->options['flg-idn'] && function_exists('idn_to_utf8') && substr($domain, 0, 4 ) == 'xn--') {
800
+ $url = $scheme.'://'.idn_to_utf8($domain ).$location;
 
 
 
 
801
  }
802
+
803
  // 続きを読むボタン
804
+ if ($more && $more_text ) {
805
  $moretag = '<div class="lkc-more">'.$a_op.'<div class="lkc-more-text">'.$more_text.'</div>'.$a_cl.'</div>';
806
  } else {
807
+ $moretag = null;
808
  }
809
+
810
  // リンク先URL
811
+ $url1 = null;
812
+ $url2 = null;
813
+ if ($this->options['display-url'] ) {
814
+ if ($this->options['display-url'] == '2' ) {
815
  $url2 = '&nbsp;<div class="lkc-url-info"><cite>'.$st_op.$a_op.$url.$st_cl.$a_cl.'</cite></div>';
816
  } else {
817
  $url1 = '<div class="lkc-url"><cite>'.$st_op.$a_op.$url.$st_cl.$a_cl.'</cite></div>';
818
  }
819
  }
820
+
821
  // サイト情報
822
+ if ($info ) {
823
  $added_info = $added_op.$info.$added_cl;
824
  } else {
825
+ $added_info = null;
826
  }
827
+ if ($this->options['display-date'] && $link_type ) {
828
+ $post_dat = '<div class="lkc-date">'.date('Y.m.d', strtotime($post_date)).'</div>';
829
  } else {
830
+ $post_date = null;
831
  }
832
  $domain_info = '<div class="lkc-info">'.$a_op.$favicon.'<div class="lkc-domain"'.$site_title.'>'.$site_name.'</div>'.$added_info.$a_cl.$sns_info.$url2.$post_date.'</div>';
833
+
 
 
 
834
  // Google AMPに対応
835
+ if ((function_exists('is_amp_endpoint' ) && is_amp_endpoint() ) || $this->amp || ($this->options['flg-amp-url'] && (preg_match('/\/amp\/?$/i', $_SERVER["REQUEST_URI"]) || preg_match('/\?amp=1$/i', $_SERVER["REQUEST_URI"]) ) ) ) {
836
  // 簡易タグ作成
837
  $tag = '<table border="1" cellspacing="0" cellpadding="4"><tbody></tr><tr><td>'.$excerpt.'<br>'.$a_op_all.$a_op.$title.$a_cl.$a_cl_all.' - '.$site_name.'</td></tr></tbody></table>';
838
  } else {
851
  $tag = $wrap_op.$a_op_all.'<div class="lkc-card"><div class="lkc-content">'.$a_op.$thumbnail.'<div class="lkc-title"><div class="lkc-title-text">'.$title.'</div>'.$a_cl.$sns_title.'</div>'.$url1.'<div class="lkc-excerpt">'.$excerpt.'</div>'.$moretag.'</div><div class="clear"></div></div>'.$a_cl_all.$wrap_cl;
852
  }
853
  }
854
+
855
  // 引用文扱い
856
  if (isset($this->options['blockquote']) ? $this->options['blockquote'] : null == '1') {
857
  $tag = '<div class="'.$class_id.'"><blockquote class="lkc-quote">'.$tag.'</blockquote></div>';
858
  } else {
859
  $tag = '<div class="'.$class_id.'">'.$tag.'</div>';
860
  }
861
+
862
+ return $tag;
863
  }
864
 
865
  // URLのエンティティ化など(無害化?)
866
+ private function pz_TrimURL($url = null ) {
 
 
 
 
 
 
 
 
 
 
867
  if ($this->options['debug-time']) {
868
+ echo '<!-- Pz-LkC [pz_TrimURL]'.PHP_EOL;
869
+ echo '$url='.html_entity_decode($url ).PHP_EOL;
870
+ echo '/-->'.PHP_EOL;
871
  }
872
+
873
+ if (!$url ) {
874
+ return $url;
875
  }
876
+
877
+ $url = html_entity_decode($url );
878
+ $url = preg_replace('/^[\s \'\"‘’“”″]*(.*?)[\s \'\"‘’“”″]*$/u', '\1', $url ); // 色んな打ち間違え対応
879
+ $url = esc_url($url ); // プロトコル除外など
880
+ $url = trim($url );
881
+ switch (isset($this->options['trail-slash']) ? $this->options['trail-slash'] : null ) {
882
  case '1': // URLがドメイン名だけの場合、最後のスラッシュを除外する
883
+ $array_url = parse_url($url);
884
  if (!isset($array_url['path']) || $array_url['path'] == '/') {
885
  $url = rtrim($url, '/');
886
  }
889
  $url = rtrim($url, '/');
890
  break;
891
  }
892
+
893
  if ($this->options['debug-time']) {
894
+ echo '<!-- Pz-LkC [pz_TrimURL]'.PHP_EOL;
895
+ echo 'return'.PHP_EOL;
896
+ echo '$url='.html_entity_decode($url ).PHP_EOL;
897
+ echo '/-->'.PHP_EOL;
898
  }
899
+
900
  return $url;
901
  }
902
 
903
  // 内部サイト・外部サイトの判断
904
+ private function pz_LinkType($url = null ) {
905
  if (substr($url, 0, mb_strlen(home_url() ) ) == home_url() ) {
906
  if (get_permalink() == $url) {
907
  $link_type = 1; // 自ページ
938
  }
939
 
940
  // 相対パスをURLにする
941
+ private function pz_RelToURL( $base_url = '', $rel_path = '' ) {
942
  if (preg_match('/^https?\:\/\//', $rel_path ) ) { // 絶対パスだった場合
943
  return $rel_path;
944
  } elseif (substr($rel_path, 0, 2) == '//' ) { // 絶対パスだった場合(スキーム省略)
952
  }
953
 
954
  // ソーシャルカウント取得
955
+ private function pz_RenewSNSCount($data ) {
956
  if (!isset($this->options['sns-position']) || $this->options['sns-position'] == '') {
957
  return null;
958
  }
977
  $sns_renew = true;
978
  }
979
 
980
+ // エンコードURL
981
+ $url_raw = rawurlencode($data['url']);
982
+
983
+ // Twitter Digitminimiのcount.jsoonを使用
984
  if (isset($this->options['sns-tw']) && !is_null($this->options['sns-tw'])) {
985
  $count_before = isset($data['sns_twitter']) ? $data['sns_twitter'] : -1;
986
  if ($sns_renew || $count_before < 0) {
987
+ $result = wp_remote_get( 'https://jsoon.digitiminimi.com/twitter/count.json?url=' .$url_raw, $opt );
 
988
  if (isset($result) && !is_wp_error($result) && $result['response']['code'] == 200) {
989
+ $json = json_decode($result['body']);
990
+ $count = intval($json->count);
991
  if ($count > $count_before) {
992
  $data['sns_twitter'] = $count;
993
  $update_cnt = true;
996
  }
997
  }
998
 
999
+ // facebook
1000
+ //if (isset($this->options['sns-fb']) && !is_null($this->options['sns-fb'])) {
1001
+ // $count_before = intval(isset($data['sns_facebook']) ? $data['sns_facebook'] : -1);
1002
+ // if ($sns_renew || $count_before < 0) {
1003
+ // $result = wp_remote_get( 'https://graph.facebook.com?fields=og_object{engagement}&id=' .$url_raw, $opt );
1004
+ // if (isset($result) && !is_wp_error($result) && $result['response']['code'] == 200) {
1005
+ // $json = json_decode($result['body']);
1006
+ // $count = intval($json->{'og_object'}->{'engagement'}->{'count'});
1007
+ // if ($count > $count_before) {
1008
+ // $data['sns_facebook'] = $count;
1009
+ // $update_cnt = true;
1010
+ // }
1011
+ // }
1012
+ // }
1013
+ //}
1014
 
1015
+ // はてなブックマーク
1016
  if (isset($this->options['sns-hb']) && !is_null($this->options['sns-hb'])) {
1017
  $count_before = isset($data['sns_hatena']) ? $data['sns_hatena'] : -1;
1018
  if ($sns_renew || $count_before < 0) {
1019
+ $result = wp_remote_get( 'http://api.b.st-hatena.com/entry.count?url=' .$url_raw, $opt );
1020
  if (isset($result) && !is_wp_error($result) && $result['response']['code'] == 200) {
1021
  $count = intval($result['body']);
1022
  if ($count > $count_before) {
1027
  }
1028
  }
1029
 
1030
+ // Pocket
1031
  if (isset($this->options['sns-po']) && !is_null($this->options['sns-po'])) {
1032
  $count_before = isset($data['sns_pocket']) ? $data['sns_pocket'] : -1;
1033
  if ($sns_renew || $count_before < 0) {
1034
+ $result = wp_remote_get( 'https://widgets.getpocket.com/api/saves?url=' .$url_raw, $opt );
1035
  if (isset($result) && !is_wp_error($result) && $result['response']['code'] == 200) {
1036
+ $json = json_decode($result['body']);
1037
+ $count = intval($json->saves);
1038
  if ($count > $count_before) {
1039
  $data['sns_pocket'] = $count;
1040
  $update_cnt = true;
1075
  }
1076
 
1077
  // キャッシュデータを取得
1078
+ private function pz_GetCache($data ) {
1079
  if (!isset($data) || !is_array($data)) {
1080
  return null;
1081
  }
1099
  }
1100
 
1101
  // キャッシュデータを保存
1102
+ private function pz_SetCache($data ) {
1103
  global $wpdb;
1104
  if (!isset($data) || !is_array($data)) {
1105
  return null;
1107
  if (!isset($data['url']) || is_null($data['url']) || $data['result_code'] < 100) {
1108
  return null;
1109
  }
1110
+
1111
+ // リンク先URL
1112
  $url = $this->pz_TrimURL($data['url']);
1113
  $data['url'] = $url;
1114
+
1115
+ // URLからキーの生成
1116
  if (!isset($data['url_key']) || is_null($data['url_key']) || $data['url_key'] == '' ) {
1117
  $data['url_key'] = hash( 'sha256', esc_url( $url ), true);
1118
  }
1119
 
1120
+ // 登録時情報
1121
+ if (!isset($data['regist_result']) || !$data['regist_result']) {
1122
  $data['regist_title'] = $data['title'];
1123
  $data['regist_excerpt'] = $data['excerpt'];
1124
  $data['regist_charset'] = $data['charset'];
1125
  $data['regist_result'] = $data['result_code'];
1126
  $data['regist_time'] = $this->now;
1127
  }
 
1128
 
1129
+ // 最終更新日時
1130
+ $data['uptime'] = $this->now;
1131
+
1132
+ // DB更新
1133
  if ( isset($data['id']) ) {
1134
  $result = $wpdb->update(
1135
  $this->db_name,
1147
  )
1148
  );
1149
  }
1150
+ // DB更新失敗の場合、挿入
1151
  if (!$result) {
1152
+ // 登録日
1153
+ $data['regist'] = $this->now_mysql;
1154
+ // 新規の場合、IDをクリア
1155
  unset($data['id']);
1156
  $result = $wpdb->insert(
1157
  $this->db_name,
1158
  $data
1159
  );
1160
+ // DB挿入失敗の場合、日本語項目(サイト名)をクリアして挿入
1161
  if (!$result) {
 
1162
  unset($data['site_name']);
1163
  $result = $wpdb->insert(
1164
  $this->db_name,
1165
  $data
1166
  );
1167
+ // DB挿入失敗の場合、日本語項目(概要文)をクリアして挿入
1168
  if (!$result) {
1169
  unset($data['excerpt']);
1170
  $result = $wpdb->insert(
1171
  $this->db_name,
1172
  $data
1173
  );
1174
+ // DB挿入失敗の場合、日本語項目(タイトル)をクリアして挿入
1175
  if (!$result) {
1176
  unset($data['title']);
1177
  $result = $wpdb->insert(
1178
  $this->db_name,
1179
  $data
1180
  );
1181
+ // DB挿入失敗の場合、諦める
1182
  if (!$result) {
1183
  return $data;
1184
  }
1186
  }
1187
  }
1188
  }
1189
+ // 登録された内容を読み直す
1190
  return $this->pz_GetCache($data);
1191
  }
1192
 
1193
  // キャッシュデータを削除
1194
+ private function pz_DelCache($data ) {
1195
  global $wpdb;
1196
  if (!isset($data) || !is_array($data)) {
1197
  return null;
1209
  }
1210
 
1211
  // サイト内取得
1212
+ private function pz_GetPost( $data ) {
1213
  // サイト名取得
1214
  $site_name = get_bloginfo('name');
1215
 
1338
  }
1339
 
1340
  // URLパース(ドメイン名などを抽出)
1341
+ $url_m = parse_url($url );
1342
+ $scheme = isset($url_m['scheme']) ? $url_m['scheme'] : null; // スキーム
1343
+ $domain = isset($url_m['host']) ? $url_m['host'] : null; // ドメイン名
1344
+ $domain_url = isset($url_m['host']) ? $scheme.'://'.$url_m['host'] : null; // ドメインURL
1345
+ $location = isset($url_m['path']) ? $url_m['path'] : null; // ドメイン名以降
1346
+
1347
  // データセット
1348
  if (isset($data['title']) && $data['title'] == $title ) {
1349
  $before['mod_title'] = 0;
1364
  $data['site_name'] = $site_name;
1365
  $data['title'] = $title;
1366
  $data['excerpt'] = $excerpt;
1367
+ $data['post_date'] = $post_date;
1368
  $data['thumbnail'] = $thumbnail;
1369
  $data['favicon'] = $favicon;
1370
  $data['charset'] = 'UTF-8';
1376
  }
1377
 
1378
  // リダイレクト先URL取得
1379
+ private function pz_GetRedirURL( $data ) {
1380
  $url = $data['url'];
1381
  if ( function_exists( 'curl_init' ) ) { // cURLを使用する
1382
  $result_code = 0;
1403
  }
1404
 
1405
  // 外部サイト取得
1406
+ private function pz_GetCURL($data ) {
1407
  $url = $this->pz_TrimURL( $data['url'] );
1408
  if (!isset( $url ) || $url == '') {
1409
  return null;
1410
  }
1411
+
1412
  // リンク先サイト取得
1413
  $html = null;
1414
  $error = true;
1415
+
1416
  $domain = null;
1417
  $site_name = null;
1418
  $title = null;
1419
  $excerpt = null;
1420
  $charset = null;
1421
  $result_code = null;
1422
+
1423
  // URLパース(ドメイン名などを抽出)
1424
+ $url_m = parse_url($url );
1425
+ $scheme = isset($url_m['scheme']) ? $url_m['scheme'] : null; // スキーム
1426
+ $domain = isset($url_m['host']) ? $url_m['host'] : null; // ドメイン名
1427
+ $domain_url = isset($url_m['host']) ? $scheme.'://'.$url_m['host'] : null; // ドメインURL
1428
+ $location = isset($url_m['path']) ? $url_m['path'] : null; // ドメイン名以降
1429
+
1430
+ if ( function_exists('curl_init' ) ) { // cURLを使用する
1431
  $result_code = 0;
1432
  $ch = curl_init($url);
1433
  curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); // データで取得
1473
  $error = false;
1474
  }
1475
  }
1476
+
1477
  // 文字コード判定
1478
  $charset = null;
1479
  if ($html <> '') {
1586
  $data['mod_title'] = 0;
1587
  $data['mod_excerpt'] = 0;
1588
  $data['charset'] = $charset;
 
 
 
1589
  }
1590
  $data['url'] = $url;
1591
  $data['thumbnail'] = ( isset($thumbnail_url) ? $thumbnail_url : null );
1609
  }
1610
 
1611
  // TITLEとMETAタグを分解
1612
+ private function pz_GetMeta($html, $tags = null, $clear = false ) {
1613
  if ($clear == true || !isset($tags)) {
1614
  $tags = null;
1615
  $tags = array('none' => 'none');
1646
  }
1647
 
1648
  // サムネイル取得(外部リンクOGP画像取得)
1649
+ private function pz_GetThumbnail($url, $force = false ) {
1650
  if (!isset($url) || $url == '' || $url == 'https://s0.wp.com/i/blank.jpg') {
1651
  return null;
1652
  }
1653
 
1654
+ $file_dir = $this->options['thumbnail-dir']; // サムネイルのディレクトリ
1655
+ $file_dir_url = $this->options['thumbnail-url']; // サムネイルのディレクトリURL
1656
+ if (!$file_dir || !$file_dir_url) {
1657
+ return null;
1658
  }
1659
+
1660
+ $file_name = bin2hex(hash('sha256', esc_url( $url ), true)); // ファイル名(URLをハッシュしてファイル名にする)
1661
+ $file_ext = '.jpeg'; // 拡張子
1662
+ $file_path_old = $file_dir.$file_name; // ファイルのフルパス
1663
+ $file_path_jpeg = $file_dir.$file_name.$file_ext; // ファイルのフルパス
1664
+ $file_url = $file_dir_url.$file_name.$file_ext; // 画像URL
1665
+
1666
+ if (!$force) {
1667
+ if (file_exists ($file_path_jpeg)) { // ファイルが見つかった
1668
+ if (filesize($file_path_jpeg) < 34) {
1669
+ return null;
1670
+ }
1671
+ return $file_url;
1672
+ }
1673
+ if (file_exists ($file_path)) { // ファイルが見つかった(拡張子なし)
1674
+ rename ($file_path, $file_path_jpeg); // リネーム
1675
+ if (filesize($file_path_jpeg) < 34) {
1676
+ return null;
1677
+ }
1678
+ return $file_url;
1679
+ }
1680
  }
1681
+
1682
+ // cURLで画像取得
1683
+ $ch=curl_init();
1684
+ curl_setopt($ch, CURLOPT_URL, $url);
1685
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
1686
+ curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
1687
+ curl_setopt($ch, CURLOPT_TIMEOUT, 10);
1688
+ curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
1689
+ $result=curl_exec($ch);
1690
+ curl_close($ch);
1691
+ if (!$result) {
1692
+ touch($file_path_jpeg); // 空ファイル作成
1693
  return null;
1694
  }
1695
+
1696
+ // 画像生成
1697
+ $image = imagecreatefromstring($result); // 画像読み込み
1698
+ $image_width = imagesx($image);
1699
+ $image_height = imagesy($image);
1700
+ if ($image_width < 8 || $image_height < 8) { // 8x8未満は画像ではないと見なす
1701
+ touch($file_path_jpeg); // 空ファイル作成
1702
+ return null;
1703
+ }
1704
+
1705
+ $new_width = $this->options['cache-image-size']; //
1706
+ $new_height = $this->options['cache-image-size']; // 高さ
1707
+ if ($image_width <> $image_height) { // 正方形でない
1708
+ if ($image_width > $image_height) { // 幅の方が大きい
1709
+ $new_height = $image_height * ( $new_width / $image_width ); // 幅に合わせる
1710
+ } else { // 高さの方が大きい
1711
+ $new_width = $image_width * ( $new_height / $image_height ); // 高さに合わせる
1712
+ }
1713
+ }
1714
+ $image_p = imagecreatetruecolor($new_width, $new_height); // パレットを用意
1715
+ imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $image_width, $image_height); // サイズ変更してコピー
1716
+ imagejpeg($image_p, $file_path_jpeg); // JPEGで保存
1717
+ return $file_url; // 画像URLを返す
1718
  }
1719
 
1720
+ // 管理画面のスタイルシート、スクリプト設定
1721
+ public function enqueue_admin($hook ) {
1722
+ // カラーピッカー用のスタイルシート、スクリプト
1723
+ wp_enqueue_script ('pz-linkcard-colorpicker', plugins_url('js/color-picker.js', __FILE__), array('wp-color-picker'), false, true);
1724
+ wp_enqueue_script ('wp-color-picker');
1725
  wp_enqueue_style ('wp-color-picker');
1726
+ // 設定画面用のスタイルシート、スクリプト
1727
+ wp_enqueue_script ('pz-linkcard-admin', plugins_url('js/admin-settings.js', __FILE__), array('jquery'), false, true);
1728
+ wp_enqueue_style ('pz-linkcard-admin', plugin_dir_url(__FILE__).'css/admin.css', array(), $this->options['plugin-version']);
 
1729
  }
1730
 
1731
+ // 管理画面時の設定(フッター)
1732
  public function add_footer() {
1733
+ // テキスト エディタ用のクイックタグ
1734
  if ($this->options['flg-edit-qtag']) {
1735
  if (wp_script_is('quicktags') ) {
1736
  echo '<script>QTags.addButton(\'pz-lkc\',\''.__('Linkcard', $this->text_domain ).'\',\'['.$this->options['code1'].' url="\',\'"]\',\'\',\''.__('Make Linkcard', $this->text_domain ).'\');</script>';
1737
  }
1738
  }
1739
+ // ビジュアル エディタ用の挿入ダイアログ
1740
+ require('lib/pz-linkcard-modal.php');
1741
  }
1742
 
1743
  // 管理画面時の注意書き設定
1744
  public function add_notices() {
1745
  if ($this->options['flg-invalid']) {
1746
+ if (!$this->options['flg-invalid-hide']) {
1747
+ echo '<div class="error"><p><strong>'.$this->slug.': '.__('Invalid URL parameter in ', $this->text_domain).'<a href="'.$this->options['invalid-url'].'#lkc-error" target="_blank">'.$this->options['invalid-url'].'</a></strong><br>'.__('*', $this->text_domain).' '.__('You can cancel this message from <a href="./options-general.php?page=pz-linkcard-settings">the setting screen</a>.', $this->text_domain).'</p></div>';
1748
+ }
1749
  }
1750
  }
1751
 
1752
  // 管理画面時のスタイルシート、スクリプト設定
1753
+ public function add_mce_button($buttons ) {
1754
  if ($this->options['flg-edit-insert']) {
1755
+ $buttons[] = 'pz_linkcard_insert_shortcode';
1756
  }
1757
  return $buttons;
1758
  }
1759
+ public function add_mce_plugin($plugins ) {
1760
  if ($this->options['flg-edit-insert']) {
1761
+ $plugins[ "pz_linkcard_tinymce" ] = $this->plugin_dir_url.'js/mce-button.js';
1762
  }
1763
  return $plugins;
1764
  }
1765
 
1766
  // 通常時のスタイルシート
1767
+ public function enqueue($hook ) {
1768
+ $this->amp = null;
1769
+ $css_version = $this->options['plugin-version'].'.'.$this->options['css-count'];
1770
+ wp_enqueue_style ('pz-linkcard', $this->options['css-url'], array(), $css_version);
1771
+ if ($this->options['css-url-add']) {
1772
+ wp_enqueue_style('pz-linkcard-add', $this->options['css-add-url'], array(), $css_version);
1773
+ }
 
 
 
 
 
 
 
 
 
 
 
 
1774
  }
1775
 
1776
  // 管理画面のサブメニュー追加
1852
  }
1853
 
1854
  // スタイルシート生成
1855
+ private function pz_SetStyle() {
1856
+ require('lib/pz-linkcard-style.php');
1857
  }
1858
 
1859
  // Pz カード管理 キャッシュ・マネージャ
1860
  public function page_cacheman() {
1861
+ require('lib/pz-linkcard-cacheman.php');
1862
  }
1863
 
1864
  // Pz カード 設定画面
1865
  public function page_settings() {
1866
+ require('lib/pz-linkcard-settings.php');
1867
  }
1868
 
1869
  // プラグイン一覧のクイックメニュー
1870
+ public function action_links($links ) {
1871
  $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;
1872
  return $links;
1873
  }
1874
 
1875
  // プラグイン有効化
1876
  public function activate() {
1877
+ require('lib/pz-linkcard-init.php');
1878
  }
1879
 
1880
  // プラグイン停止
1882
  wp_clear_scheduled_hook('pz_linkcard_check');
1883
  wp_clear_scheduled_hook('pz_linkcard_alive');
1884
  }
 
1885
  }
1886
  $Class_Pz_LinkCard = new Pz_LinkCard;
readme.txt CHANGED
@@ -1,6 +1,6 @@
1
  === Pz-LinkCard ===
2
  Contributors: poporon
3
- Tags: post, internal link, external link, blogcard, linkcard
4
  Requires at least: 4.3
5
  Tested up to: 5.6
6
  Stable tag: trunk
@@ -10,6 +10,7 @@ Donate link: https://www.amazon.co.jp/gp/registry/wishlist/2KIBQLC1VLA9X
10
 
11
  This plugin is intended to display a link in a blog card format. The goodbye to the text-only link.
12
 
 
13
  == Description ==
14
 
15
  This plugin is intended to display a link in a blog card format.
@@ -31,12 +32,10 @@ The goodbye to the text-only link.
31
 
32
  リンク先の情報はキャッシュされるため、ソーシャルカウント等も表示されるカード形式のリンクとしては高速に表示されます。
33
 
34
- キャッシュ管理画面から、キャッシュされた情報の再取得や直接編集、削除が行えます。
35
 
36
  テキストにリンク設定しただけでは物足りないと感じていたら、ぜひお試しください。
37
 
38
- (ショートコード内にURLを記述した場合、ピンバックは飛びません。ピンバックを使用したい方は記事中にテキストリンクを張るなどで対応してください。)
39
-
40
  ※このプラグインはサムネイルの取得やサイトアイコンの取得のためにリンク先のURLをWebAPIに送信します。また、タイトル・抜粋文をDBへ保存します。詳細は「Arbitrary section」をお読みください。
41
 
42
 
@@ -109,44 +108,50 @@ Q1.
109
 
110
  A1.
111
  リンク先サイトのURL、タイトル、抜粋文を取得してデータベースに格納します。
112
- URLごとに保存されるため、複数の記事に同一のURLを指定してもデータは増えません。
113
  結果として記事内にタイトルや抜粋文を記述してリンクを設定するのと大きな差は無いと思います。
114
- 記事からショートコードを消してもデータベースからキャッシュ情報は削除されないので「Pz カード管理」画面から個別で消してください。
 
115
  また、アンインストール時にプラグインと設定内容、キャッシュ用のデータベースを削除します。
 
 
116
 
117
  Q2.
118
  自サイト内への記事でも新しいウィンドウで開きたいのですが?
119
 
120
  A2.
121
- 「Pz カード設定」の画面から、外部リンク、内部リンク、それぞれ「新しいウィンドウで開く」のチェックボックスが用意されています。
122
- 外部サイト同一をウィンドウで開くこともできます。
123
  普段は外部サイトは新しいウィンドウで開き、モバイルで閲覧時のみ同一ウィンドウで開くこともできます。
124
 
125
  Q3.
126
- WordPressピンバックが飛びません。
127
 
128
  A3.
129
  WordPressピンバックは記事中にリンクを直接記述しないと飛びません。
130
- 当プラグインはショートコードをカードの書式とリンクを展開するのでピンバックは飛びません。
 
131
 
132
  Q4.
133
  SSLサイトの内容が取得できません。
134
 
135
  A4.
136
- ブログサイトのcURLでアクセスを行った際にサーバー側にSSL証明書が更新されていないためにSSL検証が失敗されるためと思われます。SSL検証を行わない設定を有効にしてみてください。
137
 
138
  Q5.
139
  nofollowの設定は重要ですか?
140
 
141
  A5.
 
142
  Googleではnofollowを指定したリンク先はリンク元のサイトの評価に使用しないとしています。
143
- 通常のサイトでは指定しないことをお勧めします。
144
 
145
  Q6.
146
  直接取得にしたサムネイルの画像が粗い。
147
 
148
  A6.
149
- 外部サイトのサムネイル直接取得は引用の範囲を超えることのないように低解像度としています。
 
 
150
 
151
  Q7.
152
  「続きを読む」ボタンが表示されない。
@@ -154,6 +159,7 @@ Q7.
154
  A7.
155
  カードの「高さ」を空欄にして記事内容が全て表示されるように指定しないと表示されないことがあります。
156
 
 
157
  == Screenshots ==
158
 
159
  1. "Options screen"
@@ -162,11 +168,64 @@ A7.
162
  4. "The appearance of the 'LinkCard'"
163
  5. "Write shortcode and url"
164
 
 
165
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
166
  Ver2.4.1
167
  * WordPress 5.6 での動作確認。
168
  Compatible with WordPress 5.6.
169
- * 外部サイトの画像をキャッシュするときのサイズを選択できるように設定を追加しました。(Thanks @peacediner)
170
  Added: Added settings to allow you to choose the size when caching images from external sites.
171
 
172
  Ver2.4.0
@@ -176,7 +235,7 @@ Ver2.4.0
176
  Compatible with WordPress 5.5.
177
  * WordPress 5.5.3 での動作確認。
178
  Compatible with WordPress 5.5.3.
179
- * 記事では無いページでURL無効のエラーが出てしまうのを抑制。(Thanks @rindark)(Thanks @Rina_sendai)
180
  Fixed: Suppressed incorrect error display.
181
  * サブディレクトリ型マルチサイトの判定においてエラーが出てしまうのを抑制。
182
  Fixed: Suppressed incorrect error display.
@@ -184,63 +243,63 @@ Ver2.4.0
184
  Ver2.3.1
185
  * WordPress 5.3 での動作確認。
186
  Compatible with WordPress 5.3.
187
- * ビジュアル エディタのボタンが表示されない不具合の修正をしました。
188
  Fixed a bug that the button of the visual editor is not displayed.
189
 
190
  Ver2.3.0
191
- * プラグインなどのインストール状況によって設定画面のタブが動作しない不具合の修正をしました。
192
  Fixed: Fixed a bug that the tab of the setting screen does not respond.
193
 
194
  Ver2.2.9
195
  * WordPress 5.2.3 での動作確認。
196
  Compatible with WordPress 5.2.3.
197
- * 「かんたん書式設定」に「コンパクト」を追加しました。
198
  Added: Tiny format 'Compact'.
199
- * 「Pz カード管理」の画面にヘルプアイコンを設置しました。
200
  Added: A help icon has been added to the "Pz Card Manager" screen.
201
- * 「Pz カード設定」の画面にヘルプアイコンを設置しました。
202
  Added: A help icon has been added to the "Pz Card Settings" screen.
203
- * 「Pz カード設定」の画面をタブ方式に変更しました。
204
  Modified: Changed the "Pz card setting" screen to tab method.
205
- * 外部リンク、内部リンク、同ページでそれぞれ枠線の色を選択できるように設定を追加しました。
206
  Added: Added settings so that you can select the border color for external links, internal links, and the same page.
207
 
208
  Ver2.2.8
209
- * WordPressテーマ「Cocoon」を使用しているとき、外部リンクのアイコンが表示されないように修正しました。
210
  Fixed: When using the WordPress theme "Cocoon", the external link icon was not displayed.
211
- * WordPressテーマ「JIN」を使用しているとき、余分な空行が表示されないように修正しました。
212
  Fixed: When using the WordPress theme "JIN", it has been corrected so that extra blank lines are not displayed.
213
- * 「付加情報」をSPAN要素からDIV要素に変更しました。(Thanks @metro_eight)
214
  Modified: "Additional information" changed from SPAN element to DIV element.
215
- * 「シェア数」をSPAN要素からDIV要素に変更しました。
216
  Modified: "Share information" changed from SPAN element to DIV element.
217
- * 「続きを読む」ボタンをSPAN要素からDIV要素に変更しました。
218
  Modified: "Read more button" changed from SPAN element to DIV element.
219
 
220
  Ver2.2.7
221
  * サイトアイコンの垂直位置(vertical-align)をテキスト下(text-bottom)から中央(middle)へ変更。
222
  Modified: Changed the vertical position of the site icon (vertical-align) from the bottom of the text (text-bottom) to the middle (middle).
223
- * サイト追加情報をSPANからDIVへ変更。
224
  Modified: Changed site addition information from SPAN to DIV.
225
- * タイトルを折り返さない設定を追加。
226
  Added: Added a setting that does not wrap the title.
227
- * URLを折り返さない設定を追加。
228
  Added: Added a setting that does not wrap the URL.
229
  * 設定画面の「文字の設定」のレイアウトを変更。
230
  Modified: Changed the layout of "Text Settings" on the setting screen.
231
- * 「かんたん書式設定」に「囲み」を追加。
232
  Modified: Added tiny format "Enclose".
233
- * 「かんたん書式設定」に「反射」を追加。
234
  Modified: Added tiny format "Reflection".
235
- * 「かんたん書式設定」に「セロハンテープ(斜め)」を追加。
236
  Modified: Added tiny format "Cellophane tape (digonal)".
237
- * 「かんたん書式設定」に「Windows 95」を追加。
238
  Modified: Added tiny format "Windows 95".
239
- * 「かんたん書式設定」に「Windows XP」を追加。
240
  Modified: Added tiny format "Windows XP".
241
  * 内部リンクがキャッシュされない不具合を修正。(Thanks @Masa_s_Record)
242
  Fixed: Fixed a bug that internal links are not cached.
243
- * サイトアイコンが取得できないときに警告エラーが発生していたのを修正しました。
244
  Fixed: Fixed a bug.
245
 
246
  Ver2.2.6.2
@@ -252,7 +311,7 @@ Ver2.2.6.1
252
  Fixed: Fixed a bug.
253
 
254
  Ver2.2.6
255
- * 「余白」の値に「40px」を追加。
256
  Added: Added "40px" to "Margin" value.
257
  * ドメイン名(サイト名称)にマウスカーソルを重ねたときにアンダーラインが表示されないように変更。
258
  Modified: Changed so that the underline is not displayed when the mouse cursor is moved over the domain name (site name).
@@ -276,7 +335,7 @@ Ver2.2.4
276
  Modified: Changed to omit scheme from URL of internal link thumbnail.
277
 
278
  Ver2.2.3
279
- * ショートコードを強制的に展開する機能を設定に追加。
280
  Added: Added the function to forcibly expand the short code to the setting.
281
  * WordPress 5.2 での動作確認。
282
  Compatible with WordPress 5.2.
@@ -284,11 +343,11 @@ Ver2.2.3
284
  Compatible with WordPress 5.2.1.
285
 
286
  Ver2.2.2.1
287
- * ビジュアル エディタでエラーが表示されてしまうことがあるのを修正しました。
288
  Fixed: Fixed a bug.
289
 
290
  Ver2.2.2
291
- * ビジュアルエディタの挿入ボタンの仕組みを見直しました。
292
  Modified: Review the mechanism of the insert button in the visual editor.
293
 
294
  Ver2.2.1
@@ -300,131 +359,131 @@ Ver2.2.1
300
  Compatible with WordPress 5.0.3.
301
  * WordPress 5.1 での動作確認。
302
  Compatible with WordPress 5.1.
303
- * URLエラーの解除方法のメッセージを追加しました。
304
  Modified: Added a message on how to cancel the URL error.
305
- * 編集画面で警告が出ていたのを修正しました。
306
  Fixed: Fix warning on edit screen.
307
 
308
  Ver2.2.0
309
  * WordPress 5.0 での動作確認。
310
  Compatible with WordPress 5.0.
311
- * 存在しないURLを指定したときに警告エラーが発生していたのを修正しました。
312
  Fixed: Fixed a bug.
313
- * カード管理画面で警告エラーが発生していたのを修正しました。
314
  Fixed: Fixed a bug.
315
 
316
  Ver2.1.9.1
317
- * カード管理画面で警告エラーが発生していたのを修正しました。
318
  Fixed: Fixed a bug.
319
 
320
  Ver2.1.9
321
- * 相対URLを指定したときにサイトURLを補完する機能を追加しました。
322
  Added: Added a function to supplement site URL when relative URL is specified.
323
 
324
  Ver2.1.8.4
325
- * サイト情報が「なし」の場合、「続きを読む」ボタンが表示されなかったのを修正しました。(Thanks Andrew)
326
  Fixed: Fixed a bug that the `Read more` button is not displayed.
327
 
328
  Ver2.1.8.3
329
- * カード管理画面で警告エラーが発生していたのを修正しました。(Thanks @sayataro98)
330
  Fixed: Fixed a bug.
331
- * 「続きを読む」ボタンが表示されなかったのを修正しました。(Thanks Andrew)
332
  Fixed: Fixed a bug that the `Read more` button is not displayed.
333
 
334
  Ver2.1.8.2
335
- * 警告エラーが発生していたのを修正しました。
336
  Fixed: Fixed a bug.
337
 
338
  Ver 2.1.8.1
339
- * フィルターの優先度を指定するように修正しました。
340
  Modified: Fix to specify filter priority.
341
- * リンク切れチェックの周期が長くなるように修正しました。
342
  Modified: Correction was made so that the link break check cycle becomes longer.
343
- * 編集画面に次回のリンク切れチェック日時を表示しました。
344
  Modified: The next link break check date and time was displayed on the edit screen.
345
 
346
  Ver 2.1.8
347
- * 「かんたん書式設定」の「Pzカード 標準書式」を「Pzカード オリジナル」に名称変更しました。
348
  Modified: Minor fixes.
349
- * 「かんたん書式設定」の「Pzカード 標準書式」を微調整しました。
350
  Modified: Fine adjustment tiny format "Pz LinkCard Default".
351
- * 「かんたん書式設定」の「見出し」を微調整しました。
352
  Modified: Fine adjustment tiny format "Header".
353
- * 「かんたん書式設定」の「シンプル」を「ノーマル(はてなブログカード風)」に名称変更しました。
354
  Modified: Modified tiny format "Simple" to "Normal".
355
- * 「かんたん書式設定」に「シンプル」を追加しました。
356
  Added: Added tiny format "Simple".
357
- * 「かんたん書式設定」の「押しピン」を微調整しました。
358
  Modified: Added tiny format "Pushpin".
359
- * 設定画面のサイト情報の位置に「タイトルの上側」を追加しました。
360
  Added: Added setting to set Above the title.
361
- * 設定画面の「サイト情報」を「付加情報」に修正しました。
362
  Fixed: Modified "Site information" to "Added information".
363
- * カード管理画面の並び順の表示が昇順になっていたのを修正しました。
364
  Fixed: Fixed a bug.
365
- * ソーシャルカウントに「Pocket」を追加しました。
366
  Added: Added Pocket social count.
367
- * アンカーテキストの装飾を無効にする設定を追加しました。
368
  Added: Added setting to disable anchor text decoration.
369
 
370
  Ver2.1.7.1
371
- * 「かんたん書式設定」に「見出し」を追加しました。
372
  Added: Tiny format 'Headline'.
373
- * スタイルシートを整理しました。
374
  Modified: Minor fixes.
375
 
376
  Ver2.1.7
377
- * 外部サイト・内部サイト・同ページの判断方法を修正しました。
378
  Modified: Change judgment method.
379
- * 外部リンクのみ変換する設定を追加しました。(Thanks @mocochat)
380
  Added: Added 'Convert only external link'.
381
- * 文字コードを自動判断したときの結果を修正しました。
382
  Modified: Minor fixes.
383
 
384
  Ver2.1.6.2
385
- * アンカーテキストのアンダーラインが表示されてしまうのを修正しました。
386
  Fixed: Fixed a bug.
387
 
388
  Ver2.1.6.1
389
- * サイト情報を表示しないとき、ワーニングが出ていたのを修正しました。
390
  Fixed: Fixed a bug.(Thanks @ryuji120912)
391
 
392
  Ver2.1.6
393
- * 設定画面にTwitterアカウントを表示しました。
394
  Added: Added 'When in trouble'.
395
- * タイトル取得(正規表現)を修正しました。
396
  Modified: Fixed title acquisition method.
397
- * アンカーテキストのアンダーラインを無しにしました。
398
  Modified: Changed the text-decoration to "none".
399
 
400
  Ver2.1.5
401
- * 文字装飾を無しにしました。
402
  Modified: Changed the text-decoration to "none".
403
- * 初期設定では「影を付けない」設定に変更しました。
404
  Modified: Changed the initial setting to "Do not add shadows".
405
- * 初期設定では「角を丸めない」設定に変更しました。
406
  Modified: Changed the initial setting to "Do not round".
407
- * 初期設定では外部サイトのサムネイルを「直接取得できない場合、WebAPIを利用する」に変更しました。
408
  Modified: Changed the initial setting to "Use WebAPI ,If can not direct".
409
- * 角をまるめる設定にサイズを追加しました。
410
  Modified: Square rounding has added some sizes.
411
- * カードの余白に「24px」を追加しました。
412
  Modified: 24px was added to the card margin.
413
- * サムネイル取得WebAPIのHeartRail社の例をhttpsに変更しました。
414
- Modified: More secure.
415
- * Facebookのシェア数取得APIをhttpsに変更しました。
416
- Modified: More secure.
417
- * Twitterのツイート数取得APIをhttpsに変更しました。
418
- Modified: More secure.
419
- * Tweet(s)をクリックしたときの動作をツイート検索に変更しました。
420
  Modified: From registration to search at Twitter.
421
- * User(s)をクリックしたときの動作をはてなブックマーク数表示に変更しました。
422
  Modified: From registration to search at Hatena.
423
- * サイト情報からサイト名称と付加情報を分けました。
424
  Added: Add additional information.
425
- * 付加情報の文字設定を追加しました。
426
  Added: Add character setting of additional information.
427
- * 付加情報を見出し表示にする設定を追加しました。(Thanks @hituji_1234)
428
  Added: Added setting to set additional information as heading.
429
 
430
  Ver2.1.4.2
@@ -432,13 +491,13 @@ Ver2.1.4.2
432
  Compatible with WordPress 4.9.8.
433
 
434
  Ver2.1.4.1
435
- * URLの記述ミスに対応しました。
436
  Modified: Corresponded to URL mistake.
437
 
438
  Ver2.1.4
439
- * CHARSETを判断できないパターンがあったため修正しました。(Thanks サイノア)
440
  Fixed: There was a pattern which can not judge CHARSET, so I fixed it.
441
- * カード管理で「すべて」を選んだときに内部リンクが表示されていたのを修正しました。
442
  Fixed: Fixed a bug in card management.
443
 
444
  Ver2.1.3.1
@@ -446,27 +505,27 @@ Ver2.1.3.1
446
  Compatible with WordPress 4.9.6.
447
 
448
  Ver2.1.3
449
- * サブメニューの横にリンク切れの件数を表示する設定を追加しました。(Thanks @Oncle1316)
450
  Added: Added setting to display the number of broken links next to the submenu.
451
 
452
  Ver2.1.2.2
453
- * 定義されていない変数を使用していたためNoriceエラーが出てしまうのを修正しました。
454
  Fixed: Fixed a bug.
455
 
456
  Ver2.1.2.1
457
- * プラグインの新規インストールもしくは停止から有効化した際にエラーが出てしまうのを修正しました。
458
  Fixed: Fixed a bug.
459
 
460
  Ver2.1.2
461
- * 直接取得サムネイルのサイズを100pxから200pxへ変更しました。
462
  Fixed: Directly acquired thumbnail size was changed from 100px to 200px.
463
- * 横幅に合わせて縮小表示させるときのフォントサイズと行の高さを調整しました。
464
  Fixed: Adjusted the font size and line height when reducing the display to fit the width.
465
- * URLを表示できる場所を「タイトルの下」の他に「サイト情報の後ろ」が選べるように変更しました。
466
  Added: "Behind site-info" has been added as the display location of the URL.
467
- * カード管理画面に文字列検索を追加しました。
468
  Added: A character string search was added to the card management screen.
469
- * カード管理画面の一括メニューに「サムネイルの再取得」を追加しました。
470
  Added: "Renew thumbnail" was added to the batch menu of the card management screen.
471
 
472
  Ver2.1.1.1
@@ -474,41 +533,41 @@ Ver2.1.1.1
474
  Compatible with WordPress 4.9.5
475
 
476
  Ver2.1.1
477
- * 設定画面に「続きを読む」ボタンの文字の色とサイズを追加しました。
478
  Added: Added setting of color and size of "Read more".
479
 
480
  Ver2.1.0.1
481
- * カード管理に「リンク切れ」の項目を追加しました。
482
  Added: Added "Link broken" item to card management.
483
- * スタイルシートを読み込まないときに簡易表示するように修正しました。(Google AMP対応)
484
  Modified: If CSS is not loaded, display simple.
485
- * テキストエディタのクイックタグを表示するかを選択できるように設定を追加しました。
486
  Added: Added settings to allow you to choose whether to display quick tags in a text editor.
487
- * ビジュアルエディタの挿入ボタンを表示するかを選択できるように設定を追加しました。
488
  Added: Added settings to allow you to choose whether to display the insert button in the visual editor.
489
- * 続きを読むボタンを追加できるように修正しました。(Thanks @R18otomegame)
490
  Added: Added so that you can set the Read more button
491
- * 設定画面の誤記を修正しました。
492
  Fixed: The mistyping was corrected.
493
- * 設定画面の設定項目を再配置しました。
494
  Modified: The setting items on the setting screen have been relocated.
495
- * 設定画面にバージョンを表記しました。
496
  Modified: Version was written on setting screen.
497
 
498
  Ver2.0.8
499
  * WordPress 4.9.4 での動作確認。
500
  Compatible with WordPress 4.9.4
501
- * 設定画面のショートコードの表示を修正しました。
502
  Fixed: Fixed so that the short code is displayed immediately on the setting screen.
503
- * スタイルシートを追加できるように修正しました。
504
  Fixed: Fix to be able to add stylesheet.
505
- * 管理画面でワーニングが出ていたのを修正しました。
506
  Fixed: Fixed a bug.
507
 
508
  Ver2.0.7.2
509
  * WordPress 4.9.2 での動作確認。
510
  Compatible with WordPress 4.9.2
511
- * 設定画面の一部が日本語表記になっていなかったのを修正しました。
512
  Fixed: A part of the setting screen was not written in Japanese was fixed.
513
 
514
  Ver2.0.7.1
@@ -518,123 +577,123 @@ Ver2.0.7.1
518
  Ver2.0.7
519
  * WordPress 4.9 での動作確認。
520
  Compatible with WordPress 4.9
521
- * URLパラメーターが無効な場合にエラー表示する機能から一部のURLを除外しました。
522
  Modified: Exclude some URLs from errors
523
- * サブディレクトリ型のマルチサイトのとき、メインサイトからサブサイトを外部リンクと判定する設定を追加しました。
524
  Added: In the case of the multi-site of the subdirectory type, the site under the subdirectory is judged as an external site.
525
 
526
  Ver2.0.6
527
- * URLパラメーターが無効な場合にエラー表示する機能を追加しました。
528
  Added the function to display URL parameter.
529
 
530
  Ver2.0.5
531
- * 内部リンクの記事ID取得が失敗した場合に外部アクセスする機能を追加しました。(サイト表示が遅くなる可能性があります)
532
  Added: If the PostID can not be acquired, the URL of the redirect destination is acquired.
533
 
534
  Ver2.0.4.1
535
  * アクセスされたURLの末尾が「/?amp=1」だった場合に簡易表示する設定を追加。(Google AMP暫定対応)
536
  Added: Simple display if the end of URL is `/?amp=1`.
537
- * ドキュメント修正。
538
- Fixed: Fixed typographical errors in `readme.txt`.
539
 
540
  Ver2.0.4
541
  * WordPress 4.8.2 での動作確認。
542
  Compatible with WordPress 4.8.2
543
- * 「はてなブログカード」を使用した際のURLを変更しました。
544
  Modified: Hatena URL changed.
545
- * URLの記述ミスに対応しました。
546
  Modified: Corresponded to URL mistake.
547
- * 「押しピン」の画像を変更しました。
548
  Modified: Changed the image of "push pin".
549
- * 「かんたん書式設定」にWordPress標準ブログカード風の「スクエア」を追加しました。
550
  Added: Tiny format 'Square'.
551
- * サムネイルの位置に「上側」を追加しました。
552
  Added: "Upper" has been added to the position of the thumbnail.
553
 
554
  Ver2.0.3
555
- * 404エラーのときでもリンクを有効にする設定を追加しました。(Thanks @toru1231)
556
  Added: Added setting to enable link even on 404 error.
557
- * 内部リンクの抜粋が取得できていなかったのを修正しました。
558
  Fixed: Fixed an excerpt of the internal link could not be acquired.
559
- * 外部リンクのサムネイル取得が出来なくなる不具合を修正しました。
560
  Fixed: Fixed a bug that you can not acquire thumbnails of external links.
561
 
562
  Ver2.0.2
563
- * サイトアイコンのURLを取得するように修正しました。
564
  Fixed: Fix to get URL of site icon.
565
- * サムネイル画像、サイトアイコンが相対指定の場合に対応しました。
566
  Modified: Corresponds to relative specified URL.
567
- * パラメータが誤っているときにエラーが表示されない場合があったのを修正しました。
568
  Fixed: Fix to display error when parameter is wrong.
569
 
570
  Ver2.0.1.1
571
- * 警告エラーが発生していたのを修正しました。
572
  Fixed: Fixed a bug.
573
 
574
  Ver2.0.1
575
- * 内部リンクのカテゴリーページ/タグページに対応しました。
576
  Added: Supported display of category page.
577
 
578
  Ver2.0.0.3
579
- * Ver2.0.0.2で発生した内部リンクが取得できない不具合を修正しました。
580
  Fixed: Fixed a bug.
581
 
582
  Ver2.0.0.2
583
- * 未実装のJavaScriptの呼び出しがあったので修正しました。
584
  Fixed: Fixed a bug.
585
 
586
  Ver2.0.0.1
587
- * idn_to_utf8()が実装されていない環境でエラーが出ていたので対応しました。
588
  Fixed: Fixed a bug.
589
 
590
  Ver2.0.0
591
- * URL指定に「href」も使用できるように変更しました。(Thanks @weblearninglog)
592
  Modified: "href" was added to the parameter that specifies the URL.
593
- * テキストエディタにクイックタグを追加しました。(Thanks @kumasan_kenkou)
594
  Added: A quick tag was added to the text editor.
595
- * ビジュアルエディタにリンクカード作成ボタンを追加しました。
596
  Added: A card insertion button was added to the visual editor.
597
- * テキストリンクだけが記載されている行をリンクカードに変更する機能を追加しました。
598
  Added: Added the function to convert text link to card.
599
- * URLだけが記載されている行をリンクカードに変更する機能を追加しました。(Thanks @hina01011)
600
  Added: Added the function to convert URL to card.
601
- * カード管理画面のタイトルと抜粋文を変更されている場合に太文字で表示するようにしました。
602
  Modified: Changed so that changed parts are displayed in bold letters on the card management screen.
603
- * 日本語ドメイン(IDNA ASCIIドメイン)の表示に対応しました。(Thanks @ichinosecom)
604
  Added: It supports display of IDNA ASCII domain.
605
 
606
  Ver1.8.2
607
- * スタイルシートのURLからスキームを削除しました。(Thanks @mataku_hair)
608
  Modified: The style sheet URL was corrected.
609
- * InstantWPで使用した場合にカード管理画面が文字化けするのを修正しました。(Thanks aya)
610
  Fixed: Fixed garbled characters on the management screen.
611
- * 外部サイトのサムネイルの保存ディレクトリを変更しました。
612
  Modified: Changed directory to save thumbnails.
613
- * カード管理画面を狭い画面で見ると表示が崩れるのを修正しました。
614
  Fixed: Fixed display collapse of the management screen.
615
- * カード管理画面の文字セットの列を非表示にしました。
616
  Modified: The character set column of the management screen was deleted.
617
- * カード管理画面のソーシャルカウントの列をまとめました。
618
  Modified: Changed the social count column of the management screen.
619
- * カード管理画面に外部サイトのサムネイル画像の表示を追加しました。
620
  Modified: The thumbnail display was added to the management screen.
621
 
622
  Ver1.8.1
623
  * WordPress 4.8 での動作確認。
624
  Compatible with WordPress 4.8
625
- * サムネイルの取得時、フルサイズの画像を取得していたのを修正。(Thanks @cstudyupdate)
626
  Fixed: Fixed a bug. Corrected the size of thumbnail to be acquired.
627
- * 外部サイトのサムネイルの直接取得に対応。
628
  Added: Added setting the direct acquisition of the thumbnail of the external site.
629
- * 「かんたん書式設定」にはてなブログカード風の「シンプル」を追加。
630
  Added: Tiny format 'Simple'.
631
 
632
  Ver1.8.0
633
  * 設定画面のカラーコード入力にチェックを追加。
634
  Added: Added color code check.
635
- * アクセスされたURLの末尾が「/amp」「/amp/」だった場合に簡易表示する設定を追加。(Google AMP暫定対応)(Thanks @misoji_13)
636
  Added: Simple display if the end of URL is `/amp`.
637
- * 「かんたん書式設定」に「押しピン」を追加。(Thanks @kautakku )
638
  Added: Tiny format 'Pushpin'.
639
 
640
  Ver1.7.9.1
@@ -643,60 +702,60 @@ Ver1.7.9.1
643
 
644
 
645
  Ver1.7.9
646
- * Fixed: Fixed a bug that table is not created.
647
-
648
  * METAタグの名前が大文字が混ざっていると取得できなかったのを修正。(Thanks @J_kindan)
649
  * 内部リンクが取得できない時に外部アクセスしていたのが高負荷に繋がっていたため、外部アクセスしないように修正。(Thanks @J_kindan)
 
650
 
651
  Ver1.7.8
652
- * Fixed: Fixed a bug that table is not created.
653
-
654
- * キャッシュ用DBが作成されない不具合を修正。(Thanks @J_kindan)
655
 
656
  Ver1.7.7
657
- * アイキャッチ画像が設定されていないテーマの場合にエラーが発生してしまうのを修正。(Thanks enomotosato)
658
  Fixed: Fixed a bug
659
 
660
  Ver1.7.6
661
- * Pzカード設定画面に用例などを追加。
662
  Added: Add tips at settings screen
663
- * 「かんたん書式設定」に「縫い目」を追加。(Thanks @i_tsu_tsu)
664
  Added: Tiny format 'Stitch'.
665
- * サムネイルのサイズを指定できるように変更。(Thanks @misoji_13)
666
  Modified: Able to change the size of the thumbnail.
667
 
668
  Ver1.7.5
669
  * WordPress 4.7.1 での動作確認。
670
  Compatible with WordPress 4.7.1.
671
- * アクティベート/バージョンアップ時に重複データを削除。
672
  Cleaning up garbage from the database at activation.
673
- * Pzカード設定画面の項目追加と整理。
674
  Modified: Cleaned up the settings screen
675
- * Pzカード設定画面に用例などを追加。
676
  Added: Add tips at settings screen
677
- * サイト情報、タイトル、URL、抜粋文部分の行の高さを追加。(Thanks @keitaihoo、@ud_fibonacci)
678
  Added: Added setting. `Height` in letter.
679
- * 末尾のスラッシュを無視する設定を追加。
680
  Added: Added setting. Trailing slash.
681
- * フェイスブックのシェア数取得方法の修正。(Thanks @i_tsu_tsu)
682
- Fixed: facebook API.
683
- * Pzカード管理画面での内部リンクの判定方法を修正。
684
  Modified: Corrected the method of determining internal links on the Pz card management screen.
685
  * 内部リンクのキャッシュが正常に作成されない場合があったのを修正。(Thanks @i_tsu_tsu)
686
  Fixed: Fixed not being cached properly when using internal links.
687
  * 内部リンクをキャッシュから取得した場合に画像が表示されなかったのを修正。(Thanks @i_tsu_tsu)
688
  Fixed: Fixed the image not being displayed properly when using an internal link.
689
- * リンク先がリダイレクトされているときの追尾するかどうかを選択できるように設定を追加。(Thanks @fumieblog)
690
  Added: Added a setting so that you can choose whether to track when the link destination is redirected.
691
- * リンク先がリンク切れになっているかチェックするかどうかを選択できるように設定を追加。(Thanks @misoji_13)
692
  Added: Added a setting so that you can choose whether to check if the link destination is broken.
693
- * リンク先がリンク切れの場合、Aタグを無効にするかどうかを選択できるように設定を追加。
694
  Added: Added a setting so that you can choose whether to disable the A tag when the link destination is broken.
695
- * WebAPIに使用しているURLのデフォルトをSSL対応のものに変更。(Thanks @fumieblog、@hareannie01)
696
  Modified: Supports SSL for WebAPI URL.
697
 
698
  Ver1.7.4
699
- * キャッシュ用DBが作成されない不具合を修正。
700
  Fixed: Fixed a bug that table is not created.
701
 
702
  Ver1.7.3
@@ -708,17 +767,17 @@ Ver1.7.2
708
  Compatible with WordPress 4.6.
709
  * 幅に合わせて縮小を有効にしたとき、サムネイルと合わせて文字サイズも小さくするように修正。(Thanks @fumieblog)
710
  Modified: Modified so as also to small character size to fit the size of screen.
711
- * 管理画面で再取得時にソーシャルカウントが消えてしまう不具合を修正。(1.7.1で発生)(Thanks @i_tsu_tsu)
712
  Fixed: Fixed a bug that social count disappears.
713
  * 内部リンクの画像が取得できない不具合を修正。(1.7.1で発生)(Thanks @i_tsu_tsu)
714
  Fixed: Fixed a bug that thumbnail can not display.
715
- * Fixed: When the multi-site, fixes a bug that setting is not properly reflected.
716
- マルチサイトへの対応方法が誤っていたため修正。(1.7.1で発生)(Thanks @kyutechnabe)
717
 
718
  Ver1.7.1
719
  * 記事内容がキャッシュされない不具合を修正。(Thanks @i_tsu_tsu)
720
  Fixed: Fixed a bug that article content can not be acquired.
721
- * 取得時エラーのもののサムネイル表示をしないように修正。(Thanks @misoji_13)
722
  Modified: Time of the error, modified so that it does not display the thumbnail.
723
  * マルチサイトへの仮対応。(Thanks @kyutechnabe)
724
  Modified: Modification of the order to respond to multi-site.
@@ -732,9 +791,9 @@ Ver1.7.0
732
  Ver1.6.9
733
  * WordPress 4.5.3 での動作確認。
734
  Compatible with WordPress 4.5.3.
735
- * 表示幅によってサムネイルを調整する「幅に合わせて縮小」を初期選択するように変更。
736
  Modified: Scaled down to fit the screen size in setting. Default change `disabled` to `enabled`.
737
- * Twitter代替API count.jsoon を使用するように変更。
738
  Modified: Use an alternative API to get the Twitter count.
739
  * 内部リンクのときでWordPress標準のサイトアイコンが設定されていない場合、内部取得を選べないように修正。(Thanks @meiko2285)
740
  Fixed: Fix the method of acquiring the site icon in the internal site.
@@ -742,24 +801,24 @@ Ver1.6.9
742
  Added: Added thumbnail acquisition method at the internal links.
743
  * SSL証明書の検証を無効にする機能を設定に追加。
744
  Added: Added the ability to disable the verification of SSL certificate.
745
- * リンク切れチェック(準備中)(Thanks @misoji_13)
746
 
747
  Ver1.6.8
748
  * WordPress 4.5.2 での動作確認。
749
  Compatible with WordPress 4.5.2.
750
- * 警告エラーを修正しました。(@junya_0606)
751
  Fixed: Fixed a notice.
752
  * 指定したリンク先によってはMETAタグを内部テーブルに展開するのに失敗してFatalエラーが出るのを修正。(Thanks @misoji_13 , @ryu-blacknd)
753
  Fixed: Fixed an error. In had failed Perth META tags.
754
- * カード管理画面のPHPショートタグを使用しないように修正しました。(Thanks @toru1231)
755
  Fixed: Fixed so as not to use PHP-short-tags.
756
 
757
  Ver1.6.7
758
- * 内部リンクの記事抜粋方法を選択できるように修正しました。(Thanks @okamurajun)
759
  Added: Added a method of article excerpt internal link in setting.
760
 
761
  Ver1.6.6
762
- * 画面の幅によってサムネイルを小さくする機能を設定に追加。(Thanks 弁保社長)
763
  Added: Scaled down to fit the screen size in setting.
764
 
765
  Ver1.6.5
@@ -768,10 +827,10 @@ Ver1.6.5
768
  * 設定画面に文字のふちどり指定を追加。(Thanks @okaerinasainet)
769
  Added: Add a border of letters in setting.
770
  * facebookのシェアURLの指定が誤っていたため修正。
771
- Fixed: Fixed an error in the URL of facebook.
772
 
773
  Ver1.6.4
774
- * フェイスブックのシェア数が2以上でも1と表示されていたのを修正。(Thanks 弁保社長)
775
  Fixed: Shares of facebook has not been able to properly get.
776
  * 設定画面にリンクカードのDIV要素に任意のクラス名を設定できるように追加。(Thanks @misoji_13)
777
  Added: Grant function of any class name
@@ -779,22 +838,23 @@ Ver1.6.4
779
  Ver1.6.3
780
  * ツイッターのツイート数取得API終了に伴い、ツイート数取得処理を削除。設定画面に更新されない旨のメッセージを追加。
781
  Modified: Correspondence associated with the end Tweets number acquiring API.
782
- * ツイッターのシェア数表示の初期選択を「表示しない」に変更。
 
783
  * カード管理画面からソーシャルカウントの再取得を行ったとき、処理を二度行っていたので修正。(1.6.0で発生した不具合)
784
- Bugfix
785
 
786
  Ver1.6.2
787
- * サンフランシスコ時間で11月20日になりましたが、ツイート数が取得できているので制限を一時的に解除。
788
  Modified: Deadline of Tweets number get me grew day.
789
 
790
  Ver1.6.1
791
- * 標準時間で11月20日になりましたが、ツイート数が取得できているので制限を一日延長。
792
  Modified: Deadline of Tweets number get me grew day.
793
 
794
  Ver1.6.0
795
  * リンク先の取得に wp_remote_get() を使用していたのを、cURL に変更。
796
  Modified: Acquired without the wp_remote_get, modified to use a cURL.
797
- * charset の取得方法を変更。
798
  Modified: Fixed character set acquisition method.
799
  * ソーシャルカウントの取得をスケジュール方式に変更。
800
  Modified: Fixed social count set acquisition method.
@@ -802,28 +862,30 @@ Ver1.6.0
802
  Added: Add the margins of the inner card.
803
 
804
  Ver1.1.1
805
- * METAタグの取得方法を修正しました。
806
  Fixed: Fixed to had failed parsing of meta tags.
807
 
808
  Ver1.1.0
809
  * 2015年11月20日までのTwitter非公式API廃止に伴い、同日以降取得しないように修正。
810
  Modified: Since November 20, 2015 , it does not use the Twitter API.
811
- * 「新しいウィンドウで開く」をチェックボックスからリストに変更し、「モバイル以外(のみ新しいウィンドウで開く)」を追加。(Thanks @misoji_13)
812
- Added: It can be selected "Other than mobile" and "All client" in the setting of "Open new window/tab".
 
 
813
 
814
  Ver1.0.3
815
  * キャッシュ保存時にキーが正しく設定されないことがあったのを修正。
816
- * 「カード管理」画面で内部ID(連番)を表示するように修正。
817
  * 定型書式「紙がめくれる効果」を修正。(テーマによってはレイアウトが崩れる可能性があります)
818
  * 定型書式「テープと紙めくれ」を追加。(テーマによってはレイアウトが崩れる可能性があります)
819
 
820
  Ver1.0.2
821
- * 「カード管理」でキャッシュを編集したとき、一部の文字をエスケープしていなかったのを修正。
822
- * バージョンアップの度に一部のパラメータがデフォルトに戻らないように修正。
823
  * プログラム内でのキャッシュの読み書き方法の改善。
824
 
825
  Ver1.0.1
826
- * 「カード管理」でキャッシュを編集したとき、内部IDがクリアされてしまう不具合を修正。
827
 
828
  Ver1.0.0
829
  * 全体的なプログラムの見直し。
@@ -834,31 +896,31 @@ Ver1.0.0
834
  * ショートコード1にのみ適用されるように修正。
835
  * タイトルがURLになってしまう不具合修正。
836
  * ショートコード3を解放。
837
- * キャッシュ管理画面を修正。
838
  * リンク先単体の「編集」「再取得」「削除」が行えるように修正。
839
  * 一括処理に「再取得」を追加。
840
- * 内部リンクのURLにリンクを設定。
841
- * ドメインで抽出できるように修正。
842
  * ページング機能を追加。
843
 
844
  Ver0.1.4
845
  * <head>にprefixなどがあるときに、metaタグの解析に失敗していたのを修正。
846
- * パラメータに閉じの「半角角かっこ(大かっこ)」がある場合に、URLに余分なコードが入ってしまったのを改善。
847
 
848
  Ver0.1.3
849
- * content=''になっているOGP情報は無視するように修正。
850
- * サムネイル取得APIをWordPress.comのものを初期値に変更。
851
- * metaタグ表記にシングルクォートが使われている場合、取得できていなかったため対応。
 
 
 
 
852
  * タイトルや抜粋文をパラメータ等で設定した場合にもHTML等を除去するように変更。
853
- * 「カード管理」の画面のセキュリティを強化。
854
- * サイト情報を下側にしているときに定型書式「Pzカード標準書式」を使用したときサイト名が見えなくなる現象に対応。
855
- * 設定画面の「サイト情報」の位置を変更。
856
- * 設定画面にサイト情報と記事内容の間を区切るための「区切り線」を変更。
857
 
858
  Ver0.1.2
859
  * 「新しいウィンドウで開く」の設定を追加。
860
  * カード管理画面のソート順を修正。
861
- * フェイスブックの表記を「f」から「fb」へ変更。
862
 
863
  Ver0.1.1
864
  * 公開後発見されたバグを修正。
@@ -867,19 +929,20 @@ Ver0.1.0
867
  * 公式プラグインディレクトリでの最初の公開バージョン。
868
 
869
  Ver0.0.1
870
- * 当サイトでの最初の公開バージョン。
871
 
872
  Ver0.0.0
873
- * 途中まで作成していたバージョンを破棄。Pz-HatenaBlogCard ver1.2.5 を元に、DBアクセス部分を移植して、Pz-LinkCardを作成。
874
- * テストサイトでの動作検証。
875
- * 当サイトでの本番環境での動作検証。
 
876
 
877
 
878
  == Upgrade notice ==
879
 
880
  == Arbitrary section ==
881
 
882
- = Display and DB cache =
883
 
884
  This plug-in one create a DB table when you have activated. ( Prefix + "pz_linkcard")
885
 
@@ -888,29 +951,29 @@ Open the pages of the article when the "For the first time it appears " , and ca
888
  Therefore , the display for the first time is slow , the second and subsequent display is fast.
889
 
890
 
891
- = Create files =
892
 
893
  CSS file are stored in a custom folder under `/wp-content/Uploads` .
894
 
895
 
896
- = Use API =
897
 
898
  Number of SNS share have been acquired by the JSON request.
899
 
900
- * Twitter ... http://urls.api.twitter.com/1/urls/count.json?url=[URL]
901
 
902
- * Facebook ... http://graph.facebook.com/?id=[URL]
903
 
904
  * Hatena ... http://api.b.st-hatena.com/entry.count?url=[URL]
905
 
 
906
 
907
  Displays using the `Google-favicon API` to get the favicon. This can be changed.
908
 
909
-
910
  Displays using the `WordPress.org mshots API` to get the thumbnail. This can be changed.
911
 
912
 
913
- = 表示とキャッシュ =
914
 
915
  このプラグインは、有効化したときにDBテーブルを一つ作成します。(プレフィックス+「pz_linkcard」)
916
 
@@ -924,42 +987,38 @@ Displays using the `WordPress.org mshots API` to get the thumbnail. This can be
924
  (内部でのDBアクセスが発生しますが、通常は軽微なものです。カード1枚表示のたびに、取得のために1クエリ発行します。更新が発生した場合には挿入・更新のためのクエリが1回発生します。)
925
 
926
 
927
- = ソーシャルカウントの取得 =
928
 
929
- ソーシャルカウントについては、「ツイッターのツイート数」「フェイスブックのシェア数」「はてなブックマークのブックマーク数」の3種類に対応しています。
930
 
931
  それぞれAPIへのJSONリクエストにより値を取得します。
932
 
933
- これらのアクセスも遅い場合がありますが、取得した値はタイトルや抜粋文と同様、DBへキャッシュを行うため、直近の表示にはAPIアクセスが発生しません。
934
 
935
- ソーシャルカウントの再取得は、最後の取得から4時間~36時間程度のランダムな時間で行います。
936
 
937
- この間隔については、改善の余地があります。
938
 
939
  また、各APIについては、仕様変更やサービス終了に伴い、正常に取得できなくなる場合があります。
940
 
941
 
942
- = 画像取得APIの利用 =
943
-
944
- サムネイルの取得については、「取得しない」を標準での設定としています。
945
-
946
- 画像取得APIのURLを指定した上で、「WebAPIを利用する」にすることで、画像も取得できます。
947
 
948
- 画像取得APIの設定については、下記のページを参照ください。
949
 
950
- https://popozure.info/20151004/9317
951
 
 
952
 
953
- サイトアイコン(ファビコン)についても、同様にWebAPIを使用して取得しています。
954
 
955
- こちらは標準設定で「WebAPIで取得する」になっており、Googleのファビコン取得APIのアドレスを設定しています。
956
 
957
- これは、リンク先のURLを入力することによって、サイトアイコンの画像を取得できるものです。
958
 
959
- 公式なサービスでは無いため、仕様変更やサービス終了に伴い、正常に取得できなくなく場合があります。
960
 
961
 
962
- = その他 =
963
 
964
  Pz-HatenaBlogCard からの設定引き継ぎ機能はありません。この機会に触ったことのなかった設定項目にも触れていただければ幸いです。
965
 
@@ -974,4 +1033,4 @@ Pz-HatenaBlogCard からの設定引き継ぎ機能はありません。この
974
 
975
  なお、アンインストールを行う際には、キャッシュを保管するDBテーブルと、options内の設定ファイルは削除されます。
976
 
977
- アンインストール時の削除に関してはプラグインディレクトリ内の uninstall.php で行っています。
1
  === Pz-LinkCard ===
2
  Contributors: poporon
3
+ Tags: LinkCard, BlogCard, Internal Link, External Link
4
  Requires at least: 4.3
5
  Tested up to: 5.6
6
  Stable tag: trunk
10
 
11
  This plugin is intended to display a link in a blog card format. The goodbye to the text-only link.
12
 
13
+
14
  == Description ==
15
 
16
  This plugin is intended to display a link in a blog card format.
32
 
33
  リンク先の情報はキャッシュされるため、ソーシャルカウント等も表示されるカード形式のリンクとしては高速に表示されます。
34
 
35
+ カード管理画面から、キャッシュされた情報の再取得や編集、削除等が行えます。
36
 
37
  テキストにリンク設定しただけでは物足りないと感じていたら、ぜひお試しください。
38
 
 
 
39
  ※このプラグインはサムネイルの取得やサイトアイコンの取得のためにリンク先のURLをWebAPIに送信します。また、タイトル・抜粋文をDBへ保存します。詳細は「Arbitrary section」をお読みください。
40
 
41
 
108
 
109
  A1.
110
  リンク先サイトのURL、タイトル、抜粋文を取得してデータベースに格納します。
111
+ URLごとに保存されるため、別の記事でも同一URLを指定した場合にデータは増えません。
112
  結果として記事内にタイトルや抜粋文を記述してリンクを設定するのと大きな差は無いと思います。
113
+ 記事からショートコードを消してもデータベースからキャッシュ情報は削除されません。
114
+ キャッシュ情報を削除する場合、カード管理画面から個別で削除してください。
115
  また、アンインストール時にプラグインと設定内容、キャッシュ用のデータベースを削除します。
116
+ 外部サイトのサムネイルに「直接取得」を指定すると、リンク先サイトの画像を取得してサイズを拡大・縮小したファイルを作成します。
117
+ 画像サイズを大きくするとファイル容量が増えるのでご注意ください。
118
 
119
  Q2.
120
  自サイト内への記事でも新しいウィンドウで開きたいのですが?
121
 
122
  A2.
123
+ 設定画面から「外部リンク」と「内部リンク」、それぞれ「新しいウィンドウで開く」のチェックボックスが用意されています。(ウィンドウとなっていますが、実際の動作はタブに読み替えてください)
 
124
  普段は外部サイトは新しいウィンドウで開き、モバイルで閲覧時のみ同一ウィンドウで開くこともできます。
125
 
126
  Q3.
127
+ WordPressのピンバックがリンク先へ飛びません。
128
 
129
  A3.
130
  WordPressピンバックは記事中にリンクを直接記述しないと飛びません。
131
+ ショートコード内にURLを記述した場合、ピンバックは飛びません。
132
+ 直接URLを記述し、設定画面の「エディタ」タブから「URL行の変換」を有効にすることで対応できます。
133
 
134
  Q4.
135
  SSLサイトの内容が取得できません。
136
 
137
  A4.
138
+ ブログサイトのcURLでアクセスを行った際にサーバー側にSSL証明書が更新されていないためにSSL検証が失敗されるためと思われます。SSL検証を行わない設定を有効にしてみてください。(非推奨)
139
 
140
  Q5.
141
  nofollowの設定は重要ですか?
142
 
143
  A5.
144
+ 外部サイトにのみnofollowが設定できます。
145
  Googleではnofollowを指定したリンク先はリンク元のサイトの評価に使用しないとしています。
146
+ 通常は使用しない事をお勧めしますが、サイトの運用ポリシーによって使用する事は差し支えありません。
147
 
148
  Q6.
149
  直接取得にしたサムネイルの画像が粗い。
150
 
151
  A6.
152
+ 外部サイトのサムネイル直接取得は著作権法上の引用の範囲を超えることのないように低解像度(100px四方)としていました。
153
+ Ver2.1.2から200px四方に変更、Ver2.4.1から自由に指定できるように変更しました。
154
+ イラストや写真が載っているサイトの画像を高画質で取得し、ギャラリーのような形で表示した場合などは違法と判断される恐れがあります。
155
 
156
  Q7.
157
  「続きを読む」ボタンが表示されない。
159
  A7.
160
  カードの「高さ」を空欄にして記事内容が全て表示されるように指定しないと表示されないことがあります。
161
 
162
+
163
  == Screenshots ==
164
 
165
  1. "Options screen"
168
  4. "The appearance of the 'LinkCard'"
169
  5. "Write shortcode and url"
170
 
171
+
172
  == Changelog ==
173
+ Ver2.4.2
174
+ * 設定画面の「画像」タブにて、指定した画像サイズによってはエラーが発生する不具合を修正。(Thanks @miya_gal_ossan)
175
+ Fixed: Fixed image size error on settings screen
176
+ * 設定画面で使用するjQueryを修正。
177
+ Fixed: Review and fix jQuery on the settings screen.
178
+ * ビジュアル エディタ(クラシック エディタ)で使用するjQueryを修正。
179
+ Fixed: Review and fix jQuery in classic editor.
180
+ * アンインストール時にファイルが残ったままだったのを削除するように修正。
181
+ Fixed: Fixed to delete the directory that remained at the time of uninstallation.
182
+ * ドキュメント(readme.txt)修正。
183
+ Modified: Modify `readme.txt`.
184
+ * 設定画面の項目名を一部修正。
185
+ Modified: Corrected the item name on the setting screen.
186
+ * 設定画面の「配置」タブにて、BLOCKQUOTEの設定を非推奨に変更。
187
+ Modified: Modified blockquote setting on the setting screen to deprecated.
188
+ * 設定画面の「外部リンク」タブにて、「rel="nofollow"」の設定を非推奨に変更。
189
+ Modified: Mofified nofollow setting on the setting screen to deprecated.
190
+ * 設定画面の「エディタ」タブにて、ショートコード1を設定しなくてもエラーとしないように変更。
191
+ Modified: Modified shortcode to optional on the setting screen
192
+ * 設定画面の設定保存等のメッセージを閉じられるように変更。
193
+ Modified: Modified to close the message on the setting screen.
194
+ * 設定画面で内容が変更されていない場合、設定の保存は行わずスタイルシートの再生成のみ行うように変更。
195
+ Modified: Modified not to save if there is no change on the setting screen.
196
+ * 設定画面でのカラーピッカーを表示したときに、レイアウトが崩れるのを修正。
197
+ Modified: Modified the behavior of color-picker on the setting screen.
198
+ * カード管理画面の編集画面に表示される日時のフォーマットをWordPressの一般設定に合わせるように変更。
199
+ Modified: Modified date format on card management screen.
200
+ * 設定を更新した時、ブラウザのキャッシュに関係無くCSSファイルを読み直すように修正。
201
+ Modified: Modified to read the CSS file again when updating the settings
202
+ * facebookのシェア数が取得できないため、API利用を停止。
203
+ Modified: Suspended because the number of shares on facebook cannot be obtained.
204
+ * 設定画面に「CSS」タブを追加。
205
+ Added: Added "CSS" tab to the setting screen.
206
+ * 設定画面の「エラー」タブにて、URLエラーのある記事の行へのリンクを追加。
207
+ Added: Added a link to an article with an error on the settings screen.
208
+ * 設定画面の「外部リンク」タブに、「rel="noopener"」の設定を追加。
209
+ Added: Added noopener setting on the setting screen.
210
+ * 設定画面の「画像」タブに、キャッシュ画像のディレクトリ名と使用量の表示を追加。
211
+ Added: Added display of image usage to the setting screen.
212
+ * 設定画面の「画像」タブに、キャッシュ画像のディレクトリURLの表示を追加。
213
+ Added: Added display of image directory to setting screen
214
+ * 設定画面の「上級者向け」タブに、URLエラーをWordPress管理画面に表示しない設定を追加。
215
+ Added: Added a setting to hide the url error of the management screen on the setting screen.
216
+ * 設定画面の「上級者向け」タブに、設定を保存した日時の表示を追加。
217
+ Added: Added the saved date to the setting screen.
218
+ * 設定画面の「エディタ」タブの「ショートコード実行」の初期選択をチェック有りに変更。
219
+ Modified: Modified the initial settings.
220
+ * 当バージョンへバージョンアップした際、「ショートコード実行」をチェック有りに強制変更。
221
+ Modified: Forcibly set "Do shortcode" to on.
222
+ * 「ショートコード実行」がオンになっている場合の動作を「URL行の変換」もしくは「リンク行の変換」がオンになっている場合のみに変更。
223
+ Modified: Modified the condition of "Do shortcode".
224
+
225
  Ver2.4.1
226
  * WordPress 5.6 での動作確認。
227
  Compatible with WordPress 5.6.
228
+ * 外部サイトの画像をキャッシュするときのサイズを選択できる機能を追加。(Thanks @peacediner)
229
  Added: Added settings to allow you to choose the size when caching images from external sites.
230
 
231
  Ver2.4.0
235
  Compatible with WordPress 5.5.
236
  * WordPress 5.5.3 での動作確認。
237
  Compatible with WordPress 5.5.3.
238
+ * 記事では無いページでURL無効のエラーが出てしまうのを抑制。(Thanks @rindark , @Rina_sendai)
239
  Fixed: Suppressed incorrect error display.
240
  * サブディレクトリ型マルチサイトの判定においてエラーが出てしまうのを抑制。
241
  Fixed: Suppressed incorrect error display.
243
  Ver2.3.1
244
  * WordPress 5.3 での動作確認。
245
  Compatible with WordPress 5.3.
246
+ * ビジュアル エディタのボタンが表示されない不具合を修正。
247
  Fixed a bug that the button of the visual editor is not displayed.
248
 
249
  Ver2.3.0
250
+ * プラグインなどのインストール状況によって設定画面のタブが動作しない不具合を修正。
251
  Fixed: Fixed a bug that the tab of the setting screen does not respond.
252
 
253
  Ver2.2.9
254
  * WordPress 5.2.3 での動作確認。
255
  Compatible with WordPress 5.2.3.
256
+ * 設定画面の「かんたん書式設定」に「コンパクト」を追加。
257
  Added: Tiny format 'Compact'.
258
+ * カード管理画面にヘルプアイコンを設置。
259
  Added: A help icon has been added to the "Pz Card Manager" screen.
260
+ * 設定画面にヘルプアイコンを設置。
261
  Added: A help icon has been added to the "Pz Card Settings" screen.
262
+ * 設定画面をタブ方式に変更。
263
  Modified: Changed the "Pz card setting" screen to tab method.
264
+ * 外部リンク、内部リンク、同ページでそれぞれ枠線の色を選択できるように機能を追加。
265
  Added: Added settings so that you can select the border color for external links, internal links, and the same page.
266
 
267
  Ver2.2.8
268
+ * WordPressテーマ「Cocoon」を使用しているとき、外部リンクのアイコンが表示されないように修正。
269
  Fixed: When using the WordPress theme "Cocoon", the external link icon was not displayed.
270
+ * WordPressテーマ「JIN」を使用しているとき、余分な空行が表示されないように修正。
271
  Fixed: When using the WordPress theme "JIN", it has been corrected so that extra blank lines are not displayed.
272
+ * 「付加情報」をSPAN要素からDIV要素に変更。(Thanks @metro_eight)
273
  Modified: "Additional information" changed from SPAN element to DIV element.
274
+ * 「シェア数」をSPAN要素からDIV要素に変更。
275
  Modified: "Share information" changed from SPAN element to DIV element.
276
+ * 「続きを読む」ボタンをSPAN要素からDIV要素に変更。
277
  Modified: "Read more button" changed from SPAN element to DIV element.
278
 
279
  Ver2.2.7
280
  * サイトアイコンの垂直位置(vertical-align)をテキスト下(text-bottom)から中央(middle)へ変更。
281
  Modified: Changed the vertical position of the site icon (vertical-align) from the bottom of the text (text-bottom) to the middle (middle).
282
+ * サイト追加情報をSPANタグからDIVタグへ変更。
283
  Modified: Changed site addition information from SPAN to DIV.
284
+ * 設定画面にタイトルを折り返さない設定を追加。
285
  Added: Added a setting that does not wrap the title.
286
+ * 設定画面にURLを折り返さない設定を追加。
287
  Added: Added a setting that does not wrap the URL.
288
  * 設定画面の「文字の設定」のレイアウトを変更。
289
  Modified: Changed the layout of "Text Settings" on the setting screen.
290
+ * 設定画面の「かんたん書式設定」に「囲み」を追加。
291
  Modified: Added tiny format "Enclose".
292
+ * 設定画面の「かんたん書式設定」に「反射」を追加。
293
  Modified: Added tiny format "Reflection".
294
+ * 設定画面の「かんたん書式設定」に「セロハンテープ(斜め)」を追加。
295
  Modified: Added tiny format "Cellophane tape (digonal)".
296
+ * 設定画面の「かんたん書式設定」に「Windows 95」を追加。
297
  Modified: Added tiny format "Windows 95".
298
+ * 設定画面の「かんたん書式設定」に「Windows XP」を追加。
299
  Modified: Added tiny format "Windows XP".
300
  * 内部リンクがキャッシュされない不具合を修正。(Thanks @Masa_s_Record)
301
  Fixed: Fixed a bug that internal links are not cached.
302
+ * サイトアイコンが取得できないときに警告エラーが発生していたのを修正。
303
  Fixed: Fixed a bug.
304
 
305
  Ver2.2.6.2
311
  Fixed: Fixed a bug.
312
 
313
  Ver2.2.6
314
+ * 設定画面の「余白」に「40px」を追加。
315
  Added: Added "40px" to "Margin" value.
316
  * ドメイン名(サイト名称)にマウスカーソルを重ねたときにアンダーラインが表示されないように変更。
317
  Modified: Changed so that the underline is not displayed when the mouse cursor is moved over the domain name (site name).
335
  Modified: Changed to omit scheme from URL of internal link thumbnail.
336
 
337
  Ver2.2.3
338
+ * 設定画面にショートコードを強制的に展開する機能を追加。
339
  Added: Added the function to forcibly expand the short code to the setting.
340
  * WordPress 5.2 での動作確認。
341
  Compatible with WordPress 5.2.
343
  Compatible with WordPress 5.2.1.
344
 
345
  Ver2.2.2.1
346
+ * ビジュアル エディタでエラーが表示されてしまうことがあるのを修正。
347
  Fixed: Fixed a bug.
348
 
349
  Ver2.2.2
350
+ * ビジュアルエディタの挿入ボタンの仕組みを見直。
351
  Modified: Review the mechanism of the insert button in the visual editor.
352
 
353
  Ver2.2.1
359
  Compatible with WordPress 5.0.3.
360
  * WordPress 5.1 での動作確認。
361
  Compatible with WordPress 5.1.
362
+ * URLエラーの解除方法のメッセージを追加。
363
  Modified: Added a message on how to cancel the URL error.
364
+ * 編集画面で警告が出ていたのを修正。
365
  Fixed: Fix warning on edit screen.
366
 
367
  Ver2.2.0
368
  * WordPress 5.0 での動作確認。
369
  Compatible with WordPress 5.0.
370
+ * 存在しないURLを指定したときに警告エラーが発生していたのを修正。
371
  Fixed: Fixed a bug.
372
+ * カード管理画面で警告エラーが発生していたのを修正。
373
  Fixed: Fixed a bug.
374
 
375
  Ver2.1.9.1
376
+ * カード管理画面で警告エラーが発生していたのを修正。
377
  Fixed: Fixed a bug.
378
 
379
  Ver2.1.9
380
+ * 相対URLを指定したときにサイトURLを補完する機能を追加。
381
  Added: Added a function to supplement site URL when relative URL is specified.
382
 
383
  Ver2.1.8.4
384
+ * サイト情報が「なし」の場合、「続きを読む」ボタンが表示されなかったのを修正。(Thanks Andrew)
385
  Fixed: Fixed a bug that the `Read more` button is not displayed.
386
 
387
  Ver2.1.8.3
388
+ * カード管理画面で警告エラーが発生していたのを修正。(Thanks @sayataro98)
389
  Fixed: Fixed a bug.
390
+ * 「続きを読む」ボタンが表示されなかったのを修正。(Thanks Andrew)
391
  Fixed: Fixed a bug that the `Read more` button is not displayed.
392
 
393
  Ver2.1.8.2
394
+ * 警告エラーが発生していたのを修正。
395
  Fixed: Fixed a bug.
396
 
397
  Ver 2.1.8.1
398
+ * フィルターの優先度を指定するように修正。
399
  Modified: Fix to specify filter priority.
400
+ * リンク切れチェックの周期が長くなるように修正。
401
  Modified: Correction was made so that the link break check cycle becomes longer.
402
+ * 編集画面に次回のリンク切れチェック日時を表示。
403
  Modified: The next link break check date and time was displayed on the edit screen.
404
 
405
  Ver 2.1.8
406
+ * 設定画面の「かんたん書式設定」の「Pzカード 標準書式」を「Pzカード オリジナル」に名称変更。
407
  Modified: Minor fixes.
408
+ * 設定画面の「かんたん書式設定」の「Pzカード 標準書式」を微調整。
409
  Modified: Fine adjustment tiny format "Pz LinkCard Default".
410
+ * 設定画面の「かんたん書式設定」の「見出し」を微調整。
411
  Modified: Fine adjustment tiny format "Header".
412
+ * 設定画面の「かんたん書式設定」の「シンプル」を「ノーマル(はてなブログカード風)」に名称変更。
413
  Modified: Modified tiny format "Simple" to "Normal".
414
+ * 設定画面の「かんたん書式設定」に「シンプル」を追加。
415
  Added: Added tiny format "Simple".
416
+ * 設定画面の「かんたん書式設定」の「押しピン」を微調整。
417
  Modified: Added tiny format "Pushpin".
418
+ * 設定画面のサイト情報の位置に「タイトルの上側」を追加。
419
  Added: Added setting to set Above the title.
420
+ * 設定画面の「サイト情報」を「付加情報」に修正。
421
  Fixed: Modified "Site information" to "Added information".
422
+ * カード管理画面の並び順の表示が昇順になっていたのを修正。
423
  Fixed: Fixed a bug.
424
+ * ソーシャルカウントに「Pocket」を追加。
425
  Added: Added Pocket social count.
426
+ * アンカーテキストの装飾を無効にする。
427
  Added: Added setting to disable anchor text decoration.
428
 
429
  Ver2.1.7.1
430
+ * 設定画面の「かんたん書式設定」に「見出し」を追加。
431
  Added: Tiny format 'Headline'.
432
+ * スタイルシートを整理。
433
  Modified: Minor fixes.
434
 
435
  Ver2.1.7
436
+ * 「外部サイト」「内部サイト」「同ページ」の判定方法を修正。
437
  Modified: Change judgment method.
438
+ * 設定画面に外部リンクのみ変換する設定を追加。(テーマに内部リンクのカード化機能がある場合を想定)(Thanks @mocochat)
439
  Added: Added 'Convert only external link'.
440
+ * 文字コードを自動判断したときの結果を修正。
441
  Modified: Minor fixes.
442
 
443
  Ver2.1.6.2
444
+ * アンカーテキストのアンダーラインが表示されてしまうのを修正。
445
  Fixed: Fixed a bug.
446
 
447
  Ver2.1.6.1
448
+ * サイト情報を表示しないとき、ワーニングが出ていたのを修正。
449
  Fixed: Fixed a bug.(Thanks @ryuji120912)
450
 
451
  Ver2.1.6
452
+ * 設定画面にTwitterアカウントを表示。
453
  Added: Added 'When in trouble'.
454
+ * タイトル取得(正規表現)を修正。
455
  Modified: Fixed title acquisition method.
456
+ * アンカーテキストのアンダーラインを無しに。
457
  Modified: Changed the text-decoration to "none".
458
 
459
  Ver2.1.5
460
+ * 文字装飾を「無し」(none)に変更。
461
  Modified: Changed the text-decoration to "none".
462
+ * 設定画面の「影」の初期設定を「影を付けない」に変更。
463
  Modified: Changed the initial setting to "Do not add shadows".
464
+ * 設定画面の「角をまるめる」の初期設定を「角を丸めない」に変更。
465
  Modified: Changed the initial setting to "Do not round".
466
+ * 設定画面の外部サイトのサムネイルの初期設定を「直接取得できない場合、WebAPIを利用する」に変更。
467
  Modified: Changed the initial setting to "Use WebAPI ,If can not direct".
468
+ * 設定画面の「角をまるめる」にサイズを追加。
469
  Modified: Square rounding has added some sizes.
470
+ * 設定画面の「カードの余白」に「24px」を追加。
471
  Modified: 24px was added to the card margin.
472
+ * 設定画面のサムネイル取得WebAPIのHeartRail社の例をhttpsに変更。
473
+ Modified: Modified HeartRail API URL to support SSL.
474
+ * facebookのシェア数取得APIをhttpsに変更。
475
+ Modified: Modified facebook API URL to support SSL.
476
+ * Twitterのツイート数取得APIをhttpsに変更。
477
+ Modified: Modified Twitter API URL to support SSL.
478
+ * Tweet(s)をクリックしたときの動作をツイート検索に変更。
479
  Modified: From registration to search at Twitter.
480
+ * User(s)をクリックしたときの動作をはてなブックマーク数表示に変更。
481
  Modified: From registration to search at Hatena.
482
+ * 設定画面の「サイト情報」から「サイト名称」と「付加情報」を別項目に変更。
483
  Added: Add additional information.
484
+ * 設定画面の「文字の設定」に「付加情報」の文字設定を追加。
485
  Added: Add character setting of additional information.
486
+ * 設定画面の「付加情報」を「見出し表示」にする設定を追加。(Thanks @hituji_1234)
487
  Added: Added setting to set additional information as heading.
488
 
489
  Ver2.1.4.2
491
  Compatible with WordPress 4.9.8.
492
 
493
  Ver2.1.4.1
494
+ * URLの記述ミスを修正。
495
  Modified: Corresponded to URL mistake.
496
 
497
  Ver2.1.4
498
+ * CHARSETを判断できないパターンがあったのを修正。(Thanks サイノア)
499
  Fixed: There was a pattern which can not judge CHARSET, so I fixed it.
500
+ * カード管理画面で「すべて」を選んだときに「内部リンク」のみが表示されていたのを修正。
501
  Fixed: Fixed a bug in card management.
502
 
503
  Ver2.1.3.1
505
  Compatible with WordPress 4.9.6.
506
 
507
  Ver2.1.3
508
+ * WordPress管理画面のカード管理画面のサブメニュー項目の横にリンク切れの件数を表示する機能を追加。(Thanks @Oncle1316)
509
  Added: Added setting to display the number of broken links next to the submenu.
510
 
511
  Ver2.1.2.2
512
+ * 定義されていない変数を使用していたためNoriceエラーが出てしまうのを修正。
513
  Fixed: Fixed a bug.
514
 
515
  Ver2.1.2.1
516
+ * プラグインの新規インストールもしくは停止から有効化した際にエラーが出てしまうのを修正。
517
  Fixed: Fixed a bug.
518
 
519
  Ver2.1.2
520
+ * 直接取得サムネイルのサイズを100pxから200pxへ変更。
521
  Fixed: Directly acquired thumbnail size was changed from 100px to 200px.
522
+ * 横幅に合わせて縮小表示させるときのフォントサイズと行の高さを調整。
523
  Fixed: Adjusted the font size and line height when reducing the display to fit the width.
524
+ * URLを表示できる場所を「タイトルの下」の他に「サイト情報の後ろ」が選べるように変更。
525
  Added: "Behind site-info" has been added as the display location of the URL.
526
+ * カード管理画面に文字列検索を追加。
527
  Added: A character string search was added to the card management screen.
528
+ * カード管理画面の一括メニューに「サムネイルの再取得」を追加。
529
  Added: "Renew thumbnail" was added to the batch menu of the card management screen.
530
 
531
  Ver2.1.1.1
533
  Compatible with WordPress 4.9.5
534
 
535
  Ver2.1.1
536
+ * 設定画面に「続きを読む」ボタンの文字の色とサイズを追加。
537
  Added: Added setting of color and size of "Read more".
538
 
539
  Ver2.1.0.1
540
+ * カード管理画面に「リンク切れ」の項目を追加。
541
  Added: Added "Link broken" item to card management.
542
+ * スタイルシートを読み込まないときに簡易表示するように修正。(Google AMP対応)
543
  Modified: If CSS is not loaded, display simple.
544
+ * テキストエディタのクイックタグを表示するかを選択できるように設定を追加。
545
  Added: Added settings to allow you to choose whether to display quick tags in a text editor.
546
+ * ビジュアルエディタの挿入ボタンを表示するかを選択できるように設定を追加。
547
  Added: Added settings to allow you to choose whether to display the insert button in the visual editor.
548
+ * 続きを読むボタンを追加できるように修正。(Thanks @R18otomegame)
549
  Added: Added so that you can set the Read more button
550
+ * 設定画面の誤記を修正。
551
  Fixed: The mistyping was corrected.
552
+ * 設定画面の設定項目を再配置。
553
  Modified: The setting items on the setting screen have been relocated.
554
+ * 設定画面にバージョン表記を追加。
555
  Modified: Version was written on setting screen.
556
 
557
  Ver2.0.8
558
  * WordPress 4.9.4 での動作確認。
559
  Compatible with WordPress 4.9.4
560
+ * 設定画面の、ショートコードの表示を修正。
561
  Fixed: Fixed so that the short code is displayed immediately on the setting screen.
562
+ * 設定画面に、スタイルシートを追加できる設定を追加。
563
  Fixed: Fix to be able to add stylesheet.
564
+ * カード管理画面で警告エラーが出ていたのを修正。
565
  Fixed: Fixed a bug.
566
 
567
  Ver2.0.7.2
568
  * WordPress 4.9.2 での動作確認。
569
  Compatible with WordPress 4.9.2
570
+ * 設定画面の一部が日本語表記になっていなかったのを修正。
571
  Fixed: A part of the setting screen was not written in Japanese was fixed.
572
 
573
  Ver2.0.7.1
577
  Ver2.0.7
578
  * WordPress 4.9 での動作確認。
579
  Compatible with WordPress 4.9
580
+ * URLパラメーターが無効な場合にエラー表示する機能から一部のURLを除外。
581
  Modified: Exclude some URLs from errors
582
+ * サブディレクトリ型のマルチサイトのとき、メインサイトからサブサイトを外部リンクと判定する設定を追加。
583
  Added: In the case of the multi-site of the subdirectory type, the site under the subdirectory is judged as an external site.
584
 
585
  Ver2.0.6
586
+ * URLパラメーターが無効な場合にエラー表示する機能を追加。
587
  Added the function to display URL parameter.
588
 
589
  Ver2.0.5
590
+ * 内部リンクの記事ID取得が失敗した場合に外部アクセスする機能を追加。(サイト全体に負荷がかかる可能性があります)
591
  Added: If the PostID can not be acquired, the URL of the redirect destination is acquired.
592
 
593
  Ver2.0.4.1
594
  * アクセスされたURLの末尾が「/?amp=1」だった場合に簡易表示する設定を追加。(Google AMP暫定対応)
595
  Added: Simple display if the end of URL is `/?amp=1`.
596
+ * ドキュメント(readme.txt)修正。
597
+ Fixed: Fixed a typo in `readme.txt`.
598
 
599
  Ver2.0.4
600
  * WordPress 4.8.2 での動作確認。
601
  Compatible with WordPress 4.8.2
602
+ * 「外部リンクにはてなブログカードを使用」した際のURLを変更。
603
  Modified: Hatena URL changed.
604
+ * ショートコード記述時のURLの記述ミスに対応。
605
  Modified: Corresponded to URL mistake.
606
+ * 「押しピン」の画像を変更。
607
  Modified: Changed the image of "push pin".
608
+ * 設定画面の「かんたん書式設定」にWordPress標準ブログカード風の「スクエア」を追加。
609
  Added: Tiny format 'Square'.
610
+ * 設定画面の「サムネイルの位置」に「上側」を追加。
611
  Added: "Upper" has been added to the position of the thumbnail.
612
 
613
  Ver2.0.3
614
+ * 404エラーのときでもリンクを有効にする設定を追加。(Thanks @toru1231)
615
  Added: Added setting to enable link even on 404 error.
616
+ * 内部リンクの抜粋文が取得できていなかったのを修正。
617
  Fixed: Fixed an excerpt of the internal link could not be acquired.
618
+ * 外部リンクのサムネイル取得が出来なくなる不具合を修正。
619
  Fixed: Fixed a bug that you can not acquire thumbnails of external links.
620
 
621
  Ver2.0.2
622
+ * サイトアイコンのURLを取得するように修正。
623
  Fixed: Fix to get URL of site icon.
624
+ * サムネイル画像、サイトアイコンが相対指定の場合に対応。
625
  Modified: Corresponds to relative specified URL.
626
+ * パラメータが誤っているときにエラーが表示されない場合があったのを修正。
627
  Fixed: Fix to display error when parameter is wrong.
628
 
629
  Ver2.0.1.1
630
+ * 警告エラーが発生していたのを修正。
631
  Fixed: Fixed a bug.
632
 
633
  Ver2.0.1
634
+ * 内部リンクのカテゴリーページ/タグページに対応。
635
  Added: Supported display of category page.
636
 
637
  Ver2.0.0.3
638
+ * Ver2.0.0.2で発生した内部リンクが取得できない不具合を修正。
639
  Fixed: Fixed a bug.
640
 
641
  Ver2.0.0.2
642
+ * 未実装のJavaScriptを呼び出し、サーバーログにエラーが出ていたのを修正。
643
  Fixed: Fixed a bug.
644
 
645
  Ver2.0.0.1
646
+ * idn_to_utf8()が実装されていない環境でエラーが出ていたのを修正。
647
  Fixed: Fixed a bug.
648
 
649
  Ver2.0.0
650
+ * ショートコードでURLを指定する際に「href」も使用できるように変更。(Thanks @weblearninglog)
651
  Modified: "href" was added to the parameter that specifies the URL.
652
+ * 設定画面に、テキストエディタへの「クイックタグ」追加の設定を追加。(Thanks @kumasan_kenkou)
653
  Added: A quick tag was added to the text editor.
654
+ * 設定画面に、ビジュアルエディタへの「リンクカード作成」ボタン追加の設定を追加。
655
  Added: A card insertion button was added to the visual editor.
656
+ * 設定画面に、テキストリンクだけが記載されている行をリンクカードに変更する機能を追加。
657
  Added: Added the function to convert text link to card.
658
+ * 設定画面に、URLだけが記載されている行をリンクカードに変更する機能を追加。(Thanks @hina01011)
659
  Added: Added the function to convert URL to card.
660
+ * カード管理画面のタイトルと抜粋文を変更されている場合に太文字で表示するように変更。
661
  Modified: Changed so that changed parts are displayed in bold letters on the card management screen.
662
+ * 設定画面に、日本語ドメイン(IDNA ASCIIドメイン)に対応する設定を追加。(Thanks @ichinosecom)
663
  Added: It supports display of IDNA ASCII domain.
664
 
665
  Ver1.8.2
666
+ * スタイルシートのURLからスキームを削除。(Thanks @mataku_hair)
667
  Modified: The style sheet URL was corrected.
668
+ * InstantWPで使用した場合にカード管理画面が文字化けするのを修正。(Thanks aya)
669
  Fixed: Fixed garbled characters on the management screen.
670
+ * 外部サイトのサムネイルの保存ディレクトリを変更。
671
  Modified: Changed directory to save thumbnails.
672
+ * カード管理画面を狭い画面で見ると表示が崩れるのを修正。
673
  Fixed: Fixed display collapse of the management screen.
674
+ * カード管理画面の文字セットの列を非表示に変更。
675
  Modified: The character set column of the management screen was deleted.
676
+ * カード管理画面のソーシャルカウントの表示を複数列から1列に変更。
677
  Modified: Changed the social count column of the management screen.
678
+ * カード管理画面に外部サイトのサムネイル画像の表示を追加。
679
  Modified: The thumbnail display was added to the management screen.
680
 
681
  Ver1.8.1
682
  * WordPress 4.8 での動作確認。
683
  Compatible with WordPress 4.8
684
+ * 内部リンクのサムネイル取得について、フルサイズの画像を取得していたのを修正。(Thanks @cstudyupdate)
685
  Fixed: Fixed a bug. Corrected the size of thumbnail to be acquired.
686
+ * 設定画面の外部サイトのサムネイルの取得方法に「直接取得」が選べるように機能を追加。
687
  Added: Added setting the direct acquisition of the thumbnail of the external site.
688
+ * 設定画面の「かんたん書式設定」にはてなブログカード風の「シンプル」を追加。
689
  Added: Tiny format 'Simple'.
690
 
691
  Ver1.8.0
692
  * 設定画面のカラーコード入力にチェックを追加。
693
  Added: Added color code check.
694
+ * 設定画面に、アクセスされたURLの末尾が「/amp」「/amp/」だった場合に簡易表示する設定を追加。(Google AMP暫定対応)(Thanks @misoji_13)
695
  Added: Simple display if the end of URL is `/amp`.
696
+ * 設定画面の「かんたん書式設定」に「押しピン」を追加。(Thanks @kautakku )
697
  Added: Tiny format 'Pushpin'.
698
 
699
  Ver1.7.9.1
702
 
703
 
704
  Ver1.7.9
705
+ * キャッシュ用DBが作成されず、CPUが高負荷になってしまう不具合を修正。
706
+ Fixed: Fixed a bug that table is not created.
707
  * METAタグの名前が大文字が混ざっていると取得できなかったのを修正。(Thanks @J_kindan)
708
  * 内部リンクが取得できない時に外部アクセスしていたのが高負荷に繋がっていたため、外部アクセスしないように修正。(Thanks @J_kindan)
709
+ Fixed: Fixed a high load bug
710
 
711
  Ver1.7.8
712
+ * キャッシュ用DBが作成されず、CPUが高負荷になってしまう不具合を修正。(Thanks @J_kindan)
713
+ Fixed: Fixed a bug that table is not created.
 
714
 
715
  Ver1.7.7
716
+ * アイキャッチ画像が設定されていないテーマの場合にエラーが発生してしまうのを修正。(Thanks enomoto , sato)
717
  Fixed: Fixed a bug
718
 
719
  Ver1.7.6
720
+ * 設定画面に、用例などを追加。
721
  Added: Add tips at settings screen
722
+ * 設定画面の「かんたん書式設定」に「縫い目」を追加。(Thanks @i_tsu_tsu)
723
  Added: Tiny format 'Stitch'.
724
+ * 設定画面に、サムネイル画像のサイズの設定を追加。(Thanks @misoji_13)
725
  Modified: Able to change the size of the thumbnail.
726
 
727
  Ver1.7.5
728
  * WordPress 4.7.1 での動作確認。
729
  Compatible with WordPress 4.7.1.
730
+ * アクティベート/バージョンアップ時に重複データを削除する機能を追加。
731
  Cleaning up garbage from the database at activation.
732
+ * 設定画面の項目追加と整理。
733
  Modified: Cleaned up the settings screen
734
+ * 設定画面に用例などを追加。
735
  Added: Add tips at settings screen
736
+ * 設定画面に、サイト情報、タイトル、URL、抜粋文部分の行の高さを追加。(Thanks @keitaihoo , @ud_fibonacci)
737
  Added: Added setting. `Height` in letter.
738
+ * 設定画面に、「ドメイン名のみ」以外の場合でも末尾のスラッシュを除去する設定を追加。
739
  Added: Added setting. Trailing slash.
740
+ * facebookのシェア数が取得できなくなっていたのを修正。(Thanks @i_tsu_tsu)
741
+ Modified: Fixed that the number of shares of facebook could not be obtained.
742
+ * カード管理画面での内部リンクの判定方法を修正。
743
  Modified: Corrected the method of determining internal links on the Pz card management screen.
744
  * 内部リンクのキャッシュが正常に作成されない場合があったのを修正。(Thanks @i_tsu_tsu)
745
  Fixed: Fixed not being cached properly when using internal links.
746
  * 内部リンクをキャッシュから取得した場合に画像が表示されなかったのを修正。(Thanks @i_tsu_tsu)
747
  Fixed: Fixed the image not being displayed properly when using an internal link.
748
+ * 設定画面に、リンク先がリダイレクトされているときに追尾するかどうかの設定を追加。(Thanks @fumieblog)
749
  Added: Added a setting so that you can choose whether to track when the link destination is redirected.
750
+ * 設定画面に、リンク先がリンク切れになっているかチェックするかどうかの設定を追加。(Thanks @misoji_13)
751
  Added: Added a setting so that you can choose whether to check if the link destination is broken.
752
+ * 設定画面に、リンク先がリンク切れの場合、Aタグを無効にするかどうかの設定を追加。
753
  Added: Added a setting so that you can choose whether to disable the A tag when the link destination is broken.
754
+ * WebAPIに使用しているURLのデフォルトをSSL対応のものに変更。(Thanks @fumieblog , @hareannie01)
755
  Modified: Supports SSL for WebAPI URL.
756
 
757
  Ver1.7.4
758
+ * キャッシュ用DBが作成されず、CPUが高負荷になってしまう不具合を修正。
759
  Fixed: Fixed a bug that table is not created.
760
 
761
  Ver1.7.3
767
  Compatible with WordPress 4.6.
768
  * 幅に合わせて縮小を有効にしたとき、サムネイルと合わせて文字サイズも小さくするように修正。(Thanks @fumieblog)
769
  Modified: Modified so as also to small character size to fit the size of screen.
770
+ * カード管理画面で再取得時にソーシャルカウントが消えてしまう不具合を修正。(1.7.1で発生)(Thanks @i_tsu_tsu)
771
  Fixed: Fixed a bug that social count disappears.
772
  * 内部リンクの画像が取得できない不具合を修正。(1.7.1で発生)(Thanks @i_tsu_tsu)
773
  Fixed: Fixed a bug that thumbnail can not display.
774
+ * マルチサイトへの対応方法が誤っていたため修正。(1.7.1で発生)(Thanks @kyutechnabe)
775
+ Fixed: When the multi-site, fixes a bug that setting is not properly reflected.
776
 
777
  Ver1.7.1
778
  * 記事内容がキャッシュされない不具合を修正。(Thanks @i_tsu_tsu)
779
  Fixed: Fixed a bug that article content can not be acquired.
780
+ * 取得時エラーのサイトのサムネイル表示をしないように修正。(Thanks @misoji_13)
781
  Modified: Time of the error, modified so that it does not display the thumbnail.
782
  * マルチサイトへの仮対応。(Thanks @kyutechnabe)
783
  Modified: Modification of the order to respond to multi-site.
791
  Ver1.6.9
792
  * WordPress 4.5.3 での動作確認。
793
  Compatible with WordPress 4.5.3.
794
+ * 設定画面で表示幅によってサムネイルを調整する「幅に合わせて縮小」を初期選択するように変更。
795
  Modified: Scaled down to fit the screen size in setting. Default change `disabled` to `enabled`.
796
+ * Twitter代替APIcount.jsoon」を使用してツイート数の取得に対応。
797
  Modified: Use an alternative API to get the Twitter count.
798
  * 内部リンクのときでWordPress標準のサイトアイコンが設定されていない場合、内部取得を選べないように修正。(Thanks @meiko2285)
799
  Fixed: Fix the method of acquiring the site icon in the internal site.
801
  Added: Added thumbnail acquisition method at the internal links.
802
  * SSL証明書の検証を無効にする機能を設定に追加。
803
  Added: Added the ability to disable the verification of SSL certificate.
804
+ * リンク切れチェック機能の追加にあたってプログラムを一部見直し。(Thanks @misoji_13)
805
 
806
  Ver1.6.8
807
  * WordPress 4.5.2 での動作確認。
808
  Compatible with WordPress 4.5.2.
809
+ * 警告エラーが発生していたのを修正。(@junya_0606)
810
  Fixed: Fixed a notice.
811
  * 指定したリンク先によってはMETAタグを内部テーブルに展開するのに失敗してFatalエラーが出るのを修正。(Thanks @misoji_13 , @ryu-blacknd)
812
  Fixed: Fixed an error. In had failed Perth META tags.
813
+ * カード管理画面のPHPショートタグを使用しないように修正。(Thanks @toru1231)
814
  Fixed: Fixed so as not to use PHP-short-tags.
815
 
816
  Ver1.6.7
817
+ * 設定画面にて、内部リンクの記事抜粋方法を選択できるように修正。(Thanks @okamurajun)
818
  Added: Added a method of article excerpt internal link in setting.
819
 
820
  Ver1.6.6
821
+ * 設定画面に「画面の幅によってサムネイルを小さくする」機能を追加。(Thanks 弁保社長)
822
  Added: Scaled down to fit the screen size in setting.
823
 
824
  Ver1.6.5
827
  * 設定画面に文字のふちどり指定を追加。(Thanks @okaerinasainet)
828
  Added: Add a border of letters in setting.
829
  * facebookのシェアURLの指定が誤っていたため修正。
830
+ Fixed: Fixed incorrect facebook API URL.
831
 
832
  Ver1.6.4
833
+ * facebookのシェア数が2以上でも1と表示されていたのを修正。(Thanks 弁保社長)
834
  Fixed: Shares of facebook has not been able to properly get.
835
  * 設定画面にリンクカードのDIV要素に任意のクラス名を設定できるように追加。(Thanks @misoji_13)
836
  Added: Grant function of any class name
838
  Ver1.6.3
839
  * ツイッターのツイート数取得API終了に伴い、ツイート数取得処理を削除。設定画面に更新されない旨のメッセージを追加。
840
  Modified: Correspondence associated with the end Tweets number acquiring API.
841
+ * 設定画面のツイート数表示の初期選択を「表示しない」に変更。
842
+ Modified: Changed the initial selection of the number of tweets display on the setting screen to "Hide".
843
  * カード管理画面からソーシャルカウントの再取得を行ったとき、処理を二度行っていたので修正。(1.6.0で発生した不具合)
844
+ Fixed: Bugfix.
845
 
846
  Ver1.6.2
847
+ * サンフランシスコ時間で11月20日を経過したが、ツイート数が取得できているので制限を一時的に解除。
848
  Modified: Deadline of Tweets number get me grew day.
849
 
850
  Ver1.6.1
851
+ * 標準時間で11月20日を経過したが、ツイート数が取得できているので制限を一日延長。
852
  Modified: Deadline of Tweets number get me grew day.
853
 
854
  Ver1.6.0
855
  * リンク先の取得に wp_remote_get() を使用していたのを、cURL に変更。
856
  Modified: Acquired without the wp_remote_get, modified to use a cURL.
857
+ * charsetの取得方法を変更。
858
  Modified: Fixed character set acquisition method.
859
  * ソーシャルカウントの取得をスケジュール方式に変更。
860
  Modified: Fixed social count set acquisition method.
862
  Added: Add the margins of the inner card.
863
 
864
  Ver1.1.1
865
+ * METAタグの取得方法を修正。
866
  Fixed: Fixed to had failed parsing of meta tags.
867
 
868
  Ver1.1.0
869
  * 2015年11月20日までのTwitter非公式API廃止に伴い、同日以降取得しないように修正。
870
  Modified: Since November 20, 2015 , it does not use the Twitter API.
871
+ * 設定画面の「新しいウィンドウで開く」をチェックボックスからリストに変更。
872
+ Modified: Change "Open in new window" from the check box to the list on the setting screen.
873
+ * 設定画面の「新しいウィンドウで開く」に「モバイル以外(パソコンのみ新しいウィンドウで開く)」を追加。(Thanks @misoji_13)
874
+ Added: Added "Other than mobile" to "Open in new window" on the settings screen.
875
 
876
  Ver1.0.3
877
  * キャッシュ保存時にキーが正しく設定されないことがあったのを修正。
878
+ * カード管理画面で内部ID(連番)の表示を追加。
879
  * 定型書式「紙がめくれる効果」を修正。(テーマによってはレイアウトが崩れる可能性があります)
880
  * 定型書式「テープと紙めくれ」を追加。(テーマによってはレイアウトが崩れる可能性があります)
881
 
882
  Ver1.0.2
883
+ * カード管理画面でキャッシュを編集したとき、一部の文字をエスケープしていなかったのを修正。
884
+ * バージョンアップの度に一部のパラメータがデフォルトに戻っていたのを修正。
885
  * プログラム内でのキャッシュの読み書き方法の改善。
886
 
887
  Ver1.0.1
888
+ * カード管理画面でキャッシュを編集したとき、内部IDがクリアされてしまう不具合を修正。
889
 
890
  Ver1.0.0
891
  * 全体的なプログラムの見直し。
896
  * ショートコード1にのみ適用されるように修正。
897
  * タイトルがURLになってしまう不具合修正。
898
  * ショートコード3を解放。
899
+ * カード管理画面を修正。
900
  * リンク先単体の「編集」「再取得」「削除」が行えるように修正。
901
  * 一括処理に「再取得」を追加。
902
+ * 抽出条件にドメイン名を追加。
903
+ * 内部リンクのURLにもリンク(Aタグ)を追加。
904
  * ページング機能を追加。
905
 
906
  Ver0.1.4
907
  * <head>にprefixなどがあるときに、metaタグの解析に失敗していたのを修正。
908
+ * パラメータに閉じの「半角角かっこ(大かっこ)」がある場合に、URLに余分なコードが入ってしまうのを修正。
909
 
910
  Ver0.1.3
911
+ * content=''となっているOGP情報は無視するように修正。
912
+ * metaタグ表記にシングルクォートが使われている場合でも取得できるように修正。
913
+ * 定型書式「Pzカード標準書式」を使用し、「サイト情報」を「下側」にしている場合、サイト名が見えなくなるのを修正。
914
+ * カード管理画面のセキュリティを強化。
915
+ * 設定画面の「サイト情報」の位置を追加。
916
+ * 設定画面に「サイト情報」と「記事内容」の間を区切るための「区切り線」を追加。
917
+ * サムネイル取得APIの初期設定をWordPress.comのものに変更。
918
  * タイトルや抜粋文をパラメータ等で設定した場合にもHTML等を除去するように変更。
 
 
 
 
919
 
920
  Ver0.1.2
921
  * 「新しいウィンドウで開く」の設定を追加。
922
  * カード管理画面のソート順を修正。
923
+ * facebookの表記を「f」から「fb」へ変更。
924
 
925
  Ver0.1.1
926
  * 公開後発見されたバグを修正。
929
  * 公式プラグインディレクトリでの最初の公開バージョン。
930
 
931
  Ver0.0.1
932
+ * サイト「ぽぽづれ」内での最初の公開バージョン。
933
 
934
  Ver0.0.0
935
+ * 途中まで作成していたバージョンを破棄。
936
+ * Pz-HatenaBlogCard ver1.2.5 を元にDBアクセス部分を移植してPz-LinkCardを作成。
937
+ * サイト「ぽぽづれ(開発環境)」での動作検証。
938
+ * サイト「ぽぽづれ」での動作検証。
939
 
940
 
941
  == Upgrade notice ==
942
 
943
  == Arbitrary section ==
944
 
945
+ == Display and DB cache ==
946
 
947
  This plug-in one create a DB table when you have activated. ( Prefix + "pz_linkcard")
948
 
951
  Therefore , the display for the first time is slow , the second and subsequent display is fast.
952
 
953
 
954
+ == Create files ==
955
 
956
  CSS file are stored in a custom folder under `/wp-content/Uploads` .
957
 
958
 
959
+ == Use Web API ==
960
 
961
  Number of SNS share have been acquired by the JSON request.
962
 
963
+ * Twitter ... https://jsoon.digitiminimi.com/twitter/count.json?url=[URL]
964
 
965
+ * Facebook ... https://graph.facebook.com?fields=og_object{engagement}&id=[URL]
966
 
967
  * Hatena ... http://api.b.st-hatena.com/entry.count?url=[URL]
968
 
969
+ * Pocket ... https://widgets.getpocket.com/api/saves?url=[URL]
970
 
971
  Displays using the `Google-favicon API` to get the favicon. This can be changed.
972
 
 
973
  Displays using the `WordPress.org mshots API` to get the thumbnail. This can be changed.
974
 
975
 
976
+ == 表示とキャッシュ ==
977
 
978
  このプラグインは、有効化したときにDBテーブルを一つ作成します。(プレフィックス+「pz_linkcard」)
979
 
987
  (内部でのDBアクセスが発生しますが、通常は軽微なものです。カード1枚表示のたびに、取得のために1クエリ発行します。更新が発生した場合には挿入・更新のためのクエリが1回発生します。)
988
 
989
 
990
+ == ソーシャルカウントの取得 ==
991
 
992
+ ソーシャルカウントについては、「Twitter(ツイッター)のツイート数」「facebook(フェイスブック)のシェア数」「はてなブックマークのブックマーク数」「Pocketの登録数」の4種類に対応しています。
993
 
994
  それぞれAPIへのJSONリクエストにより値を取得します。
995
 
996
+ バックグラウンドで取得するため、ページの表示速度には影響がありません。
997
 
998
+ 取得した値はタイトルや抜粋文と同様、DBへキャッシュを行うため、直近の表示にはAPIアクセスが発生しません。
999
 
1000
+ ソーシャルカウントの再取得は、最後の取得から4時間~36時間程度のランダムな時間で行います。
1001
 
1002
  また、各APIについては、仕様変更やサービス終了に伴い、正常に取得できなくなる場合があります。
1003
 
1004
 
1005
+ == 画像取得WebAPIの利用 ==
 
 
 
 
1006
 
1007
+ 設定画面からサムネイル取得のWebAPIが指定できます。
1008
 
1009
+ 「WebAPIを利用する」にすることでページのスクリーンショット画像を取得します。
1010
 
1011
+ 参考.画像取得APIの設定について https://popozure.info/20151004/9317
1012
 
 
1013
 
1014
+ 設定画面からサイトアイコン(ファビコン)取得のWebAPIが指定できます。
1015
 
1016
+ サイトアイコンの場所はサイトによってバリエーションが多いため、WebAPIを使用する前提となります。
1017
 
1018
+ 正式に公開されているWebAPIでは無いため、仕様変更やサービス終了に伴い、正常に取得できなくなく場合があります。
1019
 
1020
 
1021
+ == その他 ==
1022
 
1023
  Pz-HatenaBlogCard からの設定引き継ぎ機能はありません。この機会に触ったことのなかった設定項目にも触れていただければ幸いです。
1024
 
1033
 
1034
  なお、アンインストールを行う際には、キャッシュを保管するDBテーブルと、options内の設定ファイルは削除されます。
1035
 
1036
+ アンインストール時の削除に関してはプラグインディレクトリ内の uninstall.php で行っています。
templete/pz-linkcard-templete.css CHANGED
@@ -264,6 +264,11 @@
264
  font-weight: bold /*IMPORTANT*/;
265
  white-space: nowrap;
266
  }
 
 
 
 
 
267
  .clear {
268
  clear: both;
269
  }
264
  font-weight: bold /*IMPORTANT*/;
265
  white-space: nowrap;
266
  }
267
+ .lkc-error {
268
+ display: block;
269
+ padding-top: 50px;
270
+ margin-top: -50px;
271
+ }
272
  .clear {
273
  clear: both;
274
  }
uninstall.php CHANGED
@@ -1,21 +1,32 @@
1
  <?php if (!defined('ABSPATH') || !defined('WP_UNINSTALL_PLUGIN')) exit(); ?>
2
  <?php
 
 
 
 
3
 
4
- $slug = basename(dirname(__FILE__));
5
- $wp_upload_dir = wp_upload_dir();
6
- $css_dir = $wp_upload_dir['basedir'].'/'.$slug;
7
- $css_path1 = $css_dir.'/style.css';
8
- $css_path2 = $css_dir.'/'.$slug.'-style.css';
9
 
10
- // Delete options
11
  delete_option('Pz_LinkCard_options');
12
 
13
- // Delect CSS
14
- if (file_exists($css_path1)) unlink ($css_path1);
15
- if (file_exists($css_path2)) unlink ($css_path2);
16
- if (file_exists($css_dir)) rmdir ($css_dir);
17
-
18
- // Drop DB-table
19
  global $wpdb;
20
  $sql = "DROP TABLE ".$wpdb->prefix.'pz_linkcard';
21
  $wpdb->query($sql);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php if (!defined('ABSPATH') || !defined('WP_UNINSTALL_PLUGIN')) exit(); ?>
2
  <?php
3
+ // パラメータ準備
4
+ $slug = basename(dirname(__FILE__));
5
+ $wp_upload_dir = wp_upload_dir();
6
+ $upload_dir_path = $wp_upload_dir['basedir'].'/'.$slug.'/';
7
 
8
+ // ディレクトリの削除(画像キャッシュ、スタイルシート)
9
+ $result = remove_directory($upload_dir_path);
 
 
 
10
 
11
+ // 設定の削除
12
  delete_option('Pz_LinkCard_options');
13
 
14
+ // DBの削除
 
 
 
 
 
15
  global $wpdb;
16
  $sql = "DROP TABLE ".$wpdb->prefix.'pz_linkcard';
17
  $wpdb->query($sql);
18
+
19
+ // ディレクトリの削除
20
+ function remove_directory($dir) {
21
+ $files = array_diff(scandir($dir), array('.','..'));
22
+ foreach ($files as $file) {
23
+ if (is_dir($dir.'/'.$file)) {
24
+ remove_directory($dir.'/'.$file);
25
+ } else {
26
+ unlink($dir.'/'.$file);
27
+ echo 'delete "'.$dir.'/'.$file.'"<br>';
28
+ }
29
+ }
30
+ echo 'rmdir "'.$dir.'"<br>';
31
+ return rmdir($dir);
32
+ }