Pz-LinkCard - Version 2.4.3

Version Description

  • WordPress 5.6.2 Compatible with WordPress 5.6.2.
  • readme.txt Modified: Modify "readme.txt".
  • URLThanks @longer_n Fixed: Fixed interpretation of shortcode URL parameters
  • URLThanks @miya_gal_ossan Fixed: Fixed a bug that the image URL specified on the external link does not exist.
  • Fixed: Fixed a bug that a warning error occurs when a category page that does not exist is specified in the internal link.
  • Fixed: Fixed a bug that a warning error occurs when a tag page that does not exist is specified in the internal link.
  • Fixed: Fixed a bug when there is no thumbnail in the internal link.
  • Fixed: Fixed a bug when the article specified by the internal link does not exist.
  • URLVer.2.1.9 Fixed: Fixed a bug that an error occurs when converting relative URLs
  • Fixed: Fixed not to set the link when the linked server cannot be found.
  • HTMLTITLEMETA Fixed: Fixed to get TITLE tag and META tag even on sites without HTML tags such as and .
  • URLhttp:https:Thanks @miya_gal_ossan Modified: Modified to omit the scheme (http: and https:) from the URL of the cache image of the thumbnail of the external link.
  • IDNA ASCII Modified: Deleted the setting corresponding to the internationalized domain (IDNA ASCII domain) from the setting screen.
  • Modified: Supports internationalized domains regardless of settings.
  • WordPressHTML5 Modified: Modified the color picker used on the setting screen from WordPress to HTML5.
  • URL Modified: Moved the setting item of "Relative URL" on the setting screen from the "Advanced" tab to the "Link Check" tab.
  • Added: Added the display of "Changelog" to the "Basic" tab of the setting screen.
  • URL Added: Added "Relative URL" to the "Link Check" tab of the setting screen.
  • Web APICSS Modified: Removed "Web API" tab, "Image" tab, and "CSS" tab on the setting screen.
  • Web APICSS Added: Added "etc." tab to the setting screen. (Integrates the contents of "Web API", "Image" and "CSS")
  • Added: Added "Thumbnail Size" setting to "External Link" tab of the setting screen.
  • Thanks @in_seki Added: Added "Thumbnail Size" setting to "Internal Link" tab of the setting screen.
  • URL Modified: Modified the initial selection of "Relative URL" on the "Link Check" tab of the setting screen to Checked.
  • Added: Added "Multi Site" tab to the setting screen. (Displayed only when multi-site is set)
  • Added: Added settings of "File Menu" to the "Advanced" tab of the setting screen.
  • Added: Added a setting to display the "Initialization Tab" in the "Advanced" tab of the setting screen.
  • Modified: Deleted the setting of "Display execution time" from the "Advanced" tab of the setting screen.
  • Added a setting to display the "Survey Mode" in the "Advanced" tab of the setting screen. (Do not use normally)
  • Added a setting to display the "Administrator Mode" in the "Advanced" tab of the setting screen. (Do not use normally as it can be set to incapacitate.)
  • Added a setting to display the "Developer Mode" in the "Advanced" tab of the setting screen. (Do not use normally as it can be set to incapacitate.)
  • URLAMP Modified: Modified "AMP judgment by URL" on the "Advanced" tab of the setting screen to Deprecated.
  • Modified: Modified to leave open tabs when pressing "Save Changes" on the settings screen.
  • Modified: Modified "Initialize" tab of the setting screen to hide. (It can be displayed from the "Advanced" tab.)
  • 110 Fixed: Fixed all the items displayed in the list on the card management screen so that 10 items are displayed on one page.
  • URL Added: Added a link to the URL of the external link on the card management screen.
  • Added: Added import / export function to the card management screen. (You need to enable "File Menu" on the settings screen.)
  • Modified: The domain name display on the card management screen is compatible with internationalized domains.
  • URLURL Modified: Modified not to use tag in URL. (The URL is no longer displayed in italics.)
Download this release

Release Info

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

Code changes from version 2.4.2.2 to 2.4.3

css/admin.css CHANGED
@@ -1,80 +1,130 @@
 
 
 
 
1
  #pz-lkc-overlay {
2
- z-index: 1001;
3
- display: none;
4
- position: fixed;
5
- top: 0;
6
- left: 0;
7
- width: 100%;
8
- height: 120%;
9
- background-color: rgba(0,0,0,0.5);
10
  }
11
 
12
  #pz-lkc-modal {
13
- z-index: 9991;
14
- display: none;
15
- position: fixed;
16
- margin: 0 auto;
17
- padding: 20px;
18
- border: 2px solid #000;
19
- border-radius: 4px;
20
- background: #fff;
21
  }
22
 
23
  #pz-lkc-close {
24
- position: relative;
25
- float: right;
26
- margin: -10px;
27
  }
28
 
29
  #pz-lkc-close:hover {
30
- cursor: pointer;
31
  }
32
 
33
  #pz-lkc-content {
34
- text-align: center;
35
- padding: 10px;
36
  }
37
 
38
 
 
39
  .pz-lkc-tabs {
40
- position: relative;
41
  }
42
  .pz-lkc-tabs:after {
43
- position: absolute;
44
- content: "";
45
- width: 100%;
46
- bottom: 0;
47
- left: 0;
48
- border-bottom: 2px solid #000;
49
- z-index: 1;
50
  }
51
  .pz-lkc-tab {
52
- position: relative;
53
- z-index: 1;
54
- display: inline-block;
55
- padding: 4px;
56
- text-decoration: none;
57
- border-width: 2px 2px 0 2px;
58
- border-style: solid;
59
- border-color: #000;
60
- background-color: #bbb;
61
- color: #000;
62
- border-radius: 8px 8px 0 0;
63
- }
64
- .pz-lkc-item {
65
- display: none;
66
- padding: 8px;
67
- }
68
- .pz-lkc-item-active {
69
- display: block;
70
  }
71
  .pz-lkc-tab-active {
72
- background-color: #eee;
73
- color: #000;
74
- z-index: 2;
75
- border-bottom-color: #00f;
76
  }
77
-
78
  .form-table td {
79
- vertical-align: top;
80
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @Charset: "UTF-8";
2
+ /* Pz-LinkCard CSS for Admin Screen */
3
+
4
+ /* Input URL Dialog */
5
  #pz-lkc-overlay {
6
+ z-index: 1001;
7
+ display: none;
8
+ position: fixed;
9
+ top: 0;
10
+ left: 0;
11
+ width: 100%;
12
+ height: 120%;
13
+ background-color: rgba(0,0,0,0.5);
14
  }
15
 
16
  #pz-lkc-modal {
17
+ z-index: 9991;
18
+ display: none;
19
+ position: fixed;
20
+ margin: 0 auto;
21
+ padding: 20px;
22
+ border: 2px solid #000;
23
+ border-radius: 4px;
24
+ background: #fff;
25
  }
26
 
27
  #pz-lkc-close {
28
+ position: relative;
29
+ float: right;
30
+ margin: -10px;
31
  }
32
 
33
  #pz-lkc-close:hover {
34
+ cursor: pointer;
35
  }
36
 
37
  #pz-lkc-content {
38
+ text-align: center;
39
+ padding: 10px;
40
  }
41
 
42
 
43
+ /* Settings Screen */
44
  .pz-lkc-tabs {
45
+ position: relative;
46
  }
47
  .pz-lkc-tabs:after {
48
+ position: absolute;
49
+ content: "";
50
+ width: 100%;
51
+ bottom: 0;
52
+ left: 0;
53
+ border-bottom: 2px solid #000;
54
+ z-index: 1;
55
  }
56
  .pz-lkc-tab {
57
+ position: relative;
58
+ z-index: 1;
59
+ display: inline-block;
60
+ padding: 4px;
61
+ text-decoration: none;
62
+ border-width: 2px 2px 0 2px;
63
+ border-style: solid;
64
+ border-color: #000;
65
+ background-color: #bbb;
66
+ color: #000;
67
+ border-radius: 8px 8px 0 0;
68
+ }
69
+ .pz-lkc-page {
70
+ display: none;
71
+ padding: 8px;
72
+ }
73
+ .pz-lkc-page-active {
74
+ display: block;
75
  }
76
  .pz-lkc-tab-active {
77
+ background-color: #eee;
78
+ color: #000;
79
+ z-index: 2;
80
+ border-bottom-color: #00f;
81
  }
 
82
  .form-table td {
83
+ vertical-align: top;
84
+ }
85
+
86
+ .pz-lkc-button {
87
+ margin: 8px;
88
+ padding: 4px 0;
89
+ display: inline-block;
90
+ width: 160px;
91
+ border: solid 1px #0077aa;
92
+ border-radius: 4px;
93
+ background-color: #ffaaaa;
94
+ vertical-align: middle;
95
+ white-space: nowrap;
96
+ line-height: 2;
97
+ cursor: pointer;
98
+ }
99
+ .pz-lkc-button:hover {
100
+ background-color: #ee9999;
101
+ }
102
+ .pz-lkc-button-text {
103
+ vertical-align: middle;
104
+ }
105
+
106
+ .pz-debug-only , .pz-debug-only * {
107
+ color: #0066ff !important;
108
+ }
109
+ .pz-admin-only , .pz-admin-only * {
110
+ color: #cc3388 !important;
111
+ }
112
+ .pz-develop-only , .pz-develop-only * {
113
+ color: #00aa88 !important;
114
+ }
115
+ .pz-develop-message {
116
+ padding: 8px;
117
+ background-color: #00aa88 !important;
118
+ color: #ffffff !important;
119
+ font-size: 24px;
120
+ text-align: center;
121
+ }
122
+
123
+ .pz-man-filemenu {
124
+ margin-top: 20px;
125
+ border: 1px solid #000;
126
+ background-color: #fff;
127
+ }
128
+ .pz-man-filemenu th,td {
129
+ padding: 10px;
130
+ }
js/admin-settings.js CHANGED
@@ -1,9 +1,95 @@
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 );
1
  ( function( $ ) {
2
+
3
+ // タブの表示/非表示
4
+ $('.pz-lkc-tab').each(function() {
5
+ var name = $(this).attr('name');
6
+ if ( ( $(`input[name="${name}"]`).is('*') == false ) || ( $(`input[name="${name}"]`).val() == true ) ) {
7
+ $(this).show();
8
+ } else {
9
+ $(this).hide();
10
+ }
11
+ })
12
+
13
+ // 最初に開くタブ
14
+ var name = $('input[name="pz-lkc-tab-now"]').val();
15
+ if ( ( $(`a[name="${name}"]`).is('*') == false ) || ( $(`a[name="${name}"]`).css('display') == 'none' ) ) {
16
+ $('.pz-lkc-tab').each(function() {
17
+ if ($(this).css('display') != 'none' ) {
18
+ name = $(this).attr('name');
19
+ return false;
20
+ }
21
+ })
22
+ }
23
+ $(`a[name="${name}"]`).addClass('pz-lkc-tab-active');
24
+ $(`#${name}`).addClass('pz-lkc-page-active');
25
+
26
+ // 初期表示
27
+ var rs = switch_enabled();
28
+
29
+ // タブの切り替え
30
  $('.pz-lkc-tab').on('click', function() {
31
+ $('.pz-lkc-page').removeClass("pz-lkc-page-active");
32
+ $($(this).attr("href")).addClass("pz-lkc-page-active");
33
  $('.pz-lkc-tab').removeClass('pz-lkc-tab-active');
34
  $(this).addClass('pz-lkc-tab-active');
35
+ $('#pz-lkc-sw-tab-now').val($(this).attr("name"));
36
  return false;
37
  } ) ;
38
+
39
+ // readonlyのチェックボックスを動作させない
40
+ $('input:checkbox').on('click', function() {
41
+ if ($(this).prop('readonly') == true) {
42
+ return false;
43
+ }
44
+ } ) ;
45
+
46
+ // ショートコード1
47
+ $('#code1').on('keyup', function() {
48
+ var t = $(this).val();
49
+ $('.copy-code1').each(function() {
50
+ $(this).text(t);
51
+ if (t.length == 0) {
52
+ $('.use-code1').prop('disabled', true);
53
+ } else {
54
+ $('.use-code1').prop('disabled', false);
55
+ }
56
+ })
57
+ } ) ;
58
+
59
+ // カラーピッカーとテキストボックスの同期
60
+ $('.pz-lkc-sync-text').on('keyup change', function() {
61
+ var name = $(this).attr('name');
62
+ var value = $(this).val();
63
+ $(`input[name="$(name)"]`).val(value);
64
+ } ) ;
65
+
66
+ // 自動変換のチェックが入っているときだけ、オプション設定を有効化
67
+ $('.pz-lkc-sync-check').on('change', function() {
68
+ var rs = switch_enabled();
69
+ } ) ;
70
+ function switch_enabled() {
71
+ // 外部サイト・サムネイル選択によって、サムネイルサイズを有効/無効
72
+ if ( $('select[name="properties[ex-thumbnail]"]').val() == 1 || $('select[name="properties[ex-thumbnail]"]').val() == 13 ) {
73
+ var flags = false;
74
+ } else {
75
+ var flags = true;
76
+ }
77
+ $('select[name="properties[ex-thumbnail-size]"]').prop('disabled', flags);
78
+ // 内部サイト・サムネイル選択によって、サムネイルサイズを有効/無効
79
+ if ( $('select[name="properties[in-thumbnail]"]').val() == 1 || $('select[name="properties[in-thumbnail]"]').val() == 13 ) {
80
+ var flags = false;
81
+ } else {
82
+ var flags = true;
83
+ }
84
+ $('select[name="properties[in-thumbnail-size]"]').prop('disabled', flags);
85
+ // エディタまたは自動変換選択によって、外部のみとショートコード実行を有効/無効
86
+ if ( $('input[name="properties[auto-atag]"]').prop('checked') == true || $('input[name="properties[auto-url]"]').prop('checked') == true ) {
87
+ var flags = false;
88
+ } else {
89
+ var flags = true;
90
+ }
91
+ $('input[name="properties[auto-external]"]').prop('readonly', flags);
92
+ $('input[name="properties[flg-do-shortcode]"]').prop('readonly', flags);
93
+ }
94
+
95
  } ) ( jQuery );
languages/pz-linkcard-ja.mo CHANGED
Binary file
languages/pz-linkcard-ja.po CHANGED
@@ -4,9 +4,9 @@ msgid ""
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"
12
  "MIME-Version: 1.0\n"
@@ -19,1289 +19,1438 @@ msgstr ""
19
  "Plural-Forms: nplurals=1; plural=0;\n"
20
  "X-Poedit-SearchPath-0: ..\n"
21
 
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
29
- msgid "URL key"
30
- 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:550
 
35
  msgid "URL"
36
  msgstr "URL"
37
 
38
- #: ../lib/pz-linkcard-cacheman-edit.php:26 ../lib/pz-linkcard-edit.php:29
39
- msgid "Site name"
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  msgstr "サイト名称"
41
 
42
- #: ../lib/pz-linkcard-cacheman-edit.php:30
43
- #: ../lib/pz-linkcard-cacheman-list.php:252 ../lib/pz-linkcard-edit.php:33
 
44
  msgid "Domain"
45
  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: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
 
59
- #: ../lib/pz-linkcard-cacheman-edit.php:42
60
- #: ../lib/pz-linkcard-cacheman-list.php:251 ../lib/pz-linkcard-edit.php:45
61
- msgid "Charset"
62
- msgstr "文字セット"
 
 
 
63
 
64
- #: ../lib/pz-linkcard-cacheman-edit.php:43 ../lib/pz-linkcard-edit.php:46
65
  msgid "->"
66
- 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 ../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
 
134
- #: ../lib/pz-linkcard-cacheman-list.php:176
135
  msgid "All"
136
  msgstr "すべて"
137
 
138
- #: ../lib/pz-linkcard-cacheman-list.php:177
139
  msgid "Internal"
140
  msgstr "内部"
141
 
142
- #: ../lib/pz-linkcard-cacheman-list.php:178
143
  msgid "External"
144
  msgstr "外部"
145
 
146
- #: ../lib/pz-linkcard-cacheman-list.php:179
147
  msgid "Modify"
148
  msgstr "更新あり"
149
 
150
- #: ../lib/pz-linkcard-cacheman-list.php:180
151
  msgid "Unlink"
152
  msgstr "リンク切れ"
153
 
154
- #: ../lib/pz-linkcard-cacheman-list.php:184
155
- msgid "Search keyword"
156
  msgstr "検索キーワード"
157
 
158
- #: ../lib/pz-linkcard-cacheman-list.php:186
159
  msgid "Search"
160
  msgstr "検索"
161
 
162
- #: ../lib/pz-linkcard-cacheman-list.php:195
163
- msgid "Select batch"
164
  msgstr "一括処理を選択"
165
 
166
- #: ../lib/pz-linkcard-cacheman-list.php:197
167
- #: ../lib/pz-linkcard-cacheman-list.php:267
168
  msgid "Select"
169
  msgstr "選択してください"
170
 
171
- #: ../lib/pz-linkcard-cacheman-list.php:198
172
- msgid "Renew cache"
173
- msgstr "記事内容を再取得する"
174
 
175
- #: ../lib/pz-linkcard-cacheman-list.php:199
176
- msgid "Renew Thumbnail"
177
- msgstr "サムネイルを再取得する"
178
 
179
- #: ../lib/pz-linkcard-cacheman-list.php:200
180
- msgid "Renew SNS count"
181
  msgstr "ソーシャルカウントを再取得する"
182
 
183
- #: ../lib/pz-linkcard-cacheman-list.php:201
184
- msgid "Check status"
185
- msgstr "リンクが有効かチェックする"
186
 
187
- #: ../lib/pz-linkcard-cacheman-list.php:202
188
- msgid "Delete from cache"
 
 
 
 
189
  msgstr "キャッシュから削除する"
190
 
191
- #: ../lib/pz-linkcard-cacheman-list.php:204
192
  msgid "Submit"
193
  msgstr "適用"
194
 
195
- #: ../lib/pz-linkcard-cacheman-list.php:208
196
- msgid "Select domain"
197
  msgstr "ドメインを選択"
198
 
199
- #: ../lib/pz-linkcard-cacheman-list.php:210
200
- msgid "All domain"
201
  msgstr "すべてのドメイン"
202
 
203
- #: ../lib/pz-linkcard-cacheman-list.php:223
204
- msgid "Refine search"
205
  msgstr "絞り込み検索"
206
 
207
- #: ../lib/pz-linkcard-cacheman-list.php:228
208
  msgid "items"
209
  msgstr "項目"
210
 
211
- #: ../lib/pz-linkcard-cacheman-list.php:245
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"
 
 
 
 
225
  msgstr "編集"
226
 
227
- #: ../lib/pz-linkcard-cacheman-list.php:322
228
- #: ../lib/pz-linkcard-cacheman-list.php:323
 
229
  msgid "Are you sure?"
230
  msgstr "実行しますか?"
231
 
232
- #: ../lib/pz-linkcard-cacheman-list.php:322
233
- msgid "renew"
234
  msgstr "再取得"
235
 
236
- #: ../lib/pz-linkcard-cacheman-list.php:323
237
- msgid "delete"
238
  msgstr "削除"
239
 
240
- #: ../lib/pz-linkcard-cacheman-list.php:380
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
 
259
- #: ../lib/pz-linkcard-cacheman.php:81
260
- msgid "Updated cache"
261
- msgstr "キャッシュを更新しました"
 
 
 
 
 
 
 
 
 
 
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"
269
- msgstr "ソーシャルカウントの再取得"
270
 
271
- #: ../lib/pz-linkcard-cacheman.php:101 ../lib/pz-linkcard-cacheman.php:114
272
- #: ../lib/pz-linkcard-cacheman.php:142 ../lib/pz-linkcard-cacheman.php:157
273
- msgid "completed"
274
- msgstr "完了しました"
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"
282
  msgstr "リンク先のチェック"
283
 
284
- #: ../lib/pz-linkcard-cacheman.php:147
285
- msgid "Cache renew"
286
- msgstr "記事内容の再取得"
287
 
288
- #: ../lib/pz-linkcard-cacheman.php:165
289
- msgid "Cache deleted"
290
- msgstr "キャッシュから削除しました"
291
 
292
- #: ../lib/pz-linkcard-cacheman.php:185
293
- msgid "Download Export File"
294
- msgstr "エクスポートファイルをダウンロード"
 
 
 
 
 
 
 
 
295
 
296
  #: ../lib/pz-linkcard-edit.php:25
297
- msgid "Link type"
298
- msgstr "外部/内部"
 
 
 
 
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"
306
  msgstr "リンクカードを作成するURLを入力してください"
307
 
308
- #: ../lib/pz-linkcard-modal.php:9
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 "<BLOCKQUOTE>で囲んで引用扱いにします"
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."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1251
  msgstr ""
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"
@@ -1309,202 +1458,341 @@ 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,31 +1800,159 @@ msgstr ""
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
 
@@ -1635,9 +2051,6 @@ msgstr "管理"
1635
  #~ msgid "Special format"
1636
  #~ msgstr "定型書式"
1637
 
1638
- #~ msgid "Plugin's page"
1639
- #~ msgstr "プラグインのページ"
1640
-
1641
  #~ msgid ""
1642
  #~ "There is a possibility that the screen display is slow If you enable this "
1643
  #~ "setting."
@@ -1792,9 +2205,6 @@ msgstr "管理"
1792
  #~ msgid "(This Page)"
1793
  #~ msgstr "(このページ)"
1794
 
1795
- #~ msgid " (My Site)"
1796
- #~ msgstr "(このサイト内)"
1797
-
1798
  #~ msgid "Reset CSS for img"
1799
  #~ msgstr ""
1800
  #~ "サムネイル画像やファビコンがずれて表示される場合にチェックを付けてみてくだ"
4
  msgstr ""
5
  "Project-Id-Version: Pz-LinkCard\n"
6
  "Report-Msgid-Bugs-To: http://wppolyglots.wordpress.com\n"
7
+ "POT-Creation-Date: 2021-02-28 14:15+0900\n"
8
+ "PO-Revision-Date: 2021-02-28 14:17+0900\n"
9
+ "Last-Translator: poporon@popozure <poporon@poponet.jp>\n"
10
  "Language-Team: poporon\n"
11
  "Language: ja_JP\n"
12
  "MIME-Version: 1.0\n"
19
  "Plural-Forms: nplurals=1; plural=0;\n"
20
  "X-Poedit-SearchPath-0: ..\n"
21
 
22
+ #: ../lib/pz-linkcard-cacheman-edit.php:18
23
+ #: ../lib/pz-linkcard-cacheman-list.php:226 ../lib/pz-linkcard-edit.php:13
24
  msgid "ID"
25
  msgstr "ID"
26
 
 
 
 
 
 
27
  #: ../lib/pz-linkcard-cacheman-edit.php:22
28
+ #: ../lib/pz-linkcard-cacheman-list.php:227 ../lib/pz-linkcard-edit.php:21
29
+ #: ../lib/pz-linkcard-settings.php:637 ../lib/pz-linkcard-settings.php:1005
30
+ #: ../pz-linkcard.php:408
31
  msgid "URL"
32
  msgstr "URL"
33
 
34
+ #: ../lib/pz-linkcard-cacheman-edit.php:26
35
+ msgid "Redirect URL"
36
+ msgstr "相対指定URL"
37
+
38
+ #: ../lib/pz-linkcard-cacheman-edit.php:30 ../lib/pz-linkcard-edit.php:17
39
+ msgid "URL Key"
40
+ msgstr "URLキー"
41
+
42
+ #: ../lib/pz-linkcard-cacheman-edit.php:34
43
+ msgid "Scheme"
44
+ msgstr "スキーム"
45
+
46
+ #: ../lib/pz-linkcard-cacheman-edit.php:38 ../lib/pz-linkcard-edit.php:29
47
+ #: ../lib/pz-linkcard-settings.php:1004
48
+ msgid "Site Name"
49
  msgstr "サイト名称"
50
 
51
+ #: ../lib/pz-linkcard-cacheman-edit.php:42
52
+ #: ../lib/pz-linkcard-cacheman-list.php:231 ../lib/pz-linkcard-edit.php:33
53
+ #: ../lib/pz-linkcard-settings.php:1006
54
  msgid "Domain"
55
  msgstr "ドメイン"
56
 
57
+ #: ../lib/pz-linkcard-cacheman-edit.php:50
58
+ msgid "Registration Title"
59
+ msgstr "登録時のタイトル"
60
+
61
+ #: ../lib/pz-linkcard-cacheman-edit.php:54
62
+ #: ../lib/pz-linkcard-cacheman-list.php:228 ../lib/pz-linkcard-edit.php:37
63
+ #: ../lib/pz-linkcard-settings.php:636
64
  msgid "Title"
65
  msgstr "タイトル"
66
 
67
+ #: ../lib/pz-linkcard-cacheman-edit.php:58
68
+ msgid "Modify Title"
69
+ msgstr "タイトルの変更"
70
+
71
+ #: ../lib/pz-linkcard-cacheman-edit.php:62
72
+ msgid "Registration Excerpt"
73
+ msgstr "登録時の抜粋文"
74
+
75
+ #: ../lib/pz-linkcard-cacheman-edit.php:66
76
+ #: ../lib/pz-linkcard-cacheman-list.php:229 ../lib/pz-linkcard-edit.php:41
77
+ #: ../lib/pz-linkcard-settings.php:638
78
  msgid "Excerpt"
79
  msgstr "抜粋文"
80
 
81
+ #: ../lib/pz-linkcard-cacheman-edit.php:70
82
+ msgid "Modify Excerpt"
83
+ msgstr "抜粋文の変更"
84
+
85
+ #: ../lib/pz-linkcard-cacheman-edit.php:74
86
+ msgid "Character Set"
87
+ msgstr "文字セット"
88
 
89
+ #: ../lib/pz-linkcard-cacheman-edit.php:75 ../lib/pz-linkcard-edit.php:46
90
  msgid "->"
91
+ msgstr "->"
92
 
93
+ #: ../lib/pz-linkcard-cacheman-edit.php:78 ../lib/pz-linkcard-edit.php:49
94
  msgid "Thumbnail URL"
95
  msgstr "サムネイル画像URL"
96
 
97
+ #: ../lib/pz-linkcard-cacheman-edit.php:82
98
  msgid "Favicon URL"
99
  msgstr "サイトアイコンのURL"
100
 
101
+ #: ../lib/pz-linkcard-cacheman-edit.php:86 ../lib/pz-linkcard-edit.php:57
102
+ msgid "Result Code"
103
  msgstr "結果コード"
104
 
105
+ #: ../lib/pz-linkcard-cacheman-edit.php:90
106
+ #: ../lib/pz-linkcard-cacheman-list.php:237 ../lib/pz-linkcard-edit.php:61
107
  msgid "Post ID"
108
  msgstr "記事ID"
109
 
110
+ #: ../lib/pz-linkcard-cacheman-edit.php:101 ../lib/pz-linkcard-edit.php:65
111
  msgid "SNS"
112
  msgstr "SNS"
113
 
114
+ #: ../lib/pz-linkcard-cacheman-edit.php:103
115
+ #: ../lib/pz-linkcard-cacheman-list.php:232 ../lib/pz-linkcard-edit.php:67
116
  msgid "Tw"
117
  msgstr "Tw"
118
 
119
+ #: ../lib/pz-linkcard-cacheman-edit.php:104
120
+ #: ../lib/pz-linkcard-cacheman-list.php:232 ../lib/pz-linkcard-edit.php:68
121
  msgid "fb"
122
  msgstr "fb"
123
 
124
+ #: ../lib/pz-linkcard-cacheman-edit.php:105
125
+ #: ../lib/pz-linkcard-cacheman-list.php:232 ../lib/pz-linkcard-edit.php:69
126
  msgid "B!"
127
  msgstr "B!"
128
 
129
+ #: ../lib/pz-linkcard-cacheman-edit.php:106
130
+ #: ../lib/pz-linkcard-cacheman-list.php:232
131
  msgid "Po"
132
  msgstr "Po"
133
 
134
+ #: ../lib/pz-linkcard-cacheman-edit.php:110
135
+ msgid "Last SNS Check"
136
+ msgstr "前回のSNS確認日時"
137
 
138
+ #: ../lib/pz-linkcard-cacheman-edit.php:114
139
+ msgid "Next SNS Check"
140
  msgstr "次回のSNS確認日時"
141
 
142
+ #: ../lib/pz-linkcard-cacheman-edit.php:118
143
+ msgid "Registration Character Set"
144
+ msgstr "登録時の文字セット"
145
+
146
+ #: ../lib/pz-linkcard-cacheman-edit.php:122
147
+ #: ../lib/pz-linkcard-cacheman-edit.php:126
148
+ msgid "Registration Date"
149
+ msgstr "登録をした日時"
150
+
151
+ #: ../lib/pz-linkcard-cacheman-edit.php:130
152
+ msgid "Registration Result Code"
153
+ msgstr "登録時の結果コード"
154
+
155
+ #: ../lib/pz-linkcard-cacheman-edit.php:134
156
+ msgid "Last Alive Check"
157
+ msgstr "前回のリンク切れ確認日時"
158
+
159
+ #: ../lib/pz-linkcard-cacheman-edit.php:138
160
+ msgid "Next Alive Check"
161
  msgstr "次回のリンク切れ確認日時"
162
 
163
+ #: ../lib/pz-linkcard-cacheman-edit.php:142
164
+ msgid "Result Code of Alive Check"
165
+ msgstr "リンク切れ確認時の結果コード"
 
166
 
167
+ #: ../lib/pz-linkcard-cacheman-edit.php:146
168
+ #: ../lib/pz-linkcard-cacheman-edit.php:150 ../lib/pz-linkcard-edit.php:73
169
+ msgid "Update Date"
170
+ msgstr "更新日"
171
+
172
+ #: ../lib/pz-linkcard-cacheman-edit.php:155 ../lib/pz-linkcard-edit.php:86
173
  msgid "Update"
174
  msgstr "更新"
175
 
176
+ #: ../lib/pz-linkcard-cacheman-edit.php:155 ../lib/pz-linkcard-edit.php:86
177
  msgid "Cancel"
178
  msgstr "キャンセル"
179
 
180
+ #: ../lib/pz-linkcard-cacheman-list.php:153
181
  msgid "All"
182
  msgstr "すべて"
183
 
184
+ #: ../lib/pz-linkcard-cacheman-list.php:154
185
  msgid "Internal"
186
  msgstr "内部"
187
 
188
+ #: ../lib/pz-linkcard-cacheman-list.php:155
189
  msgid "External"
190
  msgstr "外部"
191
 
192
+ #: ../lib/pz-linkcard-cacheman-list.php:156
193
  msgid "Modify"
194
  msgstr "更新あり"
195
 
196
+ #: ../lib/pz-linkcard-cacheman-list.php:157
197
  msgid "Unlink"
198
  msgstr "リンク切れ"
199
 
200
+ #: ../lib/pz-linkcard-cacheman-list.php:161
201
+ msgid "Search Keyword"
202
  msgstr "検索キーワード"
203
 
204
+ #: ../lib/pz-linkcard-cacheman-list.php:163
205
  msgid "Search"
206
  msgstr "検索"
207
 
208
+ #: ../lib/pz-linkcard-cacheman-list.php:172
209
+ msgid "Select Batch"
210
  msgstr "一括処理を選択"
211
 
212
+ #: ../lib/pz-linkcard-cacheman-list.php:174
213
+ #: ../lib/pz-linkcard-cacheman-list.php:326
214
  msgid "Select"
215
  msgstr "選択してください"
216
 
217
+ #: ../lib/pz-linkcard-cacheman-list.php:175 ../lib/pz-linkcard-cacheman.php:78
218
+ msgid "Renew Cache"
219
+ msgstr "記事内容の再取得"
220
 
221
+ #: ../lib/pz-linkcard-cacheman-list.php:176 ../lib/pz-linkcard-cacheman.php:162
222
+ msgid "Renew Thumbnail Image"
223
+ msgstr "サムネイル画像を再取得する"
224
 
225
+ #: ../lib/pz-linkcard-cacheman-list.php:177 ../lib/pz-linkcard-cacheman.php:141
226
+ msgid "Renew SNS Count"
227
  msgstr "ソーシャルカウントを再取得する"
228
 
229
+ #: ../lib/pz-linkcard-cacheman-list.php:178
230
+ msgid "Renew Post ID"
231
+ msgstr "記事IDの再取得"
232
 
233
+ #: ../lib/pz-linkcard-cacheman-list.php:179
234
+ msgid "Check Status"
235
+ msgstr "状態の確認"
236
+
237
+ #: ../lib/pz-linkcard-cacheman-list.php:180
238
+ msgid "Delete from Cache"
239
  msgstr "キャッシュから削除する"
240
 
241
+ #: ../lib/pz-linkcard-cacheman-list.php:182
242
  msgid "Submit"
243
  msgstr "適用"
244
 
245
+ #: ../lib/pz-linkcard-cacheman-list.php:186
246
+ msgid "Select Domain"
247
  msgstr "ドメインを選択"
248
 
249
+ #: ../lib/pz-linkcard-cacheman-list.php:188
250
+ msgid "All Domain"
251
  msgstr "すべてのドメイン"
252
 
253
+ #: ../lib/pz-linkcard-cacheman-list.php:197
254
+ msgid "Refine Search"
255
  msgstr "絞り込み検索"
256
 
257
+ #: ../lib/pz-linkcard-cacheman-list.php:203
258
  msgid "items"
259
  msgstr "項目"
260
 
261
+ #: ../lib/pz-linkcard-cacheman-list.php:225
262
+ msgid "Select All"
263
  msgstr "すべて選択"
264
 
265
+ #: ../lib/pz-linkcard-cacheman-list.php:230 ../lib/pz-linkcard-edit.php:45
266
+ msgid "Charset"
267
+ msgstr "文字セット"
268
+
269
+ #: ../lib/pz-linkcard-cacheman-list.php:233
270
+ msgid "Regist<br>date"
271
+ msgstr "登録日"
272
+
273
+ #: ../lib/pz-linkcard-cacheman-list.php:234
274
+ msgid "Update<br>date"
275
+ msgstr "更新日"
276
+
277
+ #: ../lib/pz-linkcard-cacheman-list.php:235
278
+ msgid "SNS<br>check<br>date"
279
+ msgstr "SNS<br>取得日"
280
+
281
+ #: ../lib/pz-linkcard-cacheman-list.php:236
282
+ msgid "Alive<br>check<br>date"
283
+ msgstr "状態<br>確認日"
284
 
285
+ #: ../lib/pz-linkcard-cacheman-list.php:238
286
+ msgid "Result<br>code"
287
+ msgstr "結果<br>コード"
288
+
289
+ #: ../lib/pz-linkcard-cacheman-list.php:238
290
+ msgid "(last )"
291
  msgstr "(直近)"
292
 
293
+ #: ../lib/pz-linkcard-cacheman-list.php:261
294
+ msgid "&#x26a0;"
295
+ msgstr "&#x26a0;"
296
+
297
+ #: ../lib/pz-linkcard-cacheman-list.php:335
298
+ msgid "Edit"
299
  msgstr "編集"
300
 
301
+ #: ../lib/pz-linkcard-cacheman-list.php:336
302
+ #: ../lib/pz-linkcard-cacheman-list.php:337
303
+ #: ../lib/pz-linkcard-settings.php:1190 ../lib/pz-linkcard-settings.php:1197
304
  msgid "Are you sure?"
305
  msgstr "実行しますか?"
306
 
307
+ #: ../lib/pz-linkcard-cacheman-list.php:336
308
+ msgid "Renew"
309
  msgstr "再取得"
310
 
311
+ #: ../lib/pz-linkcard-cacheman-list.php:337
312
+ msgid "Delete"
313
  msgstr "削除"
314
 
315
+ #: ../lib/pz-linkcard-cacheman.php:2 ../lib/pz-linkcard-settings.php:2
316
+ #: ../lib/pz-linkcard-settings.php:1088
317
+ msgid "Currently working in a development environment."
318
+ msgstr "現在、開発環境で作業中です。"
319
 
320
+ #: ../lib/pz-linkcard-cacheman.php:6 ../pz-linkcard.php:2205
321
+ msgid "LinkCard Cache Manager"
322
  msgstr "リンクカード/DBキャッシュ管理"
323
 
324
+ #: ../lib/pz-linkcard-cacheman.php:6 ../lib/pz-linkcard-settings.php:159
325
+ #: ../lib/pz-linkcard-settings.php:188 ../lib/pz-linkcard-settings.php:283
326
+ #: ../lib/pz-linkcard-settings.php:450 ../lib/pz-linkcard-settings.php:632
327
+ #: ../lib/pz-linkcard-settings.php:699 ../lib/pz-linkcard-settings.php:848
328
+ #: ../lib/pz-linkcard-settings.php:889 ../lib/pz-linkcard-settings.php:962
329
+ #: ../lib/pz-linkcard-settings.php:998 ../lib/pz-linkcard-settings.php:1024
330
+ #: ../lib/pz-linkcard-settings.php:1095 ../lib/pz-linkcard-settings.php:1126
331
+ #: ../lib/pz-linkcard-settings.php:1161 ../lib/pz-linkcard-settings.php:1185
332
  msgid "Help"
333
  msgstr "ヘルプ"
334
 
335
+ #: ../lib/pz-linkcard-cacheman.php:65 ../lib/pz-linkcard-cacheman.php:84
336
+ #: ../lib/pz-linkcard-cacheman.php:101 ../lib/pz-linkcard-cacheman.php:127
337
+ #: ../lib/pz-linkcard-cacheman.php:147 ../lib/pz-linkcard-cacheman.php:168
338
+ #: ../lib/pz-linkcard-cacheman.php:201
339
+ msgid "Not selected"
340
+ msgstr "選択されていません"
341
+
342
+ #: ../lib/pz-linkcard-cacheman.php:78 ../lib/pz-linkcard-cacheman.php:95
343
+ #: ../lib/pz-linkcard-cacheman.php:121 ../lib/pz-linkcard-cacheman.php:141
344
+ #: ../lib/pz-linkcard-cacheman.php:162 ../lib/pz-linkcard-cacheman.php:195
345
+ #: ../lib/pz-linkcard-cacheman.php:230
346
+ msgid "..."
347
+ msgstr ""
348
 
349
+ #: ../lib/pz-linkcard-cacheman.php:78 ../lib/pz-linkcard-cacheman.php:95
350
+ #: ../lib/pz-linkcard-cacheman.php:121 ../lib/pz-linkcard-cacheman.php:141
351
+ #: ../lib/pz-linkcard-cacheman.php:162 ../lib/pz-linkcard-cacheman.php:195
352
+ #: ../lib/pz-linkcard-cacheman.php:230 ../lib/pz-linkcard-file-import.php:11
353
+ #: ../lib/pz-linkcard-file-import.php:54 ../lib/pz-linkcard-file-import.php:61
354
+ #: ../lib/pz-linkcard-file-import.php:100
355
+ #: ../lib/pz-linkcard-file-import.php:102 ../lib/pz-linkcard-settings.php:230
356
+ #: ../lib/pz-linkcard-settings.php:1106 ../lib/pz-linkcard-settings.php:1167
357
+ #: ../lib/pz-linkcard-settings.php:1176 ../pz-linkcard.php:1530
358
+ #: ../pz-linkcard.php:1547
359
+ msgid "("
360
+ msgstr "("
361
+
362
+ #: ../lib/pz-linkcard-cacheman.php:78 ../lib/pz-linkcard-cacheman.php:95
363
+ #: ../lib/pz-linkcard-cacheman.php:121 ../lib/pz-linkcard-cacheman.php:141
364
+ #: ../lib/pz-linkcard-cacheman.php:162 ../lib/pz-linkcard-cacheman.php:195
365
+ #: ../lib/pz-linkcard-cacheman.php:230 ../lib/pz-linkcard-file-import.php:100
366
+ msgid "Success:"
367
+ msgstr "成功:"
368
+
369
+ #: ../lib/pz-linkcard-cacheman.php:78 ../lib/pz-linkcard-cacheman.php:95
370
+ #: ../lib/pz-linkcard-cacheman.php:121 ../lib/pz-linkcard-cacheman.php:141
371
+ #: ../lib/pz-linkcard-cacheman.php:162 ../lib/pz-linkcard-cacheman.php:195
372
+ #: ../lib/pz-linkcard-cacheman.php:230 ../lib/pz-linkcard-file-import.php:100
373
+ #: ../lib/pz-linkcard-file-import.php:102
374
+ msgid "Skip:"
375
+ msgstr "スキップ:"
376
+
377
+ #: ../lib/pz-linkcard-cacheman.php:78 ../lib/pz-linkcard-cacheman.php:95
378
+ #: ../lib/pz-linkcard-cacheman.php:121 ../lib/pz-linkcard-cacheman.php:141
379
+ #: ../lib/pz-linkcard-cacheman.php:162 ../lib/pz-linkcard-cacheman.php:195
380
+ #: ../lib/pz-linkcard-cacheman.php:230 ../lib/pz-linkcard-file-import.php:11
381
+ #: ../lib/pz-linkcard-file-import.php:54 ../lib/pz-linkcard-file-import.php:61
382
+ #: ../lib/pz-linkcard-file-import.php:100
383
+ #: ../lib/pz-linkcard-file-import.php:102 ../lib/pz-linkcard-settings.php:230
384
+ #: ../lib/pz-linkcard-settings.php:1106 ../lib/pz-linkcard-settings.php:1167
385
+ #: ../lib/pz-linkcard-settings.php:1176 ../pz-linkcard.php:1530
386
+ #: ../pz-linkcard.php:1547
387
+ msgid ")"
388
+ msgstr ")"
389
 
390
+ #: ../lib/pz-linkcard-cacheman.php:95
391
+ msgid "Delete Cache"
392
+ msgstr "キャッシュ削除"
393
 
394
+ #: ../lib/pz-linkcard-cacheman.php:121
395
+ msgid "Update Cache"
396
+ msgstr "キャッシュを更新しました"
 
397
 
398
+ #: ../lib/pz-linkcard-cacheman.php:195
399
+ msgid "Renew Post Id"
400
+ msgstr "記事IDの再取得"
401
 
402
+ #: ../lib/pz-linkcard-cacheman.php:230
403
  msgid "Alive check"
404
  msgstr "リンク先のチェック"
405
 
406
+ #: ../lib/pz-linkcard-cacheman.php:240
407
+ msgid "Upload Import File"
408
+ msgstr "インポートするファイルをアップロード"
409
 
410
+ #: ../lib/pz-linkcard-cacheman.php:241
411
+ msgid "Clear all cache"
412
+ msgstr "すべてのキャッシュを消去"
413
 
414
+ #: ../lib/pz-linkcard-cacheman.php:264 ../lib/pz-linkcard-settings.php:1051
415
+ msgid "File Menu"
416
+ msgstr "ファイルメニュー"
417
+
418
+ #: ../lib/pz-linkcard-cacheman.php:271
419
+ msgid "Import"
420
+ msgstr "インポート"
421
+
422
+ #: ../lib/pz-linkcard-cacheman.php:279
423
+ msgid "Export"
424
+ msgstr "エクスポート"
425
 
426
  #: ../lib/pz-linkcard-edit.php:25
427
+ msgid "Link Type"
428
+ msgstr "リンクの種類"
429
+
430
+ #: ../lib/pz-linkcard-edit.php:53
431
+ msgid "Site Icon URL"
432
+ msgstr "サイトアイコンURL"
433
 
434
  #: ../lib/pz-linkcard-edit.php:77
435
+ msgid "Next Update"
436
  msgstr "次回の更新日時"
437
 
438
+ #: ../lib/pz-linkcard-edit.php:81
439
+ msgid "Regist"
440
+ msgstr "登録"
441
+
442
+ #: ../lib/pz-linkcard-file-export.php:44
443
+ msgid "Download Export File"
444
+ msgstr "エクスポートされたファイルをダウンロード"
445
+
446
+ #: ../lib/pz-linkcard-file-import.php:11 ../lib/pz-linkcard-file-import.php:54
447
+ #: ../lib/pz-linkcard-file-import.php:61
448
+ msgid "DB Access Error."
449
+ msgstr "データベースへのアクセスでエラーが発生しました。"
450
+
451
+ #: ../lib/pz-linkcard-file-import.php:29
452
+ msgid "Import File Not Found."
453
+ msgstr "インポートファイルが見つかりません。"
454
+
455
+ #: ../lib/pz-linkcard-file-import.php:36
456
+ msgid "Import File Open Error."
457
+ msgstr "インポートファイルが開けませんでした。"
458
+
459
+ #: ../lib/pz-linkcard-file-import.php:42
460
+ msgid "Import File Read Error."
461
+ msgstr "インポートファイルが読み込めませんでした。"
462
+
463
+ #: ../lib/pz-linkcard-file-import.php:100
464
+ msgid "Import Successful."
465
+ msgstr "インポートが成功しました。"
466
+
467
+ #: ../lib/pz-linkcard-file-import.php:100
468
+ #: ../lib/pz-linkcard-file-import.php:102
469
+ msgid "Read:"
470
+ msgstr "読み込み:"
471
+
472
+ #: ../lib/pz-linkcard-file-import.php:102
473
+ msgid "Import Failure."
474
+ msgstr "インポートが失敗しました。"
475
+
476
+ #: ../lib/pz-linkcard-modal.php:4
477
+ msgid "×"
478
+ msgstr "×"
479
+
480
+ #: ../lib/pz-linkcard-modal.php:8
481
  msgid "Input URL"
482
  msgstr "リンクカードを作成するURLを入力してください"
483
 
484
+ #: ../lib/pz-linkcard-modal.php:11
485
  msgid "Insert"
486
  msgstr "挿入"
487
 
488
+ #: ../lib/pz-linkcard-settings-validate.php:94
489
  msgid "Color code does not conform to HTML color code."
490
  msgstr ""
491
  "色の指定がHTMLカラーコードになっていません。正しい色が表示できない可能性があ"
492
  "ります。"
493
 
494
+ #: ../lib/pz-linkcard-settings.php:16
495
+ msgid "Succeeded in initialize the settings."
496
+ msgstr "設定を初期化しました。"
497
 
498
+ #: ../lib/pz-linkcard-settings.php:18
499
+ msgid "Failed to initialize the settings."
500
+ msgstr "設定の初期化に失敗しました。"
501
+
502
+ #: ../lib/pz-linkcard-settings.php:40
503
  msgid "Succeeded in saving the settings."
504
  msgstr "設定を更新しました。"
505
 
506
+ #: ../lib/pz-linkcard-settings.php:43
 
 
 
 
507
  msgid "The settings have not changed."
508
  msgstr "設定は変更されていません。"
509
 
510
+ #: ../lib/pz-linkcard-settings.php:83
511
+ msgid "Version"
512
+ msgstr "バージョン"
513
+
514
+ #: ../lib/pz-linkcard-settings.php:132 ../pz-linkcard.php:2206
515
+ msgid "LinkCard Settings"
516
+ msgstr "リンクカード設定"
517
+
518
+ #: ../lib/pz-linkcard-settings.php:142
519
  msgid "Error"
520
  msgstr "エラー"
521
 
522
+ #: ../lib/pz-linkcard-settings.php:143
523
  msgid "Basic"
524
  msgstr "基本"
525
 
526
+ #: ../lib/pz-linkcard-settings.php:144
527
  msgid "Position"
528
  msgstr "配置"
529
 
530
+ #: ../lib/pz-linkcard-settings.php:145
531
  msgid "Display"
532
  msgstr "表示"
533
 
534
+ #: ../lib/pz-linkcard-settings.php:146
535
  msgid "Letter"
536
  msgstr "文字"
537
 
538
+ #: ../lib/pz-linkcard-settings.php:147
539
+ msgid "External Link"
540
  msgstr "外部リンク"
541
 
542
+ #: ../lib/pz-linkcard-settings.php:148
543
+ msgid "Internal Link"
544
  msgstr "内部リンク"
545
 
546
+ #: ../lib/pz-linkcard-settings.php:149
547
+ msgid "Same Page Link"
548
  msgstr "同ページへのリンク"
549
 
550
+ #: ../lib/pz-linkcard-settings.php:150
551
+ msgid "Link Check"
 
 
 
 
 
 
 
 
 
 
 
 
552
  msgstr "リンク先の検査"
553
 
554
+ #: ../lib/pz-linkcard-settings.php:151
555
  msgid "Editor"
556
+ msgstr "エディター"
557
+
558
+ #: ../lib/pz-linkcard-settings.php:152 ../lib/pz-linkcard-settings.php:965
559
+ msgid "Multi Site"
560
+ msgstr "マルチサイト"
561
 
562
+ #: ../lib/pz-linkcard-settings.php:153
563
  msgid "Advanced"
564
  msgstr "上級者向け"
565
 
566
+ #: ../lib/pz-linkcard-settings.php:154
567
+ msgid "etc."
568
+ msgstr "その他"
569
+
570
+ #: ../lib/pz-linkcard-settings.php:155 ../lib/pz-linkcard-settings.php:1185
571
  msgid "Initialize"
572
  msgstr "初期化"
573
 
574
+ #: ../lib/pz-linkcard-settings.php:159
575
+ msgid "Error Settings"
576
  msgstr "エラーの設定"
577
 
578
+ #: ../lib/pz-linkcard-settings.php:162
579
  msgid "Error reset"
580
  msgstr "エラーの解除"
581
 
582
+ #: ../lib/pz-linkcard-settings.php:163
583
  msgid "Uncheck to cancel the error condition."
584
  msgstr "チェックを外すとエラー状態を解除します。"
585
 
586
+ #: ../lib/pz-linkcard-settings.php:166 ../lib/pz-linkcard-settings.php:172
587
+ msgid "Article with error"
588
+ msgstr "エラーのある記事"
589
 
590
+ #: ../lib/pz-linkcard-settings.php:178
591
  msgid "Error Time"
592
  msgstr "エラーの発生日時"
593
 
594
+ #: ../lib/pz-linkcard-settings.php:188
595
+ msgid "Basic Settings"
596
  msgstr "基本の設定"
597
 
598
+ #: ../lib/pz-linkcard-settings.php:191
599
  msgid "Easy format"
600
  msgstr "かんたん書式設定"
601
 
602
+ #: ../lib/pz-linkcard-settings.php:194 ../lib/pz-linkcard-settings.php:461
603
+ #: ../lib/pz-linkcard-settings.php:502 ../lib/pz-linkcard-settings.php:511
604
+ #: ../lib/pz-linkcard-settings.php:550 ../lib/pz-linkcard-settings.php:564
605
+ #: ../lib/pz-linkcard-settings.php:581 ../lib/pz-linkcard-settings.php:604
606
+ #: ../lib/pz-linkcard-settings.php:618 ../lib/pz-linkcard-settings.php:728
607
+ #: ../lib/pz-linkcard-settings.php:762 ../lib/pz-linkcard-settings.php:793
 
 
608
  msgid "None"
609
  msgstr "なし"
610
 
611
+ #: ../lib/pz-linkcard-settings.php:195
612
  msgid "Pz-LkC Default"
613
  msgstr "Pz リンクカード オリジナル"
614
 
615
+ #: ../lib/pz-linkcard-settings.php:196
616
  msgid "Normal"
617
  msgstr "ノーマル(はてなブログカード風)"
618
 
619
+ #: ../lib/pz-linkcard-settings.php:197
620
  msgid "Enclose"
621
  msgstr "囲み"
622
 
623
+ #: ../lib/pz-linkcard-settings.php:198
624
  msgid "Compact"
625
  msgstr "コンパクト"
626
 
627
+ #: ../lib/pz-linkcard-settings.php:199
628
  msgid "Reflection"
629
  msgstr "反射"
630
 
631
+ #: ../lib/pz-linkcard-settings.php:200
632
  msgid "Simple"
633
  msgstr "シンプル"
634
 
635
+ #: ../lib/pz-linkcard-settings.php:201
636
  msgid "Headline"
637
  msgstr "見出し(付加情報のテキストが見出しとして表示されます)"
638
 
639
+ #: ../lib/pz-linkcard-settings.php:202
640
  msgid "Cellophane tape \"center\""
641
  msgstr "セロハンテープ(中央)"
642
 
643
+ #: ../lib/pz-linkcard-settings.php:203
644
  msgid "Cellophane tape \"Top corner\""
645
  msgstr "セロハンテープ(左上と右上)"
646
 
647
+ #: ../lib/pz-linkcard-settings.php:204
648
  msgid "Cellophane tape \"long\""
649
  msgstr "セロハンテープ(長め)"
650
 
651
+ #: ../lib/pz-linkcard-settings.php:205
652
  msgid "Cellophane tape \"digonal\""
653
  msgstr "セロハンテープ(斜め)"
654
 
655
+ #: ../lib/pz-linkcard-settings.php:206
656
  msgid "Curling paper"
657
  msgstr "紙がめくれた効果"
658
 
659
+ #: ../lib/pz-linkcard-settings.php:207
660
  msgid "Cellophane tape and curling"
661
  msgstr "セロハンテープと紙めくれた効果"
662
 
663
+ #: ../lib/pz-linkcard-settings.php:208
664
  msgid "Stitch blue & red"
665
  msgstr "縫い目(青と赤)"
666
 
667
+ #: ../lib/pz-linkcard-settings.php:209
668
  msgid "Stitch green & yellow"
669
  msgstr "縫い目(緑と黄色)"
670
 
671
+ #: ../lib/pz-linkcard-settings.php:210
672
  msgid "Square"
673
  msgstr "スクエア"
674
 
675
+ #: ../lib/pz-linkcard-settings.php:211
676
  msgid "Infomation orange"
677
  msgstr "インフォメーション オレンジ"
678
 
679
+ #: ../lib/pz-linkcard-settings.php:212
680
  msgid "Neutral bluegreen"
681
  msgstr "ニュートラル ブルーグリーン"
682
 
683
+ #: ../lib/pz-linkcard-settings.php:213
684
  msgid "Enlightened green"
685
  msgstr "エンライテド グリーン"
686
 
687
+ #: ../lib/pz-linkcard-settings.php:214
688
  msgid "Resistance blue"
689
  msgstr "レジスタンス ブルー"
690
 
691
+ #: ../lib/pz-linkcard-settings.php:215
692
  msgid "Windows XP"
693
  msgstr "Windows XP 風"
694
 
695
+ #: ../lib/pz-linkcard-settings.php:216
696
  msgid "Windows 95"
697
  msgstr "Windows 95 風"
698
 
699
+ #: ../lib/pz-linkcard-settings.php:217
700
  msgid "Slanting"
701
  msgstr "斜め"
702
 
703
+ #: ../lib/pz-linkcard-settings.php:218
704
  msgid "3D Rotate"
705
  msgstr "3D回転"
706
 
707
+ #: ../lib/pz-linkcard-settings.php:219
708
  msgid "Pushpin"
709
  msgstr "押しピン"
710
 
711
+ #: ../lib/pz-linkcard-settings.php:221 ../lib/pz-linkcard-settings.php:610
712
+ #: ../lib/pz-linkcard-settings.php:971 ../lib/pz-linkcard-settings.php:981
713
+ #: ../pz-linkcard.php:2175
714
  msgid "*"
715
  msgstr "※"
716
 
717
+ #: ../lib/pz-linkcard-settings.php:221
718
  msgid "It applies over other formatting settings."
719
  msgstr "ほかの項目よりも優先して適用されます。"
720
 
721
+ #: ../lib/pz-linkcard-settings.php:230
722
+ msgid "How to"
723
  msgstr "使い方"
724
 
725
+ #: ../lib/pz-linkcard-settings.php:230
726
+ msgid "Japanese Only"
727
+ msgstr "日本語のみ"
728
+
729
+ #: ../lib/pz-linkcard-settings.php:237
730
+ msgid "Plugin Name"
731
+ msgstr "プラグイン名"
732
+
733
+ #: ../lib/pz-linkcard-settings.php:241
734
+ msgid "Plugin Abbreviation"
735
+ msgstr "プラグイン略称"
736
+
737
+ #: ../lib/pz-linkcard-settings.php:245
738
+ msgid "Plugin Version"
739
+ msgstr "プラグインバージョン"
740
+
741
+ #: ../lib/pz-linkcard-settings.php:249 ../lib/pz-linkcard-settings.php:262
742
+ msgid "Author's Site"
743
  msgstr "作者のサイト"
744
 
745
+ #: ../lib/pz-linkcard-settings.php:253
746
+ msgid "Plugin Path"
747
+ msgstr "プラグインのパス"
748
+
749
+ #: ../lib/pz-linkcard-settings.php:257
750
+ msgid "Author Name"
751
+ msgstr "作者の名前"
752
+
753
+ #: ../lib/pz-linkcard-settings.php:263
754
  msgid "Popozure."
755
  msgstr "ぽぽづれ。"
756
 
757
+ #: ../lib/pz-linkcard-settings.php:263
758
+ msgid "Poporon's PC Daily Diary"
759
  msgstr "ぽぽろんのパソコンつれづれ(ズレズレ?)日記"
760
 
761
+ #: ../lib/pz-linkcard-settings.php:266
762
+ msgid "When in Trouble"
763
  msgstr "困ったときは"
764
 
765
+ #: ../lib/pz-linkcard-settings.php:267
766
+ msgid "Twitter Account"
767
  msgstr "ツイッター アカウント"
768
 
769
+ #: ../lib/pz-linkcard-settings.php:270
770
  msgid "Donation"
771
  msgstr "寄付"
772
 
773
+ #: ../lib/pz-linkcard-settings.php:271
774
+ msgid "Wishlist"
775
+ msgstr "ほしい物リスト"
776
+
777
+ #: ../lib/pz-linkcard-settings.php:275
778
+ msgid "Changelog"
779
+ msgstr "修正履歴"
780
+
781
+ #: ../lib/pz-linkcard-settings.php:283
782
+ msgid "Position Settings"
783
  msgstr "配置の設定"
784
 
785
+ #: ../lib/pz-linkcard-settings.php:286
786
+ msgid "Link the Whole"
787
  msgstr "カード全体をリンクする"
788
 
789
+ #: ../lib/pz-linkcard-settings.php:290
790
+ msgid "Enclose the entire card at anchor."
791
  msgstr ""
792
+ "カード全体をAタグで囲って、どこをクリックしてもリンク先を開くようにします。"
793
 
794
+ #: ../lib/pz-linkcard-settings.php:296
795
  msgid "Margin"
796
  msgstr "余白"
797
 
798
+ #: ../lib/pz-linkcard-settings.php:303 ../lib/pz-linkcard-settings.php:336
799
  msgid "Margin top"
800
  msgstr "上の余白"
801
 
802
+ #: ../lib/pz-linkcard-settings.php:305 ../lib/pz-linkcard-settings.php:321
803
+ #: ../lib/pz-linkcard-settings.php:338 ../lib/pz-linkcard-settings.php:354
804
+ #: ../lib/pz-linkcard-settings.php:368 ../lib/pz-linkcard-settings.php:390
805
+ #: ../lib/pz-linkcard-settings.php:408 ../lib/pz-linkcard-settings.php:426
806
  msgid "Not defined"
807
  msgstr "設定しない"
808
 
809
+ #: ../lib/pz-linkcard-settings.php:306 ../lib/pz-linkcard-settings.php:322
810
+ #: ../lib/pz-linkcard-settings.php:339 ../lib/pz-linkcard-settings.php:355
811
+ #: ../lib/pz-linkcard-settings.php:369 ../lib/pz-linkcard-settings.php:391
812
+ #: ../lib/pz-linkcard-settings.php:409 ../lib/pz-linkcard-settings.php:427
813
  msgid "0"
814
  msgstr "0"
815
 
816
+ #: ../lib/pz-linkcard-settings.php:307 ../lib/pz-linkcard-settings.php:323
817
+ #: ../lib/pz-linkcard-settings.php:340 ../lib/pz-linkcard-settings.php:356
818
+ #: ../lib/pz-linkcard-settings.php:370 ../lib/pz-linkcard-settings.php:392
819
+ #: ../lib/pz-linkcard-settings.php:410 ../lib/pz-linkcard-settings.php:428
820
+ #: ../lib/pz-linkcard-settings.php:551
821
  msgid "4px"
822
  msgstr "4px"
823
 
824
+ #: ../lib/pz-linkcard-settings.php:308 ../lib/pz-linkcard-settings.php:324
825
+ #: ../lib/pz-linkcard-settings.php:341 ../lib/pz-linkcard-settings.php:357
826
+ #: ../lib/pz-linkcard-settings.php:371 ../lib/pz-linkcard-settings.php:393
827
+ #: ../lib/pz-linkcard-settings.php:411 ../lib/pz-linkcard-settings.php:429
828
+ #: ../lib/pz-linkcard-settings.php:552
829
  msgid "8px"
830
  msgstr "8px"
831
 
832
+ #: ../lib/pz-linkcard-settings.php:309 ../lib/pz-linkcard-settings.php:325
833
+ #: ../lib/pz-linkcard-settings.php:342 ../lib/pz-linkcard-settings.php:358
834
+ #: ../lib/pz-linkcard-settings.php:372 ../lib/pz-linkcard-settings.php:394
835
+ #: ../lib/pz-linkcard-settings.php:412 ../lib/pz-linkcard-settings.php:430
836
+ #: ../lib/pz-linkcard-settings.php:553
837
  msgid "16px"
838
  msgstr "16px"
839
 
840
+ #: ../lib/pz-linkcard-settings.php:310 ../lib/pz-linkcard-settings.php:326
841
+ #: ../lib/pz-linkcard-settings.php:344 ../lib/pz-linkcard-settings.php:360
842
+ #: ../lib/pz-linkcard-settings.php:374 ../lib/pz-linkcard-settings.php:396
843
+ #: ../lib/pz-linkcard-settings.php:413 ../lib/pz-linkcard-settings.php:431
844
+ #: ../lib/pz-linkcard-settings.php:554
845
  msgid "32px"
846
  msgstr "32px"
847
 
848
+ #: ../lib/pz-linkcard-settings.php:311 ../lib/pz-linkcard-settings.php:327
849
+ #: ../lib/pz-linkcard-settings.php:345 ../lib/pz-linkcard-settings.php:361
850
+ #: ../lib/pz-linkcard-settings.php:375 ../lib/pz-linkcard-settings.php:397
851
+ #: ../lib/pz-linkcard-settings.php:414 ../lib/pz-linkcard-settings.php:432
852
  msgid "40px"
853
  msgstr "40px"
854
 
855
+ #: ../lib/pz-linkcard-settings.php:312 ../lib/pz-linkcard-settings.php:328
856
+ #: ../lib/pz-linkcard-settings.php:346 ../lib/pz-linkcard-settings.php:362
857
+ #: ../lib/pz-linkcard-settings.php:376 ../lib/pz-linkcard-settings.php:398
858
+ #: ../lib/pz-linkcard-settings.php:415 ../lib/pz-linkcard-settings.php:433
859
+ #: ../lib/pz-linkcard-settings.php:555
860
  msgid "64px"
861
  msgstr "64px"
862
 
863
+ #: ../lib/pz-linkcard-settings.php:319 ../lib/pz-linkcard-settings.php:352
864
  msgid "Margin left"
865
  msgstr "左の余白"
866
 
867
+ #: ../lib/pz-linkcard-settings.php:343 ../lib/pz-linkcard-settings.php:359
868
+ #: ../lib/pz-linkcard-settings.php:373 ../lib/pz-linkcard-settings.php:395
869
  msgid "24px"
870
  msgstr "24px"
871
 
872
+ #: ../lib/pz-linkcard-settings.php:366 ../lib/pz-linkcard-settings.php:406
873
  msgid "Margin right"
874
  msgstr "右の余白"
875
 
876
+ #: ../lib/pz-linkcard-settings.php:382 ../lib/pz-linkcard-settings.php:517
877
+ #: ../lib/pz-linkcard-settings.php:591
878
  msgid "Width"
879
  msgstr "幅"
880
 
881
+ #: ../lib/pz-linkcard-settings.php:383 ../lib/pz-linkcard-settings.php:519
882
+ #: ../lib/pz-linkcard-settings.php:667
 
 
 
883
  msgid "Height"
884
  msgstr "高さ"
885
 
886
+ #: ../lib/pz-linkcard-settings.php:388 ../lib/pz-linkcard-settings.php:424
887
  msgid "Margin bottom"
888
  msgstr "下の余白"
889
 
890
+ #: ../lib/pz-linkcard-settings.php:421
891
  msgid "Centering"
892
  msgstr "中央に寄せる"
893
 
894
+ #: ../lib/pz-linkcard-settings.php:443
895
+ msgid "Use Blockquote Tag"
896
  msgstr "BLOCKQUOTEタグを使用する"
897
 
898
+ #: ../lib/pz-linkcard-settings.php:444
899
+ msgid "Without using DIV tag, and use BLOCKQUOTE tag."
900
+ msgstr "&lt;BLOCKQUOTE&gt;で囲んで引用扱いにします。"
901
 
902
+ #: ../lib/pz-linkcard-settings.php:444 ../lib/pz-linkcard-settings.php:819
903
+ #: ../lib/pz-linkcard-settings.php:827 ../lib/pz-linkcard-settings.php:1062
904
+ #: ../lib/pz-linkcard-settings.php:1067 ../lib/pz-linkcard-settings.php:1080
905
+ #: ../lib/pz-linkcard-settings.php:1084
906
+ msgid "(Deprecated)"
907
  msgstr "(非推奨)"
908
 
909
+ #: ../lib/pz-linkcard-settings.php:450
910
+ msgid "Display Settings"
911
  msgstr "表示の設定"
912
 
913
+ #: ../lib/pz-linkcard-settings.php:453
914
  msgid "Layout"
915
  msgstr "レイアウト"
916
 
917
+ #: ../lib/pz-linkcard-settings.php:459 ../lib/pz-linkcard-settings.php:640
918
+ msgid "Site Information"
919
  msgstr "サイト情報"
920
 
921
+ #: ../lib/pz-linkcard-settings.php:462 ../lib/pz-linkcard-settings.php:514
922
+ msgid "Upper Side"
923
  msgstr "上側"
924
 
925
+ #: ../lib/pz-linkcard-settings.php:463
926
+ msgid "Above the Title"
927
  msgstr "タイトルの上側"
928
 
929
+ #: ../lib/pz-linkcard-settings.php:464
930
+ msgid "Under Side"
931
  msgstr "下側"
932
 
933
+ #: ../lib/pz-linkcard-settings.php:466
934
  msgid "Use SiteName"
935
  msgstr "サイト名称を使用"
936
 
937
+ #: ../lib/pz-linkcard-settings.php:471
938
  msgid "For internal links, display the posting date"
939
  msgstr "内部リンクの場合に投稿日を表示する"
940
 
941
+ #: ../lib/pz-linkcard-settings.php:478
942
  msgid "Make additional information heading display"
943
  msgstr "付加情報を見出し表示にする"
944
 
945
+ #: ../lib/pz-linkcard-settings.php:485
946
  msgid "Turn off the anchor text underlining"
947
  msgstr "リンク文字のアンダーラインを除去する"
948
 
949
+ #: ../lib/pz-linkcard-settings.php:492
950
  msgid "Separator line"
951
  msgstr "区切り線"
952
 
953
+ #: ../lib/pz-linkcard-settings.php:500
954
  msgid "Display URL"
955
  msgstr "リンク先URLの表示"
956
 
957
+ #: ../lib/pz-linkcard-settings.php:503
958
+ msgid "Under Title"
959
+ msgstr "タイトルの下側"
960
 
961
+ #: ../lib/pz-linkcard-settings.php:504 ../lib/pz-linkcard-settings.php:620
962
+ msgid "Bihind Site-Info"
963
  msgstr "サイト情報の後ろ"
964
 
965
+ #: ../lib/pz-linkcard-settings.php:509 ../lib/pz-linkcard-settings.php:720
 
966
  msgid "Thumbnail"
967
  msgstr "サムネイル"
968
 
969
+ #: ../lib/pz-linkcard-settings.php:512
970
+ msgid "Right Side"
971
  msgstr "右側"
972
 
973
+ #: ../lib/pz-linkcard-settings.php:513
974
+ msgid "Left Side"
975
  msgstr "左側"
976
 
977
+ #: ../lib/pz-linkcard-settings.php:521 ../lib/pz-linkcard-settings.php:543
978
  msgid "Shadow"
979
  msgstr "影を付ける"
980
 
981
+ #: ../lib/pz-linkcard-settings.php:526
982
  msgid "Hollow content area"
983
  msgstr "記事の情報に枠を付ける"
984
 
985
+ #: ../lib/pz-linkcard-settings.php:531
986
  msgid "Display excerpt"
987
  msgstr "抜粋文を表示する"
988
 
989
+ #: ../lib/pz-linkcard-settings.php:536
990
  msgid "Hollow"
991
  msgstr "内側に影を付ける"
992
 
993
+ #: ../lib/pz-linkcard-settings.php:548
994
  msgid "Round a square"
995
  msgstr "角を丸める"
996
 
997
+ #: ../lib/pz-linkcard-settings.php:562
998
  msgid "When the mouse is on"
999
  msgstr "マウスが上に乗ったとき、"
1000
 
1001
+ #: ../lib/pz-linkcard-settings.php:565
1002
  msgid "Lighten"
1003
  msgstr "薄色にする"
1004
 
1005
+ #: ../lib/pz-linkcard-settings.php:566
1006
  msgid "Hover (light)"
1007
  msgstr "浮かせる(薄色)"
1008
 
1009
+ #: ../lib/pz-linkcard-settings.php:567
1010
  msgid "Hover (dark)"
1011
  msgstr "浮かせる(濃色)"
1012
 
1013
+ #: ../lib/pz-linkcard-settings.php:568
1014
  msgid "Radius"
1015
  msgstr "角を丸める"
1016
 
1017
+ #: ../lib/pz-linkcard-settings.php:578
1018
  msgid "Border"
1019
  msgstr "枠線の太さ"
1020
 
1021
+ #: ../lib/pz-linkcard-settings.php:582
1022
  msgid "Solid"
1023
  msgstr "Solid(実線)"
1024
 
1025
+ #: ../lib/pz-linkcard-settings.php:583
1026
  msgid "Dotted"
1027
  msgstr "Dotted(点線)"
1028
 
1029
+ #: ../lib/pz-linkcard-settings.php:584
1030
  msgid "Dashed"
1031
  msgstr "Dashed(破線)"
1032
 
1033
+ #: ../lib/pz-linkcard-settings.php:585
1034
  msgid "Double"
1035
  msgstr "Double(二重線)"
1036
 
1037
+ #: ../lib/pz-linkcard-settings.php:586
1038
  msgid "Groove"
1039
  msgstr "Groove(立体・へこみ)"
1040
 
1041
+ #: ../lib/pz-linkcard-settings.php:587
1042
  msgid "Ridge"
1043
  msgstr "Ridge(立体・隆起)"
1044
 
1045
+ #: ../lib/pz-linkcard-settings.php:588
1046
  msgid "Inset"
1047
  msgstr "Inset(立体・押されたボタンのような効果)"
1048
 
1049
+ #: ../lib/pz-linkcard-settings.php:589
1050
  msgid "Outset"
1051
  msgstr "Outset(立体・ボタンのような効果)"
1052
 
1053
+ #: ../lib/pz-linkcard-settings.php:596
1054
+ msgid "Reset Image Style"
1055
+ msgstr "画像のスタイルのリセット"
1056
 
1057
+ #: ../lib/pz-linkcard-settings.php:597
1058
  msgid ""
1059
  "When unnecessary frame is displayed on the image, you can improve it by case"
1060
  msgstr "画像がずれて表示されるときに改善される可能性が有ります(推奨)"
1061
 
1062
+ #: ../lib/pz-linkcard-settings.php:601 ../lib/pz-linkcard-settings.php:639
1063
+ msgid "More Button"
1064
  msgstr "続きを読むボタン"
1065
 
1066
+ #: ../lib/pz-linkcard-settings.php:605
1067
  msgid "Text link"
1068
+ msgstr "テキスト リンク"
1069
 
1070
+ #: ../lib/pz-linkcard-settings.php:606
1071
  msgid "Simple button"
1072
  msgstr "シンプルなボタン"
1073
 
1074
+ #: ../lib/pz-linkcard-settings.php:607
1075
  msgid "Blue"
1076
  msgstr "ブルー"
1077
 
1078
+ #: ../lib/pz-linkcard-settings.php:608
1079
  msgid "Dark"
1080
  msgstr "ダーク"
1081
 
1082
+ #: ../lib/pz-linkcard-settings.php:610
1083
  msgid ""
1084
  "It is recommended that you leave the card height blank when using this "
1085
  "setting."
1086
  msgstr "この設定を使用するときはカードの高さを空欄にすることをお勧めします。"
1087
 
1088
+ #: ../lib/pz-linkcard-settings.php:615
1089
  msgid "Display SNS Count"
1090
  msgstr "シェア数を表示する"
1091
 
1092
+ #: ../lib/pz-linkcard-settings.php:619
1093
+ msgid "Bihind Title"
1094
  msgstr "タイトルの後ろ"
1095
 
1096
+ #: ../lib/pz-linkcard-settings.php:622
1097
  msgid "Twitter"
1098
  msgstr "ツイッター"
1099
 
1100
+ #: ../lib/pz-linkcard-settings.php:623
1101
  msgid "Facebook"
1102
  msgstr "フェイスブック(シェア数)"
1103
 
1104
+ #: ../lib/pz-linkcard-settings.php:624
1105
  msgid "Hatena"
1106
  msgstr "はてなブックマーク"
1107
 
1108
+ #: ../lib/pz-linkcard-settings.php:625
1109
  msgid "Pocket"
1110
  msgstr "Pocket"
1111
 
1112
+ #: ../lib/pz-linkcard-settings.php:632
1113
+ msgid "Letter Settings"
1114
  msgstr "文字の設定"
1115
 
1116
+ #: ../lib/pz-linkcard-settings.php:641 ../lib/pz-linkcard-settings.php:771
1117
+ msgid "Added Information"
1118
+ msgstr "付加情報"
1119
+
1120
+ #: ../lib/pz-linkcard-settings.php:650
1121
  msgid "Color"
1122
  msgstr "色"
1123
 
1124
+ #: ../lib/pz-linkcard-settings.php:657
 
 
1125
  msgid "Outline"
1126
  msgstr "縁取り"
1127
 
1128
+ #: ../lib/pz-linkcard-settings.php:663
 
 
1129
  msgid "Size"
1130
  msgstr "大きさ"
1131
 
1132
+ #: ../lib/pz-linkcard-settings.php:672
 
1133
  msgid "Length"
1134
  msgstr "桁数"
1135
 
1136
+ #: ../lib/pz-linkcard-settings.php:676
1137
  msgid "No wrap"
1138
  msgstr "折り返さない"
1139
 
1140
+ #: ../lib/pz-linkcard-settings.php:684
 
 
 
 
 
1141
  msgid "Resize"
1142
+ msgstr "サイズの変更"
1143
 
1144
+ #: ../lib/pz-linkcard-settings.php:685
1145
+ msgid "Adjust thumbnail and letter size according to width."
1146
+ msgstr "画面幅に合わせて文字とサムネイルの大きさを調整します。"
1147
 
1148
+ #: ../lib/pz-linkcard-settings.php:692
1149
+ msgid "External Link Settings"
1150
  msgstr "外部リンクの設定"
1151
 
1152
+ #: ../lib/pz-linkcard-settings.php:693
1153
+ msgid "Internal Link Settings"
1154
+ msgstr "内部リンクの設定"
1155
+
1156
+ #: ../lib/pz-linkcard-settings.php:694
1157
+ msgid "Same Page Link Settings"
1158
+ msgstr "同ページへのリンクの設定"
1159
+
1160
+ #: ../lib/pz-linkcard-settings.php:702
1161
  msgid "Border Color"
1162
  msgstr "枠線の色"
1163
 
1164
+ #: ../lib/pz-linkcard-settings.php:709
 
1165
  msgid "Background Color"
1166
  msgstr "背景色"
1167
 
1168
+ #: ../lib/pz-linkcard-settings.php:716
1169
+ msgid "Background Image"
1170
  msgstr "背景画像"
1171
 
1172
+ #: ../lib/pz-linkcard-settings.php:724 ../lib/pz-linkcard-settings.php:741
1173
+ #: ../lib/pz-linkcard-settings.php:758 ../lib/pz-linkcard-settings.php:778
1174
+ #: ../lib/pz-linkcard-settings.php:789 ../lib/pz-linkcard-settings.php:805
1175
+ #: ../lib/pz-linkcard-settings.php:835
1176
+ msgid "It is common with setting Internal-link"
1177
+ msgstr "内部リンク用の設定が使用されます"
1178
+
1179
+ #: ../lib/pz-linkcard-settings.php:729 ../lib/pz-linkcard-settings.php:763
1180
  msgid "Direct"
1181
  msgstr "直接取得する"
1182
 
1183
+ #: ../lib/pz-linkcard-settings.php:730 ../lib/pz-linkcard-settings.php:764
 
1184
  msgid "Use WebAPI"
1185
  msgstr "WebAPIを利用する"
1186
 
1187
+ #: ../lib/pz-linkcard-settings.php:731 ../lib/pz-linkcard-settings.php:765
1188
+ msgid "Use WebAPI ,if can not direct"
 
1189
  msgstr "直接取得できない場合、WebAPIを利用する"
1190
 
1191
+ #: ../lib/pz-linkcard-settings.php:737
1192
+ msgid "Thumbnail Size"
1193
+ msgstr "サムネイルの大きさ"
1194
+
1195
+ #: ../lib/pz-linkcard-settings.php:745
1196
+ msgid "Thumbnail (150px)"
1197
+ msgstr "小サイズ(150ピクセル)"
1198
+
1199
+ #: ../lib/pz-linkcard-settings.php:746
1200
+ msgid "Medium (300px)"
1201
+ msgstr "中サイズ(300ピクセル)"
1202
+
1203
+ #: ../lib/pz-linkcard-settings.php:747
1204
+ msgid "Large (1024px)"
1205
+ msgstr "大サイズ(1024ピクセル)"
1206
+
1207
+ #: ../lib/pz-linkcard-settings.php:748
1208
+ msgid "Full size"
1209
+ msgstr "そのままのサイズ"
1210
+
1211
+ #: ../lib/pz-linkcard-settings.php:754
1212
+ msgid "Site Icon"
1213
  msgstr "サイトアイコン"
1214
 
1215
+ #: ../lib/pz-linkcard-settings.php:775
1216
+ msgid "Text of More Button"
 
1217
  msgstr "続きを読むボタンの文字"
1218
 
1219
+ #: ../lib/pz-linkcard-settings.php:785
1220
+ msgid "Open New Window/Tab"
 
1221
  msgstr "新しいタブで開く"
1222
 
1223
+ #: ../lib/pz-linkcard-settings.php:794
1224
  msgid "All client"
1225
  msgstr "すべての端末"
1226
 
1227
+ #: ../lib/pz-linkcard-settings.php:795
1228
  msgid "Other than mobile"
1229
  msgstr "モバイル端末以外"
1230
 
1231
+ #: ../lib/pz-linkcard-settings.php:801
1232
+ msgid "Get Contents"
 
1233
  msgstr "記事取得方法"
1234
 
1235
+ #: ../lib/pz-linkcard-settings.php:809
1236
+ msgid "Always get the latest from the content"
1237
+ msgstr "常に最新の記事内容から抜粋文を作成する"
1238
+
1239
+ #: ../lib/pz-linkcard-settings.php:810
1240
+ msgid "Always get the latest from the excerpt"
1241
+ msgstr "抜粋文が設定されている投稿はそちらを優先する"
1242
+
1243
+ #: ../lib/pz-linkcard-settings.php:811
1244
  msgid "Initially acquired only from the content"
1245
  msgstr "カード管理画面に記録されている内容から表示する"
1246
 
1247
+ #: ../lib/pz-linkcard-settings.php:818
1248
+ msgid "Set NoFollow"
1249
  msgstr "リンク先を信用しない"
1250
 
1251
+ #: ../lib/pz-linkcard-settings.php:819
1252
+ msgid "In the case of an external site, it puts the \"nofollow\"."
1253
  msgstr ""
1254
  "アンカータグに rel=\"nofollow\" を追加して、検索エンジンの評価から外すことを"
1255
+ "宣言します。"
1256
 
1257
+ #: ../lib/pz-linkcard-settings.php:822
1258
+ msgid "Set NoOpener"
1259
  msgstr "リンク元タブを保護する"
1260
 
1261
+ #: ../lib/pz-linkcard-settings.php:823
1262
+ msgid "In the case of an external site, it puts the \"noopener\"."
1263
  msgstr ""
1264
  "アンカータグに rel=\"noopener\" を追加して、リンク先サイトからリンク元タブに"
1265
+ "対する操作を無効にします。"
1266
 
1267
+ #: ../lib/pz-linkcard-settings.php:826
1268
  msgid "Use HatenaBlogCard"
1269
  msgstr "はてなブログカードを使用する"
1270
 
1271
+ #: ../lib/pz-linkcard-settings.php:827
1272
  msgid "External links will use Always HatenaBlogCard."
1273
  msgstr "外部リンクは「はてなブログカード」を利用する。"
1274
 
1275
+ #: ../lib/pz-linkcard-settings.php:831
1276
+ msgid "Retry Get PID"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1277
  msgstr "記事URLの再取得"
1278
 
1279
+ #: ../lib/pz-linkcard-settings.php:837
1280
  msgid "When the `Post ID` can not be acquired, it is acquired again."
1281
  msgstr "記事IDが取得できなかった場合に、リダイレクト先のURLを取得する。"
1282
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1283
  #: ../lib/pz-linkcard-settings.php:848
1284
+ msgid "Link Check Settings"
1285
+ msgstr "リンク先の検査の設定"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1286
 
1287
+ #: ../lib/pz-linkcard-settings.php:851
1288
+ msgid "Relative URL"
1289
+ msgstr "相対指定URL"
 
 
 
 
 
 
 
 
1290
 
1291
+ #: ../lib/pz-linkcard-settings.php:852
1292
+ msgid "For relative-specified URLs, complement the site URL."
1293
+ msgstr "相対指定のURLの場合、サイトURLを補完します。"
1294
 
1295
+ #: ../lib/pz-linkcard-settings.php:855
1296
+ msgid "Do Not Link at Error"
1297
  msgstr "エラーのときリンクしない"
1298
 
1299
+ #: ../lib/pz-linkcard-settings.php:856
1300
+ msgid "When access status is \"403\", \"404\", \"410\", unlink."
1301
+ msgstr "ステータスが「403」「404」「410」のときにリンクを無効にします。"
1302
 
1303
+ #: ../lib/pz-linkcard-settings.php:859
1304
+ msgid "Disable SSL Verification"
1305
  msgstr "SSL検証を無効"
1306
 
1307
+ #: ../lib/pz-linkcard-settings.php:860
1308
  msgid "Try setting if the contents of the SSL site can not be acquired."
1309
  msgstr ""
1310
  "SSLサイトのタイトルや記事内容が取得できない場合に設定することで取得できる可能"
1311
  "性があります。"
1312
 
1313
+ #: ../lib/pz-linkcard-settings.php:863
1314
+ msgid "Follow Location"
1315
  msgstr "リダイレクト処理する"
1316
 
1317
+ #: ../lib/pz-linkcard-settings.php:864
1318
  msgid "Track when the link destination is redirected."
1319
  msgstr "リンク先がリダイレクトされている場合に追跡します。"
1320
 
1321
+ #: ../lib/pz-linkcard-settings.php:867
1322
+ msgid "Set Referer"
1323
  msgstr "リファラーの通知"
1324
 
1325
+ #: ../lib/pz-linkcard-settings.php:868
1326
  msgid "Notify the article URL to the link destination."
1327
  msgstr "リンク先に記事のURLを知らせます。"
1328
 
1329
+ #: ../lib/pz-linkcard-settings.php:871
1330
  msgid "Use User-Agent"
1331
  msgstr "ユーザーエージェントの通知"
1332
 
1333
+ #: ../lib/pz-linkcard-settings.php:873
1334
  msgid "Notify using Pz-LinkCard to the link destination."
1335
  msgstr "リンク先にPz-LinkCardを使用していることを知らせます。"
1336
 
1337
+ #: ../lib/pz-linkcard-settings.php:878
1338
+ msgid "Broken Link Checker"
1339
+ msgstr "リンク切れチェッカー"
1340
 
1341
+ #: ../lib/pz-linkcard-settings.php:879
1342
  msgid "Alive confirmation of the link destination."
1343
  msgstr "リンク先がアクセスできるか定期的に確認します。"
1344
 
1345
+ #: ../lib/pz-linkcard-settings.php:882
1346
+ msgid "Broken Link Count"
1347
  msgstr "リンク切れカウント"
1348
 
1349
+ #: ../lib/pz-linkcard-settings.php:883
1350
  msgid "The number of broken links is displayed next to the submenu."
1351
  msgstr "サブメニューの横にリンク切れの件数を表示します。"
1352
 
1353
+ #: ../lib/pz-linkcard-settings.php:889
1354
+ msgid "Editor Settings"
1355
+ msgstr "エディターの設定"
1356
 
1357
+ #: ../lib/pz-linkcard-settings.php:892
1358
+ msgid "Convert from Text Link"
1359
+ msgstr "テキストリンク行を変換"
1360
+
1361
+ #: ../lib/pz-linkcard-settings.php:893
1362
+ msgid "Convert lines with text link only to Linkcard."
1363
+ msgstr "テキストリンクだけの行をリンクカードに変換する。"
1364
+
1365
+ #: ../lib/pz-linkcard-settings.php:896
1366
+ msgid "Convert from URL"
1367
+ msgstr "URL行を変換"
1368
+
1369
+ #: ../lib/pz-linkcard-settings.php:897
1370
+ msgid "Convert lines with URL only to Linkcard."
1371
+ msgstr "URLだけの行をリンクカードに変換する。"
1372
+
1373
+ #: ../lib/pz-linkcard-settings.php:900
1374
+ msgid "External Link Only"
1375
+ msgstr "外部リンクのみ"
1376
+
1377
+ #: ../lib/pz-linkcard-settings.php:901
1378
+ msgid "Convert only external links."
1379
+ msgstr "外部リンクのときのみ変換します。"
1380
+
1381
+ #: ../lib/pz-linkcard-settings.php:905
1382
+ msgid "Do Shortcode"
1383
+ msgstr "ショートコード 実行"
1384
+
1385
+ #: ../lib/pz-linkcard-settings.php:906
1386
+ msgid "Force shortcode development."
1387
+ msgstr "リンク・URLから変換したときにショートコードを強制的に実行する。"
1388
+
1389
+ #: ../lib/pz-linkcard-settings.php:910
1390
+ msgid "Add Insert Button"
1391
+ msgstr "リンクカードボタンを追加"
1392
+
1393
+ #: ../lib/pz-linkcard-settings.php:911
1394
+ msgid "Add insert button to visual editor."
1395
  msgstr ""
1396
+ "ビジュアル エディタにリンクカードのショートコードを挿入するボタンを追加する。"
 
1397
 
1398
+ #: ../lib/pz-linkcard-settings.php:914
1399
+ msgid "Add Quick Tag"
1400
+ msgstr "クイックタグを追加"
1401
+
1402
+ #: ../lib/pz-linkcard-settings.php:915
1403
+ msgid "Add quick tag button to text editor."
1404
+ msgstr ""
1405
+ "テキスト エディタにリンクカードのショートコードを挿入するクイックタグを追加す"
1406
+ "る。"
1407
 
1408
+ #: ../lib/pz-linkcard-settings.php:919
1409
  msgid "ShortCode 1"
1410
  msgstr "ショートコード 1"
1411
 
1412
+ #: ../lib/pz-linkcard-settings.php:921 ../lib/pz-linkcard-settings.php:939
1413
+ #: ../lib/pz-linkcard-settings.php:944 ../lib/pz-linkcard-settings.php:949
1414
  msgid "Case-sensitive"
1415
  msgstr "大文字と小文字を区別します"
1416
 
1417
+ #: ../lib/pz-linkcard-settings.php:924
1418
+ msgid "Use InLineText"
1419
+ msgstr "ショートコードで囲んだ文字列を使用する"
1420
 
1421
+ #: ../lib/pz-linkcard-settings.php:928
1422
  msgid "No use"
1423
  msgstr "使用しない"
1424
 
1425
+ #: ../lib/pz-linkcard-settings.php:929
1426
  msgid "Use to excerpt"
1427
  msgstr "抜粋文として使用"
1428
 
1429
+ #: ../lib/pz-linkcard-settings.php:930
1430
  msgid "Use to title"
1431
  msgstr "タイトルとして使用"
1432
 
1433
+ #: ../lib/pz-linkcard-settings.php:933
1434
  msgid "This setting applies only to the Shortcode1"
1435
  msgstr "ショートコード1にのみ適用されます"
1436
 
1437
+ #: ../lib/pz-linkcard-settings.php:937
1438
  msgid "ShortCode 2"
1439
  msgstr "ショートコード 2"
1440
 
1441
+ #: ../lib/pz-linkcard-settings.php:942
1442
  msgid "ShortCode 3"
1443
  msgstr "ショートコード 3"
1444
 
1445
+ #: ../lib/pz-linkcard-settings.php:947
1446
  msgid "ShortCode 4"
1447
  msgstr "ショートコード 4"
1448
 
1449
+ #: ../lib/pz-linkcard-settings.php:952
1450
  msgid "Parameters"
1451
  msgstr "パラメータ"
1452
 
1453
+ #: ../lib/pz-linkcard-settings.php:955
1454
  msgid ""
1455
  "For any shortcode you can change the title and excerpt with `title` "
1456
  "parameter and `content` parameter"
1458
  "どのショートコードでも title パラメータと content パラメータでタイトルと抜粋"
1459
  "文を指定できます"
1460
 
1461
+ #: ../lib/pz-linkcard-settings.php:962
1462
+ msgid "Multi Site Settings"
1463
+ msgstr "マルチサイトの設定"
1464
 
1465
+ #: ../lib/pz-linkcard-settings.php:968
1466
+ msgid "Disabled"
1467
+ msgstr "無効化"
1468
 
1469
+ #: ../lib/pz-linkcard-settings.php:969
1470
+ msgid "Enabled"
1471
+ msgstr "有効化"
1472
 
1473
+ #: ../lib/pz-linkcard-settings.php:971 ../lib/pz-linkcard-settings.php:981
1474
+ msgid "Cannot be changed"
1475
+ msgstr "設定は変更できません"
1476
 
1477
+ #: ../lib/pz-linkcard-settings.php:975
1478
+ msgid "Type"
1479
+ msgstr "種類"
1480
 
1481
+ #: ../lib/pz-linkcard-settings.php:978
1482
+ msgid "Subdirectories"
1483
+ msgstr "サブディレクトリー型"
1484
 
1485
+ #: ../lib/pz-linkcard-settings.php:979
1486
+ msgid "Subdomains"
1487
+ msgstr "サブドメイン型"
1488
 
1489
+ #: ../lib/pz-linkcard-settings.php:985
1490
+ msgid "Current Blog ID"
1491
+ msgstr "現在のブログID"
1492
 
1493
+ #: ../lib/pz-linkcard-settings.php:991
1494
+ msgid "Number of Sites"
1495
+ msgstr "サイトの数"
1496
 
1497
+ #: ../lib/pz-linkcard-settings.php:998
1498
+ msgid "Site List"
1499
+ msgstr "サイトの一覧"
 
1500
 
1501
+ #: ../lib/pz-linkcard-settings.php:1002
1502
+ msgid "Current"
1503
+ msgstr "現在"
1504
 
1505
+ #: ../lib/pz-linkcard-settings.php:1003
1506
+ msgid "Blog ID"
1507
+ msgstr "ブログID"
 
 
1508
 
1509
+ #: ../lib/pz-linkcard-settings.php:1024
1510
+ msgid "Advanced Settings"
1511
  msgstr "上級者向けの設定"
1512
 
1513
+ #: ../lib/pz-linkcard-settings.php:1027
1514
+ msgid "Trailing Slash"
1515
  msgstr "末尾のスラッシュの除去"
1516
 
1517
+ #: ../lib/pz-linkcard-settings.php:1030
1518
  msgid "As it"
1519
  msgstr "そのまま"
1520
 
1521
+ #: ../lib/pz-linkcard-settings.php:1031
1522
  msgid "When only domain name, remove"
1523
  msgstr "ドメイン名のみのときだけ削除"
1524
 
1525
+ #: ../lib/pz-linkcard-settings.php:1032
1526
  msgid "Always remove"
1527
  msgstr "常に削除"
1528
 
1529
+ #: ../lib/pz-linkcard-settings.php:1037
1530
+ msgid "Class ID to be Added (for PC)"
1531
  msgstr "PCのときに追加するクラス名"
1532
 
1533
+ #: ../lib/pz-linkcard-settings.php:1041
1534
+ msgid "Class ID to be Added (for Mobile)"
1535
  msgstr "モバイルのときに追加するクラス名"
1536
 
1537
+ #: ../lib/pz-linkcard-settings.php:1046
1538
+ msgid "Compress"
1539
+ msgstr "圧縮"
1540
+
1541
+ #: ../lib/pz-linkcard-settings.php:1047
1542
+ msgid "Compress CSS and JavaScript to improve access speed."
1543
+ msgstr "CSSやJavaScriptを圧縮してアクセス速度を向上させます"
1544
+
1545
+ #: ../lib/pz-linkcard-settings.php:1052
1546
+ msgid "Display the file menu on the card management screen."
1547
+ msgstr "カード管理画面へ「ファイルメニュー」を表示します。"
1548
+
1549
+ #: ../lib/pz-linkcard-settings.php:1056
1550
+ msgid "Initialize Tab"
1551
+ msgstr "初期化タブ"
1552
+
1553
+ #: ../lib/pz-linkcard-settings.php:1057
1554
+ msgid "Display the initialize tab on the settings screen."
1555
+ msgstr "設定画面に「初期化」タブを表示します。"
1556
+
1557
+ #: ../lib/pz-linkcard-settings.php:1061
1558
  msgid "Google AMP URL"
1559
  msgstr "URLによるAMP判断"
1560
 
1561
+ #: ../lib/pz-linkcard-settings.php:1062
1562
  msgid "If the URL is AMP, display simple."
1563
  msgstr ""
1564
  "アクセスされたURLの末尾が「/amp」「/amp/」「/?amp=1」の場合、簡易表示に切り替"
1565
  "える。"
1566
 
1567
+ #: ../lib/pz-linkcard-settings.php:1066
1568
+ msgid "Hide URL Error"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1569
  msgstr "URLエラーを非表示"
1570
 
1571
+ #: ../lib/pz-linkcard-settings.php:1067
1572
+ msgid "Do not display an error on the admin page."
1573
+ msgstr "管理画面にURLエラーを表示しません。"
1574
+
1575
+ #: ../lib/pz-linkcard-settings.php:1071
1576
+ msgid "Saved Datetime"
1577
+ msgstr "保存した日時"
1578
 
1579
  #: ../lib/pz-linkcard-settings.php:1079
1580
+ msgid "Survey Mode"
1581
+ msgstr "調査モード"
1582
+
1583
+ #: ../lib/pz-linkcard-settings.php:1080
1584
+ msgid "Outputs some events and setting information to a log file."
1585
+ msgstr "いくつかのイベントや設定情報等をログファイルへ出力します。"
1586
 
1587
  #: ../lib/pz-linkcard-settings.php:1083
1588
+ msgid "Administrator Mode"
1589
+ msgstr "管理者モード"
1590
 
1591
+ #: ../lib/pz-linkcard-settings.php:1084
1592
+ msgid ""
1593
+ "Display information that is not normally needed or open special settings."
1594
+ msgstr "通常は必要のない情報を表示したり、特別な設定を開放します。"
1595
 
1596
+ #: ../lib/pz-linkcard-settings.php:1087
1597
+ msgid "Develop Mode"
1598
+ msgstr "開発モード"
1599
 
1600
  #: ../lib/pz-linkcard-settings.php:1095
1601
+ msgid "Stylesheet Settings"
1602
+ msgstr "スタイルシートの設定"
1603
 
1604
+ #: ../lib/pz-linkcard-settings.php:1098
1605
+ msgid "Stylesheet URL"
1606
+ msgstr "CSSファイルのURL"
1607
 
1608
+ #: ../lib/pz-linkcard-settings.php:1101 ../lib/pz-linkcard-settings.php:1132
1609
+ msgid "Schemes (http and https) are omitted."
1610
+ msgstr "スキーム( http: や https: )は省略されています。"
1611
 
1612
+ #: ../lib/pz-linkcard-settings.php:1105
1613
+ msgid "Stylesheet URL to Add"
1614
+ msgstr "追加するCSSのURL"
1615
 
1616
+ #: ../lib/pz-linkcard-settings.php:1106 ../lib/pz-linkcard-settings.php:1167
1617
+ #: ../lib/pz-linkcard-settings.php:1176
1618
+ msgid "ex."
1619
+ msgstr "例."
1620
+
1621
+ #: ../lib/pz-linkcard-settings.php:1109
1622
+ msgid "Stylesheet Text to Add"
1623
+ msgstr "追加するCSSのテキスト"
1624
+
1625
+ #: ../lib/pz-linkcard-settings.php:1113
1626
+ msgid "Stylesheet Version"
1627
+ msgstr "CSSの補助バージョン"
1628
+
1629
+ #: ../lib/pz-linkcard-settings.php:1117
1630
+ msgid "Stylesheet File"
1631
+ msgstr "CSSファイルのパス"
1632
+
1633
+ #: ../lib/pz-linkcard-settings.php:1121
1634
+ msgid "Stylesheet Templete File"
1635
+ msgstr "ひな型CSSファイルのパス"
1636
+
1637
+ #: ../lib/pz-linkcard-settings.php:1126
1638
+ msgid "Image Settings"
1639
+ msgstr "画像の設定"
1640
+
1641
+ #: ../lib/pz-linkcard-settings.php:1129
1642
+ msgid "Image Cache URL"
1643
+ msgstr "キャッシュ画像を保存するディレクトリのURL"
1644
+
1645
+ #: ../lib/pz-linkcard-settings.php:1133 ../lib/pz-linkcard-settings.php:1150
1646
+ msgid "Used"
1647
+ msgstr "使用中"
1648
+
1649
+ #: ../lib/pz-linkcard-settings.php:1133 ../lib/pz-linkcard-settings.php:1150
1650
+ msgid ": "
1651
+ msgstr ":"
1652
+
1653
+ #: ../lib/pz-linkcard-settings.php:1137
1654
+ msgid "Image Cache Directory"
1655
+ msgstr "キャッシュ画像を保存するディレクトリ"
1656
+
1657
+ #: ../lib/pz-linkcard-settings.php:1144
1658
+ msgid "Survey Settings"
1659
+ msgstr "調査モードの設定"
1660
+
1661
+ #: ../lib/pz-linkcard-settings.php:1147
1662
+ msgid "Log URL"
1663
+ msgstr "ログ格納ディレクトリーURL"
1664
+
1665
+ #: ../lib/pz-linkcard-settings.php:1154
1666
+ msgid "Log Directory"
1667
+ msgstr "ログ格納ディレクトリー"
1668
+
1669
+ #: ../lib/pz-linkcard-settings.php:1161
1670
+ msgid "Web-API Settings"
1671
+ msgstr "WebAPIの設定"
1672
+
1673
+ #: ../lib/pz-linkcard-settings.php:1164
1674
+ msgid "Site Icon API"
1675
+ msgstr "サイトアイコン取得API"
1676
+
1677
+ #: ../lib/pz-linkcard-settings.php:1167
1678
+ msgid "%DOMAIN% replace to domain name."
1679
+ msgstr "%DOMAIN% と記述するとドメイン名に置き換わります。"
1680
+
1681
+ #: ../lib/pz-linkcard-settings.php:1167
1682
+ msgid "%DOMAIN_URL% replace to domain URL."
1683
+ msgstr "%DOMAIN_URL% と記述するとドメインのURLに置き換わります。"
1684
+
1685
+ #: ../lib/pz-linkcard-settings.php:1167 ../lib/pz-linkcard-settings.php:1176
1686
+ msgid "%URL% replace to URL."
1687
+ msgstr "%URL% と記述すると記事のURLに置き換わります。"
1688
+
1689
+ #: ../lib/pz-linkcard-settings.php:1168 ../lib/pz-linkcard-settings.php:1177
1690
+ msgid "ex1."
1691
+ msgstr "例1."
1692
+
1693
+ #: ../lib/pz-linkcard-settings.php:1169 ../lib/pz-linkcard-settings.php:1178
1694
+ msgid "ex2."
1695
+ msgstr "例2."
1696
+
1697
+ #: ../lib/pz-linkcard-settings.php:1173
1698
+ msgid "Thumbnail API"
1699
+ msgstr "サムネイル画像取得API"
1700
+
1701
+ #: ../lib/pz-linkcard-settings.php:1188
1702
+ msgid "Initialize Settings"
1703
+ msgstr "設定の初期化"
1704
+
1705
+ #: ../lib/pz-linkcard-settings.php:1190
1706
+ msgid "Perform Initialization"
1707
+ msgstr "初期化を実行"
1708
+
1709
+ #: ../lib/pz-linkcard-settings.php:1191
1710
+ msgid "Reset the \"Settings\" to the initial value."
1711
+ msgstr "すべての設定を初期状態に戻します。"
1712
+
1713
+ #: ../lib/pz-linkcard-settings.php:1195
1714
+ msgid "Initialize Operation"
1715
+ msgstr "プラグインの再起動"
1716
+
1717
+ #: ../lib/pz-linkcard-settings.php:1197
1718
+ msgid "Perform a Reboot"
1719
+ msgstr "再起動を実行"
1720
+
1721
+ #: ../lib/pz-linkcard-settings.php:1198
1722
+ msgid "Perform initial setup."
1723
+ msgstr "プラグインの初期化処理を実行します。"
1724
+
1725
+ #: ../lib/pz-linkcard-settings.php:1198
1726
+ msgid "\"Settings\" will not be initialized."
1727
+ msgstr "設定値は初期化しません。"
1728
+
1729
+ #: ../lib/pz-linkcard-settings.php:1202
1730
+ msgid "Initialization Exception"
1731
+ msgstr "初期化時の例外"
1732
+
1733
+ #: ../lib/pz-linkcard-settings.php:1203
1734
+ msgid "Do not initialize \"Survey Mode\" and \"Administrator Mode\"."
1735
+ msgstr "初期化時に調査モードと管理者モードを解除しません。"
1736
+
1737
+ #: ../lib/pz-linkcard-style.php:635
1738
  msgid "Succeeded in saving the Stylesheet."
1739
  msgstr "スタイルシートの生成に成功しました。"
1740
 
1741
+ #: ../lib/pz-linkcard-style.php:637
1742
  msgid "Failed to save Stylesheet."
1743
  msgstr "スタイルシートの生成に失敗しました。"
1744
 
1745
+ #: ../lib/pz-linkcard-style.php:640
1746
  msgid "Failed to call the Stylesheet template."
1747
  msgstr "スタイルシートのひな型の呼び出しに失敗しました。"
1748
 
1749
+ #: ../pz-linkcard.php:408
1750
+ msgid "-"
1751
+ msgstr "-"
1752
+
1753
+ #: ../pz-linkcard.php:408
1754
  msgid "Incorrect URL specification."
1755
  msgstr "URLの記述に誤りがあります。"
1756
 
1757
+ #: ../pz-linkcard.php:1529 ../pz-linkcard.php:1533
1758
  msgid "Category"
1759
  msgstr "カテゴリー"
1760
 
1761
+ #: ../pz-linkcard.php:1529 ../pz-linkcard.php:1533 ../pz-linkcard.php:1546
1762
+ #: ../pz-linkcard.php:1550
1763
  msgid "‘"
1764
  msgstr "「"
1765
 
1766
+ #: ../pz-linkcard.php:1529 ../pz-linkcard.php:1533 ../pz-linkcard.php:1546
1767
+ #: ../pz-linkcard.php:1550
1768
  msgid "’"
1769
  msgstr "」"
1770
 
1771
+ #: ../pz-linkcard.php:1530 ../pz-linkcard.php:1547
1772
  msgid "Count"
1773
  msgstr "件数"
1774
 
1775
+ #: ../pz-linkcard.php:1534 ../pz-linkcard.php:1551
1776
+ msgid "Not Found"
1777
+ msgstr "見つかりません"
1778
+
1779
+ #: ../pz-linkcard.php:1546 ../pz-linkcard.php:1550
1780
  msgid "Tag"
1781
  msgstr "タグ"
1782
 
1783
+ #: ../pz-linkcard.php:2164
1784
  msgid "Linkcard"
1785
  msgstr "リンクカード"
1786
 
1787
+ #: ../pz-linkcard.php:2164
1788
  msgid "Make Linkcard"
1789
  msgstr "リンクカードのショートコードを挿入する"
1790
 
1791
+ #: ../pz-linkcard.php:2175
1792
  msgid "Invalid URL parameter in "
1793
  msgstr "URLパラメーターの指定が無効です→"
1794
 
1795
+ #: ../pz-linkcard.php:2175
1796
  msgid ""
1797
  "You can cancel this message from <a href=\"./options-general.php?page=pz-"
1798
  "linkcard-settings\">the setting screen</a>."
1800
  "このメッセージの表示は<a href=\"./options-general.php?page=pz-linkcard-"
1801
  "settings\">設定画面</a>から解除できます。"
1802
 
1803
+ #: ../pz-linkcard.php:2196
1804
  msgid "Pz LkC Cache"
1805
  msgstr "Pz カード管理"
1806
 
1807
+ #: ../pz-linkcard.php:2197
1808
  msgid "Pz LinkCard"
1809
  msgstr "Pz カード設定"
1810
 
1811
+ #: ../pz-linkcard.php:2221
1812
  msgid "Settings"
1813
  msgstr "設定"
1814
 
1815
+ #: ../pz-linkcard.php:2221
1816
  msgid "Manage"
1817
  msgstr "管理"
1818
 
1819
+ #~ msgid "(Not recommended)"
1820
+ #~ msgstr "(非推奨)"
1821
+
1822
+ #~ msgid "Execute"
1823
+ #~ msgstr "実行"
1824
+
1825
+ #~ msgid "Display Link to Author Page"
1826
+ #~ msgstr "プラグイン名を表示する"
1827
+
1828
+ #~ msgid "Site information"
1829
+ #~ msgstr "サイト情報"
1830
+
1831
+ #~ msgid "More button"
1832
+ #~ msgstr "続きを読むボタン"
1833
+
1834
+ #~ msgid "Added information"
1835
+ #~ msgstr "付加情報"
1836
+
1837
+ #~ msgid "URL key"
1838
+ #~ msgstr "URLキー"
1839
+
1840
+ #~ msgid "Site name"
1841
+ #~ msgstr "サイト名称"
1842
+
1843
+ #~ msgid "Update date"
1844
+ #~ msgstr "更新日"
1845
+
1846
+ #~ msgid "Renew Thumbnail"
1847
+ #~ msgstr "サムネイルを再取得する"
1848
+
1849
+ #~ msgid "Renew Social Count"
1850
+ #~ msgstr "ソーシャルカウントを再取得する"
1851
+
1852
+ #~ msgid "Result code"
1853
+ #~ msgstr "結果コード"
1854
+
1855
+ #~ msgid "LinkCard cache manager"
1856
+ #~ msgstr "リンクカード/DBキャッシュ管理"
1857
+
1858
+ #~ msgid "Renew cache"
1859
+ #~ msgstr "記事内容の再取得"
1860
+
1861
+ #~ msgid "edit"
1862
+ #~ msgstr "編集"
1863
+
1864
+ #~ msgid "File menu"
1865
+ #~ msgstr "ファイルメニュー"
1866
+
1867
+ #~ msgid "Background image"
1868
+ #~ msgstr "背景画像"
1869
+
1870
+ #~ msgid "Web API"
1871
+ #~ msgstr "Web API"
1872
+
1873
+ #~ msgid "Image"
1874
+ #~ msgstr "画像"
1875
+
1876
+ #~ msgid "CSS"
1877
+ #~ msgstr "CSS"
1878
+
1879
+ #~ msgid "Cannot set"
1880
+ #~ msgstr "設定できません"
1881
+
1882
+ #~ msgid "Image size to save"
1883
+ #~ msgstr "保存する画像サイズ"
1884
+
1885
+ #~ msgid "Multi-site compatible"
1886
+ #~ msgstr "サブディレクトリを外部リンクにする"
1887
+
1888
+ #~ msgid ""
1889
+ #~ "In the case of the multi-site of the subdirectory type, the site under "
1890
+ #~ "the subdirectory is judged as an external site."
1891
+ #~ msgstr ""
1892
+ #~ "サブディレクトリ型のマルチサイトの場合で、メインサイトからサブサイトを外部"
1893
+ #~ "サイトとして判定する。"
1894
+
1895
+ #~ msgid "IDNA Convert"
1896
+ #~ msgstr "IDNAドメインの表示"
1897
+
1898
+ #~ msgid "Convert domain name from IDNA ASCII to Unicode."
1899
+ #~ msgstr ""
1900
+ #~ "IDNAのASCII方式でエンコードされたドメイン名をUnicodeに変換して表示します"
1901
+ #~ "(日本語ドメインなど)"
1902
+
1903
+ #~ msgid "Output the setting value etc. to the HTML source."
1904
+ #~ msgstr "設定値等をHTMLソースに出力します。"
1905
+
1906
+ #~ msgid "Put into debug mode."
1907
+ #~ msgstr "デバグモードに移行します。"
1908
+
1909
+ #~ msgid "Location"
1910
+ #~ msgstr "ドメイン以降のパス"
1911
+
1912
+ #~ msgid "Update failed"
1913
+ #~ msgstr "更新に失敗しました"
1914
+
1915
+ #~ msgid "Social count renew"
1916
+ #~ msgstr "ソーシャルカウントの再取得"
1917
+
1918
+ #~ msgid "completed"
1919
+ #~ msgstr "完了しました"
1920
+
1921
+ #~ msgid "Thumbnail renew"
1922
+ #~ msgstr "サムネイル画像を再取得"
1923
+
1924
+ #~ msgid "Cache renew"
1925
+ #~ msgstr "記事内容の再取得"
1926
+
1927
+ #~ msgid "Cache deleted"
1928
+ #~ msgstr "キャッシュから削除しました"
1929
+
1930
+ #~ msgid "Uptime"
1931
+ #~ msgstr "更新日時"
1932
+
1933
+ #~ msgid "(ex. https://exsample.com/style.css )"
1934
+ #~ msgstr "(例.https://exsample.com/style.css)"
1935
+
1936
+ #, fuzzy
1937
+ #~| msgid "Use WebAPI ,If can not direct"
1938
+ #~ msgid "Use WebAPI ,if\tcan not direct"
1939
+ #~ msgstr "直接取得できない場合、WebAPIを利用する"
1940
+
1941
+ #~ msgid "Result CD"
1942
+ #~ msgstr "結果コード"
1943
+
1944
+ #~ msgid "Display elapsed time"
1945
+ #~ msgstr "実行時間の表示"
1946
+
1947
+ #~ msgid "Plugin URL"
1948
+ #~ msgstr "プラグインページURL"
1949
+
1950
  #~ msgid "Changes saved."
1951
  #~ msgstr "設定を保存しました。"
1952
 
1953
  #~ msgid "Update failed."
1954
  #~ msgstr "更新に失敗しました。"
1955
 
 
 
 
1956
  #~ msgid "Stylesheet template call failed."
1957
  #~ msgstr "スタイルシートのひな形の呼び出しに失敗しました。"
1958
 
2051
  #~ msgid "Special format"
2052
  #~ msgstr "定型書式"
2053
 
 
 
 
2054
  #~ msgid ""
2055
  #~ "There is a possibility that the screen display is slow If you enable this "
2056
  #~ "setting."
2205
  #~ msgid "(This Page)"
2206
  #~ msgstr "(このページ)"
2207
 
 
 
 
2208
  #~ msgid "Reset CSS for img"
2209
  #~ msgstr ""
2210
  #~ "サムネイル画像やファビコンがずれて表示される場合にチェックを付けてみてくだ"
languages/pz-linkcard.pot ADDED
@@ -0,0 +1,1802 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2013 WordPress
2
+ # This file is distributed under the same license as the WordPress package.
3
+ #, fuzzy
4
+ msgid ""
5
+ msgstr ""
6
+ "Project-Id-Version: Pz-LinkCard\n"
7
+ "Report-Msgid-Bugs-To: http://wppolyglots.wordpress.com\n"
8
+ "POT-Creation-Date: 2021-02-28 14:17+0900\n"
9
+ "PO-Revision-Date: 2021-01-13 23:45+0900\n"
10
+ "Language-Team: poporon\n"
11
+ "MIME-Version: 1.0\n"
12
+ "Content-Type: text/plain; charset=UTF-8\n"
13
+ "Content-Transfer-Encoding: 8bit\n"
14
+ "X-Generator: Poedit 2.4.2\n"
15
+ "X-Poedit-KeywordsList: __;_e\n"
16
+ "X-Poedit-Basepath: .\n"
17
+ "X-Poedit-SourceCharset: UTF-8\n"
18
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
+ "Last-Translator: \n"
20
+ "Language: en\n"
21
+ "X-Poedit-SearchPath-0: ..\n"
22
+
23
+ #: ../lib/pz-linkcard-cacheman-edit.php:18
24
+ #: ../lib/pz-linkcard-cacheman-list.php:226 ../lib/pz-linkcard-edit.php:13
25
+ msgid "ID"
26
+ msgstr ""
27
+
28
+ #: ../lib/pz-linkcard-cacheman-edit.php:22
29
+ #: ../lib/pz-linkcard-cacheman-list.php:227 ../lib/pz-linkcard-edit.php:21
30
+ #: ../lib/pz-linkcard-settings.php:637 ../lib/pz-linkcard-settings.php:1005
31
+ #: ../pz-linkcard.php:408
32
+ msgid "URL"
33
+ msgstr ""
34
+
35
+ #: ../lib/pz-linkcard-cacheman-edit.php:26
36
+ msgid "Redirect URL"
37
+ msgstr ""
38
+
39
+ #: ../lib/pz-linkcard-cacheman-edit.php:30 ../lib/pz-linkcard-edit.php:17
40
+ msgid "URL Key"
41
+ msgstr ""
42
+
43
+ #: ../lib/pz-linkcard-cacheman-edit.php:34
44
+ msgid "Scheme"
45
+ msgstr ""
46
+
47
+ #: ../lib/pz-linkcard-cacheman-edit.php:38 ../lib/pz-linkcard-edit.php:29
48
+ #: ../lib/pz-linkcard-settings.php:1004
49
+ msgid "Site Name"
50
+ msgstr ""
51
+
52
+ #: ../lib/pz-linkcard-cacheman-edit.php:42
53
+ #: ../lib/pz-linkcard-cacheman-list.php:231 ../lib/pz-linkcard-edit.php:33
54
+ #: ../lib/pz-linkcard-settings.php:1006
55
+ msgid "Domain"
56
+ msgstr ""
57
+
58
+ #: ../lib/pz-linkcard-cacheman-edit.php:50
59
+ msgid "Registration Title"
60
+ msgstr ""
61
+
62
+ #: ../lib/pz-linkcard-cacheman-edit.php:54
63
+ #: ../lib/pz-linkcard-cacheman-list.php:228 ../lib/pz-linkcard-edit.php:37
64
+ #: ../lib/pz-linkcard-settings.php:636
65
+ msgid "Title"
66
+ msgstr ""
67
+
68
+ #: ../lib/pz-linkcard-cacheman-edit.php:58
69
+ msgid "Modify Title"
70
+ msgstr ""
71
+
72
+ #: ../lib/pz-linkcard-cacheman-edit.php:62
73
+ msgid "Registration Excerpt"
74
+ msgstr ""
75
+
76
+ #: ../lib/pz-linkcard-cacheman-edit.php:66
77
+ #: ../lib/pz-linkcard-cacheman-list.php:229 ../lib/pz-linkcard-edit.php:41
78
+ #: ../lib/pz-linkcard-settings.php:638
79
+ msgid "Excerpt"
80
+ msgstr ""
81
+
82
+ #: ../lib/pz-linkcard-cacheman-edit.php:70
83
+ msgid "Modify Excerpt"
84
+ msgstr ""
85
+
86
+ #: ../lib/pz-linkcard-cacheman-edit.php:74
87
+ msgid "Character Set"
88
+ msgstr ""
89
+
90
+ #: ../lib/pz-linkcard-cacheman-edit.php:75 ../lib/pz-linkcard-edit.php:46
91
+ msgid "->"
92
+ msgstr ""
93
+
94
+ #: ../lib/pz-linkcard-cacheman-edit.php:78 ../lib/pz-linkcard-edit.php:49
95
+ msgid "Thumbnail URL"
96
+ msgstr ""
97
+
98
+ #: ../lib/pz-linkcard-cacheman-edit.php:82
99
+ msgid "Favicon URL"
100
+ msgstr ""
101
+
102
+ #: ../lib/pz-linkcard-cacheman-edit.php:86 ../lib/pz-linkcard-edit.php:57
103
+ msgid "Result Code"
104
+ msgstr ""
105
+
106
+ #: ../lib/pz-linkcard-cacheman-edit.php:90
107
+ #: ../lib/pz-linkcard-cacheman-list.php:237 ../lib/pz-linkcard-edit.php:61
108
+ msgid "Post ID"
109
+ msgstr ""
110
+
111
+ #: ../lib/pz-linkcard-cacheman-edit.php:101 ../lib/pz-linkcard-edit.php:65
112
+ msgid "SNS"
113
+ msgstr ""
114
+
115
+ #: ../lib/pz-linkcard-cacheman-edit.php:103
116
+ #: ../lib/pz-linkcard-cacheman-list.php:232 ../lib/pz-linkcard-edit.php:67
117
+ msgid "Tw"
118
+ msgstr ""
119
+
120
+ #: ../lib/pz-linkcard-cacheman-edit.php:104
121
+ #: ../lib/pz-linkcard-cacheman-list.php:232 ../lib/pz-linkcard-edit.php:68
122
+ msgid "fb"
123
+ msgstr ""
124
+
125
+ #: ../lib/pz-linkcard-cacheman-edit.php:105
126
+ #: ../lib/pz-linkcard-cacheman-list.php:232 ../lib/pz-linkcard-edit.php:69
127
+ msgid "B!"
128
+ msgstr ""
129
+
130
+ #: ../lib/pz-linkcard-cacheman-edit.php:106
131
+ #: ../lib/pz-linkcard-cacheman-list.php:232
132
+ msgid "Po"
133
+ msgstr ""
134
+
135
+ #: ../lib/pz-linkcard-cacheman-edit.php:110
136
+ msgid "Last SNS Check"
137
+ msgstr ""
138
+
139
+ #: ../lib/pz-linkcard-cacheman-edit.php:114
140
+ msgid "Next SNS Check"
141
+ msgstr ""
142
+
143
+ #: ../lib/pz-linkcard-cacheman-edit.php:118
144
+ msgid "Registration Character Set"
145
+ msgstr ""
146
+
147
+ #: ../lib/pz-linkcard-cacheman-edit.php:122
148
+ #: ../lib/pz-linkcard-cacheman-edit.php:126
149
+ msgid "Registration Date"
150
+ msgstr ""
151
+
152
+ #: ../lib/pz-linkcard-cacheman-edit.php:130
153
+ msgid "Registration Result Code"
154
+ msgstr ""
155
+
156
+ #: ../lib/pz-linkcard-cacheman-edit.php:134
157
+ msgid "Last Alive Check"
158
+ msgstr ""
159
+
160
+ #: ../lib/pz-linkcard-cacheman-edit.php:138
161
+ msgid "Next Alive Check"
162
+ msgstr ""
163
+
164
+ #: ../lib/pz-linkcard-cacheman-edit.php:142
165
+ msgid "Result Code of Alive Check"
166
+ msgstr ""
167
+
168
+ #: ../lib/pz-linkcard-cacheman-edit.php:146
169
+ #: ../lib/pz-linkcard-cacheman-edit.php:150 ../lib/pz-linkcard-edit.php:73
170
+ msgid "Update Date"
171
+ msgstr ""
172
+
173
+ #: ../lib/pz-linkcard-cacheman-edit.php:155 ../lib/pz-linkcard-edit.php:86
174
+ msgid "Update"
175
+ msgstr ""
176
+
177
+ #: ../lib/pz-linkcard-cacheman-edit.php:155 ../lib/pz-linkcard-edit.php:86
178
+ msgid "Cancel"
179
+ msgstr ""
180
+
181
+ #: ../lib/pz-linkcard-cacheman-list.php:153
182
+ msgid "All"
183
+ msgstr ""
184
+
185
+ #: ../lib/pz-linkcard-cacheman-list.php:154
186
+ msgid "Internal"
187
+ msgstr ""
188
+
189
+ #: ../lib/pz-linkcard-cacheman-list.php:155
190
+ msgid "External"
191
+ msgstr ""
192
+
193
+ #: ../lib/pz-linkcard-cacheman-list.php:156
194
+ msgid "Modify"
195
+ msgstr ""
196
+
197
+ #: ../lib/pz-linkcard-cacheman-list.php:157
198
+ msgid "Unlink"
199
+ msgstr ""
200
+
201
+ #: ../lib/pz-linkcard-cacheman-list.php:161
202
+ msgid "Search Keyword"
203
+ msgstr ""
204
+
205
+ #: ../lib/pz-linkcard-cacheman-list.php:163
206
+ msgid "Search"
207
+ msgstr ""
208
+
209
+ #: ../lib/pz-linkcard-cacheman-list.php:172
210
+ msgid "Select Batch"
211
+ msgstr ""
212
+
213
+ #: ../lib/pz-linkcard-cacheman-list.php:174
214
+ #: ../lib/pz-linkcard-cacheman-list.php:326
215
+ msgid "Select"
216
+ msgstr ""
217
+
218
+ #: ../lib/pz-linkcard-cacheman-list.php:175 ../lib/pz-linkcard-cacheman.php:78
219
+ msgid "Renew Cache"
220
+ msgstr ""
221
+
222
+ #: ../lib/pz-linkcard-cacheman-list.php:176
223
+ #: ../lib/pz-linkcard-cacheman.php:162
224
+ msgid "Renew Thumbnail Image"
225
+ msgstr ""
226
+
227
+ #: ../lib/pz-linkcard-cacheman-list.php:177
228
+ #: ../lib/pz-linkcard-cacheman.php:141
229
+ msgid "Renew SNS Count"
230
+ msgstr ""
231
+
232
+ #: ../lib/pz-linkcard-cacheman-list.php:178
233
+ msgid "Renew Post ID"
234
+ msgstr ""
235
+
236
+ #: ../lib/pz-linkcard-cacheman-list.php:179
237
+ msgid "Check Status"
238
+ msgstr ""
239
+
240
+ #: ../lib/pz-linkcard-cacheman-list.php:180
241
+ msgid "Delete from Cache"
242
+ msgstr ""
243
+
244
+ #: ../lib/pz-linkcard-cacheman-list.php:182
245
+ msgid "Submit"
246
+ msgstr ""
247
+
248
+ #: ../lib/pz-linkcard-cacheman-list.php:186
249
+ msgid "Select Domain"
250
+ msgstr ""
251
+
252
+ #: ../lib/pz-linkcard-cacheman-list.php:188
253
+ msgid "All Domain"
254
+ msgstr ""
255
+
256
+ #: ../lib/pz-linkcard-cacheman-list.php:197
257
+ msgid "Refine Search"
258
+ msgstr ""
259
+
260
+ #: ../lib/pz-linkcard-cacheman-list.php:203
261
+ msgid "items"
262
+ msgstr ""
263
+
264
+ #: ../lib/pz-linkcard-cacheman-list.php:225
265
+ msgid "Select All"
266
+ msgstr ""
267
+
268
+ #: ../lib/pz-linkcard-cacheman-list.php:230 ../lib/pz-linkcard-edit.php:45
269
+ msgid "Charset"
270
+ msgstr ""
271
+
272
+ #: ../lib/pz-linkcard-cacheman-list.php:233
273
+ msgid "Regist<br>date"
274
+ msgstr ""
275
+
276
+ #: ../lib/pz-linkcard-cacheman-list.php:234
277
+ msgid "Update<br>date"
278
+ msgstr ""
279
+
280
+ #: ../lib/pz-linkcard-cacheman-list.php:235
281
+ msgid "SNS<br>check<br>date"
282
+ msgstr ""
283
+
284
+ #: ../lib/pz-linkcard-cacheman-list.php:236
285
+ msgid "Alive<br>check<br>date"
286
+ msgstr ""
287
+
288
+ #: ../lib/pz-linkcard-cacheman-list.php:238
289
+ msgid "Result<br>code"
290
+ msgstr ""
291
+
292
+ #: ../lib/pz-linkcard-cacheman-list.php:238
293
+ msgid "(last )"
294
+ msgstr ""
295
+
296
+ #: ../lib/pz-linkcard-cacheman-list.php:261
297
+ msgid "&#x26a0;"
298
+ msgstr ""
299
+
300
+ #: ../lib/pz-linkcard-cacheman-list.php:335
301
+ msgid "Edit"
302
+ msgstr ""
303
+
304
+ #: ../lib/pz-linkcard-cacheman-list.php:336
305
+ #: ../lib/pz-linkcard-cacheman-list.php:337
306
+ #: ../lib/pz-linkcard-settings.php:1190 ../lib/pz-linkcard-settings.php:1197
307
+ msgid "Are you sure?"
308
+ msgstr ""
309
+
310
+ #: ../lib/pz-linkcard-cacheman-list.php:336
311
+ msgid "Renew"
312
+ msgstr ""
313
+
314
+ #: ../lib/pz-linkcard-cacheman-list.php:337
315
+ msgid "Delete"
316
+ msgstr ""
317
+
318
+ #: ../lib/pz-linkcard-cacheman.php:2 ../lib/pz-linkcard-settings.php:2
319
+ #: ../lib/pz-linkcard-settings.php:1088
320
+ msgid "Currently working in a development environment."
321
+ msgstr ""
322
+
323
+ #: ../lib/pz-linkcard-cacheman.php:6 ../pz-linkcard.php:2205
324
+ msgid "LinkCard Cache Manager"
325
+ msgstr ""
326
+
327
+ #: ../lib/pz-linkcard-cacheman.php:6 ../lib/pz-linkcard-settings.php:159
328
+ #: ../lib/pz-linkcard-settings.php:188 ../lib/pz-linkcard-settings.php:283
329
+ #: ../lib/pz-linkcard-settings.php:450 ../lib/pz-linkcard-settings.php:632
330
+ #: ../lib/pz-linkcard-settings.php:699 ../lib/pz-linkcard-settings.php:848
331
+ #: ../lib/pz-linkcard-settings.php:889 ../lib/pz-linkcard-settings.php:962
332
+ #: ../lib/pz-linkcard-settings.php:998 ../lib/pz-linkcard-settings.php:1024
333
+ #: ../lib/pz-linkcard-settings.php:1095 ../lib/pz-linkcard-settings.php:1126
334
+ #: ../lib/pz-linkcard-settings.php:1161 ../lib/pz-linkcard-settings.php:1185
335
+ msgid "Help"
336
+ msgstr ""
337
+
338
+ #: ../lib/pz-linkcard-cacheman.php:65 ../lib/pz-linkcard-cacheman.php:84
339
+ #: ../lib/pz-linkcard-cacheman.php:101 ../lib/pz-linkcard-cacheman.php:127
340
+ #: ../lib/pz-linkcard-cacheman.php:147 ../lib/pz-linkcard-cacheman.php:168
341
+ #: ../lib/pz-linkcard-cacheman.php:201
342
+ msgid "Not selected"
343
+ msgstr ""
344
+
345
+ #: ../lib/pz-linkcard-cacheman.php:78 ../lib/pz-linkcard-cacheman.php:95
346
+ #: ../lib/pz-linkcard-cacheman.php:121 ../lib/pz-linkcard-cacheman.php:141
347
+ #: ../lib/pz-linkcard-cacheman.php:162 ../lib/pz-linkcard-cacheman.php:195
348
+ #: ../lib/pz-linkcard-cacheman.php:230
349
+ msgid "..."
350
+ msgstr ""
351
+
352
+ #: ../lib/pz-linkcard-cacheman.php:78 ../lib/pz-linkcard-cacheman.php:95
353
+ #: ../lib/pz-linkcard-cacheman.php:121 ../lib/pz-linkcard-cacheman.php:141
354
+ #: ../lib/pz-linkcard-cacheman.php:162 ../lib/pz-linkcard-cacheman.php:195
355
+ #: ../lib/pz-linkcard-cacheman.php:230 ../lib/pz-linkcard-file-import.php:11
356
+ #: ../lib/pz-linkcard-file-import.php:54 ../lib/pz-linkcard-file-import.php:61
357
+ #: ../lib/pz-linkcard-file-import.php:100
358
+ #: ../lib/pz-linkcard-file-import.php:102 ../lib/pz-linkcard-settings.php:230
359
+ #: ../lib/pz-linkcard-settings.php:1106 ../lib/pz-linkcard-settings.php:1167
360
+ #: ../lib/pz-linkcard-settings.php:1176 ../pz-linkcard.php:1530
361
+ #: ../pz-linkcard.php:1547
362
+ msgid "("
363
+ msgstr ""
364
+
365
+ #: ../lib/pz-linkcard-cacheman.php:78 ../lib/pz-linkcard-cacheman.php:95
366
+ #: ../lib/pz-linkcard-cacheman.php:121 ../lib/pz-linkcard-cacheman.php:141
367
+ #: ../lib/pz-linkcard-cacheman.php:162 ../lib/pz-linkcard-cacheman.php:195
368
+ #: ../lib/pz-linkcard-cacheman.php:230 ../lib/pz-linkcard-file-import.php:100
369
+ msgid "Success:"
370
+ msgstr ""
371
+
372
+ #: ../lib/pz-linkcard-cacheman.php:78 ../lib/pz-linkcard-cacheman.php:95
373
+ #: ../lib/pz-linkcard-cacheman.php:121 ../lib/pz-linkcard-cacheman.php:141
374
+ #: ../lib/pz-linkcard-cacheman.php:162 ../lib/pz-linkcard-cacheman.php:195
375
+ #: ../lib/pz-linkcard-cacheman.php:230 ../lib/pz-linkcard-file-import.php:100
376
+ #: ../lib/pz-linkcard-file-import.php:102
377
+ msgid "Skip:"
378
+ msgstr ""
379
+
380
+ #: ../lib/pz-linkcard-cacheman.php:78 ../lib/pz-linkcard-cacheman.php:95
381
+ #: ../lib/pz-linkcard-cacheman.php:121 ../lib/pz-linkcard-cacheman.php:141
382
+ #: ../lib/pz-linkcard-cacheman.php:162 ../lib/pz-linkcard-cacheman.php:195
383
+ #: ../lib/pz-linkcard-cacheman.php:230 ../lib/pz-linkcard-file-import.php:11
384
+ #: ../lib/pz-linkcard-file-import.php:54 ../lib/pz-linkcard-file-import.php:61
385
+ #: ../lib/pz-linkcard-file-import.php:100
386
+ #: ../lib/pz-linkcard-file-import.php:102 ../lib/pz-linkcard-settings.php:230
387
+ #: ../lib/pz-linkcard-settings.php:1106 ../lib/pz-linkcard-settings.php:1167
388
+ #: ../lib/pz-linkcard-settings.php:1176 ../pz-linkcard.php:1530
389
+ #: ../pz-linkcard.php:1547
390
+ msgid ")"
391
+ msgstr ""
392
+
393
+ #: ../lib/pz-linkcard-cacheman.php:95
394
+ msgid "Delete Cache"
395
+ msgstr ""
396
+
397
+ #: ../lib/pz-linkcard-cacheman.php:121
398
+ msgid "Update Cache"
399
+ msgstr ""
400
+
401
+ #: ../lib/pz-linkcard-cacheman.php:195
402
+ msgid "Renew Post Id"
403
+ msgstr ""
404
+
405
+ #: ../lib/pz-linkcard-cacheman.php:230
406
+ msgid "Alive check"
407
+ msgstr ""
408
+
409
+ #: ../lib/pz-linkcard-cacheman.php:240
410
+ msgid "Upload Import File"
411
+ msgstr ""
412
+
413
+ #: ../lib/pz-linkcard-cacheman.php:241
414
+ msgid "Clear all cache"
415
+ msgstr ""
416
+
417
+ #: ../lib/pz-linkcard-cacheman.php:264 ../lib/pz-linkcard-settings.php:1051
418
+ msgid "File Menu"
419
+ msgstr ""
420
+
421
+ #: ../lib/pz-linkcard-cacheman.php:271
422
+ msgid "Import"
423
+ msgstr ""
424
+
425
+ #: ../lib/pz-linkcard-cacheman.php:279
426
+ msgid "Export"
427
+ msgstr ""
428
+
429
+ #: ../lib/pz-linkcard-edit.php:25
430
+ msgid "Link Type"
431
+ msgstr ""
432
+
433
+ #: ../lib/pz-linkcard-edit.php:53
434
+ msgid "Site Icon URL"
435
+ msgstr ""
436
+
437
+ #: ../lib/pz-linkcard-edit.php:77
438
+ msgid "Next Update"
439
+ msgstr ""
440
+
441
+ #: ../lib/pz-linkcard-edit.php:81
442
+ msgid "Regist"
443
+ msgstr ""
444
+
445
+ #: ../lib/pz-linkcard-file-export.php:44
446
+ msgid "Download Export File"
447
+ msgstr ""
448
+
449
+ #: ../lib/pz-linkcard-file-import.php:11 ../lib/pz-linkcard-file-import.php:54
450
+ #: ../lib/pz-linkcard-file-import.php:61
451
+ msgid "DB Access Error."
452
+ msgstr ""
453
+
454
+ #: ../lib/pz-linkcard-file-import.php:29
455
+ msgid "Import File Not Found."
456
+ msgstr ""
457
+
458
+ #: ../lib/pz-linkcard-file-import.php:36
459
+ msgid "Import File Open Error."
460
+ msgstr ""
461
+
462
+ #: ../lib/pz-linkcard-file-import.php:42
463
+ msgid "Import File Read Error."
464
+ msgstr ""
465
+
466
+ #: ../lib/pz-linkcard-file-import.php:100
467
+ msgid "Import Successful."
468
+ msgstr ""
469
+
470
+ #: ../lib/pz-linkcard-file-import.php:100
471
+ #: ../lib/pz-linkcard-file-import.php:102
472
+ msgid "Read:"
473
+ msgstr ""
474
+
475
+ #: ../lib/pz-linkcard-file-import.php:102
476
+ msgid "Import Failure."
477
+ msgstr ""
478
+
479
+ #: ../lib/pz-linkcard-modal.php:4
480
+ msgid "×"
481
+ msgstr ""
482
+
483
+ #: ../lib/pz-linkcard-modal.php:8
484
+ msgid "Input URL"
485
+ msgstr ""
486
+
487
+ #: ../lib/pz-linkcard-modal.php:11
488
+ msgid "Insert"
489
+ msgstr ""
490
+
491
+ #: ../lib/pz-linkcard-settings-validate.php:94
492
+ msgid "Color code does not conform to HTML color code."
493
+ msgstr ""
494
+
495
+ #: ../lib/pz-linkcard-settings.php:16
496
+ msgid "Succeeded in initialize the settings."
497
+ msgstr ""
498
+
499
+ #: ../lib/pz-linkcard-settings.php:18
500
+ msgid "Failed to initialize the settings."
501
+ msgstr ""
502
+
503
+ #: ../lib/pz-linkcard-settings.php:40
504
+ msgid "Succeeded in saving the settings."
505
+ msgstr ""
506
+
507
+ #: ../lib/pz-linkcard-settings.php:43
508
+ msgid "The settings have not changed."
509
+ msgstr ""
510
+
511
+ #: ../lib/pz-linkcard-settings.php:83
512
+ msgid "Version"
513
+ msgstr ""
514
+
515
+ #: ../lib/pz-linkcard-settings.php:132 ../pz-linkcard.php:2206
516
+ msgid "LinkCard Settings"
517
+ msgstr ""
518
+
519
+ #: ../lib/pz-linkcard-settings.php:142
520
+ msgid "Error"
521
+ msgstr ""
522
+
523
+ #: ../lib/pz-linkcard-settings.php:143
524
+ msgid "Basic"
525
+ msgstr ""
526
+
527
+ #: ../lib/pz-linkcard-settings.php:144
528
+ msgid "Position"
529
+ msgstr ""
530
+
531
+ #: ../lib/pz-linkcard-settings.php:145
532
+ msgid "Display"
533
+ msgstr ""
534
+
535
+ #: ../lib/pz-linkcard-settings.php:146
536
+ msgid "Letter"
537
+ msgstr ""
538
+
539
+ #: ../lib/pz-linkcard-settings.php:147
540
+ msgid "External Link"
541
+ msgstr ""
542
+
543
+ #: ../lib/pz-linkcard-settings.php:148
544
+ msgid "Internal Link"
545
+ msgstr ""
546
+
547
+ #: ../lib/pz-linkcard-settings.php:149
548
+ msgid "Same Page Link"
549
+ msgstr ""
550
+
551
+ #: ../lib/pz-linkcard-settings.php:150
552
+ msgid "Link Check"
553
+ msgstr ""
554
+
555
+ #: ../lib/pz-linkcard-settings.php:151
556
+ msgid "Editor"
557
+ msgstr ""
558
+
559
+ #: ../lib/pz-linkcard-settings.php:152 ../lib/pz-linkcard-settings.php:965
560
+ msgid "Multi Site"
561
+ msgstr ""
562
+
563
+ #: ../lib/pz-linkcard-settings.php:153
564
+ msgid "Advanced"
565
+ msgstr ""
566
+
567
+ #: ../lib/pz-linkcard-settings.php:154
568
+ msgid "etc."
569
+ msgstr ""
570
+
571
+ #: ../lib/pz-linkcard-settings.php:155 ../lib/pz-linkcard-settings.php:1185
572
+ msgid "Initialize"
573
+ msgstr ""
574
+
575
+ #: ../lib/pz-linkcard-settings.php:159
576
+ msgid "Error Settings"
577
+ msgstr ""
578
+
579
+ #: ../lib/pz-linkcard-settings.php:162
580
+ msgid "Error reset"
581
+ msgstr ""
582
+
583
+ #: ../lib/pz-linkcard-settings.php:163
584
+ msgid "Uncheck to cancel the error condition."
585
+ msgstr ""
586
+
587
+ #: ../lib/pz-linkcard-settings.php:166 ../lib/pz-linkcard-settings.php:172
588
+ msgid "Article with error"
589
+ msgstr ""
590
+
591
+ #: ../lib/pz-linkcard-settings.php:178
592
+ msgid "Error Time"
593
+ msgstr ""
594
+
595
+ #: ../lib/pz-linkcard-settings.php:188
596
+ msgid "Basic Settings"
597
+ msgstr ""
598
+
599
+ #: ../lib/pz-linkcard-settings.php:191
600
+ msgid "Easy format"
601
+ msgstr ""
602
+
603
+ #: ../lib/pz-linkcard-settings.php:194 ../lib/pz-linkcard-settings.php:461
604
+ #: ../lib/pz-linkcard-settings.php:502 ../lib/pz-linkcard-settings.php:511
605
+ #: ../lib/pz-linkcard-settings.php:550 ../lib/pz-linkcard-settings.php:564
606
+ #: ../lib/pz-linkcard-settings.php:581 ../lib/pz-linkcard-settings.php:604
607
+ #: ../lib/pz-linkcard-settings.php:618 ../lib/pz-linkcard-settings.php:728
608
+ #: ../lib/pz-linkcard-settings.php:762 ../lib/pz-linkcard-settings.php:793
609
+ msgid "None"
610
+ msgstr ""
611
+
612
+ #: ../lib/pz-linkcard-settings.php:195
613
+ msgid "Pz-LkC Default"
614
+ msgstr ""
615
+
616
+ #: ../lib/pz-linkcard-settings.php:196
617
+ msgid "Normal"
618
+ msgstr ""
619
+
620
+ #: ../lib/pz-linkcard-settings.php:197
621
+ msgid "Enclose"
622
+ msgstr ""
623
+
624
+ #: ../lib/pz-linkcard-settings.php:198
625
+ msgid "Compact"
626
+ msgstr ""
627
+
628
+ #: ../lib/pz-linkcard-settings.php:199
629
+ msgid "Reflection"
630
+ msgstr ""
631
+
632
+ #: ../lib/pz-linkcard-settings.php:200
633
+ msgid "Simple"
634
+ msgstr ""
635
+
636
+ #: ../lib/pz-linkcard-settings.php:201
637
+ msgid "Headline"
638
+ msgstr ""
639
+
640
+ #: ../lib/pz-linkcard-settings.php:202
641
+ msgid "Cellophane tape \"center\""
642
+ msgstr ""
643
+
644
+ #: ../lib/pz-linkcard-settings.php:203
645
+ msgid "Cellophane tape \"Top corner\""
646
+ msgstr ""
647
+
648
+ #: ../lib/pz-linkcard-settings.php:204
649
+ msgid "Cellophane tape \"long\""
650
+ msgstr ""
651
+
652
+ #: ../lib/pz-linkcard-settings.php:205
653
+ msgid "Cellophane tape \"digonal\""
654
+ msgstr ""
655
+
656
+ #: ../lib/pz-linkcard-settings.php:206
657
+ msgid "Curling paper"
658
+ msgstr ""
659
+
660
+ #: ../lib/pz-linkcard-settings.php:207
661
+ msgid "Cellophane tape and curling"
662
+ msgstr ""
663
+
664
+ #: ../lib/pz-linkcard-settings.php:208
665
+ msgid "Stitch blue & red"
666
+ msgstr ""
667
+
668
+ #: ../lib/pz-linkcard-settings.php:209
669
+ msgid "Stitch green & yellow"
670
+ msgstr ""
671
+
672
+ #: ../lib/pz-linkcard-settings.php:210
673
+ msgid "Square"
674
+ msgstr ""
675
+
676
+ #: ../lib/pz-linkcard-settings.php:211
677
+ msgid "Infomation orange"
678
+ msgstr ""
679
+
680
+ #: ../lib/pz-linkcard-settings.php:212
681
+ msgid "Neutral bluegreen"
682
+ msgstr ""
683
+
684
+ #: ../lib/pz-linkcard-settings.php:213
685
+ msgid "Enlightened green"
686
+ msgstr ""
687
+
688
+ #: ../lib/pz-linkcard-settings.php:214
689
+ msgid "Resistance blue"
690
+ msgstr ""
691
+
692
+ #: ../lib/pz-linkcard-settings.php:215
693
+ msgid "Windows XP"
694
+ msgstr ""
695
+
696
+ #: ../lib/pz-linkcard-settings.php:216
697
+ msgid "Windows 95"
698
+ msgstr ""
699
+
700
+ #: ../lib/pz-linkcard-settings.php:217
701
+ msgid "Slanting"
702
+ msgstr ""
703
+
704
+ #: ../lib/pz-linkcard-settings.php:218
705
+ msgid "3D Rotate"
706
+ msgstr ""
707
+
708
+ #: ../lib/pz-linkcard-settings.php:219
709
+ msgid "Pushpin"
710
+ msgstr ""
711
+
712
+ #: ../lib/pz-linkcard-settings.php:221 ../lib/pz-linkcard-settings.php:610
713
+ #: ../lib/pz-linkcard-settings.php:971 ../lib/pz-linkcard-settings.php:981
714
+ #: ../pz-linkcard.php:2175
715
+ msgid "*"
716
+ msgstr ""
717
+
718
+ #: ../lib/pz-linkcard-settings.php:221
719
+ msgid "It applies over other formatting settings."
720
+ msgstr ""
721
+
722
+ #: ../lib/pz-linkcard-settings.php:230
723
+ msgid "How to"
724
+ msgstr ""
725
+
726
+ #: ../lib/pz-linkcard-settings.php:230
727
+ msgid "Japanese Only"
728
+ msgstr ""
729
+
730
+ #: ../lib/pz-linkcard-settings.php:237
731
+ msgid "Plugin Name"
732
+ msgstr ""
733
+
734
+ #: ../lib/pz-linkcard-settings.php:241
735
+ msgid "Plugin Abbreviation"
736
+ msgstr ""
737
+
738
+ #: ../lib/pz-linkcard-settings.php:245
739
+ msgid "Plugin Version"
740
+ msgstr ""
741
+
742
+ #: ../lib/pz-linkcard-settings.php:249 ../lib/pz-linkcard-settings.php:262
743
+ msgid "Author's Site"
744
+ msgstr ""
745
+
746
+ #: ../lib/pz-linkcard-settings.php:253
747
+ msgid "Plugin Path"
748
+ msgstr ""
749
+
750
+ #: ../lib/pz-linkcard-settings.php:257
751
+ msgid "Author Name"
752
+ msgstr ""
753
+
754
+ #: ../lib/pz-linkcard-settings.php:263
755
+ msgid "Popozure."
756
+ msgstr ""
757
+
758
+ #: ../lib/pz-linkcard-settings.php:263
759
+ msgid "Poporon's PC Daily Diary"
760
+ msgstr ""
761
+
762
+ #: ../lib/pz-linkcard-settings.php:266
763
+ msgid "When in Trouble"
764
+ msgstr ""
765
+
766
+ #: ../lib/pz-linkcard-settings.php:267
767
+ msgid "Twitter Account"
768
+ msgstr ""
769
+
770
+ #: ../lib/pz-linkcard-settings.php:270
771
+ msgid "Donation"
772
+ msgstr ""
773
+
774
+ #: ../lib/pz-linkcard-settings.php:271
775
+ msgid "Wishlist"
776
+ msgstr ""
777
+
778
+ #: ../lib/pz-linkcard-settings.php:275
779
+ msgid "Changelog"
780
+ msgstr ""
781
+
782
+ #: ../lib/pz-linkcard-settings.php:283
783
+ msgid "Position Settings"
784
+ msgstr ""
785
+
786
+ #: ../lib/pz-linkcard-settings.php:286
787
+ msgid "Link the Whole"
788
+ msgstr ""
789
+
790
+ #: ../lib/pz-linkcard-settings.php:290
791
+ msgid "Enclose the entire card at anchor."
792
+ msgstr ""
793
+
794
+ #: ../lib/pz-linkcard-settings.php:296
795
+ msgid "Margin"
796
+ msgstr ""
797
+
798
+ #: ../lib/pz-linkcard-settings.php:303 ../lib/pz-linkcard-settings.php:336
799
+ msgid "Margin top"
800
+ msgstr ""
801
+
802
+ #: ../lib/pz-linkcard-settings.php:305 ../lib/pz-linkcard-settings.php:321
803
+ #: ../lib/pz-linkcard-settings.php:338 ../lib/pz-linkcard-settings.php:354
804
+ #: ../lib/pz-linkcard-settings.php:368 ../lib/pz-linkcard-settings.php:390
805
+ #: ../lib/pz-linkcard-settings.php:408 ../lib/pz-linkcard-settings.php:426
806
+ msgid "Not defined"
807
+ msgstr ""
808
+
809
+ #: ../lib/pz-linkcard-settings.php:306 ../lib/pz-linkcard-settings.php:322
810
+ #: ../lib/pz-linkcard-settings.php:339 ../lib/pz-linkcard-settings.php:355
811
+ #: ../lib/pz-linkcard-settings.php:369 ../lib/pz-linkcard-settings.php:391
812
+ #: ../lib/pz-linkcard-settings.php:409 ../lib/pz-linkcard-settings.php:427
813
+ msgid "0"
814
+ msgstr ""
815
+
816
+ #: ../lib/pz-linkcard-settings.php:307 ../lib/pz-linkcard-settings.php:323
817
+ #: ../lib/pz-linkcard-settings.php:340 ../lib/pz-linkcard-settings.php:356
818
+ #: ../lib/pz-linkcard-settings.php:370 ../lib/pz-linkcard-settings.php:392
819
+ #: ../lib/pz-linkcard-settings.php:410 ../lib/pz-linkcard-settings.php:428
820
+ #: ../lib/pz-linkcard-settings.php:551
821
+ msgid "4px"
822
+ msgstr ""
823
+
824
+ #: ../lib/pz-linkcard-settings.php:308 ../lib/pz-linkcard-settings.php:324
825
+ #: ../lib/pz-linkcard-settings.php:341 ../lib/pz-linkcard-settings.php:357
826
+ #: ../lib/pz-linkcard-settings.php:371 ../lib/pz-linkcard-settings.php:393
827
+ #: ../lib/pz-linkcard-settings.php:411 ../lib/pz-linkcard-settings.php:429
828
+ #: ../lib/pz-linkcard-settings.php:552
829
+ msgid "8px"
830
+ msgstr ""
831
+
832
+ #: ../lib/pz-linkcard-settings.php:309 ../lib/pz-linkcard-settings.php:325
833
+ #: ../lib/pz-linkcard-settings.php:342 ../lib/pz-linkcard-settings.php:358
834
+ #: ../lib/pz-linkcard-settings.php:372 ../lib/pz-linkcard-settings.php:394
835
+ #: ../lib/pz-linkcard-settings.php:412 ../lib/pz-linkcard-settings.php:430
836
+ #: ../lib/pz-linkcard-settings.php:553
837
+ msgid "16px"
838
+ msgstr ""
839
+
840
+ #: ../lib/pz-linkcard-settings.php:310 ../lib/pz-linkcard-settings.php:326
841
+ #: ../lib/pz-linkcard-settings.php:344 ../lib/pz-linkcard-settings.php:360
842
+ #: ../lib/pz-linkcard-settings.php:374 ../lib/pz-linkcard-settings.php:396
843
+ #: ../lib/pz-linkcard-settings.php:413 ../lib/pz-linkcard-settings.php:431
844
+ #: ../lib/pz-linkcard-settings.php:554
845
+ msgid "32px"
846
+ msgstr ""
847
+
848
+ #: ../lib/pz-linkcard-settings.php:311 ../lib/pz-linkcard-settings.php:327
849
+ #: ../lib/pz-linkcard-settings.php:345 ../lib/pz-linkcard-settings.php:361
850
+ #: ../lib/pz-linkcard-settings.php:375 ../lib/pz-linkcard-settings.php:397
851
+ #: ../lib/pz-linkcard-settings.php:414 ../lib/pz-linkcard-settings.php:432
852
+ msgid "40px"
853
+ msgstr ""
854
+
855
+ #: ../lib/pz-linkcard-settings.php:312 ../lib/pz-linkcard-settings.php:328
856
+ #: ../lib/pz-linkcard-settings.php:346 ../lib/pz-linkcard-settings.php:362
857
+ #: ../lib/pz-linkcard-settings.php:376 ../lib/pz-linkcard-settings.php:398
858
+ #: ../lib/pz-linkcard-settings.php:415 ../lib/pz-linkcard-settings.php:433
859
+ #: ../lib/pz-linkcard-settings.php:555
860
+ msgid "64px"
861
+ msgstr ""
862
+
863
+ #: ../lib/pz-linkcard-settings.php:319 ../lib/pz-linkcard-settings.php:352
864
+ msgid "Margin left"
865
+ msgstr ""
866
+
867
+ #: ../lib/pz-linkcard-settings.php:343 ../lib/pz-linkcard-settings.php:359
868
+ #: ../lib/pz-linkcard-settings.php:373 ../lib/pz-linkcard-settings.php:395
869
+ msgid "24px"
870
+ msgstr ""
871
+
872
+ #: ../lib/pz-linkcard-settings.php:366 ../lib/pz-linkcard-settings.php:406
873
+ msgid "Margin right"
874
+ msgstr ""
875
+
876
+ #: ../lib/pz-linkcard-settings.php:382 ../lib/pz-linkcard-settings.php:517
877
+ #: ../lib/pz-linkcard-settings.php:591
878
+ msgid "Width"
879
+ msgstr ""
880
+
881
+ #: ../lib/pz-linkcard-settings.php:383 ../lib/pz-linkcard-settings.php:519
882
+ #: ../lib/pz-linkcard-settings.php:667
883
+ msgid "Height"
884
+ msgstr ""
885
+
886
+ #: ../lib/pz-linkcard-settings.php:388 ../lib/pz-linkcard-settings.php:424
887
+ msgid "Margin bottom"
888
+ msgstr ""
889
+
890
+ #: ../lib/pz-linkcard-settings.php:421
891
+ msgid "Centering"
892
+ msgstr ""
893
+
894
+ #: ../lib/pz-linkcard-settings.php:443
895
+ msgid "Use Blockquote Tag"
896
+ msgstr ""
897
+
898
+ #: ../lib/pz-linkcard-settings.php:444
899
+ msgid "Without using DIV tag, and use BLOCKQUOTE tag."
900
+ msgstr ""
901
+
902
+ #: ../lib/pz-linkcard-settings.php:444 ../lib/pz-linkcard-settings.php:819
903
+ #: ../lib/pz-linkcard-settings.php:827 ../lib/pz-linkcard-settings.php:1062
904
+ #: ../lib/pz-linkcard-settings.php:1067 ../lib/pz-linkcard-settings.php:1080
905
+ #: ../lib/pz-linkcard-settings.php:1084
906
+ msgid "(Deprecated)"
907
+ msgstr ""
908
+
909
+ #: ../lib/pz-linkcard-settings.php:450
910
+ msgid "Display Settings"
911
+ msgstr ""
912
+
913
+ #: ../lib/pz-linkcard-settings.php:453
914
+ msgid "Layout"
915
+ msgstr ""
916
+
917
+ #: ../lib/pz-linkcard-settings.php:459 ../lib/pz-linkcard-settings.php:640
918
+ msgid "Site Information"
919
+ msgstr ""
920
+
921
+ #: ../lib/pz-linkcard-settings.php:462 ../lib/pz-linkcard-settings.php:514
922
+ msgid "Upper Side"
923
+ msgstr ""
924
+
925
+ #: ../lib/pz-linkcard-settings.php:463
926
+ msgid "Above the Title"
927
+ msgstr ""
928
+
929
+ #: ../lib/pz-linkcard-settings.php:464
930
+ msgid "Under Side"
931
+ msgstr ""
932
+
933
+ #: ../lib/pz-linkcard-settings.php:466
934
+ msgid "Use SiteName"
935
+ msgstr ""
936
+
937
+ #: ../lib/pz-linkcard-settings.php:471
938
+ msgid "For internal links, display the posting date"
939
+ msgstr ""
940
+
941
+ #: ../lib/pz-linkcard-settings.php:478
942
+ msgid "Make additional information heading display"
943
+ msgstr ""
944
+
945
+ #: ../lib/pz-linkcard-settings.php:485
946
+ msgid "Turn off the anchor text underlining"
947
+ msgstr ""
948
+
949
+ #: ../lib/pz-linkcard-settings.php:492
950
+ msgid "Separator line"
951
+ msgstr ""
952
+
953
+ #: ../lib/pz-linkcard-settings.php:500
954
+ msgid "Display URL"
955
+ msgstr ""
956
+
957
+ #: ../lib/pz-linkcard-settings.php:503
958
+ msgid "Under Title"
959
+ msgstr ""
960
+
961
+ #: ../lib/pz-linkcard-settings.php:504 ../lib/pz-linkcard-settings.php:620
962
+ msgid "Bihind Site-Info"
963
+ msgstr ""
964
+
965
+ #: ../lib/pz-linkcard-settings.php:509 ../lib/pz-linkcard-settings.php:720
966
+ msgid "Thumbnail"
967
+ msgstr ""
968
+
969
+ #: ../lib/pz-linkcard-settings.php:512
970
+ msgid "Right Side"
971
+ msgstr ""
972
+
973
+ #: ../lib/pz-linkcard-settings.php:513
974
+ msgid "Left Side"
975
+ msgstr ""
976
+
977
+ #: ../lib/pz-linkcard-settings.php:521 ../lib/pz-linkcard-settings.php:543
978
+ msgid "Shadow"
979
+ msgstr ""
980
+
981
+ #: ../lib/pz-linkcard-settings.php:526
982
+ msgid "Hollow content area"
983
+ msgstr ""
984
+
985
+ #: ../lib/pz-linkcard-settings.php:531
986
+ msgid "Display excerpt"
987
+ msgstr ""
988
+
989
+ #: ../lib/pz-linkcard-settings.php:536
990
+ msgid "Hollow"
991
+ msgstr ""
992
+
993
+ #: ../lib/pz-linkcard-settings.php:548
994
+ msgid "Round a square"
995
+ msgstr ""
996
+
997
+ #: ../lib/pz-linkcard-settings.php:562
998
+ msgid "When the mouse is on"
999
+ msgstr ""
1000
+
1001
+ #: ../lib/pz-linkcard-settings.php:565
1002
+ msgid "Lighten"
1003
+ msgstr ""
1004
+
1005
+ #: ../lib/pz-linkcard-settings.php:566
1006
+ msgid "Hover (light)"
1007
+ msgstr ""
1008
+
1009
+ #: ../lib/pz-linkcard-settings.php:567
1010
+ msgid "Hover (dark)"
1011
+ msgstr ""
1012
+
1013
+ #: ../lib/pz-linkcard-settings.php:568
1014
+ msgid "Radius"
1015
+ msgstr ""
1016
+
1017
+ #: ../lib/pz-linkcard-settings.php:578
1018
+ msgid "Border"
1019
+ msgstr ""
1020
+
1021
+ #: ../lib/pz-linkcard-settings.php:582
1022
+ msgid "Solid"
1023
+ msgstr ""
1024
+
1025
+ #: ../lib/pz-linkcard-settings.php:583
1026
+ msgid "Dotted"
1027
+ msgstr ""
1028
+
1029
+ #: ../lib/pz-linkcard-settings.php:584
1030
+ msgid "Dashed"
1031
+ msgstr ""
1032
+
1033
+ #: ../lib/pz-linkcard-settings.php:585
1034
+ msgid "Double"
1035
+ msgstr ""
1036
+
1037
+ #: ../lib/pz-linkcard-settings.php:586
1038
+ msgid "Groove"
1039
+ msgstr ""
1040
+
1041
+ #: ../lib/pz-linkcard-settings.php:587
1042
+ msgid "Ridge"
1043
+ msgstr ""
1044
+
1045
+ #: ../lib/pz-linkcard-settings.php:588
1046
+ msgid "Inset"
1047
+ msgstr ""
1048
+
1049
+ #: ../lib/pz-linkcard-settings.php:589
1050
+ msgid "Outset"
1051
+ msgstr ""
1052
+
1053
+ #: ../lib/pz-linkcard-settings.php:596
1054
+ msgid "Reset Image Style"
1055
+ msgstr ""
1056
+
1057
+ #: ../lib/pz-linkcard-settings.php:597
1058
+ msgid ""
1059
+ "When unnecessary frame is displayed on the image, you can improve it by case"
1060
+ msgstr ""
1061
+
1062
+ #: ../lib/pz-linkcard-settings.php:601 ../lib/pz-linkcard-settings.php:639
1063
+ msgid "More Button"
1064
+ msgstr ""
1065
+
1066
+ #: ../lib/pz-linkcard-settings.php:605
1067
+ msgid "Text link"
1068
+ msgstr ""
1069
+
1070
+ #: ../lib/pz-linkcard-settings.php:606
1071
+ msgid "Simple button"
1072
+ msgstr ""
1073
+
1074
+ #: ../lib/pz-linkcard-settings.php:607
1075
+ msgid "Blue"
1076
+ msgstr ""
1077
+
1078
+ #: ../lib/pz-linkcard-settings.php:608
1079
+ msgid "Dark"
1080
+ msgstr ""
1081
+
1082
+ #: ../lib/pz-linkcard-settings.php:610
1083
+ msgid ""
1084
+ "It is recommended that you leave the card height blank when using this "
1085
+ "setting."
1086
+ msgstr ""
1087
+
1088
+ #: ../lib/pz-linkcard-settings.php:615
1089
+ msgid "Display SNS Count"
1090
+ msgstr ""
1091
+
1092
+ #: ../lib/pz-linkcard-settings.php:619
1093
+ msgid "Bihind Title"
1094
+ msgstr ""
1095
+
1096
+ #: ../lib/pz-linkcard-settings.php:622
1097
+ msgid "Twitter"
1098
+ msgstr ""
1099
+
1100
+ #: ../lib/pz-linkcard-settings.php:623
1101
+ msgid "Facebook"
1102
+ msgstr ""
1103
+
1104
+ #: ../lib/pz-linkcard-settings.php:624
1105
+ msgid "Hatena"
1106
+ msgstr ""
1107
+
1108
+ #: ../lib/pz-linkcard-settings.php:625
1109
+ msgid "Pocket"
1110
+ msgstr ""
1111
+
1112
+ #: ../lib/pz-linkcard-settings.php:632
1113
+ msgid "Letter Settings"
1114
+ msgstr ""
1115
+
1116
+ #: ../lib/pz-linkcard-settings.php:641 ../lib/pz-linkcard-settings.php:771
1117
+ msgid "Added Information"
1118
+ msgstr ""
1119
+
1120
+ #: ../lib/pz-linkcard-settings.php:650
1121
+ msgid "Color"
1122
+ msgstr ""
1123
+
1124
+ #: ../lib/pz-linkcard-settings.php:657
1125
+ msgid "Outline"
1126
+ msgstr ""
1127
+
1128
+ #: ../lib/pz-linkcard-settings.php:663
1129
+ msgid "Size"
1130
+ msgstr ""
1131
+
1132
+ #: ../lib/pz-linkcard-settings.php:672
1133
+ msgid "Length"
1134
+ msgstr ""
1135
+
1136
+ #: ../lib/pz-linkcard-settings.php:676
1137
+ msgid "No wrap"
1138
+ msgstr ""
1139
+
1140
+ #: ../lib/pz-linkcard-settings.php:684
1141
+ msgid "Resize"
1142
+ msgstr ""
1143
+
1144
+ #: ../lib/pz-linkcard-settings.php:685
1145
+ msgid "Adjust thumbnail and letter size according to width."
1146
+ msgstr ""
1147
+
1148
+ #: ../lib/pz-linkcard-settings.php:692
1149
+ msgid "External Link Settings"
1150
+ msgstr ""
1151
+
1152
+ #: ../lib/pz-linkcard-settings.php:693
1153
+ msgid "Internal Link Settings"
1154
+ msgstr ""
1155
+
1156
+ #: ../lib/pz-linkcard-settings.php:694
1157
+ msgid "Same Page Link Settings"
1158
+ msgstr ""
1159
+
1160
+ #: ../lib/pz-linkcard-settings.php:702
1161
+ msgid "Border Color"
1162
+ msgstr ""
1163
+
1164
+ #: ../lib/pz-linkcard-settings.php:709
1165
+ msgid "Background Color"
1166
+ msgstr ""
1167
+
1168
+ #: ../lib/pz-linkcard-settings.php:716
1169
+ msgid "Background Image"
1170
+ msgstr ""
1171
+
1172
+ #: ../lib/pz-linkcard-settings.php:724 ../lib/pz-linkcard-settings.php:741
1173
+ #: ../lib/pz-linkcard-settings.php:758 ../lib/pz-linkcard-settings.php:778
1174
+ #: ../lib/pz-linkcard-settings.php:789 ../lib/pz-linkcard-settings.php:805
1175
+ #: ../lib/pz-linkcard-settings.php:835
1176
+ msgid "It is common with setting Internal-link"
1177
+ msgstr ""
1178
+
1179
+ #: ../lib/pz-linkcard-settings.php:729 ../lib/pz-linkcard-settings.php:763
1180
+ msgid "Direct"
1181
+ msgstr ""
1182
+
1183
+ #: ../lib/pz-linkcard-settings.php:730 ../lib/pz-linkcard-settings.php:764
1184
+ msgid "Use WebAPI"
1185
+ msgstr ""
1186
+
1187
+ #: ../lib/pz-linkcard-settings.php:731 ../lib/pz-linkcard-settings.php:765
1188
+ msgid "Use WebAPI ,if can not direct"
1189
+ msgstr ""
1190
+
1191
+ #: ../lib/pz-linkcard-settings.php:737
1192
+ msgid "Thumbnail Size"
1193
+ msgstr ""
1194
+
1195
+ #: ../lib/pz-linkcard-settings.php:745
1196
+ msgid "Thumbnail (150px)"
1197
+ msgstr ""
1198
+
1199
+ #: ../lib/pz-linkcard-settings.php:746
1200
+ msgid "Medium (300px)"
1201
+ msgstr ""
1202
+
1203
+ #: ../lib/pz-linkcard-settings.php:747
1204
+ msgid "Large (1024px)"
1205
+ msgstr ""
1206
+
1207
+ #: ../lib/pz-linkcard-settings.php:748
1208
+ msgid "Full size"
1209
+ msgstr ""
1210
+
1211
+ #: ../lib/pz-linkcard-settings.php:754
1212
+ msgid "Site Icon"
1213
+ msgstr ""
1214
+
1215
+ #: ../lib/pz-linkcard-settings.php:775
1216
+ msgid "Text of More Button"
1217
+ msgstr ""
1218
+
1219
+ #: ../lib/pz-linkcard-settings.php:785
1220
+ msgid "Open New Window/Tab"
1221
+ msgstr ""
1222
+
1223
+ #: ../lib/pz-linkcard-settings.php:794
1224
+ msgid "All client"
1225
+ msgstr ""
1226
+
1227
+ #: ../lib/pz-linkcard-settings.php:795
1228
+ msgid "Other than mobile"
1229
+ msgstr ""
1230
+
1231
+ #: ../lib/pz-linkcard-settings.php:801
1232
+ msgid "Get Contents"
1233
+ msgstr ""
1234
+
1235
+ #: ../lib/pz-linkcard-settings.php:809
1236
+ msgid "Always get the latest from the content"
1237
+ msgstr ""
1238
+
1239
+ #: ../lib/pz-linkcard-settings.php:810
1240
+ msgid "Always get the latest from the excerpt"
1241
+ msgstr ""
1242
+
1243
+ #: ../lib/pz-linkcard-settings.php:811
1244
+ msgid "Initially acquired only from the content"
1245
+ msgstr ""
1246
+
1247
+ #: ../lib/pz-linkcard-settings.php:818
1248
+ msgid "Set NoFollow"
1249
+ msgstr ""
1250
+
1251
+ #: ../lib/pz-linkcard-settings.php:819
1252
+ msgid "In the case of an external site, it puts the \"nofollow\"."
1253
+ msgstr ""
1254
+
1255
+ #: ../lib/pz-linkcard-settings.php:822
1256
+ msgid "Set NoOpener"
1257
+ msgstr ""
1258
+
1259
+ #: ../lib/pz-linkcard-settings.php:823
1260
+ msgid "In the case of an external site, it puts the \"noopener\"."
1261
+ msgstr ""
1262
+
1263
+ #: ../lib/pz-linkcard-settings.php:826
1264
+ msgid "Use HatenaBlogCard"
1265
+ msgstr ""
1266
+
1267
+ #: ../lib/pz-linkcard-settings.php:827
1268
+ msgid "External links will use Always HatenaBlogCard."
1269
+ msgstr ""
1270
+
1271
+ #: ../lib/pz-linkcard-settings.php:831
1272
+ msgid "Retry Get PID"
1273
+ msgstr ""
1274
+
1275
+ #: ../lib/pz-linkcard-settings.php:837
1276
+ msgid "When the `Post ID` can not be acquired, it is acquired again."
1277
+ msgstr ""
1278
+
1279
+ #: ../lib/pz-linkcard-settings.php:848
1280
+ msgid "Link Check Settings"
1281
+ msgstr ""
1282
+
1283
+ #: ../lib/pz-linkcard-settings.php:851
1284
+ msgid "Relative URL"
1285
+ msgstr ""
1286
+
1287
+ #: ../lib/pz-linkcard-settings.php:852
1288
+ msgid "For relative-specified URLs, complement the site URL."
1289
+ msgstr ""
1290
+
1291
+ #: ../lib/pz-linkcard-settings.php:855
1292
+ msgid "Do Not Link at Error"
1293
+ msgstr ""
1294
+
1295
+ #: ../lib/pz-linkcard-settings.php:856
1296
+ msgid "When access status is \"403\", \"404\", \"410\", unlink."
1297
+ msgstr ""
1298
+
1299
+ #: ../lib/pz-linkcard-settings.php:859
1300
+ msgid "Disable SSL Verification"
1301
+ msgstr ""
1302
+
1303
+ #: ../lib/pz-linkcard-settings.php:860
1304
+ msgid "Try setting if the contents of the SSL site can not be acquired."
1305
+ msgstr ""
1306
+
1307
+ #: ../lib/pz-linkcard-settings.php:863
1308
+ msgid "Follow Location"
1309
+ msgstr ""
1310
+
1311
+ #: ../lib/pz-linkcard-settings.php:864
1312
+ msgid "Track when the link destination is redirected."
1313
+ msgstr ""
1314
+
1315
+ #: ../lib/pz-linkcard-settings.php:867
1316
+ msgid "Set Referer"
1317
+ msgstr ""
1318
+
1319
+ #: ../lib/pz-linkcard-settings.php:868
1320
+ msgid "Notify the article URL to the link destination."
1321
+ msgstr ""
1322
+
1323
+ #: ../lib/pz-linkcard-settings.php:871
1324
+ msgid "Use User-Agent"
1325
+ msgstr ""
1326
+
1327
+ #: ../lib/pz-linkcard-settings.php:873
1328
+ msgid "Notify using Pz-LinkCard to the link destination."
1329
+ msgstr ""
1330
+
1331
+ #: ../lib/pz-linkcard-settings.php:878
1332
+ msgid "Broken Link Checker"
1333
+ msgstr ""
1334
+
1335
+ #: ../lib/pz-linkcard-settings.php:879
1336
+ msgid "Alive confirmation of the link destination."
1337
+ msgstr ""
1338
+
1339
+ #: ../lib/pz-linkcard-settings.php:882
1340
+ msgid "Broken Link Count"
1341
+ msgstr ""
1342
+
1343
+ #: ../lib/pz-linkcard-settings.php:883
1344
+ msgid "The number of broken links is displayed next to the submenu."
1345
+ msgstr ""
1346
+
1347
+ #: ../lib/pz-linkcard-settings.php:889
1348
+ msgid "Editor Settings"
1349
+ msgstr ""
1350
+
1351
+ #: ../lib/pz-linkcard-settings.php:892
1352
+ msgid "Convert from Text Link"
1353
+ msgstr ""
1354
+
1355
+ #: ../lib/pz-linkcard-settings.php:893
1356
+ msgid "Convert lines with text link only to Linkcard."
1357
+ msgstr ""
1358
+
1359
+ #: ../lib/pz-linkcard-settings.php:896
1360
+ msgid "Convert from URL"
1361
+ msgstr ""
1362
+
1363
+ #: ../lib/pz-linkcard-settings.php:897
1364
+ msgid "Convert lines with URL only to Linkcard."
1365
+ msgstr ""
1366
+
1367
+ #: ../lib/pz-linkcard-settings.php:900
1368
+ msgid "External Link Only"
1369
+ msgstr ""
1370
+
1371
+ #: ../lib/pz-linkcard-settings.php:901
1372
+ msgid "Convert only external links."
1373
+ msgstr ""
1374
+
1375
+ #: ../lib/pz-linkcard-settings.php:905
1376
+ msgid "Do Shortcode"
1377
+ msgstr ""
1378
+
1379
+ #: ../lib/pz-linkcard-settings.php:906
1380
+ msgid "Force shortcode development."
1381
+ msgstr ""
1382
+
1383
+ #: ../lib/pz-linkcard-settings.php:910
1384
+ msgid "Add Insert Button"
1385
+ msgstr ""
1386
+
1387
+ #: ../lib/pz-linkcard-settings.php:911
1388
+ msgid "Add insert button to visual editor."
1389
+ msgstr ""
1390
+
1391
+ #: ../lib/pz-linkcard-settings.php:914
1392
+ msgid "Add Quick Tag"
1393
+ msgstr ""
1394
+
1395
+ #: ../lib/pz-linkcard-settings.php:915
1396
+ msgid "Add quick tag button to text editor."
1397
+ msgstr ""
1398
+
1399
+ #: ../lib/pz-linkcard-settings.php:919
1400
+ msgid "ShortCode 1"
1401
+ msgstr ""
1402
+
1403
+ #: ../lib/pz-linkcard-settings.php:921 ../lib/pz-linkcard-settings.php:939
1404
+ #: ../lib/pz-linkcard-settings.php:944 ../lib/pz-linkcard-settings.php:949
1405
+ msgid "Case-sensitive"
1406
+ msgstr ""
1407
+
1408
+ #: ../lib/pz-linkcard-settings.php:924
1409
+ msgid "Use InLineText"
1410
+ msgstr ""
1411
+
1412
+ #: ../lib/pz-linkcard-settings.php:928
1413
+ msgid "No use"
1414
+ msgstr ""
1415
+
1416
+ #: ../lib/pz-linkcard-settings.php:929
1417
+ msgid "Use to excerpt"
1418
+ msgstr ""
1419
+
1420
+ #: ../lib/pz-linkcard-settings.php:930
1421
+ msgid "Use to title"
1422
+ msgstr ""
1423
+
1424
+ #: ../lib/pz-linkcard-settings.php:933
1425
+ msgid "This setting applies only to the Shortcode1"
1426
+ msgstr ""
1427
+
1428
+ #: ../lib/pz-linkcard-settings.php:937
1429
+ msgid "ShortCode 2"
1430
+ msgstr ""
1431
+
1432
+ #: ../lib/pz-linkcard-settings.php:942
1433
+ msgid "ShortCode 3"
1434
+ msgstr ""
1435
+
1436
+ #: ../lib/pz-linkcard-settings.php:947
1437
+ msgid "ShortCode 4"
1438
+ msgstr ""
1439
+
1440
+ #: ../lib/pz-linkcard-settings.php:952
1441
+ msgid "Parameters"
1442
+ msgstr ""
1443
+
1444
+ #: ../lib/pz-linkcard-settings.php:955
1445
+ msgid ""
1446
+ "For any shortcode you can change the title and excerpt with `title` "
1447
+ "parameter and `content` parameter"
1448
+ msgstr ""
1449
+
1450
+ #: ../lib/pz-linkcard-settings.php:962
1451
+ msgid "Multi Site Settings"
1452
+ msgstr ""
1453
+
1454
+ #: ../lib/pz-linkcard-settings.php:968
1455
+ msgid "Disabled"
1456
+ msgstr ""
1457
+
1458
+ #: ../lib/pz-linkcard-settings.php:969
1459
+ msgid "Enabled"
1460
+ msgstr ""
1461
+
1462
+ #: ../lib/pz-linkcard-settings.php:971 ../lib/pz-linkcard-settings.php:981
1463
+ msgid "Cannot be changed"
1464
+ msgstr ""
1465
+
1466
+ #: ../lib/pz-linkcard-settings.php:975
1467
+ msgid "Type"
1468
+ msgstr ""
1469
+
1470
+ #: ../lib/pz-linkcard-settings.php:978
1471
+ msgid "Subdirectories"
1472
+ msgstr ""
1473
+
1474
+ #: ../lib/pz-linkcard-settings.php:979
1475
+ msgid "Subdomains"
1476
+ msgstr ""
1477
+
1478
+ #: ../lib/pz-linkcard-settings.php:985
1479
+ msgid "Current Blog ID"
1480
+ msgstr ""
1481
+
1482
+ #: ../lib/pz-linkcard-settings.php:991
1483
+ msgid "Number of Sites"
1484
+ msgstr ""
1485
+
1486
+ #: ../lib/pz-linkcard-settings.php:998
1487
+ msgid "Site List"
1488
+ msgstr ""
1489
+
1490
+ #: ../lib/pz-linkcard-settings.php:1002
1491
+ msgid "Current"
1492
+ msgstr ""
1493
+
1494
+ #: ../lib/pz-linkcard-settings.php:1003
1495
+ msgid "Blog ID"
1496
+ msgstr ""
1497
+
1498
+ #: ../lib/pz-linkcard-settings.php:1024
1499
+ msgid "Advanced Settings"
1500
+ msgstr ""
1501
+
1502
+ #: ../lib/pz-linkcard-settings.php:1027
1503
+ msgid "Trailing Slash"
1504
+ msgstr ""
1505
+
1506
+ #: ../lib/pz-linkcard-settings.php:1030
1507
+ msgid "As it"
1508
+ msgstr ""
1509
+
1510
+ #: ../lib/pz-linkcard-settings.php:1031
1511
+ msgid "When only domain name, remove"
1512
+ msgstr ""
1513
+
1514
+ #: ../lib/pz-linkcard-settings.php:1032
1515
+ msgid "Always remove"
1516
+ msgstr ""
1517
+
1518
+ #: ../lib/pz-linkcard-settings.php:1037
1519
+ msgid "Class ID to be Added (for PC)"
1520
+ msgstr ""
1521
+
1522
+ #: ../lib/pz-linkcard-settings.php:1041
1523
+ msgid "Class ID to be Added (for Mobile)"
1524
+ msgstr ""
1525
+
1526
+ #: ../lib/pz-linkcard-settings.php:1046
1527
+ msgid "Compress"
1528
+ msgstr ""
1529
+
1530
+ #: ../lib/pz-linkcard-settings.php:1047
1531
+ msgid "Compress CSS and JavaScript to improve access speed."
1532
+ msgstr ""
1533
+
1534
+ #: ../lib/pz-linkcard-settings.php:1052
1535
+ msgid "Display the file menu on the card management screen."
1536
+ msgstr ""
1537
+
1538
+ #: ../lib/pz-linkcard-settings.php:1056
1539
+ msgid "Initialize Tab"
1540
+ msgstr ""
1541
+
1542
+ #: ../lib/pz-linkcard-settings.php:1057
1543
+ msgid "Display the initialize tab on the settings screen."
1544
+ msgstr ""
1545
+
1546
+ #: ../lib/pz-linkcard-settings.php:1061
1547
+ msgid "Google AMP URL"
1548
+ msgstr ""
1549
+
1550
+ #: ../lib/pz-linkcard-settings.php:1062
1551
+ msgid "If the URL is AMP, display simple."
1552
+ msgstr ""
1553
+
1554
+ #: ../lib/pz-linkcard-settings.php:1066
1555
+ msgid "Hide URL Error"
1556
+ msgstr ""
1557
+
1558
+ #: ../lib/pz-linkcard-settings.php:1067
1559
+ msgid "Do not display an error on the admin page."
1560
+ msgstr ""
1561
+
1562
+ #: ../lib/pz-linkcard-settings.php:1071
1563
+ msgid "Saved Datetime"
1564
+ msgstr ""
1565
+
1566
+ #: ../lib/pz-linkcard-settings.php:1079
1567
+ msgid "Survey Mode"
1568
+ msgstr ""
1569
+
1570
+ #: ../lib/pz-linkcard-settings.php:1080
1571
+ msgid "Outputs some events and setting information to a log file."
1572
+ msgstr ""
1573
+
1574
+ #: ../lib/pz-linkcard-settings.php:1083
1575
+ msgid "Administrator Mode"
1576
+ msgstr ""
1577
+
1578
+ #: ../lib/pz-linkcard-settings.php:1084
1579
+ msgid ""
1580
+ "Display information that is not normally needed or open special settings."
1581
+ msgstr ""
1582
+
1583
+ #: ../lib/pz-linkcard-settings.php:1087
1584
+ msgid "Develop Mode"
1585
+ msgstr ""
1586
+
1587
+ #: ../lib/pz-linkcard-settings.php:1095
1588
+ msgid "Stylesheet Settings"
1589
+ msgstr ""
1590
+
1591
+ #: ../lib/pz-linkcard-settings.php:1098
1592
+ msgid "Stylesheet URL"
1593
+ msgstr ""
1594
+
1595
+ #: ../lib/pz-linkcard-settings.php:1101 ../lib/pz-linkcard-settings.php:1132
1596
+ msgid "Schemes (http and https) are omitted."
1597
+ msgstr ""
1598
+
1599
+ #: ../lib/pz-linkcard-settings.php:1105
1600
+ msgid "Stylesheet URL to Add"
1601
+ msgstr ""
1602
+
1603
+ #: ../lib/pz-linkcard-settings.php:1106 ../lib/pz-linkcard-settings.php:1167
1604
+ #: ../lib/pz-linkcard-settings.php:1176
1605
+ msgid "ex."
1606
+ msgstr ""
1607
+
1608
+ #: ../lib/pz-linkcard-settings.php:1109
1609
+ msgid "Stylesheet Text to Add"
1610
+ msgstr ""
1611
+
1612
+ #: ../lib/pz-linkcard-settings.php:1113
1613
+ msgid "Stylesheet Version"
1614
+ msgstr ""
1615
+
1616
+ #: ../lib/pz-linkcard-settings.php:1117
1617
+ msgid "Stylesheet File"
1618
+ msgstr ""
1619
+
1620
+ #: ../lib/pz-linkcard-settings.php:1121
1621
+ msgid "Stylesheet Templete File"
1622
+ msgstr ""
1623
+
1624
+ #: ../lib/pz-linkcard-settings.php:1126
1625
+ msgid "Image Settings"
1626
+ msgstr ""
1627
+
1628
+ #: ../lib/pz-linkcard-settings.php:1129
1629
+ msgid "Image Cache URL"
1630
+ msgstr ""
1631
+
1632
+ #: ../lib/pz-linkcard-settings.php:1133 ../lib/pz-linkcard-settings.php:1150
1633
+ msgid "Used"
1634
+ msgstr ""
1635
+
1636
+ #: ../lib/pz-linkcard-settings.php:1133 ../lib/pz-linkcard-settings.php:1150
1637
+ msgid ": "
1638
+ msgstr ""
1639
+
1640
+ #: ../lib/pz-linkcard-settings.php:1137
1641
+ msgid "Image Cache Directory"
1642
+ msgstr ""
1643
+
1644
+ #: ../lib/pz-linkcard-settings.php:1144
1645
+ msgid "Survey Settings"
1646
+ msgstr ""
1647
+
1648
+ #: ../lib/pz-linkcard-settings.php:1147
1649
+ msgid "Log URL"
1650
+ msgstr ""
1651
+
1652
+ #: ../lib/pz-linkcard-settings.php:1154
1653
+ msgid "Log Directory"
1654
+ msgstr ""
1655
+
1656
+ #: ../lib/pz-linkcard-settings.php:1161
1657
+ msgid "Web-API Settings"
1658
+ msgstr ""
1659
+
1660
+ #: ../lib/pz-linkcard-settings.php:1164
1661
+ msgid "Site Icon API"
1662
+ msgstr ""
1663
+
1664
+ #: ../lib/pz-linkcard-settings.php:1167
1665
+ msgid "%DOMAIN% replace to domain name."
1666
+ msgstr ""
1667
+
1668
+ #: ../lib/pz-linkcard-settings.php:1167
1669
+ msgid "%DOMAIN_URL% replace to domain URL."
1670
+ msgstr ""
1671
+
1672
+ #: ../lib/pz-linkcard-settings.php:1167 ../lib/pz-linkcard-settings.php:1176
1673
+ msgid "%URL% replace to URL."
1674
+ msgstr ""
1675
+
1676
+ #: ../lib/pz-linkcard-settings.php:1168 ../lib/pz-linkcard-settings.php:1177
1677
+ msgid "ex1."
1678
+ msgstr ""
1679
+
1680
+ #: ../lib/pz-linkcard-settings.php:1169 ../lib/pz-linkcard-settings.php:1178
1681
+ msgid "ex2."
1682
+ msgstr ""
1683
+
1684
+ #: ../lib/pz-linkcard-settings.php:1173
1685
+ msgid "Thumbnail API"
1686
+ msgstr ""
1687
+
1688
+ #: ../lib/pz-linkcard-settings.php:1188
1689
+ msgid "Initialize Settings"
1690
+ msgstr ""
1691
+
1692
+ #: ../lib/pz-linkcard-settings.php:1190
1693
+ msgid "Perform Initialization"
1694
+ msgstr ""
1695
+
1696
+ #: ../lib/pz-linkcard-settings.php:1191
1697
+ msgid "Reset the \"Settings\" to the initial value."
1698
+ msgstr ""
1699
+
1700
+ #: ../lib/pz-linkcard-settings.php:1195
1701
+ msgid "Initialize Operation"
1702
+ msgstr ""
1703
+
1704
+ #: ../lib/pz-linkcard-settings.php:1197
1705
+ msgid "Perform a Reboot"
1706
+ msgstr ""
1707
+
1708
+ #: ../lib/pz-linkcard-settings.php:1198
1709
+ msgid "Perform initial setup."
1710
+ msgstr ""
1711
+
1712
+ #: ../lib/pz-linkcard-settings.php:1198
1713
+ msgid "\"Settings\" will not be initialized."
1714
+ msgstr ""
1715
+
1716
+ #: ../lib/pz-linkcard-settings.php:1202
1717
+ msgid "Initialization Exception"
1718
+ msgstr ""
1719
+
1720
+ #: ../lib/pz-linkcard-settings.php:1203
1721
+ msgid "Do not initialize \"Survey Mode\" and \"Administrator Mode\"."
1722
+ msgstr ""
1723
+
1724
+ #: ../lib/pz-linkcard-style.php:635
1725
+ msgid "Succeeded in saving the Stylesheet."
1726
+ msgstr ""
1727
+
1728
+ #: ../lib/pz-linkcard-style.php:637
1729
+ msgid "Failed to save Stylesheet."
1730
+ msgstr ""
1731
+
1732
+ #: ../lib/pz-linkcard-style.php:640
1733
+ msgid "Failed to call the Stylesheet template."
1734
+ msgstr ""
1735
+
1736
+ #: ../pz-linkcard.php:408
1737
+ msgid "-"
1738
+ msgstr ""
1739
+
1740
+ #: ../pz-linkcard.php:408
1741
+ msgid "Incorrect URL specification."
1742
+ msgstr ""
1743
+
1744
+ #: ../pz-linkcard.php:1529 ../pz-linkcard.php:1533
1745
+ msgid "Category"
1746
+ msgstr ""
1747
+
1748
+ #: ../pz-linkcard.php:1529 ../pz-linkcard.php:1533 ../pz-linkcard.php:1546
1749
+ #: ../pz-linkcard.php:1550
1750
+ msgid "‘"
1751
+ msgstr ""
1752
+
1753
+ #: ../pz-linkcard.php:1529 ../pz-linkcard.php:1533 ../pz-linkcard.php:1546
1754
+ #: ../pz-linkcard.php:1550
1755
+ msgid "’"
1756
+ msgstr ""
1757
+
1758
+ #: ../pz-linkcard.php:1530 ../pz-linkcard.php:1547
1759
+ msgid "Count"
1760
+ msgstr ""
1761
+
1762
+ #: ../pz-linkcard.php:1534 ../pz-linkcard.php:1551
1763
+ msgid "Not Found"
1764
+ msgstr ""
1765
+
1766
+ #: ../pz-linkcard.php:1546 ../pz-linkcard.php:1550
1767
+ msgid "Tag"
1768
+ msgstr ""
1769
+
1770
+ #: ../pz-linkcard.php:2164
1771
+ msgid "Linkcard"
1772
+ msgstr ""
1773
+
1774
+ #: ../pz-linkcard.php:2164
1775
+ msgid "Make Linkcard"
1776
+ msgstr ""
1777
+
1778
+ #: ../pz-linkcard.php:2175
1779
+ msgid "Invalid URL parameter in "
1780
+ msgstr ""
1781
+
1782
+ #: ../pz-linkcard.php:2175
1783
+ msgid ""
1784
+ "You can cancel this message from <a href=\"./options-general.php?page=pz-"
1785
+ "linkcard-settings\">the setting screen</a>."
1786
+ msgstr ""
1787
+
1788
+ #: ../pz-linkcard.php:2196
1789
+ msgid "Pz LkC Cache"
1790
+ msgstr ""
1791
+
1792
+ #: ../pz-linkcard.php:2197
1793
+ msgid "Pz LinkCard"
1794
+ msgstr ""
1795
+
1796
+ #: ../pz-linkcard.php:2221
1797
+ msgid "Settings"
1798
+ msgstr ""
1799
+
1800
+ #: ../pz-linkcard.php:2221
1801
+ msgid "Manage"
1802
+ msgstr ""
lib/pz-linkcard-cacheman-edit.php CHANGED
@@ -1,132 +1,158 @@
1
- <?php if (!function_exists("get_option")) die; ?>
 
 
 
 
2
  <!-- 編集用フォーム -->
3
- <form action="" method="post">
4
  <?php wp_nonce_field('pz_cacheman'); ?>
5
- <input type="hidden" name="page" value="pz-linkcard-cache">
6
- <input type="hidden" name="paged" value="<?php echo $page_now; ?>">
7
- <input type="hidden" name="refine" value="<?php echo $refine; ?>">
8
- <input type="hidden" name="link_type" value="<?php echo $link_type; ?>">
9
- <input type="hidden" name="orderby" value="<?php echo $orderby; ?>">
10
- <input type="hidden" name="order" value="<?php echo $order; ?>">
11
  <div>
12
  <table name="cachelist" class="wp-list-table widefat fixed">
13
  <tr>
14
- <th style="width: 12em;"><?php _e('ID', $this->text_domain) ?></th>
15
- <td><input name="data[id]" type="text" id="inputtext" value="<?php echo $data['id']; ?>" size="5" readonly="readonly" /></td>
16
- </tr>
17
- <tr style="display: none;">
18
- <th><?php _e('URL key', $this->text_domain) ?></th>
19
- <td><input name="key_text" type="text" id="inputtext" value="<?php echo bin2hex($data['url_key']); ?>" size="71" readonly="readonly" /></td>
20
  </tr>
21
  <tr>
22
- <th><?php _e('URL', $this->text_domain) ?></th>
23
- <td><input name="data[url]" type="text" id="inputtext" value="<?php echo $data['url']; ?>" size="71" readonly="readonly" /></td>
24
  </tr>
25
- <tr>
26
- <th><?php _e('Site name', $this->text_domain) ?></th>
27
- <td><input name="data[site_name]" type="text" id="inputtext" value="<?php echo esc_attr($data['site_name']); ?>" size="71" /></td>
 
 
 
 
 
 
 
 
28
  </tr>
29
  <tr>
30
- <th><?php _e('Domain', $this->text_domain) ?></th>
31
- <td><input name="data[domain]" type="text" id="inputtext" value="<?php echo $data['domain']; ?>" size="71" readonly="readonly" /></td>
32
  </tr>
33
  <tr>
34
- <th><?php _e('Title', $this->text_domain) ?></th>
35
- <td><input name="data[title]" type="text" id="inputtext" value="<?php echo esc_attr($data['title']); ?>" size="71" /></td>
 
 
 
 
 
 
 
 
36
  </tr>
37
  <tr>
38
- <th><?php _e('Excerpt', $this->text_domain) ?></th>
39
- <td><input name="data[excerpt]" type="text" id="inputtext" value="<?php echo esc_attr($data['excerpt']); ?>" size="71" /></td>
 
 
 
 
 
 
 
 
40
  </tr>
41
  <tr>
42
- <th><?php _e('Charset', $this->text_domain) ?></th>
43
- <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>
 
 
 
 
44
  </tr>
45
  <tr>
46
- <th><?php _e('Thumbnail URL', $this->text_domain) ?></th>
47
- <td><input name="data[thumbnail]" type="text" id="inputtext" value="<?php echo $data['thumbnail']; ?>" size="71" readonly="readonly" ondblclick="this.readOnly=false;" /></td>
48
  </tr>
49
  <tr>
50
- <th><?php _e('Favicon URL', $this->text_domain) ?></th>
51
- <td><input name="data[favicon]" type="text" id="inputtext" value="<?php echo $data['favicon']; ?>" size="71" readonly="readonly" ondblclick="this.readOnly=false;" /></td>
52
  </tr>
53
  <tr>
54
- <th><?php _e('Result code', $this->text_domain) ?></th>
55
- <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>
56
  </tr>
57
- <?php
58
- // 記事IDの再取得(時間がかかるので未実行)
59
- $use_post_id_t = array();
60
- if ($data['use_post_id1'] > 0) {
61
- $use_post_id_t[] = $data['use_post_id1'];
62
- }
63
- if ($data['use_post_id2'] > 0) {
64
- $use_post_id_t[] = $data['use_post_id2'];
65
- }
66
- if ($data['use_post_id3'] > 0) {
67
- $use_post_id_t[] = $data['use_post_id3'];
68
- }
69
- if ($data['use_post_id4'] > 0) {
70
- $use_post_id_t[] = $data['use_post_id4'];
71
- }
72
- if ($data['use_post_id5'] > 0) {
73
- $use_post_id_t[] = $data['use_post_id5'];
74
- }
75
- if ($data['use_post_id6'] > 0) {
76
- $use_post_id_t[] = $data['use_post_id6'];
77
- }
78
- $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'].'"' ));
79
- foreach($use_post_id_m as $use_post_id) {
80
- $use_post_id_t[] = $use_post_id->id;
81
- }
82
- $use_post_id_t = array_unique($use_post_id_t);
83
- $use_post_id_t = array_values($use_post_id_t);
84
- $data['use_post_id1'] = isset($use_post_id_t[0]) ? $use_post_id_t[0] : '' ;
85
- $data['use_post_id2'] = isset($use_post_id_t[1]) ? $use_post_id_t[1] : '' ;
86
- $data['use_post_id3'] = isset($use_post_id_t[2]) ? $use_post_id_t[2] : '' ;
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>
95
- <td><input name="data[use_post_id1]" type="text" id="inputtext" value="<?php echo $data['use_post_id1']; ?>" size="5" readonly="readonly" ondblclick="this.readOnly=false;" />
96
- <input name="data[use_post_id2]" type="text" id="inputtext" value="<?php echo $data['use_post_id2']; ?>" size="5" readonly="readonly" ondblclick="this.readOnly=false;" />
97
- <input name="data[use_post_id3]" type="text" id="inputtext" value="<?php echo $data['use_post_id3']; ?>" size="5" readonly="readonly" ondblclick="this.readOnly=false;" />
98
- <input name="data[use_post_id4]" type="text" id="inputtext" value="<?php echo $data['use_post_id4']; ?>" size="5" readonly="readonly" ondblclick="this.readOnly=false;" />
99
- <input name="data[use_post_id5]" type="text" id="inputtext" value="<?php echo $data['use_post_id5']; ?>" size="5" readonly="readonly" ondblclick="this.readOnly=false;" />
100
- <input name="data[use_post_id6]" type="text" id="inputtext" value="<?php echo $data['use_post_id6']; ?>" size="5" readonly="readonly" ondblclick="this.readOnly=false;" /></td>
101
  </tr>
102
  <tr>
103
- <th><?php _e('SNS', $this->text_domain) ?></th>
104
  <td>
105
- <?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" />
106
- <?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" />
107
- <?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" />
108
- <?php _e('Po', $this->text_domain) ?>:<input name="data[sns_pocket]" type="text" id="inputtext" value="<?php echo $data['sns_pocket']; ?>" size="5" readonly="readonly" />
 
 
109
  </td>
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>
125
- <td><input name="data[regist]" type="text" id="inputtext" value="<?php echo $data['regist']; ?>" size="17" readonly="readonly" /></td>
126
  </tr>
127
  <tr>
128
  <th></th>
129
- <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>
130
  </tr>
131
  </table>
132
  </div>
1
+ <?php if (!function_exists('get_option' ) ) die; ?>
2
+ <?php
3
+ // 日時のフォーマット
4
+ $datetime_format = get_option('date_format' ).' '.get_option('time_format' );
5
+ ?>
6
  <!-- 編集用フォーム -->
7
+ <form method="post">
8
  <?php wp_nonce_field('pz_cacheman'); ?>
9
+ <input type="hidden" name="page" value="pz-linkcard-cache">
10
+ <input type="hidden" name="paged" value="<?php echo $page_now; ?>">
11
+ <input type="hidden" name="refine" value="<?php echo $refine; ?>">
12
+ <input type="hidden" name="extraction" value="<?php echo $extraction; ?>">
13
+ <input type="hidden" name="orderby" value="<?php echo $orderby; ?>">
14
+ <input type="hidden" name="order" value="<?php echo $order; ?>">
15
  <div>
16
  <table name="cachelist" class="wp-list-table widefat fixed">
17
  <tr>
18
+ <th style="width: 12em;"><?php _e('ID', $this->text_domain ) ?></th>
19
+ <td><input name="data[id]" type="text" value="<?php echo esc_attr($data['id'] ); ?>" size="5" readonly="readonly" /></td>
 
 
 
 
20
  </tr>
21
  <tr>
22
+ <th><?php _e('URL', $this->text_domain ) ?></th>
23
+ <td><input name="data[url]" type="url" value="<?php echo esc_attr($data['url'] ); ?>" size="80" readonly="readonly" /></td>
24
  </tr>
25
+ <tr class="pz-admin-only">
26
+ <th><?php _e('Redirect URL', $this->text_domain ) ?></th>
27
+ <td><input name="data[url_redir]" type="url" value="<?php echo esc_attr($data['url_redir'] ); ?>" size="80" readonly="readonly" /></td>
28
+ </tr>
29
+ <tr class="pz-admin-only">
30
+ <th><?php _e('URL Key', $this->text_domain ) ?></th>
31
+ <td><input name="data[url_key]" type="text" value="<?php echo bin2hex($data['url_key'] ); ?>" size="80" readonly="readonly" /></td>
32
+ </tr>
33
+ <tr class="pz-admin-only">
34
+ <th><?php _e('Scheme', $this->text_domain ) ?></th>
35
+ <td><input name="data[scheme]" type="text" value="<?php echo esc_attr($data['scheme'] ); ?>" size="80" readonly="readonly" /></td>
36
  </tr>
37
  <tr>
38
+ <th><?php _e('Site Name', $this->text_domain ) ?></th>
39
+ <td><input name="data[site_name]" type="text" value="<?php echo esc_attr($data['site_name'] ); ?>" size="80" /></td>
40
  </tr>
41
  <tr>
42
+ <th><?php _e('Domain', $this->text_domain ) ?></th>
43
+ <?php if (function_exists('idn_to_utf8' ) && substr($data['domain'], 0, 4 ) == 'xn--' ) { ?>
44
+ <td><input name="data[domain]" type="text" value="<?php echo $data['domain']; ?>" size="40" readonly="readonly" />&nbsp;<input name="data[domain]" type="text" value="<?php echo idn_to_utf8($data['domain'] ); ?>" size="31" readonly="readonly" /></td>
45
+ <?php } else { ?>
46
+ <td><input name="data[domain]" type="text" value="<?php echo $data['domain']; ?>" size="80" readonly="readonly" /></td>
47
+ <?php } ?>
48
+ </tr>
49
+ <tr class="pz-admin-only">
50
+ <th><?php _e('Registration Title', $this->text_domain ) ?></th>
51
+ <td><input name="data[regist_title]" type="text" value="<?php echo esc_attr($data['regist_title'] ); ?>" size="80" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> /></td>
52
  </tr>
53
  <tr>
54
+ <th><?php _e('Title', $this->text_domain ) ?></th>
55
+ <td><input name="data[title]" type="text" value="<?php echo esc_attr($data['title'] ); ?>" size="80" /></td>
56
+ </tr>
57
+ <tr class="pz-admin-only">
58
+ <th><?php _e('Modify Title', $this->text_domain ) ?></th>
59
+ <td><input name="data[mod_title]" type="text" value="<?php echo ($data['title'] <> $data['regist_title'] ? true : false ); ?>" size="1" readonly="readonly" /></td>
60
+ </tr>
61
+ <tr class="pz-admin-only">
62
+ <th><?php _e('Registration Excerpt', $this->text_domain ) ?></th>
63
+ <td><textarea name="data[regist_excerpt]" cols="83" rows="5" wrap="soft" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?>><?php echo esc_attr($data['regist_excerpt'] ); ?></textarea></td>
64
  </tr>
65
  <tr>
66
+ <th><?php _e('Excerpt', $this->text_domain ) ?></th>
67
+ <td><textarea name="data[excerpt]" cols="83" rows="5" wrap="soft"><?php echo esc_attr($data['excerpt'] ); ?></textarea></td>
68
+ </tr>
69
+ <tr class="pz-admin-only">
70
+ <th><?php _e('Modify Excerpt', $this->text_domain ) ?></th>
71
+ <td><input name="data[mod_excerpt]" type="text" value="<?php echo ($data['excerpt'] <> $data['regist_excerpt'] ? true : false ); ?>" size="1" readonly="readonly" /></td>
72
  </tr>
73
  <tr>
74
+ <th><?php _e('Character Set', $this->text_domain ) ?></th>
75
+ <td><?php echo $data['regist_charset'].'&nbsp;'.__('->', $this->text_domain ); ?>&nbsp;<input name="data[charset]" type="text" value="edit" size="8" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> /></td>
76
  </tr>
77
  <tr>
78
+ <th><?php _e('Thumbnail URL', $this->text_domain ) ?></th>
79
+ <td><input name="data[thumbnail]" type="url" value="<?php echo $data['thumbnail']; ?>" size="80" readonly="readonly" ondblclick="this.readOnly=false;" /></td>
80
  </tr>
81
  <tr>
82
+ <th><?php _e('Favicon URL', $this->text_domain ) ?></th>
83
+ <td><input name="data[favicon]" type="url" value="<?php echo $data['favicon']; ?>" size="80" readonly="readonly" ondblclick="this.readOnly=false;" /></td>
84
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  <tr>
86
+ <th><?php _e('Result Code', $this->text_domain ) ?></th>
87
+ <td><input name="data[update_result]" type="text" value="<?php echo $data['update_result']; ?>" size="1" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> /></td>
 
 
 
 
 
88
  </tr>
89
  <tr>
90
+ <th><?php _e('Post ID', $this->text_domain ) ?></th>
91
  <td>
92
+ <input name="data[use_post_id1]" type="text" value="<?php echo $data['use_post_id1']; ?>" size="5" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> />
93
+ <input name="data[use_post_id2]" type="text" value="<?php echo $data['use_post_id2']; ?>" size="5" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> />
94
+ <input name="data[use_post_id3]" type="text" value="<?php echo $data['use_post_id3']; ?>" size="5" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> />
95
+ <input name="data[use_post_id4]" type="text" value="<?php echo $data['use_post_id4']; ?>" size="5" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> />
96
+ <input name="data[use_post_id5]" type="text" value="<?php echo $data['use_post_id5']; ?>" size="5" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> />
97
+ <input name="data[use_post_id6]" type="text" value="<?php echo $data['use_post_id6']; ?>" size="5" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> />
98
  </td>
99
  </tr>
100
  <tr>
101
+ <th><?php _e('SNS', $this->text_domain ) ?></th>
102
+ <td>
103
+ <?php _e('Tw', $this->text_domain ) ?>:<input name="data[sns_twitter]" type="text" value="<?php echo $data['sns_twitter']; ?>" size="5" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> />
104
+ <?php _e('fb', $this->text_domain ) ?>:<input name="data[sns_facebook]" type="text" value="<?php echo $data['sns_facebook']; ?>" size="5" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> />
105
+ <?php _e('B!', $this->text_domain ) ?>:<input name="data[sns_hatena]" type="text" value="<?php echo $data['sns_hatena']; ?>" size="5" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> />
106
+ <?php _e('Po', $this->text_domain ) ?>:<input name="data[sns_pocket]" type="text" value="<?php echo $data['sns_pocket']; ?>" size="5" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> />
107
+ </td>
108
  </tr>
109
+ <tr class="pz-admin-only">
110
+ <th><?php _e('Last SNS Check', $this->text_domain ) ?></th>
111
+ <td><input name="data[sns_time]" type="text" value="<?php echo $data['sns_time']; ?>" size="8" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> /><?php echo ' '.date($datetime_format, $data['sns_time'] ); ?></td>
112
+ </tr>
113
+ <tr class="pz-admin-only">
114
+ <th><?php _e('Next SNS Check', $this->text_domain ) ?></th>
115
+ <td><input name="data[sns_nexttime]" type="text" value="<?php echo $data['sns_nexttime']; ?>" size="8" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> /><?php echo ' '.date($datetime_format, $data['sns_nexttime'] ); ?></td>
116
+ </tr>
117
+ <tr class="pz-admin-only">
118
+ <th><?php _e('Registration Character Set', $this->text_domain ) ?></th>
119
+ <td><input name="data[regist_charset]" type="text" value="<?php echo $data['regist_charset']; ?>" size="8" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> /></td>
120
+ </tr>
121
+ <tr class="pz-admin-only">
122
+ <th><?php _e('Registration Date', $this->text_domain ) ?></th>
123
+ <td><input name="data[regist_time]" type="text" value="<?php echo $data['regist_time']; ?>" size="8" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> /></td>
124
  </tr>
125
  <tr>
126
+ <th><?php _e('Registration Date', $this->text_domain ) ?></th>
127
+ <td><?php echo ' '.date($datetime_format, $data['regist_time'] ); ?></td>
128
+ </tr>
129
+ <tr class="pz-admin-only">
130
+ <th><?php _e('Registration Result Code', $this->text_domain ) ?></th>
131
+ <td><input name="data[regist_result]" type="text" value="<?php echo $data['regist_result']; ?>" size="1" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> /></td>
132
+ </tr>
133
+ <tr class="pz-admin-only">
134
+ <th><?php _e('Last Alive Check', $this->text_domain ) ?></th>
135
+ <td><input name="data[alive_time]" type="text" value="<?php echo $data['alive_time']; ?>" size="8" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> /><?php echo ' '.date($datetime_format, $data['alive_time'] ); ?></td>
136
+ </tr>
137
+ <tr class="pz-admin-only">
138
+ <th><?php _e('Next Alive Check', $this->text_domain ) ?></th>
139
+ <td><input name="data[alive_nexttime]" type="text" value="<?php echo $data['alive_nexttime']; ?>" size="8" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> /><?php echo ' '.date($datetime_format, $data['alive_nexttime'] ); ?></td>
140
+ </tr>
141
+ <tr class="pz-admin-only">
142
+ <th><?php _e('Result Code of Alive Check', $this->text_domain ) ?></th>
143
+ <td><input name="data[alive_result]" type="text" value="<?php echo $data['alive_result']; ?>" size="1" readonly="readonly"<?php if ($this->options['admin-mode'] ) { echo ' ondblclick="this.readOnly=false;"'; } ?> /></td>
144
+ </tr>
145
+ <tr class="pz-admin-only">
146
+ <th><?php _e('Update Date', $this->text_domain ) ?></th>
147
+ <td><input name="data[update_time]" type="text" value="<?php echo $data['update_time']; ?>" size="8" readonly="readonly" /></td>
148
  </tr>
149
  <tr>
150
+ <th><?php _e('Update Date', $this->text_domain ) ?></th>
151
+ <td><?php echo ' '.date($datetime_format, $data['update_time'] ); ?></td>
152
  </tr>
153
  <tr>
154
  <th></th>
155
+ <td><input name="update" type="submit" class="button button-primary button-large" value="<?php _e('Update', $this->text_domain ) ?>" /> <input name="cancel" type="submit" class="button button-large" value="<?php _e('Cancel', $this->text_domain ) ?>" /></td>
156
  </tr>
157
  </table>
158
  </div>
lib/pz-linkcard-cacheman-list.php CHANGED
@@ -1,429 +1,434 @@
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_url = $this->pz_GetThumbnail($data->thumbnail );
283
- if ($thumbnail_url ) {
284
- echo '<div><img src="'.$thumbnail_url.'" style="max-height: 48px; max-width: 48px;" alt=""></div>';
285
- }
 
 
 
 
 
 
 
 
 
286
  }
287
- }
288
- echo '</td>';
289
 
290
- echo ' <td style="display: none;">'.bin2hex($data->url_key).'</td>';
 
 
 
 
291
 
292
- $url = esc_url($data->url);
293
- $disp_url = $url;
294
- $domain = $data->domain;
295
- // 日本語ドメイン対応
296
- if (isset($this->options['flg-idn']) ? true : false) {
297
- if (function_exists('idn_to_utf8')) {
298
- if ( substr( $domain, 0, 4 ) == 'xn--') {
299
- $domain = idn_to_utf8( $domain );
300
- $url_m = parse_url( $url );
301
- $url_m['host'] = idn_to_utf8( $url_m[host] );
302
- $disp_url = $url_m['scheme'].'://'.$url_m['host'].$url_m['path'].$url_m['query'].$url_m['fragment'];
 
 
 
 
303
  }
304
  }
305
- }
306
- $title = htmlspecialchars($data->title);
307
- if ($data->mod_title) {
308
- $title = '<b>'.$title.'</b>';
309
- }
310
- echo ' <td colspan="2">';
311
- echo ' <div style="word-break: break-all; font-size: 60%;">';
312
- if ( $data->domain == $mydomain ) {
313
- echo '<a href="'.$url.'">'.$disp_url.'</a>';
314
- } else {
315
- echo $disp_url;
316
- }
317
- echo '</div><div>'.$title.'</div>';
318
- echo ' <div id="inline_'.$data_id.'"style="font-size: 90%;">';
319
- 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> | ';
320
- 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> | ';
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=delete&id[0]='.$data_id, 'pz_cacheman').'" onclick="return confirm(\''.__('Are you sure?', $this->text_domain).'\');">'.__('delete',$this->text_domain).'</a>';
322
- echo '</div>';
323
- echo ' </td>';
324
 
325
- $excerpt= htmlspecialchars(mb_strimwidth(html_entity_decode($data->excerpt), 0, 100, '...'));
326
- if ($data->mod_excerpt) {
327
- $excerpt = '<b>'.$excerpt.'</b>';
328
- }
329
- echo ' <td>'.$excerpt.'</td>';
330
- echo ' <td style="display: none;">'.$data->charset.'</td>';
 
 
331
 
332
- echo ' <td><div title="'.$domain.'">'.$domain.'</div><div><span style="background-color: #888; color: #fff; font-size: 9px;">'.$data->site_name.'</span></div></td>';
333
- // echo ' <td><img src="'.$data->thumbnail.'" style="max-height: 100px; max-width: 100px;"></td>';
334
- // echo ' <td style="word-break: break-all;">'.$data->thumbnail.'</td>';
335
- // echo ' <td></td>';
336
- // echo ' <td><img src="'.$data->favicon.'" style="max-height: 100px; max-width: 100px;"></td>';
337
- // echo ' <td style="word-break: break-all;">'.$data->favicon.'</td>';
338
- // echo ' <td></td>';
339
- echo ' <td style="font-size: 60%; text-align: right;">';
340
- $sns_count = $data->sns_twitter;
341
- echo (($sns_count >= 0) ? numKM($sns_count) : '-').'<br>';
342
- $sns_count = $data->sns_facebook;
343
- echo (($sns_count >= 0) ? numKM($sns_count) : '-').'<br>';
344
- $sns_count = $data->sns_hatena;
345
- echo (($sns_count >= 0) ? numKM($sns_count) : '-').'<br>';
346
- $sns_count = $data->sns_pocket;
347
- echo (($sns_count >= 0) ? numKM($sns_count) : '-').'<br>';
348
- echo '</td>';
349
 
350
- echo ' <td>'.$data->regist.'</td>';
351
- echo ' <td style="word-break: break-all;">';
352
- if ($data->use_post_id1 > 0 ) {
353
- echo '<a href="'.get_permalink($data->use_post_id1).'" target="_blank" title="'.get_the_title($data->use_post_id1).'">'.$data->use_post_id1;
354
- }
355
- if ($data->use_post_id2 > 0 ) {
356
- echo '<br><a href="'.get_permalink($data->use_post_id2).'" target="_blank" title="'.get_the_title($data->use_post_id2).'">'.$data->use_post_id2;
357
- }
358
- if ($data->use_post_id3 > 0 ) {
359
- echo '<br><a href="'.get_permalink($data->use_post_id3).'" target="_blank" title="'.get_the_title($data->use_post_id3).'">'.$data->use_post_id3;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
360
  }
361
- echo '</td>';
362
- echo ' <td>'.$data->result_code.($data->result_code <> $data->alive_result ? '<br><span style="color:#f00;">('.$data->alive_result.')</span>' : '').'</td>';
363
- echo '</tr>';
364
- }
365
-
366
  ?>
367
- </tbody>
368
- </table>
369
- </div>
370
- </form>
371
- <!--
372
- <div class="filemenu">
373
- <form id="export" action="" method="post">
374
- <?php wp_nonce_field('pz_cacheman'); ?>
375
- <input type="hidden" name="page" value="pz-linkcard-cache">
376
- <input type="hidden" name="action" value="filemenu">
377
- <p class="submit">
378
- <input type="submit" id="doaction" class="button" value="<?php echo __('Export'); ?>" />
379
- </p>
380
  </form>
381
- </div>
382
- -->
383
  <?php
384
- function echo_PageButton($page_link, $page_now, $text, $class_name) {
385
- $orderby = isset($_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : null;
386
- $order = isset($_REQUEST['order'] ) ? $_REQUEST['order'] : null;
387
- $refine = isset($_REQUEST['refine'] ) ? $_REQUEST['refine'] : null;
388
- $keyword = isset($_REQUEST['keyword'] ) ? $_REQUEST['keyword'] : null;
389
- $link_type = isset($_REQUEST['link_type'] ) ? $_REQUEST['link_type'] : null;
390
 
391
- if ($page_link != $page_now && !is_null($page_link)) {
392
- 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>';
393
- } else {
394
- echo '<span class="tablenav-pages-navspan">'.$text.'</span>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
395
  }
396
- }
397
 
398
- function echo_THC($item, $text) {
399
- $orderby = isset($_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : null;
400
- $order = isset($_REQUEST['order'] ) ? $_REQUEST['order'] : null;
401
- $refine = isset($_REQUEST['refine'] ) ? $_REQUEST['refine'] : null;
402
- $keyword = isset($_REQUEST['keyword'] ) ? $_REQUEST['keyword'] : null;
403
- $link_type = isset($_REQUEST['link_type'] ) ? $_REQUEST['link_type'] : null;
404
 
405
- if ($item == $orderby) {
406
- if ($order == 'desc') {
407
- $mark = '▼';
408
- $order = 'asc';
 
 
 
 
409
  } else {
410
- $mark = '▲';
411
- $order = 'desc';
412
  }
413
- } else {
414
- $mark = '';
415
- $order = 'desc';
416
  }
417
- echo '<a href="?page=pz-linkcard-cache&link_type='.$link_type.'&orderby='.$item.'&order='.$order.'&refine='.$refine.'&keyword='.$keyword.'">'.$text.$mark.'</a>';
418
- }
419
 
420
- function numKM($count_str) {
421
- $count = intval($count_str);
422
- if ($count >= 10000000) {
423
- return number_format($count / 1000000).'&nbsp;m';
424
- } elseif ($count >= 1000) {
425
- return number_format($count / 1000).'&nbsp;k';
426
- } else {
427
- return number_format($count);
 
 
 
 
428
  }
429
- }
1
+ <?php if (!function_exists('get_option' ) ) die; ?>
2
  <?php
3
+ $orderby = strtolower($orderby ); // 気持ち程度のインジェクション対策
4
+ switch ($orderby ) {
5
+ case 'id':
6
+ case 'url':
7
+ case 'title':
8
+ case 'excerpt':
9
+ case 'charset':
10
+ case 'domain':
11
+ case 'sns_twitter':
12
+ case 'sns_facebook':
13
+ case 'sns_hatena':
14
+ case 'sns_pocket':
15
+ case 'regist_time':
16
+ case 'update_time':
17
+ case 'sns_time':
18
+ case 'alive_time':
19
+ case 'use_post_id1':
20
+ case 'use_post_id2':
21
+ case 'use_post_id3':
22
+ case 'use_post_id4':
23
+ case 'use_post_id5':
24
+ case 'use_post_id6':
25
+ case 'update_result':
26
+ case 'alive_result':
27
+ break;
28
+ default:
29
+ $orderby = 'id';
30
+ $order = 'desc';
31
+ }
32
 
33
+ $order = strtolower($order );
34
+ if ($order != 'asc' && $orderby == $orderby_now ) {
35
+ $order = 'desc';
36
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
 
38
+ // 抽出条件
39
+ $where = null;
40
+ $extraction = strtolower($extraction );
41
+ switch ($extraction ) {
42
+ case 'all':
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  $where = "";
44
+ break;
45
+ case 'internal':
46
+ $where = "domain = '".$this->domain."'";
47
+ break;
48
+ case 'external':
49
+ $where = "domain <> '".$this->domain."'";
50
+ break;
51
+ case 'modify':
52
+ $where = "alive_result <> update_result";
53
+ break;
54
+ case 'unlink':
55
+ $where = "( alive_result < 100 OR alive_result >= 400 )";
56
+ break;
57
+ default:
58
+ if ($this->options['flg-alive'] && $this->options['flg-alive-count']) {
59
+ $extraction = 'unlink';
60
+ $where = "( alive_result < 100 OR alive_result >= 400 )";
61
+ } else {
62
+ $extraction = 'all';
63
+ $where = "";
64
+ }
65
+ }
66
+
67
+ // キーワード
68
+ $key1 = null;
69
+ $key2 = null;
70
+ $key3 = null;
71
+ if (isset($keyword ) && $keyword ) {
72
+ $key1 = $keyword;
73
+ $key2 = $keyword;
74
+ if ($where ) {
75
+ $where .= " AND ( title LIKE '%%%s%%' OR excerpt LIKE '%%%s%%' )";
76
+ } else {
77
+ $where .= " ( title LIKE '%%%s%%' OR excerpt LIKE '%%%s%%' )";
78
+ }
79
  }
 
80
 
81
+ // ドメイン指定
82
+ if (isset($refine ) && $refine ) {
83
+ if (isset($keyword ) && $keyword ) {
84
+ $key3 = $refine;
85
+ } else {
86
+ $key1 = $refine;
87
+ }
88
+ if ($where ) {
89
+ $where .= " AND domain = %s";
90
+ } else {
91
+ $where .= " domain = %s";
92
+ }
93
  }
 
94
 
95
+ // 検索SQL作成
96
+ $sql = "SELECT * FROM $this->db_name";
97
+ if (isset($where ) && $where ) {
98
+ $sql .= " WHERE $where";
 
 
99
  }
100
+ if (isset($orderby ) && $orderby ) {
101
+ $sql .= " ORDER BY $orderby $order";
102
+ }
103
+ if ( strpos($sql, 'UPDATE' ) || strpos($sql, 'UNION' ) ) { // 気持ち程度のインジェクション対策
104
+ $sql = null;
105
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
106
 
107
+ // データ抽出
108
+ if ($key3 ) {
109
+ $data_now = $wpdb->get_results($wpdb->prepare($sql, $key1, $key2, $key3 ) );
110
+ } elseif ($key2 ) {
111
+ $data_now = $wpdb->get_results($wpdb->prepare($sql, $key1, $key2 ) );
112
+ } elseif ($key1 ) {
113
+ $data_now = $wpdb->get_results($wpdb->prepare($sql, $key1 ) );
114
+ } else {
115
+ $data_now = $wpdb->get_results($sql );
116
+ }
117
+ $count_now = count($data_now );
118
 
119
+ // ページ数
120
+ $page_limit = 10; // ページ内の行数
121
+ $page_min = intval(($count_now > 0 ) ? 1 : 0 ); // 最初のページ数
122
+ $page_max = intval(ceil($count_now / $page_limit ) ); // 最後のページ数
123
+ $page_now = intval(($paged < $page_min ) ? $page_min : (($paged > $page_max ) ? $page_max : $paged ) ); // 今のページ数
124
+ $page_prev = intval(($page_now > 1 ) ? $page_now - 1 : null ); // 前のページ数
125
+ $page_next = intval(($page_now < $page_max ) ? $page_now + 1 : null ); // 次のページ数
126
+ $page_top = intval(($page_now < 1 ) ? 0 : (($page_now - 1 ) * $page_limit ) ); // ページの最初(0 origin)
127
 
128
+ // ドメイン一覧作成
129
+ $sql = "SELECT domain, site_name, count(*) AS count FROM $this->db_name GROUP BY DOMAIN ASC";
130
+ if (strpos($sql, '--' ) || strpos($sql, 'UPDATE' ) || strpos($sql, 'UNION' ) ) { // 気持ち程度のインジェクション対策
131
+ die;
132
+ }
133
+ $domain_list = $wpdb->get_results($sql ); // テーブルデータ
134
 
135
+ // 件数確認
136
+ $sql = "SELECT COUNT( * ) AS count_all, ";
137
+ $sql .= "COUNT( CASE WHEN url LIKE '".get_bloginfo('url' )."%' THEN 1 END ) AS count_internal, ";
138
+ $sql .= "COUNT( CASE WHEN url NOT LIKE '".get_bloginfo('url' )."%' THEN 1 END ) AS count_external, ";
139
+ $sql .= "COUNT( CASE WHEN alive_result <> update_result THEN 1 END ) AS count_modify, ";
140
+ $sql .= "COUNT( CASE WHEN ( alive_result < 100 OR alive_result >= 400 ) THEN 1 END ) AS count_unlink ";
141
+ $sql .= "FROM $this->db_name";
142
+ $result = $wpdb->get_row($sql );
143
+ if (isset($result ) ) {
144
+ $count_all = isset($result->count_all ) ? $result->count_all : 0;
145
+ $count_internal = isset($result->count_internal ) ? $result->count_internal : 0;
146
+ $count_external = isset($result->count_external ) ? $result->count_external : 0;
147
+ $count_modify = isset($result->count_modify ) ? $result->count_modify : 0;
148
+ $count_unlink = isset($result->count_unlink ) ? $result->count_unlink : 0;
149
+ }
 
 
 
 
 
 
 
 
 
 
150
  ?>
151
+ <form id="posts-filter" action="" method="post">
152
+ <ul class='subsubsub'>
153
+ <li class="all"><a href="?page=pz-linkcard-cache&extraction=all&orderby=regist&order=desc" <?php if ($extraction == 'all' ) echo 'class="current"'; ?>><?php _e('All', $this->text_domain ); ?> <span class="count">(<?php echo $count_all; ?>)</span></a> |</li>
154
+ <li class="all"><a href="?page=pz-linkcard-cache&extraction=internal&orderby=regist&order=desc" <?php if ($extraction == 'internal' ) echo 'class="current"'; ?>><?php _e('Internal', $this->text_domain ); ?> <span class="count">(<?php echo $count_internal; ?>)</span></a> |</li>
155
+ <li class="all"><a href="?page=pz-linkcard-cache&extraction=external&orderby=regist&order=desc" <?php if ($extraction == 'external' ) echo 'class="current"'; ?>><?php _e('External', $this->text_domain ); ?> <span class="count">(<?php echo $count_external; ?>)</span></a> |</li>
156
+ <li class="all"><a href="?page=pz-linkcard-cache&extraction=modify&orderby=regist&order=desc" <?php if ($extraction == 'modify' ) echo 'class="current"'; ?>><?php _e('Modify', $this->text_domain ); ?> <span class="count">(<?php echo $count_modify; ?>)</span></a> |</li>
157
+ <li class="all"><a href="?page=pz-linkcard-cache&extraction=unlink&orderby=regist&order=desc" <?php if ($extraction == 'unlink' ) echo 'class="current"'; ?>><?php _e('Unlink', $this->text_domain ); ?> <span class="count">(<?php echo $count_unlink; ?>)</span></a></li>
158
+ </ul>
159
 
160
+ <p class="search-box">
161
+ <label class="screen-reader-text"><?php _e('Search Keyword', $this->text_domain ); ?></label>
162
+ <input type="search" id="post-search-input" name="keyword" value="<?php echo $keyword; ?>">
163
+ <input type="submit" id="search-submit" class="button action" value="<?php _e('Search', $this->text_domain ); ?>">
164
+ </p>
 
 
 
 
 
 
 
 
 
165
 
166
+ <?php wp_nonce_field('pz_cacheman' ); ?>
167
+ <input type="hidden" name="page" value="pz-linkcard-cache">
168
+ <input type="hidden" name="paged" value="<?php echo $page_now; ?>">
169
 
170
+ <div class="tablenav top">
171
+ <div class="alignleft bulkactions">
172
+ <label for="bulk-action-selector-top" class="screen-reader-text"><?php _e('Select Batch', $this->text_domain ); ?></label>
173
+ <select name="action" id="bulk-action-selector-top">
174
+ <option value="-1" selected="selected"><?php _e('Select', $this->text_domain ); ?></option>
175
+ <option value="renew"><?php _e('Renew Cache', $this->text_domain ); ?></option>
176
+ <option value="renew_thumbnail"><?php _e('Renew Thumbnail Image', $this->text_domain ); ?></option>
177
+ <option value="renew_sns"><?php _e('Renew SNS Count', $this->text_domain ); ?></option>
178
+ <option value="renew_postid"><?php _e('Renew Post ID', $this->text_domain ); ?></option>
179
+ <option value="alive"><?php _e('Check Status', $this->text_domain ); ?></option>
180
+ <option value="delete"><?php _e('Delete from Cache', $this->text_domain ); ?></option>
181
+ </select>
182
+ <input type="submit" class="button action" value="<?php _e('Submit', $this->text_domain ); ?>" onclick="return confirm(\''.__('Are you sure?', $this->text_domain ).'\' );" />
183
+ </div>
184
 
185
+ <div class="alignleft bulkactions" style="margin-left: 20px;">
186
+ <label for="bulk-action-selector-top" class="screen-reader-text"><?php _e('Select Domain', $this->text_domain ); ?></label>
187
+ <select name="refine" id="bulk-action-selector-top">
188
+ <option value="" selected="selected"><?php _e('All Domain', $this->text_domain ); ?></option>
189
  <?php
190
+ foreach ($domain_list as $rec ) {
191
+ $disp_domain = (function_exists('idn_to_utf8' ) && mb_substr($rec->domain, 0, 4) == 'xn--') ? idn_to_utf8($rec->domain ) : $rec->domain ;
192
+ $selected = $rec->domain == $refine ? ' selected="selected"' : null ;
193
+ echo '<option value="'.$rec->domain.'"'.$selected.'>'.$disp_domain.' ('.$rec->count.')</option>';
 
 
194
  }
 
 
195
  ?>
196
+ </select>
197
+ <input type="submit" class="button action" value="<?php _e('Refine Search', $this->text_domain ); ?>" />
198
+ </div>
199
 
200
+ <?php
201
+ // ページング
202
+ echo '<div class="tablenav-pages">';
203
+ echo ' <span class="displaying-num">'.$count_now.__('items' ).'</span>';
204
+ echo ' <span class="pagination-links">';
205
+ $href = '?page=pz-linkcard-cache&extraction='.$extraction.'&orderby='.$orderby.'&order='.$order.'&refine='.$refine.'&keyword='.$keyword.'&paged=';
206
+ echo_PageButton('first-page', $href, $page_now, $page_min);
207
+ echo '&nbsp;';
208
+ echo_PageButton('prev-page', $href, $page_now, $page_min);
209
+ echo '&nbsp;';
210
+ 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>';
211
+ echo '&nbsp;';
212
+ echo_PageButton('next-page', $href, $page_now, $page_max);
213
+ echo '&nbsp;';
214
+ echo_PageButton('last-page', $href, $page_now, $page_max);
215
+ echo ' </span>';
216
+ echo '</div>';
217
  ?>
218
+ <br class="clear">
219
+ </div>
220
 
221
+ <div id="settings" style="clear:both;">
222
+ <table name="cachelist" class="widefat striped">
223
+ <thead>
224
+ <tr>
225
+ <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>
226
+ <th scope="col" class="header-id" style="width: 50px;"> <?php echo header_title('id', __('ID', $this->text_domain ) ); ?></th>
227
+ <th scope="col" class="header-url" style="width: 100px;"> <?php echo header_title('url', __('URL', $this->text_domain ) ); ?></th>
228
+ <th scope="col" class="header-title" style="width: 100px;"> <?php echo header_title('title', __('Title', $this->text_domain ) ); ?></th>
229
+ <th scope="col" class="header-excerpt" > <?php echo header_title('excerpt', __('Excerpt', $this->text_domain ) ); ?></th>
230
+ <th scope="col" class="header-charset pz-admin-only" style="width: 100px;"> <?php echo header_title('charset', __('Charset', $this->text_domain ) ); ?></th>
231
+ <th scope="col" class="header-domain" style="width: 100px;"> <?php echo header_title('domain', __('Domain', $this->text_domain ) ); ?></th>
232
+ <th scope="col" class="header-sns" style="width: 2.5em;"> <?php echo header_title('sns_twitter', __('Tw', $this->text_domain ) ).'<br>'.header_title('sns_facebook', __('fb', $this->text_domain ) ).'<br>'.header_title('sns_hatena', __('B!', $this->text_domain ) ).'<br>'.header_title('sns_pocket', __('Po', $this->text_domain ) ); ?></th>
233
+ <th scope="col" class="header-resist-time pz-admin-only" style="width: 65px;"> <?php echo header_title('regist_time', __('Regist<br>date', $this->text_domain ) ); ?></th>
234
+ <th scope="col" class="header-update-time" style="width: 65px;"> <?php echo header_title('update_time', __('Update<br>date', $this->text_domain ) ); ?></th>
235
+ <th scope="col" class="header-sns-time pz-admin-only" style="width: 65px;"> <?php echo header_title('sns_time', __('SNS<br>check<br>date', $this->text_domain ) ); ?></th>
236
+ <th scope="col" class="header-alive-time pz-admin-only" style="width: 65px;"> <?php echo header_title('alive_time', __('Alive<br>check<br>date', $this->text_domain ) ); ?></th>
237
+ <th scope="col" class="header-post-id" style="width: 3em;"> <?php echo header_title('use_post_id1', __('Post ID', $this->text_domain ) ); ?></th>
238
+ <th scope="col" class="header-update-result" style="width: 4em;"> <?php echo header_title('update_result', __('Result<br>code', $this->text_domain ) ).'<br>'.header_title('alive_result', __('(last )', $this->text_domain ) ); ?></th>
239
+ </tr>
240
+ </thead>
241
+ <tbody>
242
  <?php
243
+ for ($i = $page_top; $i <= ($page_top + $page_limit - 1 ); $i++ ) {
244
+ if ($i >= count($data_now ) ) {
245
+ break;
246
+ }
247
+ $data = $data_now[$i];
 
 
 
 
 
248
 
249
+ // データID
250
+ $data_id = $data->id;
251
+
252
+ // URL
253
+ $url = $data->url;
254
+ $domain = $data->domain;
255
+ $html_url = $this->pz_DecodeURL($url );
256
+
257
+ // リンクにAタグを設定
258
+ if ($domain == $this->domain ) {
259
+ $html_url = '<a href="'.$url.'" title="'.$url.'" rel="internal" target="_self">'.$html_url.'</a>';
260
+ } else {
261
+ $html_url = '<a href="'.$url.'" title="'.$url.'" rel="external noopenner noreferrer" target="_blank">'.($data->alive_result < 100 || $data->alive_result >= 400 ? __('&#x26a0;', $this->text_domain ) : null).$html_url.'</a>';
262
  }
263
+
264
+ // タイトル
265
+ $title = htmlspecialchars($data->title );
266
+ if ($data->regist_title == $data->title ) {
267
+ $html_title = $title;
268
+ } else {
269
+ $html_title = '<b>'.$title.'</b>';
270
+ }
271
+
272
+ // 抜粋文
273
+ $excerpt = htmlspecialchars($data->excerpt );
274
+ if ($data->regist_excerpt == $data->excerpt ) {
275
+ $html_excerpt = $excerpt;
276
+ } else {
277
+ $html_excerpt = '<b>'.$excerpt.'</b>';
278
  }
 
 
279
 
280
+ // SNSカウント
281
+ $html_sns = sns_counter($data->sns_twitter ).'<br>';
282
+ $html_sns .= sns_counter($data->sns_facebook ).'<br>';
283
+ $html_sns .= sns_counter($data->sns_hatena ).'<br>';
284
+ $html_sns .= sns_counter($data->sns_pocket ).'<br>';
285
 
286
+ // サムネイル
287
+ $thumbnail_url = null;
288
+ $html_thumbnail = null;
289
+ if ($domain == $this->domain ) {
290
+ $post_id = url_to_postid($data->url ); // 記事IDを取得
291
+ $thumbnail_id = get_post_thumbnail_id($post_id ); // サムネイルIDを取得
292
+ if ($thumbnail_id ) {
293
+ $attach = wp_get_attachment_image_src($thumbnail_id, 'thumbnail', true ); // サムネイルを取得
294
+ if (isset($attach ) && count($attach ) > 3 && isset($attach[0]) ) {
295
+ $thumbnail_url = $attach[0];
296
+ }
297
+ }
298
+ } else {
299
+ if ($data->thumbnail ) {
300
+ $thumbnail_url = $this->pz_GetThumbnail($data->thumbnail );
301
  }
302
  }
303
+ if ($thumbnail_url ) {
304
+ $html_thumbnail = '<div><img src="'.$thumbnail_url.'" style="max-height: 48px; max-width: 48px;" alt=""></div>';
305
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
306
 
307
+ // 記事ID
308
+ $html_post_id = null;
309
+ $html_post_id .= $data->use_post_id1 > 0 ? '<a href="'.get_permalink($data->use_post_id1 ).'" target="_blank" title="'.get_the_title($data->use_post_id1 ).'">'.$data->use_post_id1.'</a><br>' : null;
310
+ $html_post_id .= $data->use_post_id2 > 0 ? '<a href="'.get_permalink($data->use_post_id2 ).'" target="_blank" title="'.get_the_title($data->use_post_id2 ).'">'.$data->use_post_id2.'</a><br>' : null;
311
+ $html_post_id .= $data->use_post_id3 > 0 ? '<a href="'.get_permalink($data->use_post_id3 ).'" target="_blank" title="'.get_the_title($data->use_post_id3 ).'">'.$data->use_post_id3.'</a><br>' : null;
312
+ $html_post_id .= $data->use_post_id4 > 0 ? '<a href="'.get_permalink($data->use_post_id4 ).'" target="_blank" title="'.get_the_title($data->use_post_id4 ).'">'.$data->use_post_id4.'</a><br>' : null;
313
+ $html_post_id .= $data->use_post_id5 > 0 ? '<a href="'.get_permalink($data->use_post_id5 ).'" target="_blank" title="'.get_the_title($data->use_post_id5 ).'">'.$data->use_post_id5.'</a><br>' : null;
314
+ $html_post_id .= $data->use_post_id6 > 0 ? '<a href="'.get_permalink($data->use_post_id6 ).'" target="_blank" title="'.get_the_title($data->use_post_id6 ).'">'.$data->use_post_id6.'</a><br>' : null;
315
 
316
+ // HTTPレスポンス
317
+ $html_result = $data->update_result;
318
+ if ($data->update_result <> $data->alive_result ) {
319
+ $html_result .= '<br><span style="color:#f00;">('.$data->alive_result.')</span>';
320
+ }
 
 
 
 
 
 
 
 
 
 
 
 
321
 
322
+ // HTML 明細行
323
+ ?>
324
+ <tr>
325
+ <th scope="row" class="check-column">
326
+ <label class="screen-reader-text" for="cb-select-<?php echo $data_id; ?>"><?php _e('Select', $this->text_domain ); ?></label>
327
+ <input id="cb-select-<?php echo $data_id; ?>" type="checkbox" name="id[]" value="<?php echo $data_id; ?>" />
328
+ <div class="locked-indicator"></div>
329
+ </th>
330
+ <td><?php echo $data_id.$html_thumbnail; ?></td>
331
+ <td colspan="2">
332
+ <div style="width: 200px; height: calc(20px * 1); line-height: 20px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: 9px;"><?php echo $html_url; ?></div>
333
+ <div style="height: calc(20px * 2); line-height: 20px; overflow: hidden; white-space: wrap; text-overflow: ellipsis;"><span title="<?php echo $title; ?>"><?php echo $html_title; ?></span></div>
334
+ <div id="inline_<?php echo $data_id; ?>"style="font-size: 12px;">
335
+ <a href="<?php echo wp_nonce_url('?page=pz-linkcard-cache&extraction='.$extraction.'&orderby='.$orderby.'&order='.$order.'&paged='.$page_now.'&refine='.$refine.'&action=edit&id[0]='.$data_id, 'pz_cacheman' ); ?>"><?php _e('Edit',$this->text_domain ); ?></a> |
336
+ <a href="<?php echo wp_nonce_url('?page=pz-linkcard-cache&extraction='.$extraction.'&orderby='.$orderby.'&order='.$order.'&paged='.$page_now.'&refine='.$refine.'&action=renew&id[0]='.$data_id, 'pz_cacheman' ); ?>" onclick="return confirm(<?php echo "'".__('Are you sure?', $this->text_domain )."'"; ?> );"><?php _e('Renew',$this->text_domain ); ?></a> |
337
+ <a href="<?php echo wp_nonce_url('?page=pz-linkcard-cache&extraction='.$extraction.'&orderby='.$orderby.'&order='.$order.'&paged='.$page_now.'&refine='.$refine.'&action=delete&id[0]='.$data_id, 'pz_cacheman' ); ?>" onclick="return confirm(<?php echo "'".__('Are you sure?', $this->text_domain )."'"; ?> );"><?php _e('Delete',$this->text_domain ); ?></a>
338
+ </div>
339
+ </td>
340
+ <td style="max-width: 300px;"><div style="height: calc(20px * 4); line-height: 20px; overflow: hidden; white-space: wrap; text-overflow: ellipsis;"><span title="<?php echo $excerpt; ?>"><?php echo $html_excerpt; ?></span></div></td>
341
+ <td class="pz-admin-only"><span class="pz-admin-only"><?php echo $data->charset; ?></span></td>
342
+ <td><div style="height: calc(20px * 4); line-height: 20px; overflow: hidden; white-space: wrap; text-overflow: ellipsis;"><span title="<?php echo $domain; ?>"><?php if (function_exists('idn_to_utf8' ) && mb_substr($domain, 0, 4) == 'xn--') { echo idn_to_utf8($domain ); } else { echo $domain; } ?></span><br><span style="background-color: #888; color: #fff; font-size: 9px;" title="<?php echo $data->site_name; ?>"><?php echo $data->site_name; ?></span></div></td>
343
+ <td style="font-size: 60%; text-align: right;"><?php echo $html_sns; ?></td>
344
+ <td class="pz-admin-only"><span class="pz-admin-only"> <span><?php $dt=$data->regist_time; echo date('Y', $dt ).'<br>'.date('m/d', $dt ).'<br>'.date('H:i', $dt ); ?></span></td>
345
+ <td> <span><?php $dt=$data->update_time; echo date('Y', $dt ).'<br>'.date('m/d', $dt ).'<br>'.date('H:i', $dt ); ?></span></td>
346
+ <td class="pz-admin-only"><span class="pz-admin-only"> <span><?php $dt=$data->sns_time; echo date('Y', $dt ).'<br>'.date('m/d', $dt ).'<br>'.date('H:i', $dt ); ?></span></td>
347
+ <td class="pz-admin-only"><span class="pz-admin-only"> <span><?php $dt=$data->alive_time; echo date('Y', $dt ).'<br>'.date('m/d', $dt ).'<br>'.date('H:i', $dt ); ?></span></td>
348
+ <td><div style="height: calc(20px * 4); line-height: 20px; overflow: hidden; white-space: wrap; text-overflow: ellipsis;"><?php echo $html_post_id; ?></div></td>
349
+ <td><?php echo $html_result; ?></td>
350
+ </tr>
351
+ <?php
352
  }
 
 
 
 
 
353
  ?>
354
+ </tbody>
355
+ </table>
356
+ </div>
 
 
 
 
 
 
 
 
 
 
357
  </form>
 
 
358
  <?php
359
+ function echo_PageButton($class_name, $href, $page_now, $page_value ) {
360
+ $enabled = false;
 
 
 
 
361
 
362
+ switch ($class_name ) {
363
+ case 'first-page':
364
+ $button = '&laquo;';
365
+ if ($page_now - 1 > $page_value ) {
366
+ $enabled = true;
367
+ $page_link = $page_value;
368
+ }
369
+ break;
370
+ case 'prev-page':
371
+ $button = '&lsaquo;';
372
+ if ($page_now > $page_value ) {
373
+ $enabled = true;
374
+ $page_link = $page_now - 1;
375
+ }
376
+ break;
377
+ case 'next-page':
378
+ $button = '&rsaquo;';
379
+ if ($page_now < $page_value ) {
380
+ $enabled = true;
381
+ $page_link = $page_now + 1;
382
+ }
383
+ break;
384
+ case 'last-page':
385
+ $button = '&raquo;';
386
+ if ($page_now + 1 < $page_value ) {
387
+ $enabled = true;
388
+ $page_link = $page_value;
389
+ }
390
+ break;
391
+ }
392
+
393
+ if ($enabled ) {
394
+ echo '<a class="'.$class_name.' button" href="'.$href.$page_link.'">'.$button.'</a>';
395
+ } else {
396
+ echo '<span class="tablenav-pages-navspan button disabled">'.$button.'</span>';
397
+ }
398
  }
 
399
 
400
+ function header_title($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
+ $extraction = isset($_REQUEST['extraction'] ) ? $_REQUEST['extraction'] : 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 = null;
417
+ $order = 'desc';
418
  }
419
+ return '<a href="?page=pz-linkcard-cache&extraction='.$extraction.'&orderby='.$item.'&order='.$order.'&refine='.$refine.'&keyword='.$keyword.'">'.$text.$mark.'</a>';
 
 
420
  }
 
 
421
 
422
+ function sns_counter($count ) {
423
+ $count = intval($count );
424
+ if ($count < 0) {
425
+ return '-';
426
+ }
427
+ if ($count >= 10000000 ) {
428
+ return number_format($count / 1000000 ).'&nbsp;m';
429
+ } elseif ($count >= 1000 ) {
430
+ return number_format($count / 1000 ).'&nbsp;k';
431
+ } else {
432
+ return number_format($count );
433
+ }
434
  }
 
lib/pz-linkcard-cacheman.php CHANGED
@@ -1,194 +1,289 @@
1
- <?php if (!function_exists("get_option")) die; ?>
2
  <?php
3
- if (!is_user_logged_in()) die;
 
 
 
4
 
5
- echo '<div class="wrap">';
6
- echo '<h1>'.__('LinkCard cache manager', $this->text_domain).'<a href="https://popozure.info/pz-linkcard-manager" target="_blank"><img src="'.$this->plugin_dir_url.'img/help.png" width="16" height="16" title="'.__('Help', $this->text_domain).'" alt="help"></a></h1>';
 
7
 
8
- // echo '<pre>';
9
- // print_r($_REQUEST);
10
- // echo '</pre>';
 
11
 
12
- $update = isset($_REQUEST['update'] ) ? $_REQUEST['update'] : null;
13
- $cancel = isset($_REQUEST['cancel'] ) ? $_REQUEST['cancel'] : null;
14
- $data = null;
15
- if ($update || $cancel) {
16
- if ($update) {
17
- $action = 'update';
18
- if (isset($_REQUEST['data']) && is_array($_REQUEST['data'])) {
19
- $data = $_REQUEST['data'];
20
  }
 
 
 
 
21
  } else {
22
- $action = null;
 
23
  }
24
- // $refine = null;
25
- $bulk_id = null;
26
- } else {
27
- $action = isset($_REQUEST['action'] ) ? $_REQUEST['action'] : null;
28
- // $refine = isset($_REQUEST['refine'] ) ? $_REQUEST['refine'] : null;
29
- $bulk_id = isset($_REQUEST['id'] ) ? $_REQUEST['id'] : null;
30
- }
31
- $refine = isset($_REQUEST['refine'] ) ? $_REQUEST['refine'] : null;
32
- $keyword = isset($_REQUEST['keyword'] ) ? $_REQUEST['keyword'] : null;
33
- $orderby = isset($_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : null;
34
- $order = isset($_REQUEST['order'] ) ? $_REQUEST['order'] : null;
35
- $orderby_now = isset($_REQUEST['orderby_now'] ) ? $_REQUEST['orderby_now'] : null;
36
- $order_now = isset($_REQUEST['order_now'] ) ? $_REQUEST['order_now'] : null;
37
- $link_type = isset($_REQUEST['link_type'] ) ? $_REQUEST['link_type'] : null;
38
- $cache_id = isset($_REQUEST['cache_id'] ) ? $_REQUEST['cache_id'] : null;
39
- $confirm = isset($_REQUEST['confirm'] ) ? $_REQUEST['confirm'] : null;
40
- $result_code = isset($_REQUEST['result_code'] ) ? $_REQUEST['result_code'] : null;
41
- $alive_result = isset($_REQUEST['alive_result'] ) ? $_REQUEST['alive_result'] : null;
42
- $paged = intval(isset($_REQUEST['paged'] ) ? $_REQUEST['paged'] : 1) - 0;
43
 
44
- $mydomain = null;
45
- if (preg_match('{https?://(.*)/}i', home_url().'/',$m)) {
46
- $mydomain_url = $m[0];
47
- $mydomain = $m[1];
48
- }
49
 
50
- global $wpdb;
51
 
52
- if (isset($action)) {
53
- check_admin_referer('pz_cacheman');
54
 
55
- switch ($action) {
56
- case 'edit':
57
- if (isset($bulk_id) && is_array($bulk_id)) {
58
- $data = $this->pz_GetCache(array('id' => $bulk_id[0]));
59
- if (isset($data) && is_array($data)) {
60
- require_once ('pz-linkcard-cacheman-edit.php');
 
61
  }
62
- }
63
- break;
64
- case 'update':
65
- if (isset($data) && is_array($data) && isset($data['id'])) {
66
- $data['title'] = stripslashes($data['title']);
67
- $data['excerpt'] = stripslashes($data['excerpt']);
68
- $data['site_name'] = stripslashes($data['site_name']);
69
- if ($data['title'] == $data['regist_title']) {
70
- $data['mod_title'] = 0;
71
- } else {
72
- $data['mod_title'] = 1;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  }
74
- if ($data['excerpt'] == $data['regist_excerpt']) {
75
- $data['mod_excerpt'] = 0;
 
 
 
 
 
 
 
 
 
 
 
 
76
  } else {
77
- $data['mod_excerpt'] = 1;
78
  }
79
- $data = $this->pz_SetCache($data);
80
- if (isset($data) && is_array($data) && isset($data['id'])) {
81
- echo '<div class="updated fade"><p><strong>'.__('Updated cache', $this->text_domain).'</strong></p></div>';
82
  } else {
83
- echo '<div class="error fade"><p><strong>'.__('Update failed', $this->text_domain).'</strong></p></div>';
84
  }
85
- } else {
86
- echo '<div class="error fade"><p><strong>'.__('Update failed', $this->text_domain).'</strong></p></div>';
87
- }
88
- break;
89
- case 'renew_sns':
90
- if (isset($bulk_id) && is_array($bulk_id)) {
91
- echo '<div class="updated fade"><p><strong>'.__('Social count renew', $this->text_domain).'...';
92
- foreach ($bulk_id as $data_id) {
93
- $data = $this->pz_GetCache(array('id' => $data_id));
94
- if (isset($data) && is_array($data)) {
95
- $data['sns_nexttime'] = 0;
96
- $data = $this->pz_SetCache($data);
97
- $data = $this->pz_RenewSNSCount($data);
 
 
 
 
 
 
 
 
 
98
  }
99
- echo '..';
100
  }
101
- echo __('completed', $this->text_domain).'</strong></p></div>';
102
- }
103
- break;
104
- case 'renew_thumbnail':
105
- if (isset($bulk_id) && is_array($bulk_id)) {
106
- echo '<div class="updated fade"><p><strong>'.__('Thumbnail renew', $this->text_domain).'...';
107
- foreach ($bulk_id as $data_id) {
108
- $data = $this->pz_GetCache(array('id' => $data_id));
109
- if (isset($data) && is_array($data)) {
110
- $data = $this->pz_GetThumbnail($data['thumbnail'] , true);
 
 
 
 
 
 
 
 
111
  }
112
  echo '..';
113
  }
114
- echo __('completed', $this->text_domain).'</strong></p></div>';
115
- }
116
- break;
117
- case 'alive':
118
- if (isset($bulk_id) && is_array($bulk_id)) {
119
- echo '<div class="updated fade"><p><strong>'.__('Alive check', $this->text_domain).'...';
120
- foreach ($bulk_id as $data_id) {
121
- $data = $this->pz_GetCache(array('id' => $data_id));
122
- if (isset($data) && is_array($data)) {
123
- $data = $this->pz_GetCache($data);
124
- $after = $this->pz_GetCURL($data);
125
- $data['alive_result'] = $after['result_code'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
  $data['alive_time'] = $this->now;
127
  $data['alive_nexttime'] = $this->now + WEEK_IN_SECONDS * 4;
128
- if ($data['title'] == $after['title']) {
129
- $data['mod_title'] = 0;
130
  } else {
131
- $data['mod_title'] = 1;
132
  }
133
- if ($data['excerpt'] == $after['excerpt']) {
134
- $data['mod_excerpt'] = 0;
135
  } else {
136
- $data['mod_excerpt'] = 1;
 
 
 
 
 
 
137
  }
138
- $data = $this->pz_SetCache($data);
139
- }
140
- echo '..';
141
- }
142
- echo __('completed', $this->text_domain).'</strong></p></div>';
143
- }
144
- break;
145
- case 'renew':
146
- if (isset($bulk_id) && is_array($bulk_id)) {
147
- echo '<div class="updated fade"><p><strong>'.__('Cache renew', $this->text_domain).'..';
148
- foreach ($bulk_id as $data_id) {
149
- echo '.('.$data_id.').';
150
- $data = $this->pz_GetCache(array('id' => $data_id));
151
- if (isset($data) && is_array($data)) {
152
- $data = $this->pz_GetHTML( array('url' => $data['url'], 'force' => true ) );
153
- $data = $this->pz_SetCache( $data );
154
  }
155
  }
156
- echo '..';
157
- echo __('completed', $this->text_domain).'</strong></p></div>';
158
- }
159
- break;
160
- case 'delete':
161
- if (isset($bulk_id) && is_array($bulk_id)) {
162
- foreach ($bulk_id as $data_id) {
163
- $this->pz_DelCache(array('id' => $data_id) );
164
- }
165
- echo '<div class="updated fade"><p><strong>'.__('Cache deleted', $this->text_domain).'</strong></p></div>';
166
- }
167
- break;
168
- case 'filemenu':
169
- // エクスポートファイルの準備
170
- $item = 'id,url,site_name,domain,title,excerpt,thumbnail,favicon,sns_twitter,sns_facebook,sns_hatena,result_code,regist';
171
- $data_all = $wpdb->get_results("SELECT ".$item." FROM $this->db_name");
172
- $handle1 = fopen($this->plugin_dir_path.'pz-linkcard-export-utf8.csv', 'w');
173
- $handle2 = fopen($this->plugin_dir_path.'pz-linkcard-export-utf8-bom.csv', 'w');
174
- if ($handle1 != false && $handle2 != false) {
175
- fputs($handle1, $item."\n");
176
- $bom = pack('C*',0xEF,0xBB,0xBF);
177
- fputs($handle2, $bom.$item."\n");
178
- foreach($data_all as $data) {
179
- $rec = (array) $data;
180
- fputcsv($handle1, $rec);
181
- fputcsv($handle2, $rec);
182
- }
183
- fclose($handle1);
184
- fclose($handle2);
185
- echo '<form id="export" action="" method="post"><input type="button" id="export" class="button button-primary" value="'.__('Download Export File').'" onclick="window.open('."'".$this->plugin_dir_url.'pz-linkcard-export-utf8-bom.csv'."'".');" /></form>';
186
-
187
  }
188
- break;
189
- default:
190
- break;
191
  }
192
- }
193
-
194
  require_once ('pz-linkcard-cacheman-list.php');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if (!function_exists('get_option' ) ) die; ?>
2
  <?php
3
+ // 開発者モード
4
+ if ($this->options['develop-mode'] ) {
5
+ echo '<div class="pz-develop-message">'.__('Currently working in a development environment.', $this->text_domain ).'</div>';
6
+ }
7
 
8
+ // カード管理画面・見出し
9
+ echo '<div class="wrap">';
10
+ echo '<h1>'.__('LinkCard Cache Manager', $this->text_domain ).'<a href="'.$this->options['author-url'].'/pz-linkcard-manager" 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></h1>';
11
 
12
+ // 管理者モード
13
+ if (!$this->options['admin-mode'] ) {
14
+ echo '<style> .pz-admin-only { display: none; } </style>';
15
+ }
16
 
17
+ $data = null;
18
+ if (isset($_REQUEST['update'] ) ) {
19
+ $action = 'update';
20
+ if (isset($_REQUEST['data'] ) && is_array($_REQUEST['data'] ) ) {
21
+ $data = $_REQUEST['data'];
 
 
 
22
  }
23
+ $bulk_id = null;
24
+ } elseif (isset($_REQUEST['cancel'] ) ) {
25
+ $action = null;
26
+ $bulk_id = null;
27
  } else {
28
+ $action = isset($_REQUEST['action'] ) ? $_REQUEST['action'] : null;
29
+ $bulk_id = isset($_REQUEST['id'] ) ? $_REQUEST['id'] : null;
30
  }
31
+ $refine = isset($_REQUEST['refine'] ) ? $_REQUEST['refine'] : null;
32
+ $keyword = isset($_REQUEST['keyword'] ) ? $_REQUEST['keyword'] : null;
33
+ $orderby = isset($_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : null;
34
+ $order = isset($_REQUEST['order'] ) ? $_REQUEST['order'] : null;
35
+ $orderby_now = isset($_REQUEST['orderby_now'] ) ? $_REQUEST['orderby_now'] : null;
36
+ $order_now = isset($_REQUEST['order_now'] ) ? $_REQUEST['order_now'] : null;
37
+ $extraction = isset($_REQUEST['extraction'] ) ? $_REQUEST['extraction'] : null;
38
+ $cache_id = isset($_REQUEST['cache_id'] ) ? $_REQUEST['cache_id'] : null;
39
+ $confirm = isset($_REQUEST['confirm'] ) ? $_REQUEST['confirm'] : null;
40
+ $update_result = isset($_REQUEST['update_result'] ) ? $_REQUEST['update_result'] : null;
41
+ $alive_result = isset($_REQUEST['alive_result'] ) ? $_REQUEST['alive_result'] : null;
42
+ $paged = isset($_REQUEST['paged'] ) ? $_REQUEST['paged'] : 1;
43
+ $paged = intval($paged ) - 0;
 
 
 
 
 
 
44
 
45
+ $mydomain = null;
46
+ if (preg_match('{https?://(.*)/}i', $this->home_url.'/',$m ) ) {
47
+ $mydomain_url = $m[0];
48
+ $mydomain = $m[1];
49
+ }
50
 
51
+ global $wpdb;
52
 
53
+ if (isset($action ) ) {
54
+ check_admin_referer('pz_cacheman');
55
 
56
+ switch ($action ) {
57
+ case 'edit':
58
+ if (isset($bulk_id ) && is_array($bulk_id ) ) {
59
+ $data = $this->pz_GetCache(array('id' => $bulk_id[0] ) );
60
+ if (isset($data ) && is_array($data ) ) {
61
+ require_once ('pz-linkcard-cacheman-edit.php');
62
+ }
63
  }
64
+ break;
65
+ case 'renew':
66
+ $success_count = 0;
67
+ $skip_count = 0;
68
+ if (!isset($bulk_id ) || !is_array($bulk_id ) ) {
69
+ echo '<div class="notice notice-info is-dismissible"><p><strong>'.__('Not selected', $this->text_domain ).'</strong></p></div>';
70
+ break;
71
+ }
72
+ foreach ($bulk_id as $data_id ) {
73
+ $data = $this->pz_GetCache(array('id' => $data_id ) );
74
+ if (isset($data ) && is_array($data ) ) {
75
+ $data = $this->pz_GetHTML( array('url' => $data['url'], 'force' => true ) );
76
+ $data = $this->pz_SetCache( $data );
77
+ $success_count++;
78
+ } else {
79
+ $skip_count++;
80
+ }
81
+ }
82
+ echo '<div class="notice '.($success_count ? 'notice-success' : 'notice-error' ).' is-dismissible"><p><strong>'.__('Renew Cache', $this->text_domain ).__('...', $this->text_domain ).__('(', $this->text_domain ).__('Success:', $this->text_domain ).$success_count.' '.__('Skip:', $this->text_domain ).$skip_count.__(')', $this->text_domain ).'</strong></p></div>';
83
+ break;
84
+ case 'delete':
85
+ $success_count = 0;
86
+ $skip_count = 0;
87
+ if (!isset($bulk_id ) || !is_array($bulk_id ) ) {
88
+ echo '<div class="notice notice-info is-dismissible"><p><strong>'.__('Not selected', $this->text_domain ).'</strong></p></div>';
89
+ break;
90
+ }
91
+ foreach ($bulk_id as $data_id ) {
92
+ $result = $this->pz_DelCache(array('id' => $data_id ) );
93
+ if ($result ) {
94
+ $success_count++;
95
+ } else {
96
+ $skip_count++;
97
+ }
98
  }
99
+ echo '<div class="notice '.($success_count ? 'notice-success' : 'notice-error' ).' is-dismissible"><p><strong>'.__('Delete Cache', $this->text_domain ).__('...', $this->text_domain ).__('(', $this->text_domain ).__('Success:', $this->text_domain ).$success_count.' '.__('Skip:', $this->text_domain ).$skip_count.__(')', $this->text_domain ).'</strong></p></div>';
100
+ break;
101
+ case 'update':
102
+ $success_count = 0;
103
+ $skip_count = 0;
104
+ if (!isset($data ) || !is_array($data ) || !isset($data['id'] ) ) {
105
+ echo '<div class="notice notice-info is-dismissible"><p><strong>'.__('Not selected', $this->text_domain ).'</strong></p></div>';
106
+ break;
107
+ }
108
+ $data['title'] = stripslashes($data['title'] );
109
+ $data['excerpt'] = stripslashes($data['excerpt'] );
110
+ $data['site_name'] = stripslashes($data['site_name'] );
111
+ if ($data['title'] == $data['regist_title'] ) {
112
+ $data['mod_title'] = false;
113
  } else {
114
+ $data['mod_title'] = true;
115
  }
116
+ if ($data['excerpt'] == $data['regist_excerpt'] ) {
117
+ $data['mod_excerpt'] = false;
 
118
  } else {
119
+ $data['mod_excerpt'] = true;
120
  }
121
+ $data = $this->pz_SetCache($data );
122
+ if (isset($data ) && is_array($data ) && isset($data['id'] ) ) {
123
+ $success_count++;
124
+ }
125
+ echo '<div class="notice '.($success_count ? 'notice-success' : 'notice-error' ).' is-dismissible"><p><strong>'.__('Update Cache', $this->text_domain ).__('...', $this->text_domain ).__('(', $this->text_domain ).__('Success:', $this->text_domain ).$success_count.' '.__('Skip:', $this->text_domain ).$skip_count.__(')', $this->text_domain ).'</strong></p></div>';
126
+ break;
127
+ case 'renew_sns':
128
+ $success_count = 0;
129
+ $skip_count = 0;
130
+ if (!isset($bulk_id ) || !is_array($bulk_id ) ) {
131
+ echo '<div class="notice notice-info is-dismissible"><p><strong>'.__('Not selected', $this->text_domain ).'</strong></p></div>';
132
+ break;
133
+ }
134
+ foreach ($bulk_id as $data_id ) {
135
+ $data = $this->pz_GetCache(array('id' => $data_id ) );
136
+ if (isset($data ) && is_array($data ) ) {
137
+ $data['sns_nexttime'] = 0;
138
+ $data = $this->pz_SetCache($data );
139
+ $data = $this->pz_RenewSNSCount($data );
140
+ $success_count++;
141
+ } else {
142
+ $skip_count++;
143
  }
 
144
  }
145
+ echo '<div class="notice '.($success_count ? 'notice-success' : 'notice-error' ).' is-dismissible"><p><strong>'.__('Renew SNS Count', $this->text_domain ).__('...', $this->text_domain ).__('(', $this->text_domain ).__('Success:', $this->text_domain ).$success_count.' '.__('Skip:', $this->text_domain ).$skip_count.__(')', $this->text_domain ).'</strong></p></div>';
146
+ break;
147
+ case 'renew_thumbnail':
148
+ $success_count = 0;
149
+ $skip_count = 0;
150
+ if (!isset($bulk_id ) || !is_array($bulk_id ) ) {
151
+ echo '<div class="notice notice-info is-dismissible"><p><strong>'.__('Not selected', $this->text_domain ).'</strong></p></div>';
152
+ break;
153
+ }
154
+ $success_count = 0;
155
+ $skip_count = 0;
156
+ foreach ($bulk_id as $data_id ) {
157
+ $data = $this->pz_GetCache(array('id' => $data_id ) );
158
+ if (isset($data ) && is_array($data ) ) {
159
+ $data = $this->pz_GetThumbnail($data['thumbnail'] , true );
160
+ $success_count++;
161
+ } else {
162
+ $skip_count++;
163
  }
164
  echo '..';
165
  }
166
+ echo '<div class="notice '.($success_count ? 'notice-success' : 'notice-error' ).' is-dismissible"><p><strong>'.__('Renew Thumbnail Image', $this->text_domain ).__('...', $this->text_domain ).__('(', $this->text_domain ).__('Success:', $this->text_domain ).$success_count.' '.__('Skip:', $this->text_domain ).$skip_count.__(')', $this->text_domain ).'</strong></p></div>';
167
+ break;
168
+ case 'renew_postid':
169
+ $success_count = 0;
170
+ $skip_count = 0;
171
+ if (!isset($bulk_id ) || !is_array($bulk_id ) ) {
172
+ echo '<div class="notice notice-info is-dismissible"><p><strong>'.__('Not selected', $this->text_domain ).'</strong></p></div>';
173
+ break;
174
+ }
175
+ foreach ($bulk_id as $data_id ) {
176
+ $data = $this->pz_GetCache(array('id' => $data_id ) );
177
+ if (isset($data ) && is_array($data ) ) {
178
+ // 記事IDの再取得
179
+ $use_post_id_t = $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'] ) );
180
+ if ($use_post_id_t ) {
181
+ $use_post_id_t = (array) $use_post_id_t[0];
182
+ $use_post_id_t = array_unique($use_post_id_t );
183
+ $use_post_id_t = array_values($use_post_id_t );
184
+ } else {
185
+ $use_post_id_t = array();
186
+ }
187
+ $data['use_post_id1'] = isset($use_post_id_t[0]) ? $use_post_id_t[0] : null;
188
+ $data['use_post_id2'] = isset($use_post_id_t[1]) ? $use_post_id_t[1] : null;
189
+ $data['use_post_id3'] = isset($use_post_id_t[2]) ? $use_post_id_t[2] : null;
190
+ $data['use_post_id4'] = isset($use_post_id_t[3]) ? $use_post_id_t[3] : null;
191
+ $data['use_post_id5'] = isset($use_post_id_t[4]) ? $use_post_id_t[4] : null;
192
+ $data['use_post_id6'] = isset($use_post_id_t[5]) ? $use_post_id_t[5] : null;
193
+ $result = $this->pz_SetCache($data );
194
+ $success_count++;
195
+ } else {
196
+ $skip_count++;
197
+ }
198
+ }
199
+ echo '<div class="notice '.($success_count ? 'notice-success' : 'notice-error' ).' is-dismissible"><p><strong>'.__('Renew Post Id', $this->text_domain ).__('...', $this->text_domain ).__('(', $this->text_domain ).__('Success:', $this->text_domain ).$success_count.' '.__('Skip:', $this->text_domain ).$skip_count.__(')', $this->text_domain ).'</strong></p></div>';
200
+ break;
201
+ case 'alive':
202
+ $success_count = 0;
203
+ $skip_count = 0;
204
+ if (!isset($bulk_id ) || !is_array($bulk_id ) ) {
205
+ echo '<div class="notice notice-info is-dismissible"><p><strong>'.__('Not selected', $this->text_domain ).'</strong></p></div>';
206
+ break;
207
+ }
208
+ foreach ($bulk_id as $data_id ) {
209
+ $data = $this->pz_GetCache(array('id' => $data_id ) );
210
+ if (isset($data ) && is_array($data ) ) {
211
+ $data = $this->pz_GetCache($data );
212
+ $after = $this->pz_GetCURL($data );
213
+ $data['alive_result'] = $after['update_result'];
214
  $data['alive_time'] = $this->now;
215
  $data['alive_nexttime'] = $this->now + WEEK_IN_SECONDS * 4;
216
+ if ($data['title'] == $after['title'] ) {
217
+ $data['mod_title'] = false;
218
  } else {
219
+ $data['mod_title'] = true;
220
  }
221
+ if ($data['excerpt'] == $after['excerpt'] ) {
222
+ $data['mod_excerpt'] = false;
223
  } else {
224
+ $data['mod_excerpt'] = true;
225
+ }
226
+ $data = $this->pz_SetCache($data );
227
+ if ($data ) {
228
+ $success_count++;
229
+ } else {
230
+ $skip_count++;
231
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
232
  }
233
  }
234
+ echo '<div class="notice '.($success_count ? 'notice-success' : 'notice-error' ).' is-dismissible"><p><strong>'.__('Alive check', $this->text_domain ).__('...', $this->text_domain ).__('(', $this->text_domain ).__('Success:', $this->text_domain ).$success_count.' '.__('Skip:', $this->text_domain ).$skip_count.__(')', $this->text_domain ).'</strong></p></div>';
235
+ break;
236
+ case 'import-menu':
237
+ // ファイルのインポート
238
+ ?>
239
+ <form id="import" name="import" method="post" enctype="multipart/form-data">
240
+ <input type="hidden" name="action" value="import">
241
+ <table class="pz-man-filemenu">
242
+ <tr>
243
+ <td><input type="file" id="import_file" name="import_file" accept=".csv" required /></td>
244
+ <td><input type="submit" id="import_button" name="import_exec" class="button button-primary" value="<?php _e('Upload Import File', $this->text_domain ); ?>" /></td>
245
+ <td><label><input type="checkbox" id="import_clear" name="import_clear" value="1" /><?php _e('Clear all cache', $this->text_domain ); ?></label></td>
246
+ </tr>
247
+ </table>
248
+ </form>
249
+ <?php
250
+ break;
251
+ case 'import';
252
+ require_once ('pz-linkcard-file-import.php');
253
+ break;
254
+ case 'export':
255
+ require_once ('pz-linkcard-file-export.php');
256
+ break;
257
+ default:
258
+ break;
 
 
 
 
 
 
259
  }
 
 
 
260
  }
 
 
261
  require_once ('pz-linkcard-cacheman-list.php');
262
+
263
+ if ($this->options['flg-filemenu'] ) {
264
+ ?>
265
+ <table class="pz-man-filemenu">
266
+ <tr>
267
+ <th>
268
+ <span><?php _e('File Menu', $this->text_domain ); ?></span>
269
+ </th>
270
+ <td>
271
+ <form id="import" method="get">
272
+ <?php wp_nonce_field('pz_cacheman' ); ?>
273
+ <input type="hidden" name="page" value="pz-linkcard-cache">
274
+ <input type="hidden" name="action" value="import-menu">
275
+ <input type="submit" class="button" value="<?php _e('Import', $this->text_domain ); ?>" />
276
+ </form>
277
+ </td>
278
+ <td>
279
+ <form id="export" method="get">
280
+ <?php wp_nonce_field('pz_cacheman' ); ?>
281
+ <input type="hidden" name="page" value="pz-linkcard-cache">
282
+ <input type="hidden" name="action" value="export">
283
+ <input type="submit" class="button" value="<?php _e('Export', $this->text_domain ); ?>" />
284
+ </form>
285
+ </td>
286
+ </tr>
287
+ </table>
288
+ <?php
289
+ }
lib/pz-linkcard-cron-alive.php CHANGED
@@ -1,3 +1,45 @@
 
1
  <?php
2
- defined('ABSPATH') || die;
 
 
 
3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if (!function_exists('get_option' ) ) die; ?>
2
  <?php
3
+ // WP-CRONスケジュール(存在チェック)
4
+ if (!isset($this->options['flg-alive']) || !$this->options['flg-alive'] ) {
5
+ return null;
6
+ }
7
 
8
+ // DBの宣言
9
+ global $wpdb;
10
+
11
+ // 次回生存確認日時を越えているものを抽出
12
+ $proc_datas = $wpdb->get_results($wpdb->prepare("SELECT url,alive_time FROM $this->db_name WHERE alive_nexttime < %d ORDER BY alive_time ASC, id ASC", $this->now ) );
13
+
14
+ // 生存確認
15
+ $proc_count = 0;
16
+ if (isset($proc_datas ) && is_array($proc_datas ) && count($proc_datas) > 0) {
17
+ foreach($proc_datas as $data ) {
18
+ $proc_count++;
19
+ if ($proc_count > 5) { // 5件を超えたら
20
+ wp_schedule_single_event(time() + 3600, 'pz_linkcard_alive'); // 1時間後に続きを処理する
21
+ break;
22
+ }
23
+
24
+ if (isset($data ) && isset($data['url'] ) ) {
25
+ $before = $this->pz_GetCache( array( 'url' => $data['url'] ) );
26
+ $after = $this->pz_GetCURL( $before );
27
+ if ($before['title'] == $after['title'] ) {
28
+ $before['mod_title'] = false;
29
+ } else {
30
+ $before['mod_title'] = true;
31
+ }
32
+ if ($before['excerpt'] == $after['excerpt'] ) {
33
+ $before['mod_excerpt'] = false;
34
+ } else {
35
+ $before['mod_excerpt'] = true;
36
+ }
37
+ $before['alive_result'] = $after['result_code'];
38
+ $before['alive_time'] = $this->now;
39
+ $before['alive_nexttime'] = $this->now + WEEK_IN_SECONDS * 4 + rand(0, DAY_IN_SECONDS);
40
+ // $before['thumbnail'] = $after['thumbnail'];
41
+ // $before['favicon'] = $after['favicon'];
42
+ $result = $this->pz_SetCache($before );
43
+ }
44
+ }
45
+ }
lib/pz-linkcard-cron-sns.php CHANGED
@@ -1,3 +1,27 @@
 
1
  <?php
2
- defined('ABSPATH') || die;
 
 
 
3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if (!function_exists('get_option' ) ) die; ?>
2
  <?php
3
+ // WP-CRONスケジュール(SNSカウント取得)
4
+ if (!isset($this->options['sns-position']) || !$this->options['sns-position'] ) {
5
+ return null;
6
+ }
7
 
8
+ // DBの宣言
9
+ global $wpdb;
10
+
11
+ // SNS次回取得日時を越えているものを抽出
12
+ $proc_datas = $wpdb->get_results($wpdb->prepare("SELECT url,sns_nexttime FROM $this->db_name WHERE sns_nexttime < %d ORDER BY sns_nexttime ASC", $this->now ) );
13
+
14
+ // SNSカウント取得
15
+ $proc_count = 0;
16
+ if (isset($proc_datas ) && is_array($proc_datas ) && count($proc_datas ) > 0) {
17
+ foreach($proc_datas as $data ) {
18
+ $proc_count++;
19
+ if ($proc_count > 10) { // 10件を超えたら
20
+ wp_schedule_single_event(time() + 30, 'pz_linkcard_check' ); // 30秒後に続きを処理する
21
+ break;
22
+ }
23
+ if (isset($data ) && isset($data['url'] ) ) {
24
+ $result = $this->pz_RenewSNSCount(array('url' => $data['url'] ) ); // SNS取得&キャッシュ更新
25
+ }
26
+ }
27
+ }
lib/pz-linkcard-edit.php CHANGED
@@ -14,7 +14,7 @@
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>
@@ -22,11 +22,11 @@
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>
@@ -50,11 +50,11 @@
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>
@@ -70,11 +70,11 @@
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>
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>
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>
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('Site Icon 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>
70
  </td>
71
  </tr>
72
  <tr>
73
+ <th><?php _e('Update Date', $this->text_domain) ?></th>
74
+ <td><input name="data[update_time]" type="text" id="inputtext" value="<?php echo $data['update_time']; ?>" size="10" readonly="readonly" /><?php echo date('Y-m-d H:i:s', $data['update_time']); ?></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>
lib/pz-linkcard-file-export.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if (!function_exists('get_option' ) ) die; ?>
2
+ <?php
3
+ // エクスポート
4
+
5
+ // 出力する項目
6
+ $data_field = 'id,url,url_redir,site_name,title,excerpt,charset,thumbnail,favicon,alive_result,alive_time,sns_twitter,sns_facebook,sns_hatena,sns_pocket,sns_time,alive_nexttime,regist_title,regist_excerpt,regist_charset,regist_result,regist_time,update_result,update_time'; // 出力するフィールド
7
+
8
+ // 出力する項目をDBから取得
9
+ $data_all = $wpdb->get_results("SELECT $data_field FROM $this->db_name ORDER BY domain , url");
10
+
11
+ // ディレクトリ名とファイル名に付ける日時の文字列
12
+ $datetime = date('Ymd_His');
13
+ $datetime_hash = bin2hex(hash('sha256', $datetime, true ) );
14
+
15
+ // ダウンロード用のディレクトリ
16
+ $export_dir = $this->upload_dir_path.'export/'.$datetime_hash.'/';
17
+ $export_dir_url = $this->upload_dir_url .'export/'.$datetime_hash.'/';
18
+
19
+ // エクスポートするファイル名
20
+ $export_file = 'pz_linkcard_export_utf8_'.$datetime.'.csv';
21
+
22
+ // エクスポートするファイルのフルパスとURL
23
+ $export_path = $export_dir.$export_file;
24
+ $export_path_url= $export_dir_url.$export_file;
25
+
26
+ // ディレクトリが無かったら作成
27
+ wp_mkdir_p($export_dir );
28
+
29
+ // エクスポートファイルを開く(書き込み)
30
+ $handle = fopen($export_path, 'w');
31
+
32
+ // CSVファイル出力
33
+ if ($handle ) {
34
+ // ヘッダー行出力
35
+ fputs($handle, $data_field."\n");
36
+ // データ行出力
37
+ foreach($data_all as $data ) {
38
+ $rec = (array) $data;
39
+ fputcsv($handle, $rec );
40
+ }
41
+ // ファイルを閉じる
42
+ fclose($handle );
43
+ // ダウンロード用ボタンを表示
44
+ echo '<form id="export" method="get"><input type="button" id="export_button" class="button button-primary" value="'.__('Download Export File', $this->text_domain ).'" onclick="window.open('."'".$export_path_url."'".');" /></form>';
45
+ }
lib/pz-linkcard-file-import.php ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if (!function_exists('get_option' ) ) die; ?>
2
+ <?php
3
+ // インポート
4
+
5
+ // DBの宣言
6
+ global $wpdb;
7
+
8
+ // DBの列名取得
9
+ $col_name = $wpdb->get_col("DESC $this->db_name" );
10
+ if (!$col_name || $wpdb->last_error ) {
11
+ echo '<div class="notice notice-error is-dismissible"><p><strong>'.__('DB Access Error.', $this->text_domain ).__('(', $this->text_domain ).$wpdb->last_error.__(')', $this->text_domain ).'</strong></p></div>';
12
+ return null;
13
+ }
14
+
15
+ // アップロードされたファイル名を取得
16
+ $import_path = isset($_FILES['import_file']['name'] ) ? $_FILES['import_file']['name'].'_'.date("YmdHis" ) : null;
17
+ $temp_path = isset($_FILES['import_file']['tmp_name'] ) ? $_FILES['import_file']['tmp_name'] : null;
18
+
19
+ // キャッシュDBクリア
20
+ $clear = isset($_POST['import_clear'] ) ? $_POST['import_clear'] : false;
21
+
22
+ // カウンター
23
+ $read_count = 0;
24
+ $skip_count = 0;
25
+ $success_count = 0;
26
+
27
+ // アップロードされたファイルの存在チェック
28
+ if (!is_uploaded_file($temp_path ) ) {
29
+ echo '<div class="notice notice-error is-dismissible"><p><strong>'.__('Import File Not Found.', $this->text_domain ).'</strong></p></div>';
30
+ return null;
31
+ }
32
+
33
+ // ファイルを開く(読み込み)
34
+ $handle = fopen($temp_path, 'r');
35
+ if (!$handle ) {
36
+ echo '<div class="notice notice-error is-dismissible"><p><strong>'.__('Import File Open Error.', $this->text_domain ).'</strong></p></div>';
37
+ return null;
38
+ }
39
+
40
+ // ヘッダー行入力
41
+ if (($csv_header = fgetcsv($handle ) ) == false ) {
42
+ echo '<div class="notice notice-error is-dismissible"><p><strong>'.__('Import File Read Error.', $this->text_domain ).'</strong></p></div>';
43
+ return null;
44
+ }
45
+
46
+ // 項目数
47
+ $item_count = count($csv_header );
48
+
49
+ // DBの削除
50
+ if ($clear ) {
51
+ // DBクリア
52
+ $result = $wpdb->query("DELETE FROM $this->db_name" );
53
+ if ($wpdb->last_error ) {
54
+ echo '<div class="notice notice-error is-dismissible"><p><strong>'.__('DB Access Error.', $this->text_domain ).__('(', $this->text_domain ).$wpdb->last_error.__(')', $this->text_domain ).'</strong></p></div>';
55
+ return null;
56
+ }
57
+
58
+ // AUTO INCLIMENTのリセット
59
+ $result = $wpdb->query("ALTER TABLE $this->db_name AUTO_INCREMENT=1;" );
60
+ if ($wpdb->last_error ) {
61
+ echo '<div class="notice notice-error is-dismissible"><p><strong>'.__('DB Access Error.', $this->text_domain ).__('(', $this->text_domain ).$wpdb->last_error.__(')', $this->text_domain ).'</strong></p></div>';
62
+ return null;
63
+ }
64
+ }
65
+
66
+ $csv_header_nouse = array();
67
+ foreach ($csv_header as $key => $value ) {
68
+ if (!in_array($value, $col_name ) ) {
69
+ $csv_header_nouse[$key] = $value;
70
+ unset($csv_header[$key] );
71
+ }
72
+ }
73
+
74
+ // データ行入力
75
+ while (($record = fgetcsv($handle ) ) !== false ) {
76
+ $read_count++;
77
+ if (count($record ) == $item_count) {
78
+ unset($import );
79
+ foreach ($csv_header as $key => $value ) {
80
+ $import[$value] = $record[$key];
81
+ }
82
+
83
+ // DB更新
84
+ unset($import['id'] );
85
+ unset($import['url_key'] );
86
+ $result = $this->pz_SetCache($import );
87
+ if (!isset($result['url'] ) || $result['url'] <> $import['url'] ) {
88
+ $skip_count++;
89
+ } else {
90
+ $success_count++;
91
+ }
92
+ } else {
93
+ $skip_count++;
94
+ }
95
+ }
96
+ // ファイルを閉じる
97
+ fclose($handle );
98
+
99
+ if ($success_count ) {
100
+ echo '<div class="notice notice-success is-dismissible"><p><strong>'.__('Import Successful.', $this->text_domain ).__('(', $this->text_domain ).__('Read:', $this->text_domain ).$read_count.' '.__('Success:', $this->text_domain ).$success_count.' '.__('Skip:', $this->text_domain ).$skip_count.__(')', $this->text_domain ).'</strong></p></div>';
101
+ } else {
102
+ echo '<div class="notice notice-error is-dismissible"><p><strong>'.__('Import Failure.', $this->text_domain ).__('(', $this->text_domain ).__('Read:', $this->text_domain ).$read_count.' '.__('Skip:', $this->text_domain ).$skip_count.__(')', $this->text_domain ).'</strong></p></div>';
103
+ }
lib/pz-linkcard-init.php CHANGED
@@ -1,220 +1,206 @@
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_file_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");
 
 
 
 
 
 
 
 
1
+ <?php if (!function_exists('get_option' ) ) die; ?>
2
  <?php
3
+ // 出力を抑制
4
+ $this->suppression = true;
5
+
6
  // WP-CRONの割り込みを停止
7
+ if (wp_next_scheduled('pz_linkcard_check' ) ) {
8
+ wp_clear_scheduled_hook('pz_linkcard_check' );
9
  }
10
+ if (wp_next_scheduled('pz_linkcard_alive' ) ) {
11
+ wp_clear_scheduled_hook('pz_linkcard_alive' );
12
  }
13
 
14
+ // オプション取得
15
+ $this->options = $this->pz_GetOption();
16
+
17
+ // 開発環境用ログ
18
+ if ($this->options['develop-mode'] ) {
19
+ $result = $this->pz_OutputLOG('[Init] Start Plugin Activate Process' );
20
+ $result = $this->pz_OutputLOG(print_r($this->options, true ) );
21
  }
22
+
23
  // 暫定措置
24
+ if (version_compare($this->options['plugin-version'], '2.1.1', '<' ) ) {
25
+ $this->options['flg-edit-insert'] = true; // ビジュアル エディタに挿入ボタンを追加
26
+ $this->options['flg-edit-qtag'] = true; // テキスト エディタにクイックタグを追加
27
  }
28
+ if (version_compare($this->options['plugin-version'], '2.1.7', '<' ) ) {
29
+ $this->options['flg-anker'] = true; // 全体リンク(Anchorのスペルミス)
30
  }
31
+ if (version_compare($this->options['plugin-version'], '2.1.8', '<' ) ) {
32
+ if ($this->options['sns-tw'] && $this->options['sns-fb'] && $this->options['sns-hb'] ) {
33
+ $this->options['sns-po'] = true; // SNSカウントにPocketを追加したため
34
  }
35
  }
36
+ if (version_compare($this->options['plugin-version'], '2.2.7', '<' ) ) {
37
  $this->options['trim-url'] = 400;
38
+ $this->options['nowrap-url'] = true;
39
+ $this->options['hover'] = $this->options['opacity']; // パラメータ名変更のため
40
  }
41
+ if (version_compare($this->options['plugin-version'], '2.2.9', '<' ) ) {
42
  $this->options['ex-border-color'] = $this->options['border-color']; // パラメータ細分化のため
43
  $this->options['in-border-color'] = $this->options['border-color']; // パラメータ細分化のため
44
  $this->options['th-border-color'] = $this->options['border-color']; // パラメータ細分化のため
45
  }
46
+ if (version_compare($this->options['plugin-version'], '2.4.2', '<' ) ) {
47
+ $this->options['flg-do-shortcode'] = true; // 設定漏れによる不具合が多発しているため、初期設定値を変更
48
  }
49
+ if (version_compare($this->options['plugin-version'], '2.4.2.4', '<' ) ) {
50
+ $this->options['plugin-path'] = $this->defaults['plugin-path'];
51
+ $this->options['author-url'] = $this->defaults['author-url'];
52
+ $this->options['author-name'] = $this->defaults['author-name'];
53
+ $this->options['noopener'] = $this->defaults['noopener'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  }
55
+ if (version_compare($this->options['plugin-version'], '2.4.3', '<' ) ) {
56
+ $this->options['plugin-abbreviation'] = $this->defaults['plugin-abbreviation']; // 略称
57
+ $this->options['flg-compress'] = $this->defaults['flg-compress']; // CSS圧縮
58
+ $this->options['in-thumbnail-size'] = $this->defaults['in-thumbnail-size']; // 内部サムネイルサイズ
59
+ $this->options['ex-thumbnail-size'] = $this->defaults['ex-thumbnail-size']; // 外部サムネイルサイズ
60
+ if (isset($this->options['cache-image-size'] ) ) {
61
+ $temp = $this->options['cache-image-size'];
62
+ if ($temp <= 240 ) {
63
+ $size = 'thumbnail';
64
+ } elseif ($temp <= 520 ) {
65
+ $size = 'medium';
66
+ } elseif ($temp <= 1240 ) {
67
+ $size = 'large';
68
+ } else {
69
+ $size = 'full';
70
+ }
71
+ $this->options['ex-thumbnail-size'] = $size;
72
  }
73
  }
74
+
 
 
75
  // オプションの更新
76
+ $overwrite = array('plugin-abbreviation', 'plugin-name', 'plugin-version', 'plugin-path', 'author-url', 'author-name', 'author-twitter' );
77
+ foreach ($overwrite as $key ) {
78
+ $this->options[$key] = $this->defaults[$key];
79
+ }
80
+ $result = $this->pz_UpdateOption();
81
+
82
  // スタイルシート生成
83
  $this->pz_SetStyle();
84
+
85
  // DB作成
86
+ global $wpdb;
87
  $wpdb->hide_errors();
88
+
89
+ // CREATE TABLE
90
+ $sql = "CREATE TABLE $this->db_name (
91
  id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
92
+ url VARCHAR(4096) DEFAULT NULL,
93
+ url_key VARBINARY(255) NOT NULL,
94
+ url_redir VARCHAR(4096) DEFAULT NULL,
95
+ scheme VARCHAR(16) DEFAULT NULL,
96
+ domain VARCHAR(253) DEFAULT NULL,
97
+ site_name VARCHAR(100) DEFAULT NULL,
98
+ title VARCHAR(200) DEFAULT NULL,
99
+ excerpt VARCHAR(500) DEFAULT NULL,
100
+ charset VARCHAR(32) DEFAULT NULL,
101
+ thumbnail VARCHAR(2048) DEFAULT NULL,
102
+ favicon VARCHAR(2048) DEFAULT NULL,
103
+ alive_result INT DEFAULT -1,
104
+ alive_time BIGINT UNSIGNED NOT NULL DEFAULT 0,
105
+ alive_nexttime BIGINT UNSIGNED NOT NULL DEFAULT 0,
106
+ sns_twitter INT DEFAULT -1,
107
+ sns_facebook INT DEFAULT -1,
108
+ sns_hatena INT DEFAULT -1,
109
+ sns_pocket INT DEFAULT -1,
110
  sns_time BIGINT UNSIGNED NOT NULL DEFAULT 0,
111
  sns_nexttime BIGINT UNSIGNED NOT NULL DEFAULT 0,
 
 
 
 
 
 
112
  use_post_id1 INT UNSIGNED,
113
  use_post_id2 INT UNSIGNED,
114
  use_post_id3 INT UNSIGNED,
115
  use_post_id4 INT UNSIGNED,
116
  use_post_id5 INT UNSIGNED,
117
  use_post_id6 INT UNSIGNED,
118
+ regist_title VARCHAR(200) DEFAULT NULL,
119
+ regist_excerpt VARCHAR(500) DEFAULT NULL,
120
+ regist_charset VARCHAR(32) DEFAULT NULL,
121
+ regist_result INT DEFAULT 0,
122
  regist_time BIGINT UNSIGNED NOT NULL DEFAULT 0,
 
 
 
123
  mod_title INT UNSIGNED NOT NULL DEFAULT 0,
124
  mod_excerpt INT UNSIGNED NOT NULL DEFAULT 0,
125
+ update_result INT DEFAULT 0,
126
+ update_time BIGINT UNSIGNED NOT NULL DEFAULT 0,
127
+ PRIMARY KEY (id),
128
+ UNIQUE KEY (url_key)
 
 
 
 
 
 
129
  ) ".$wpdb->get_charset_collate()." ;";
130
+ require_once(ABSPATH.'wp-admin/includes/upgrade.php' );
131
+ dbDelta($sql );
132
+
133
+ // 未使用となったフィールド
134
+ // link_type INT UNSIGNED,
135
+ // location VARCHAR(2048) DEFAULT NULL,
136
+ // post_id INT UNSIGNED DEFAULT 0,
137
+ // post_date DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
138
+ // address VARCHAR(2048) DEFAULT NULL,
139
+ // means VARCHAR(32) DEFAULT NULL,
140
+ // nexttime BIGINT UNSIGNED NOT NULL DEFAULT 0,
141
+ // regist DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
142
+ // result_code INT DEFAULT -1,
143
+ // uptime BIGINT UNSIGNED NOT NULL DEFAULT 0,
144
+
145
  // バグデータのメンテナンス(重複URLの削除)
146
+ $result_datas = (array) $wpdb->get_results("SELECT url,id FROM $this->db_name ORDER BY url,id" );
147
+ $last_url = null;
148
+ $last_id = null;
149
+ if (isset($result_datas ) && is_array($result_datas ) && count($result_datas ) > 0 ) {
150
+ foreach($result_datas as $data ) {
151
+ if ($data->url == $last_url && $data->id <> $last_id ) {
152
+ $result = $wpdb->delete($this->db_name, array('id' => $data->id ), array('%d' ) );
153
+ // echo '[DEBUG]重複URLを削除="'.print_r($result, true ).'"<br>';
154
  }
155
+ $last_url = $data->url;
156
+ $last_id = $data->id;
157
  }
158
  }
159
+
160
  // バグデータのメンテナンス(ハッシュURLの再生成)
161
+ $result_datas = (array) $wpdb->get_results("SELECT id,url,url_key FROM $this->db_name ORDER BY id" );
162
+ // echo '[DEBUG]URL_keyが無いレコード="'.print_r($result, true ).'"<br>';
163
+ if (isset($result_datas ) && is_array($result_datas ) && count($result_datas ) > 0 ) {
164
+ foreach($result_datas as $data ) {
165
+ $new_url_key = hash('sha256', esc_url($data->url ), true );
166
+ if ($data->url_key <> $new_url_key ) {
167
+ $result = $wpdb->update($this->db_name, array('url_key' => $new_url_key ) , array('id' => $data->id ) );
168
+ // echo '[DEBUG]URL_keyを再生成="'.print_r($result, true ).'"<br>';
169
  }
170
  }
171
  }
172
+
173
+ // 古い項目から新しい項目へ転記(uptime → update_time)
174
+ $result = $wpdb->get_results("UPDATE $this->db_name SET update_time = uptime WHERE update_time IS NULL OR update_time = 0" );
175
+ // echo '[DEBUG]uptime -> update_time="'.print_r($result, true ).'"<br>';
176
+
177
+ // 古い項目から新しい項目へ転記(result_code update_result)
178
+ $result = $wpdb->get_results("UPDATE $this->db_name SET update_result = result_code , result_code = 0 WHERE result_code > 0 AND ( update_result IS NULL OR update_result = 0 )" );
179
+ // echo '[DEBUG]result_code -> update_result="'.print_r($result, true ).'"<br>';
180
+
181
+ // 古い項目から新しい項目へ転記(post_id use_post_id1)
182
+ $result = $wpdb->get_results("UPDATE $this->db_name SET use_post_id1 = post_id , post_id = 0 WHERE (use_post_id1 IS NULL OR use_post_id1 = 0 ) AND post_id > 0" );
183
+ // echo '[DEBUG]post_id -> use_post_id="'.print_r($result, true ).'"<br>';
184
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
185
  // 過去バージョンからのコンバート(生存確認用のデータ作成)
186
+ $result = $wpdb->get_results("UPDATE $this->db_name SET update_result = 200 WHERE update_result IS NULL OR update_result = 0" );
187
+ // echo '[DEBUG]update_resultがNULL="'.print_r($result, true ).'"<br>';
188
+ $result = $wpdb->get_results("UPDATE $this->db_name SET alive_result = update_result , alive_time = update_time WHERE alive_result IS NULL OR alive_result = 0 OR alive_time = 0" );
189
+ // echo '[DEBUG]alive_resultがNULL="'.print_r($result, true ).'"<br>';
190
+ $result = $wpdb->get_results("UPDATE $this->db_name SET alive_nexttime = alive_time WHERE alive_nexttime IS NULL OR alive_nexttime = 0" );
191
+ // echo '[DEBUG]alive_nexttimeがNULL="'.print_r($result, true ).'"<br>';
192
+
193
  // 過去バージョンからのコンバート(取得時テキストの作成)
194
+ $result = $wpdb->get_results("UPDATE $this->db_name SET regist_title = title , regist_excerpt = excerpt , regist_time = update_time , regist_result = update_result , regist_charset = charset WHERE (regist_title = NULL AND regist_excerpt = NULL ) AND (title <> NULL OR excerpt <> NULL )" );
195
+ // echo '[DEBUG]regist_titlle , regist_excerpt がNULL="'.print_r($result, true ).'"<br>';
196
+
197
  // 過去バージョンからのコンバート(次回SNS取得日時)
198
+ $result = $wpdb->get_results("UPDATE $this->db_name SET sns_time = update_time , sns_nexttime = nexttime WHERE sns_nexttime = 0" );
199
+ // echo '[DEBUG]sns_nexttimeがNULL="'.print_r($result, true ).'"<br>';
200
+
201
+ // 未使用になった列を削除する
202
+ $drop_field = array('link_type' , 'location' , 'post_id' , 'post_date' , 'address' , 'means' , 'nexttime' , 'regist' , 'result_code' , 'uptime' );
203
+ foreach($drop_field as $name ) {
204
+ $result = $wpdb->query("ALTER TABLE $this->db_name DROP COLUMN ".$name );
205
+ // echo '[DEBUG]列削除['.$name.']="'.print_r($result, true ).'"<br>';
206
+ }
lib/pz-linkcard-modal.php CHANGED
@@ -1,13 +1,15 @@
1
- <?php if (!function_exists("get_option")) die;
2
- echo '<div id="pz-lkc-modal">'.PHP_EOL;
3
- echo ' <div id="pz-lkc-close"><a>×</a></div>'.PHP_EOL;
4
- echo ' <div id="pz-lkc-content">'.PHP_EOL;
5
- echo ' <form action="" method="post">'.PHP_EOL;
6
- echo ' <label>'.__('Input URL', $this->text_domain).'</label><br />'.PHP_EOL;
7
- echo ' <input id="pz-lkc-code" type="hidden" value="'.$this->options['code1'].'">'.PHP_EOL;
8
- echo ' <input id="pz-lkc-url" type="text" size="60">'.PHP_EOL;
9
- echo ' <input id="pz-lkc-insert" type="submit" value="'.__('Insert', $this->text_domain).'" onClick="return false;" >'.PHP_EOL;
10
- echo ' </form>'.PHP_EOL;
11
- echo ' </div>'.PHP_EOL;
12
- echo '</div>'.PHP_EOL;
13
- echo '<div id="pz-lkc-overlay"></div>'.PHP_EOL;
 
 
1
+ <?php if (!function_exists('get_option' ) ) die; ?>
2
+ <div id="pz-lkc-modal">
3
+ <div id="pz-lkc-close">
4
+ <a><?php _e('×', $this->text_domain ); ?></a>
5
+ </div>
6
+ <div id="pz-lkc-content">
7
+ <form method="post">
8
+ <label><?php _e('Input URL', $this->text_domain ); ?></label><br />
9
+ <input id="pz-lkc-code" type="hidden" value="<?php echo $this->options['code1']; ?>">
10
+ <input id="pz-lkc-url" type="url" size="60">
11
+ <input id="pz-lkc-insert" type="submit" value="<?php _e('Insert', $this->text_domain ); ?>" onClick="return false;" >
12
+ </form>
13
+ </div>
14
+ </div>
15
+ <div id="pz-lkc-overlay"></div>
lib/pz-linkcard-settings-setup.php ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if (!function_exists('get_option' ) ) die; ?>
2
+ <?php
3
+ // ログのディレクトリの用意
4
+ if (!$this->options['debug-dir'] ) {
5
+ $dir = $this->upload_dir_path.'debug/';
6
+ $dir_url = $this->upload_dir_url .'debug/';
7
+ if (!is_dir($dir ) ) {
8
+ if (!wp_mkdir_p($dir ) ) {
9
+ $dir = null;
10
+ $url = null;
11
+ }
12
+ }
13
+ if ($dir ) {
14
+ $dir_url = preg_replace('/.*(\/\/.*)/', '$1', $dir_url ); // スキームを外す
15
+ $this->options['debug-dir'] = $dir;
16
+ $this->options['debug-url'] = $dir_url;
17
+ }
18
+ }
19
+
20
+ // スタイルシートのパスを用意
21
+ if (!$this->options['debug-dir'] ) {
22
+ $dir = $this->upload_dir_path;
23
+ $dir_url = $this->upload_dir_url ;
24
+ if (!is_dir($dir ) ) {
25
+ if (!wp_mkdir_p($dir ) ) {
26
+ $dir = null;
27
+ $url = null;
28
+ }
29
+ }
30
+ if ($dir ) {
31
+ $dir_url = preg_replace('/.*(\/\/.*)/', '$1', $dir_url ); // スキームを外す
32
+ $this->options['css-path'] = $dir .'style.css';
33
+ $this->options['css-url'] = $dir_url.'style.css';
34
+ }
35
+ }
36
+ $this->options['css-templete'] = $this->plugin_dir_path.'templete/pz-linkcard-templete.css'; // 元となるテンプレート
37
+
38
+ // サムネイルのキャッシュディレクトリの用意
39
+ if (!$this->options['debug-dir'] ) {
40
+ $dir = $this->upload_dir_path.'cache/';
41
+ $dir_url = $this->upload_dir_url .'cache/';
42
+ if (!is_dir($dir ) ) {
43
+ if (!wp_mkdir_p($dir ) ) {
44
+ $dir = null;
45
+ $url = null;
46
+ }
47
+ }
48
+ if ($dir ) {
49
+ $dir_url = preg_replace('/.*(\/\/.*)/', '$1', $dir_url ); // スキームを外す
50
+ $this->options['thumbnail-dir'] = $dir;
51
+ $this->options['thumbnail-url'] = $dir_url;
52
+ }
53
+ }
54
+
55
+ // 開発環境のチェック
56
+ if (mb_substr($this->home_url, 0, 29 ) == 'http://application.secret.jp/' ) {
57
+ $this->options['develop-mode'] = true;
58
+ } else {
59
+ $this->options['develop-mode'] = false;
60
+ }
61
+
62
+ // ユーザーエージェントの設定
63
+ $crawler = 'Pz-LinkCard-Crawler/';
64
+ if (!$this->options['user-agent'] || mb_substr($this->options['user-agent'], 0, mb_strlen($crawler ) ) == $crawler ) {
65
+ $this->options['user-agent'] = $crawler.$this->options['plugin-version'];
66
+ }
67
+
68
+ // 管理者モード解除
69
+ if ($this->options['admin-mode'] && !$this->options['debug-mode'] ) {
70
+ $this->options['admin-mode'] = false;
71
+ }
lib/pz-linkcard-settings-validate.php CHANGED
@@ -1,4 +1,4 @@
1
- <?php if (!function_exists("get_option")) die; ?>
2
  <?php
3
  // エラー
4
  $flg_error = false;
@@ -11,10 +11,26 @@
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) {
@@ -54,13 +70,7 @@
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'])
1
+ <?php if (!function_exists('get_option' ) ) die; ?>
2
  <?php
3
  // エラー
4
  $flg_error = false;
11
  $this->options['in-info'] = stripslashes($this->options['in-info']);
12
  $this->options['th-info'] = stripslashes($this->options['th-info']);
13
 
14
+ // サイトアイコン画像取得URL
15
+ $key = 'favicon-api';
16
+ $url = isset($this->options[$key] ) ? $this->options[$key] : null ;
17
+ $url = $this->pz_EncodeURL($url );
18
+ $url = preg_replace( array('/%DOMAIN%/i', '/%DOMAIN_URL%/i', '/%URL%/i' ), array('%DOMAIN%', '%DOMAIN_URL%', '%URL%'), $url ); // パラメータ文字を大文字にする
19
+ $this->options[$key] = $url;
20
+
21
+ // サムネイル画像取得URL
22
+ $key = 'thumbnail-api';
23
+ $url = isset($this->options[$key] ) ? $this->options[$key] : null ;
24
+ $url = $this->pz_EncodeURL($url );
25
+ $url = preg_replace( array('/%DOMAIN%/i', '/%DOMAIN_URL%/i', '/%URL%/i' ), array('%DOMAIN%', '%DOMAIN_URL%', '%URL%'), $url ); // パラメータ文字を大文字にする
26
+ $this->options[$key] = $url;
27
+
28
+ // 追加CSS用URL
29
+ $key = 'css-add-url';
30
+ $url = isset($this->options[$key] ) ? $this->options[$key] : null ;
31
+ $url = $this->pz_EncodeURL($url );
32
+ $this->options[$key] = $url;
33
+
34
  // カード幅
35
  $width = $this->options['width'];
36
  if ($width) {
70
  $this->options['height-added'] = pz_TrimNum($this->options['height-added'], $this->defaults['height-added']).'px';
71
  $this->options['thumbnail-width'] = pz_TrimNum($this->options['thumbnail-width'], $this->defaults['thumbnail-width']).'px';
72
  $this->options['thumbnail-height'] = pz_TrimNum($this->options['thumbnail-height'], $this->defaults['thumbnail-height']).'px';
 
73
  $this->options['border-width'] = pz_TrimNum($this->options['border-width'], $this->defaults['border-width']).'px';
 
 
 
 
 
74
 
75
  // カラーコードの不正文字をチェック
76
  if ( !pz_CheckColorCode($this->options['color-title'])
lib/pz-linkcard-settings.php CHANGED
@@ -1,296 +1,409 @@
1
- <?php if (!function_exists("get_option")) die; ?>
2
- <div class="wrap">
3
- <div id="icon-options-general" class="icon32"></div>
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'); ?>
 
 
 
 
73
 
74
  <div class="pz-lkc-tabs">
75
- <a class="pz-lkc-tab<?php if ($this->options['flg-invalid']) { echo ' pz-lkc-tab-active'; } ?>" href="#pz-lkc-error"<?php if (!$this->options['flg-invalid']) { echo ' style="display: none;"'; } ?>><?php _e('Error', $this->text_domain); ?></a>
76
- <a class="pz-lkc-tab<?php if (!$this->options['flg-invalid']) { echo ' pz-lkc-tab-active'; } ?>" href="#pz-lkc-basic"><?php _e('Basic', $this->text_domain); ?></a>
77
- <a class="pz-lkc-tab" href="#pz-lkc-position"><?php _e('Position', $this->text_domain); ?></a>
78
- <a class="pz-lkc-tab" href="#pz-lkc-display"><?php _e('Display', $this->text_domain); ?></a>
79
- <a class="pz-lkc-tab" href="#pz-lkc-letter"><?php _e('Letter', $this->text_domain); ?></a>
80
- <a class="pz-lkc-tab" href="#pz-lkc-external"><?php _e('External link', $this->text_domain); ?></a>
81
- <a class="pz-lkc-tab" href="#pz-lkc-internal"><?php _e('Internal link', $this->text_domain); ?></a>
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>
123
  <td>
124
  <select name="properties[special-format]">
125
- <option value="" <?php if($this->options['special-format'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
126
- <option value="LkC" <?php if($this->options['special-format'] == 'LkC') echo 'selected="selected"'; ?>><?php _e('Pz-LkC Default', $this->text_domain); ?></option>
127
- <option value="hbc" <?php if($this->options['special-format'] == 'hbc') echo 'selected="selected"'; ?>><?php _e('Normal', $this->text_domain); ?></option>
128
- <option value="ecl" <?php if($this->options['special-format'] == 'ecl') echo 'selected="selected"'; ?>><?php _e('Enclose', $this->text_domain); ?></option>
129
- <option value="cmp" <?php if($this->options['special-format'] == 'cmp') echo 'selected="selected"'; ?>><?php _e('Compact', $this->text_domain); ?></option>
130
- <option value="ref" <?php if($this->options['special-format'] == 'ref') echo 'selected="selected"'; ?>><?php _e('Reflection', $this->text_domain); ?></option>
131
- <option value="smp" <?php if($this->options['special-format'] == 'smp') echo 'selected="selected"'; ?>><?php _e('Simple', $this->text_domain); ?></option>
132
- <option value="JIN" <?php if($this->options['special-format'] == 'JIN') echo 'selected="selected"'; ?>><?php _e('Headline', $this->text_domain); ?></option>
133
- <option value="ct1" <?php if($this->options['special-format'] == 'ct1') echo 'selected="selected"'; ?>><?php _e('Cellophane tape "center"', $this->text_domain); ?></option>
134
- <option value="ct2" <?php if($this->options['special-format'] == 'ct2') echo 'selected="selected"'; ?>><?php _e('Cellophane tape "Top corner"', $this->text_domain); ?></option>
135
- <option value="ct3" <?php if($this->options['special-format'] == 'ct3') echo 'selected="selected"'; ?>><?php _e('Cellophane tape "long"', $this->text_domain); ?></option>
136
- <option value="ct4" <?php if($this->options['special-format'] == 'ct4') echo 'selected="selected"'; ?>><?php _e('Cellophane tape "digonal"', $this->text_domain); ?></option>
137
- <option value="ppc" <?php if($this->options['special-format'] == 'ppc') echo 'selected="selected"'; ?>><?php _e('Curling paper', $this->text_domain); ?></option>
138
- <option value="tac" <?php if($this->options['special-format'] == 'tac') echo 'selected="selected"'; ?>><?php _e('Cellophane tape and curling', $this->text_domain); ?></option>
139
- <option value="sBR" <?php if($this->options['special-format'] == 'sBR') echo 'selected="selected"'; ?>><?php _e('Stitch blue & red', $this->text_domain); ?></option>
140
- <option value="sGY" <?php if($this->options['special-format'] == 'sGY') echo 'selected="selected"'; ?>><?php _e('Stitch green & yellow', $this->text_domain); ?></option>
141
- <option value="sqr" <?php if($this->options['special-format'] == 'sqr') echo 'selected="selected"'; ?>><?php _e('Square', $this->text_domain); ?></option>
142
- <option value="inI" <?php if($this->options['special-format'] == 'inI') echo 'selected="selected"'; ?>><?php _e('Infomation orange', $this->text_domain); ?></option>
143
- <option value="inN" <?php if($this->options['special-format'] == 'inN') echo 'selected="selected"'; ?>><?php _e('Neutral bluegreen', $this->text_domain); ?></option>
144
- <option value="inE" <?php if($this->options['special-format'] == 'inE') echo 'selected="selected"'; ?>><?php _e('Enlightened green', $this->text_domain); ?></option>
145
- <option value="inR" <?php if($this->options['special-format'] == 'inR') echo 'selected="selected"'; ?>><?php _e('Resistance blue', $this->text_domain); ?></option>
146
- <option value="wxp" <?php if($this->options['special-format'] == 'wxp') echo 'selected="selected"'; ?>><?php _e('Windows XP', $this->text_domain); ?></option>
147
- <option value="w95" <?php if($this->options['special-format'] == 'w95') echo 'selected="selected"'; ?>><?php _e('Windows 95', $this->text_domain); ?></option>
148
- <option value="slt" <?php if($this->options['special-format'] == 'slt') echo 'selected="selected"'; ?>><?php _e('Slanting', $this->text_domain); ?></option>
149
- <option value="3Dr" <?php if($this->options['special-format'] == '3Dr') echo 'selected="selected"'; ?>><?php _e('3D Rotate', $this->text_domain); ?></option>
150
- <option value="pin" <?php if($this->options['special-format'] == 'pin') echo 'selected="selected"'; ?>><?php _e('Pushpin', $this->text_domain); ?></option>
151
  </select>
152
- <br><span style="color: #ff8844;"><?php echo __('*', $this->text_domain).' '.__('It applies over other formatting settings.', $this->text_domain); ?></span>
153
  </td>
154
  </tr>
 
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>
171
- <td>https://www.amazon.co.jp/gp/registry/wishlist/2KIBQLC1VLA9X</td>
 
 
 
 
 
 
 
 
172
  </tr>
173
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
  </table>
 
 
 
 
 
 
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>
188
  </tr>
189
 
190
- <tr valign="top">
191
- <th scope="row"><?php _e('Margin', $this->text_domain); ?></th>
192
  <td>
193
- <table style="border: 1px dashed #000; background-color: #eee; width: 600px;">
194
  <tr>
195
  <td>
196
  </td>
197
  <td align="center">
198
- <?php _e('Margin top', $this->text_domain); ?><br>
199
  <select name="properties[margin-top]">
200
- <option value="" <?php if($this->options['margin-top'] == '') echo 'selected="selected"'; ?>><?php _e('Not defined', $this->text_domain); ?></option>
201
- <option value="0" <?php if($this->options['margin-top'] == '0') echo 'selected="selected"'; ?>><?php _e('0', $this->text_domain); ?></option>
202
- <option value="4px" <?php if($this->options['margin-top'] == '4px') echo 'selected="selected"'; ?>><?php _e('4px', $this->text_domain); ?></option>
203
- <option value="8px" <?php if($this->options['margin-top'] == '8px') echo 'selected="selected"'; ?>><?php _e('8px', $this->text_domain); ?></option>
204
- <option value="16px" <?php if($this->options['margin-top'] == '16px') echo 'selected="selected"'; ?>><?php _e('16px', $this->text_domain); ?></option>
205
- <option value="32px" <?php if($this->options['margin-top'] == '32px') echo 'selected="selected"'; ?>><?php _e('32px', $this->text_domain); ?></option>
206
- <option value="40px" <?php if($this->options['margin-top'] == '40px') echo 'selected="selected"'; ?>><?php _e('40px', $this->text_domain); ?></option>
207
- <option value="64px" <?php if($this->options['margin-top'] == '64px') echo 'selected="selected"'; ?>><?php _e('64px', $this->text_domain); ?></option>
208
  </select>
209
  </td>
210
  <td></td>
211
  </tr>
212
  <tr>
213
  <td align="center">
214
- <?php _e('Margin left', $this->text_domain); ?><br>
215
  <select name="properties[margin-left]">
216
- <option value="" <?php if($this->options['margin-left'] == '') echo 'selected="selected"'; ?>><?php _e('Not defined', $this->text_domain); ?></option>
217
- <option value="0" <?php if($this->options['margin-left'] == '0') echo 'selected="selected"'; ?>><?php _e('0', $this->text_domain); ?></option>
218
- <option value="4px" <?php if($this->options['margin-left'] == '4px') echo 'selected="selected"'; ?>><?php _e('4px', $this->text_domain); ?></option>
219
- <option value="8px" <?php if($this->options['margin-left'] == '8px') echo 'selected="selected"'; ?>><?php _e('8px', $this->text_domain); ?></option>
220
- <option value="16px" <?php if($this->options['margin-left'] == '16px') echo 'selected="selected"'; ?>><?php _e('16px', $this->text_domain); ?></option>
221
- <option value="32px" <?php if($this->options['margin-left'] == '32px') echo 'selected="selected"'; ?>><?php _e('32px', $this->text_domain); ?></option>
222
- <option value="40px" <?php if($this->options['margin-left'] == '40px') echo 'selected="selected"'; ?>><?php _e('40px', $this->text_domain); ?></option>
223
- <option value="64px" <?php if($this->options['margin-left'] == '64px') echo 'selected="selected"'; ?>><?php _e('64px', $this->text_domain); ?></option>
224
  </select>
225
  </td>
226
- <td align="center" style="border: 1px solid #000; background-color: #fff;">
227
 
228
  <table class="form-table">
229
  <tr>
230
  <td colspan="2" align="center">
231
- <?php _e('Margin top', $this->text_domain); ?><br>
232
  <select name="properties[card-top]">
233
- <option value="" <?php if($this->options['card-top'] == '') echo 'selected="selected"'; ?>><?php _e('Not defined', $this->text_domain); ?></option>
234
- <option value="4px" <?php if($this->options['card-top'] == '4px') echo 'selected="selected"'; ?>><?php _e('4px', $this->text_domain); ?></option>
235
- <option value="8px" <?php if($this->options['card-top'] == '8px') echo 'selected="selected"'; ?>><?php _e('8px', $this->text_domain); ?></option>
236
- <option value="16px" <?php if($this->options['card-top'] == '16px') echo 'selected="selected"'; ?>><?php _e('16px', $this->text_domain); ?></option>
237
- <option value="24px" <?php if($this->options['card-top'] == '24px') echo 'selected="selected"'; ?>><?php _e('24px', $this->text_domain); ?></option>
238
- <option value="32px" <?php if($this->options['card-top'] == '32px') echo 'selected="selected"'; ?>><?php _e('32px', $this->text_domain); ?></option>
239
- <option value="40px" <?php if($this->options['card-top'] == '40px') echo 'selected="selected"'; ?>><?php _e('40px', $this->text_domain); ?></option>
240
- <option value="64px" <?php if($this->options['card-top'] == '64px') echo 'selected="selected"'; ?>><?php _e('64px', $this->text_domain); ?></option>
241
- <option value="0" <?php if($this->options['card-top'] == '0') echo 'selected="selected"'; ?>><?php _e('0', $this->text_domain); ?></option>
242
  </select>
243
  </td>
244
  </tr>
245
  <tr>
246
  <td align="center">
247
- <?php _e('Margin left', $this->text_domain); ?><br>
248
  <select name="properties[card-left]">
249
- <option value="" <?php if($this->options['card-left'] == '') echo 'selected="selected"'; ?>><?php _e('Not defined', $this->text_domain); ?></option>
250
- <option value="4px" <?php if($this->options['card-left'] == '4px') echo 'selected="selected"'; ?>><?php _e('4px', $this->text_domain); ?></option>
251
- <option value="8px" <?php if($this->options['card-left'] == '8px') echo 'selected="selected"'; ?>><?php _e('8px', $this->text_domain); ?></option>
252
- <option value="16px" <?php if($this->options['card-left'] == '16px') echo 'selected="selected"'; ?>><?php _e('16px', $this->text_domain); ?></option>
253
- <option value="24px" <?php if($this->options['card-left'] == '24px') echo 'selected="selected"'; ?>><?php _e('24px', $this->text_domain); ?></option>
254
- <option value="32px" <?php if($this->options['card-left'] == '32px') echo 'selected="selected"'; ?>><?php _e('32px', $this->text_domain); ?></option>
255
- <option value="40px" <?php if($this->options['card-left'] == '40px') echo 'selected="selected"'; ?>><?php _e('40px', $this->text_domain); ?></option>
256
- <option value="64px" <?php if($this->options['card-left'] == '64px') echo 'selected="selected"'; ?>><?php _e('64px', $this->text_domain); ?></option>
257
- <option value="0" <?php if($this->options['card-left'] == '0') echo 'selected="selected"'; ?>><?php _e('0', $this->text_domain); ?></option>
258
  </select>
259
  </td>
260
  <td align="center">
261
- <?php _e('Margin right', $this->text_domain); ?><br>
262
  <select name="properties[card-right]">
263
- <option value="" <?php if($this->options['card-right'] == '') echo 'selected="selected"'; ?>><?php _e('Not defined', $this->text_domain); ?></option>
264
- <option value="4px" <?php if($this->options['card-right'] == '4px') echo 'selected="selected"'; ?>><?php _e('4px', $this->text_domain); ?></option>
265
- <option value="8px" <?php if($this->options['card-right'] == '8px') echo 'selected="selected"'; ?>><?php _e('8px', $this->text_domain); ?></option>
266
- <option value="16px" <?php if($this->options['card-right'] == '16px') echo 'selected="selected"'; ?>><?php _e('16px', $this->text_domain); ?></option>
267
- <option value="24px" <?php if($this->options['card-right'] == '24px') echo 'selected="selected"'; ?>><?php _e('24px', $this->text_domain); ?></option>
268
- <option value="32px" <?php if($this->options['card-right'] == '32px') echo 'selected="selected"'; ?>><?php _e('32px', $this->text_domain); ?></option>
269
- <option value="40px" <?php if($this->options['card-right'] == '40px') echo 'selected="selected"'; ?>><?php _e('40px', $this->text_domain); ?></option>
270
- <option value="64px" <?php if($this->options['card-right'] == '64px') echo 'selected="selected"'; ?>><?php _e('64px', $this->text_domain); ?></option>
271
- <option value="0" <?php if($this->options['card-right'] == '0') echo 'selected="selected"'; ?>><?php _e('0', $this->text_domain); ?></option>
272
  </select>
273
  </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>
282
  <td colspan="2" align="center">
283
- <?php _e('Margin bottom', $this->text_domain); ?><br>
284
  <select name="properties[card-bottom]">
285
- <option value="" <?php if($this->options['card-bottom'] == '') echo 'selected="selected"'; ?>><?php _e('Not defined', $this->text_domain); ?></option>
286
- <option value="4px" <?php if($this->options['card-bottom'] == '4px') echo 'selected="selected"'; ?>><?php _e('4px', $this->text_domain); ?></option>
287
- <option value="8px" <?php if($this->options['card-bottom'] == '8px') echo 'selected="selected"'; ?>><?php _e('8px', $this->text_domain); ?></option>
288
- <option value="16px" <?php if($this->options['card-bottom'] == '16px') echo 'selected="selected"'; ?>><?php _e('16px', $this->text_domain); ?></option>
289
- <option value="24px" <?php if($this->options['card-bottom'] == '24px') echo 'selected="selected"'; ?>><?php _e('24px', $this->text_domain); ?></option>
290
- <option value="32px" <?php if($this->options['card-bottom'] == '32px') echo 'selected="selected"'; ?>><?php _e('32px', $this->text_domain); ?></option>
291
- <option value="40px" <?php if($this->options['card-bottom'] == '40px') echo 'selected="selected"'; ?>><?php _e('40px', $this->text_domain); ?></option>
292
- <option value="64px" <?php if($this->options['card-bottom'] == '64px') echo 'selected="selected"'; ?>><?php _e('64px', $this->text_domain); ?></option>
293
- <option value="0" <?php if($this->options['card-bottom'] == '0') echo 'selected="selected"'; ?>><?php _e('0', $this->text_domain); ?></option>
294
  </select>
295
  </td>
296
  </tr>
@@ -298,34 +411,34 @@
298
 
299
  </td>
300
  <td align="center">
301
- <?php _e('Margin right', $this->text_domain); ?><br>
302
  <select name="properties[margin-right]">
303
- <option value="" <?php if($this->options['margin-right'] == '') echo 'selected="selected"'; ?>><?php _e('Not defined', $this->text_domain); ?></option>
304
- <option value="0" <?php if($this->options['margin-right'] == '0') echo 'selected="selected"'; ?>><?php _e('0', $this->text_domain); ?></option>
305
- <option value="4px" <?php if($this->options['margin-right'] == '4px') echo 'selected="selected"'; ?>><?php _e('4px', $this->text_domain); ?></option>
306
- <option value="8px" <?php if($this->options['margin-right'] == '8px') echo 'selected="selected"'; ?>><?php _e('8px', $this->text_domain); ?></option>
307
- <option value="16px" <?php if($this->options['margin-right'] == '16px') echo 'selected="selected"'; ?>><?php _e('16px', $this->text_domain); ?></option>
308
- <option value="32px" <?php if($this->options['margin-right'] == '32px') echo 'selected="selected"'; ?>><?php _e('32px', $this->text_domain); ?></option>
309
- <option value="40px" <?php if($this->options['margin-right'] == '40px') echo 'selected="selected"'; ?>><?php _e('40px', $this->text_domain); ?></option>
310
- <option value="64px" <?php if($this->options['margin-right'] == '64px') echo 'selected="selected"'; ?>><?php _e('64px', $this->text_domain); ?></option>
311
  </select>
312
  </td>
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>
320
  <select name="properties[margin-bottom]">
321
- <option value="" <?php if($this->options['margin-bottom'] == '') echo 'selected="selected"'; ?>><?php _e('Not defined', $this->text_domain); ?></option>
322
- <option value="0" <?php if($this->options['margin-bottom'] == '0') echo 'selected="selected"'; ?>><?php _e('0', $this->text_domain); ?></option>
323
- <option value="4px" <?php if($this->options['margin-bottom'] == '4px') echo 'selected="selected"'; ?>><?php _e('4px', $this->text_domain); ?></option>
324
- <option value="8px" <?php if($this->options['margin-bottom'] == '8px') echo 'selected="selected"'; ?>><?php _e('8px', $this->text_domain); ?></option>
325
- <option value="16px" <?php if($this->options['margin-bottom'] == '16px') echo 'selected="selected"'; ?>><?php _e('16px', $this->text_domain); ?></option>
326
- <option value="32px" <?php if($this->options['margin-bottom'] == '32px') echo 'selected="selected"'; ?>><?php _e('32px', $this->text_domain); ?></option>
327
- <option value="40px" <?php if($this->options['margin-bottom'] == '40px') echo 'selected="selected"'; ?>><?php _e('40px', $this->text_domain); ?></option>
328
- <option value="64px" <?php if($this->options['margin-bottom'] == '64px') echo 'selected="selected"'; ?>><?php _e('64px', $this->text_domain); ?></option>
329
  </select>
330
  </td>
331
  <td>
@@ -334,57 +447,57 @@
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>
@@ -392,75 +505,75 @@
392
  <tr>
393
  <td>
394
  <label>
395
- <?php _e('Display URL', $this->text_domain); ?>
396
  <select name="properties[display-url]">
397
- <option value="" <?php if($this->options['display-url'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
398
- <option value="1" <?php if($this->options['display-url'] == '1') echo 'selected="selected"'; ?>><?php _e('Under title', $this->text_domain); ?></option>
399
- <option value="2" <?php if($this->options['display-url'] == '2') echo 'selected="selected"'; ?>><?php _e('Bihind site-info', $this->text_domain); ?></option>
400
  </select>
401
  </label>
402
  </td>
403
- <td rowspan="3" style="border: 1px solid #000;">
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>
442
  <td>
443
- <?php _e('Round a square', $this->text_domain); ?>
444
  <select name="properties[radius]">
445
- <option value="" <?php if($this->options['radius'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
446
- <option value="2" <?php if($this->options['radius'] == '2') echo 'selected="selected"'; ?>><?php _e('4px', $this->text_domain); ?></option>
447
- <option value="1" <?php if($this->options['radius'] == '1') echo 'selected="selected"'; ?>><?php _e('8px', $this->text_domain); ?></option>
448
- <option value="3" <?php if($this->options['radius'] == '3') echo 'selected="selected"'; ?>><?php _e('16px', $this->text_domain); ?></option>
449
- <option value="4" <?php if($this->options['radius'] == '4') echo 'selected="selected"'; ?>><?php _e('32px', $this->text_domain); ?></option>
450
- <option value="5" <?php if($this->options['radius'] == '5') echo 'selected="selected"'; ?>><?php _e('64px', $this->text_domain); ?></option>
451
  </select>
452
  </td>
453
  </tr>
454
  <tr>
455
  <td>
456
  <label>
457
- <?php _e('When the mouse is on', $this->text_domain); ?>
458
  <select name="properties[hover]">
459
- <option value="" <?php if($this->options['hover'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
460
- <option value="1" <?php if($this->options['hover'] == '1') echo 'selected="selected"'; ?>><?php _e('Lighten', $this->text_domain); ?></option>
461
- <option value="2" <?php if($this->options['hover'] == '2') echo 'selected="selected"'; ?>><?php _e('Hover (light)', $this->text_domain); ?></option>
462
- <option value="3" <?php if($this->options['hover'] == '3') echo 'selected="selected"'; ?>><?php _e('Hover (dark)', $this->text_domain); ?></option>
463
- <option value="7" <?php if($this->options['hover'] == '7') echo 'selected="selected"'; ?>><?php _e('Radius', $this->text_domain); ?></option>
464
  </select>
465
  </label>
466
  </td>
@@ -470,635 +583,632 @@
470
  </tr>
471
 
472
  <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">
496
- <th scope="row"><?php _e('More button', $this->text_domain); ?></th>
497
  <td>
498
  <select name="properties[flg-more]">
499
- <option value="" <?php if($this->options['flg-more'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
500
- <option value="1" <?php if($this->options['flg-more'] == '1') echo 'selected="selected"'; ?>><?php _e('Text link', $this->text_domain); ?></option>
501
- <option value="2" <?php if($this->options['flg-more'] == '2') echo 'selected="selected"'; ?>><?php _e('Simple button', $this->text_domain); ?></option>
502
- <option value="3" <?php if($this->options['flg-more'] == '3') echo 'selected="selected"'; ?>><?php _e('Blue', $this->text_domain); ?></option>
503
- <option value="4" <?php if($this->options['flg-more'] == '4') echo 'selected="selected"'; ?>><?php _e('Dark', $this->text_domain); ?></option>
504
  </select>
505
- <p><?php _e('*', $this->text_domain); ?> <?php _e('It is recommended that you leave the card height blank when using this setting.', $this->text_domain); ?></p>
506
  </td>
507
  </tr>
508
 
509
- <tr valign="top">
510
- <th scope="row"><?php _e('Display SNS Count', $this->text_domain); ?></th>
511
  <td>
512
  <select name="properties[sns-position]">
513
- <option value="" <?php if($this->options['sns-position'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
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>
648
  <td>
649
- <select name="properties[ex-thumbnail]">
650
- <option value="" <?php if($this->options['ex-thumbnail'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
651
- <option value="1" <?php if($this->options['ex-thumbnail'] == '1') echo 'selected="selected"'; ?>><?php _e('Direct', $this->text_domain); ?></option>
652
- <option value="3" <?php if($this->options['ex-thumbnail'] == '3') echo 'selected="selected"'; ?>><?php _e('Use WebAPI', $this->text_domain); ?></option>
653
- <option value="13" <?php if($this->options['ex-thumbnail'] == '13') echo 'selected="selected"'; ?>><?php _e('Use WebAPI ,If can not direct', $this->text_domain); ?></option>
654
  </select>
655
-
 
 
 
 
 
 
 
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>
663
- <option value="1" <?php if($this->options['ex-favicon'] == '1') echo 'selected="selected"'; ?> disabled="disabled"><?php _e('Direct', $this->text_domain); ?></option>
664
- <option value="3" <?php if($this->options['ex-favicon'] == '3') echo 'selected="selected"'; ?>><?php _e('Use WebAPI', $this->text_domain); ?></option>
665
- <option value="13" <?php if($this->options['ex-favicon'] == '13') echo 'selected="selected"'; ?> disabled="disabled"><?php _e('Use WebAPI ,If can not direct', $this->text_domain); ?></option>
666
  </select>
 
 
 
 
 
 
 
 
667
  </td>
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>
679
  <td>
680
- <select name="properties[ex-target]">
681
- <option value="" <?php if($this->options['ex-target'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
682
- <option value="1" <?php if($this->options['ex-target'] == '1') echo 'selected="selected"'; ?>><?php _e('All client', $this->text_domain); ?></option>
683
- <option value="2" <?php if($this->options['ex-target'] == '2') echo 'selected="selected"'; ?>><?php _e('Other than mobile', $this->text_domain); ?></option>
 
 
 
 
 
684
  </select>
 
685
  </td>
686
  </tr>
687
- <tr valign="top">
688
- <th scope="row"><?php _e('Get contents', $this->text_domain); ?></th>
689
  <td>
690
- <?php _e('Initially acquired only from the content', $this->text_domain); ?>
 
 
 
 
 
 
 
 
 
 
691
  </td>
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>
725
- <td>
726
- <select name="properties[in-thumbnail]">
727
- <option value="" <?php if($this->options['in-thumbnail'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
728
- <option value="1" <?php if($this->options['in-thumbnail'] == '1') echo 'selected="selected"'; ?>><?php _e('Direct', $this->text_domain); ?></option>
729
- <option value="3" <?php if($this->options['in-thumbnail'] == '3') echo 'selected="selected"'; ?>><?php _e('Use WebAPI', $this->text_domain); ?></option>
730
- <option value="13" <?php if($this->options['in-thumbnail'] == '13') echo 'selected="selected"'; ?>><?php _e('Use WebAPI ,If can not direct', $this->text_domain); ?></option>
731
- </select>
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>
739
- <option value="1" <?php if($this->options['in-favicon'] == '1') echo 'selected="selected"'; ?> <?php if(!function_exists('has_site_icon') || !has_site_icon()) echo 'disabled="disabled"'; ?>><?php _e('Direct', $this->text_domain); ?></option>
740
- <option value="3" <?php if($this->options['in-favicon'] == '3') echo 'selected="selected"'; ?>><?php _e('Use WebAPI', $this->text_domain); ?></option>
741
- <option value="13" <?php if($this->options['in-favicon'] == '13') echo 'selected="selected"'; ?>><?php _e('Use WebAPI ,If can not direct', $this->text_domain); ?></option>
742
- </select>
743
- </td>
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>
755
  <td>
756
- <select name="properties[in-target]">
757
- <option value="" <?php if($this->options['in-target'] == '') echo 'selected="selected"'; ?>><?php _e('None', $this->text_domain); ?></option>
758
- <option value="1" <?php if($this->options['in-target'] == '1') echo 'selected="selected"'; ?>><?php _e('All client', $this->text_domain); ?></option>
759
- <option value="2" <?php if($this->options['in-target'] == '2') echo 'selected="selected"'; ?>><?php _e('Other than mobile', $this->text_domain); ?></option>
760
- </select>
761
  </td>
762
  </tr>
763
- <tr valign="top">
764
- <th scope="row"><?php _e('Get contents', $this->text_domain); ?></th>
765
- <td>
766
- <select name="properties[in-get]">
767
- <?php $in_data = (isset($this->options['in-get']) ? $this->options['in-get'] : ''); ?>
768
- <option value="" <?php if($in_data == '') echo 'selected="selected"'; ?>><?php _e('Always get the latest from the content', $this->text_domain); ?></option>
769
- <option value="1" <?php if($in_data == '1') echo 'selected="selected"'; ?>><?php _e('Always get the latest from the excerpt', $this->text_domain); ?></option>
770
- <option value="2" <?php if($in_data == '2') echo 'selected="selected"'; ?>><?php _e('Initially acquired only from the content', $this->text_domain); ?></option>
771
- </select>
772
- </td>
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>
810
- <td><?php _e('Cannot set', $this->text_domain); ?></td>
811
- </tr>
812
- <tr valign="top">
813
- <th scope="row"><?php _e('Open new window/tab', $this->text_domain); ?></th>
814
- <td><?php _e('It is common with setting Internal-link', $this->text_domain); ?></td>
815
- </re>
816
- <tr valign="top">
817
- <th scope="row"><?php _e('Get contents', $this->text_domain); ?></th>
818
- <td><?php _e('It is common with setting Internal-link', $this->text_domain); ?></td>
819
- </tr>
820
- <tr valign="top">
821
- <th scope="row"><?php _e('Retry get PID', $this->text_domain); ?></th>
822
- <td><?php _e('It is common with setting Internal-link', $this->text_domain); ?></td>
823
  </tr>
824
- </table>
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>
952
- <td>[<input name="properties[code1]" type="text" id="code1" value="<?php echo esc_attr($this->options['code1']); ?>" class="regular-text" style="width: 8em;" onKeyUp="document.getElementById('open1').innerText = document.getElementById('code1').value; document.getElementById('close1').innerText = document.getElementById('code1').value; document.getElementById('open2').innerText = document.getElementById('code1').value;" /> 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>]
953
- <p><?php _e('Case-sensitive', $this->text_domain); ?></p></td>
954
- </tr>
955
- <tr valign="top">
956
- <th scope="row"><?php _e('Use inlinetext', $this->text_domain); ?></th>
957
  <td>
958
- [<span style="color: #888888;" id="open1"><?php echo esc_attr($this->options['code1']); ?></span> url="http://xxx"]
959
- <select name="properties[use-inline]">
960
- <option value="" <?php if($this->options['use-inline'] == '') echo 'selected="selected"'; ?>><?php _e('No use', $this->text_domain); ?></option>
961
- <option value="1" <?php if($this->options['use-inline'] == '1') echo 'selected="selected"'; ?>><?php _e('Use to excerpt', $this->text_domain); ?></option>
962
- <option value="2" <?php if($this->options['use-inline'] == '2') echo 'selected="selected"'; ?>><?php _e('Use to title', $this->text_domain); ?></option>
963
  </select>
964
- [/<span style="color: #888888;" id="close1"><?php echo esc_attr($this->options['code1']); ?></span>]
965
- <p><?php _e('This setting applies only to the Shortcode1', $this->text_domain); ?></p></td>
966
  </td>
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">
984
- <th scope="row"><?php _e('Parameters', $this->text_domain); ?></th>
985
- <td>
986
- [<span style="color: #888888;" id="open2"><?php echo esc_attr($this->options['code1']); ?></span> url="http://xxx" <span style="color: #4488ff; font-weight: bold;">title=</span>"xxxxxx" <span style="color: #8844ff; font-weight: bold;">content=</span>"xxxxxx"]<br>
987
- <?php _e('For any shortcode you can change the title and excerpt with `title` parameter and `content` parameter', $this->text_domain); ?>
988
- </ts>
989
  </tr>
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>
1026
  <td>
1027
- <select name="properties[trail-slash]">
1028
- <?php $in_data = (isset($this->options['trail-slash']) ? $this->options['trail-slash'] : ''); ?>
1029
- <option value="" <?php if($in_data == '') echo 'selected="selected"'; ?>><?php _e('As it', $this->text_domain); ?></option>
1030
- <option value="1" <?php if($in_data == '1') echo 'selected="selected"'; ?>><?php _e('When only domain name, remove', $this->text_domain); ?></option>
1031
- <option value="2" <?php if($in_data == '2') echo 'selected="selected"'; ?>><?php _e('Always remove', $this->text_domain); ?></option>
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>
@@ -1110,50 +1220,51 @@
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
  }
1
+ <?php if (!function_exists('get_option' ) ) die; ?>
 
 
 
 
2
  <?php
3
+ // 開発者モード
4
+ if ($this->options['develop-mode'] ) {
5
+ echo '<div class="pz-develop-message">'.__('Currently working in a development environment.', $this->text_domain ).'</div>';
6
+ }
7
+
8
+ // 変数の設定
9
+ $action = isset($_POST['action']) ? $_POST['action'] : null ;
10
+ $properties = isset($_POST['properties']) ? $_POST['properties'] : null ;
11
+ $tab_now = isset($_POST['pz-lkc-tab-now'] ) ? $_POST['pz-lkc-tab-now'] : null ;
12
+ $before = $this->options;
13
+
14
+ if ($properties ) {
15
+ check_admin_referer('pz_options' );
16
+ if ($action == 'init-settings' ) {
17
+ // 「設定を初期化」を実行したとき
18
+ $result = $this->pz_InitializeOption();
19
+ if ($result ) {
20
+ echo '<div class="notice notice-success is-dismissible"><p><strong>'.__('Succeeded in initialize the settings.', $this->text_domain ).'</strong></p></div>';
 
 
 
 
 
 
 
 
 
 
21
  } else {
22
+ echo '<div class="notice notice-error is-dismissible"><p><strong>'.__('Failed to initialize the settings.', $this->text_domain ).'</strong></p></div>';
23
+ // echo '<div class="notice notice-info is-dismissible"><p><strong>'.__('The settings have not changed.', $this->text_domain ).'</strong></p></div>';
24
+ }
25
+ } else {
26
+ // 「変更を保存」または「プラグインの再起動」を押した時
27
+ $this->options = $properties;
28
+
29
+ // 無いキーを生成
30
+ foreach ($this->defaults as $key => $value ) {
31
+ if (!array_key_exists($key, $this->options ) ) {
32
+ $this->options[$key] = null;
33
  }
 
 
 
34
  }
35
+
36
+ // 値の検証
37
+ $flg_error = false;
38
+ require_once ('pz-linkcard-settings-validate.php' );
39
+
40
+ if (!$flg_error ) {
41
+ // オプションの更新
42
+ $result = $this->pz_UpdateOption();
43
+ if ($result ) {
44
+ echo '<div class="notice notice-success is-dismissible"><p><strong>'.__('Succeeded in saving the settings.', $this->text_domain ).'</strong></p></div>';
 
 
45
  } else {
46
+ //echo '<div class="notice notice-error is-dismissible"><p><strong>'.__('Failed to save settings.', $this->text_domain ).'</strong></p></div>';
47
+ echo '<div class="notice notice-info is-dismissible"><p><strong>'.__('The settings have not changed.', $this->text_domain ).'</strong></p></div>';
48
  }
 
 
49
  }
50
  }
51
 
52
+ // スタイルシート生成
53
+ $this->pz_SetStyle();
54
+ }
55
+
56
+ // バージョンが違っているか、「プラグインの再起動」を押したとき、アクティべーション時の処理を実行
57
+ if (($this->options['plugin-version'] <> $this->defaults['plugin-version'] ) || ($action == 'init-plugin' ) ) {
58
+ // アクティベーションを実行
59
+ $this->activate();
60
+ }
61
+
62
+ // 管理者モード
63
+ if (!$this->options['debug-mode'] ) {
64
+ echo '<style> .pz-debug-only { display: none; } </style>';
65
+ }
66
+ if (!$this->options['admin-mode'] ) {
67
+ echo '<style> .pz-admin-only { display: none; } </style>';
68
+ }
69
+ if (!$this->options['develop-mode'] ) {
70
+ echo '<style> .pz-develop-only { display: none; } </style>';
71
+ }
72
+
73
+ // URLパース(ドメイン名などを抽出)
74
+ $url = $this->options['author-url'];
75
+ $url_m = parse_url($url );
76
+ $scheme = isset($url_m['scheme'] ) ? $url_m['scheme'] : null; // スキーム
77
+ $domain = isset($url_m['host'] ) ? $url_m['host'] : null; // ドメイン名
78
+ $domain_url = isset($url_m['host'] ) ? $scheme.'://'.$url_m['host'] : null; // ドメインURL
79
+
80
+ // 修正履歴
81
+ $changelog = file_get_contents($this->plugin_dir_path.'/readme.txt' );
82
+ $changelog = preg_replace('/\A.*== Changelog ==|== Upgrade notice ==.*\z/si', '', $changelog );
83
+ $changelog = trim($changelog );
84
+ $changelog = esc_html($changelog );
85
+ $changelog = preg_replace('/^\* /mi', '*&ensp;', $changelog);
86
+ $changelog = preg_replace('/^ /mi', '&ensp;&ensp;', $changelog);
87
+ $changelog = preg_replace('/= (.*) =\n/i', '<h3>'.__('Version', $this->text_domain ).' $1</h3><hr>', $changelog);
88
+ $changelog = preg_replace('/(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9_]+)/i', '<a href="http://www.twitter.com/$1" rel="external noopenner noreferrer" target="_blank">@$1</a>', $changelog);
89
+ $changelog = str_replace(PHP_EOL, '<br>', $changelog );
90
+
91
+ // マルチサイト
92
+ $is_multisite = false;
93
+ $is_subdomain = false;
94
+ $multi_myid = get_current_blog_id();
95
+ $multi_count = 0;
96
+ if (function_exists('is_multisite' ) && is_multisite() ) {
97
+ $is_multisite = true;
98
+ if (function_exists('is_subdomain_install' ) && is_subdomain_install() ) {
99
+ $is_subdomain = true;
100
+ }
101
+ $j = 0;
102
+ for ($i = 1; $i <= 1000; $i++ ) {
103
+ $multi_detail = get_blog_details($i );
104
+ if (!$multi_detail ) {
105
+ break;
106
+ }
107
+ if (!$multi_detail->deleted ) {
108
+ $j++;
109
+ $multi_count = $j;
110
+ $multi[$j]['id'] = $multi_detail->blog_id; // ブログID
111
+ $multi[$j]['name'] = $multi_detail->blogname; // ブログ名
112
+ $multi[$j]['url'] = $multi_detail->home; // ブログURL(Home_URL)
113
+ $multi[$j]['domain'] = preg_replace('/.*\/\/(.*)/', '$1', $multi_detail->home ); // ドメイン名
114
+ }
115
+ }
116
+ }
117
+
118
+ // Pz-LinkCardのURL
119
+ $plugin_url = $this->options['author-url'].$this->options['plugin-path'];
120
+
121
+ // 開くタブ
122
+ // if (isset($tab_now ) ) {
123
+ // if (!$this->options['flg-invalid'] && $tab_now == 'pz-lkc-error' ) {
124
+ // $tab_now = 'pz-lkc-basic';
125
+ // }
126
+ // } else {
127
+ // $tab_now = ($this->options['flg-invalid'] ? 'pz-lkc-error' : 'pz-lkc-basic');
128
+ // }
129
+
130
+ // WordPressに設定されている日時のフォーマットを取得
131
+ $datetime_format = get_option('date_format' ).' '.get_option('time_format' );
132
+
133
  ?>
134
+ <div class="wrap">
135
+ <div id="icon-options-general" class="icon32"></div>
136
+ <h2><?php echo __('LinkCard Settings', $this->text_domain ); ?></h2>
137
+ <div id="settings" style="clear:both;">
138
  <form action="" method="post">
139
+ <?php wp_nonce_field('pz_options' ); ?>
140
+ <input type="hidden" id="pz-lkc-sw-tab-now" name="pz-lkc-tab-now" value="<?php echo $tab_now; ?>" />
141
+ <input type="hidden" class="pz-lkc-display" name="pz-lkc-error" value="<?php echo $this->options['flg-invalid']; ?>" />
142
+ <input type="hidden" class="pz-lkc-display" name="pz-lkc-multisite" value="<?php echo $is_multisite; ?>" />
143
+ <input type="hidden" class="pz-lkc-display" name="pz-lkc-initialize" value="<?php echo $this->options['flg-initialize']; ?>" />
144
 
145
  <div class="pz-lkc-tabs">
146
+ <a class="pz-lkc-tab" name="pz-lkc-error" href="#pz-lkc-error" ><?php _e('Error', $this->text_domain ); ?></a>
147
+ <a class="pz-lkc-tab" name="pz-lkc-basic" href="#pz-lkc-basic" ><?php _e('Basic', $this->text_domain ); ?></a>
148
+ <a class="pz-lkc-tab" name="pz-lkc-position" href="#pz-lkc-position" ><?php _e('Position', $this->text_domain ); ?></a>
149
+ <a class="pz-lkc-tab" name="pz-lkc-display" href="#pz-lkc-display" ><?php _e('Display', $this->text_domain ); ?></a>
150
+ <a class="pz-lkc-tab" name="pz-lkc-letter" href="#pz-lkc-letter" ><?php _e('Letter', $this->text_domain ); ?></a>
151
+ <a class="pz-lkc-tab" name="pz-lkc-external" href="#pz-lkc-external" ><?php _e('External Link', $this->text_domain ); ?></a>
152
+ <a class="pz-lkc-tab" name="pz-lkc-internal" href="#pz-lkc-internal" ><?php _e('Internal Link', $this->text_domain ); ?></a>
153
+ <a class="pz-lkc-tab" name="pz-lkc-samepage" href="#pz-lkc-samepage" ><?php _e('Same Page Link', $this->text_domain ); ?></a>
154
+ <a class="pz-lkc-tab" name="pz-lkc-check" href="#pz-lkc-check" ><?php _e('Link Check', $this->text_domain ); ?></a>
155
+ <a class="pz-lkc-tab" name="pz-lkc-editor" href="#pz-lkc-editor" ><?php _e('Editor', $this->text_domain ); ?></a>
156
+ <a class="pz-lkc-tab" name="pz-lkc-multisite" href="#pz-lkc-multisite" ><?php _e('Multi Site', $this->text_domain ); ?></a>
157
+ <a class="pz-lkc-tab" name="pz-lkc-advanced" href="#pz-lkc-advanced" ><?php _e('Advanced', $this->text_domain ); ?></a>
158
+ <a class="pz-lkc-tab" name="pz-lkc-etc" href="#pz-lkc-etc" ><?php _e('etc.', $this->text_domain ); ?></a>
159
+ <a class="pz-lkc-tab" name="pz-lkc-initialize" href="#pz-lkc-initialize" ><?php _e('Initialize', $this->text_domain ); ?></a>
 
160
  </div>
161
 
162
+ <div class="pz-lkc-page" id="pz-lkc-error">
163
+ <h3><?php echo __('Error Settings', $this->text_domain ).'&nbsp;<a href="'.$url.'/pz-linkcard-settings-error" rel="external noopener 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>
164
+ <table class="form-table">
165
+ <tr>
166
+ <th scope="row"><?php _e('Error reset', $this->text_domain ); ?></th>
167
+ <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>
168
+ </tr>
169
+ <tr>
170
+ <th scope="row"><?php _e('Article with error', $this->text_domain ); ?></th>
171
+ <td>
172
+ <a href="<?php echo esc_attr($this->options['invalid-url'] ); ?>#lkc-error" target="_blank"><?php echo esc_attr($this->options['invalid-url'] ); ?></a>
173
+ </td>
174
+ </tr>
175
+ <tr class="pz-admin-only">
176
+ <th scope="row"><?php _e('Article with error', $this->text_domain ); ?></th>
177
+ <td>
178
+ <input name="properties[invalid-url]" type="url" size="80" value="<?php echo esc_attr($this->options['invalid-url'] ); ?>" readonly="readonly" />
179
+ </td>
180
+ </tr>
181
+ <tr>
182
+ <th scope="row"><?php _e('Error Time', $this->text_domain ); ?></th>
183
+ <td>
184
+ <input type="text" size="40" value="<?php echo date($datetime_format, $this->options['invalid-time'] ); ?>" readonly="readonly" />
185
+ <input name="properties[invalid-time]" type="hidden" value="<?php echo $this->options['invalid-time']; ?>" />
186
+ </td>
187
+ </tr>
188
+ </table>
189
  </div>
190
 
191
+ <div class="pz-lkc-page" id="pz-lkc-basic">
192
+ <h3><?php echo __('Basic Settings', $this->text_domain ).'&nbsp;<a href="'.$url.'/pz-linkcard-settings-basic" rel="external noopener 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>
193
  <table class="form-table">
194
+ <tr>
195
+ <th scope="row"><?php _e('Easy format', $this->text_domain ); ?></th>
196
  <td>
197
  <select name="properties[special-format]">
198
+ <option value="" <?php selected($this->options['special-format'] == '' ); ?>><?php _e('None', $this->text_domain ); ?></option>
199
+ <option value="LkC" <?php selected($this->options['special-format'] == 'LkC' ); ?>><?php _e('Pz-LkC Default', $this->text_domain ); ?></option>
200
+ <option value="hbc" <?php selected($this->options['special-format'] == 'hbc' ); ?>><?php _e('Normal', $this->text_domain ); ?></option>
201
+ <option value="ecl" <?php selected($this->options['special-format'] == 'ecl' ); ?>><?php _e('Enclose', $this->text_domain ); ?></option>
202
+ <option value="cmp" <?php selected($this->options['special-format'] == 'cmp' ); ?>><?php _e('Compact', $this->text_domain ); ?></option>
203
+ <option value="ref" <?php selected($this->options['special-format'] == 'ref' ); ?>><?php _e('Reflection', $this->text_domain ); ?></option>
204
+ <option value="smp" <?php selected($this->options['special-format'] == 'smp' ); ?>><?php _e('Simple', $this->text_domain ); ?></option>
205
+ <option value="JIN" <?php selected($this->options['special-format'] == 'JIN' ); ?>><?php _e('Headline', $this->text_domain ); ?></option>
206
+ <option value="ct1" <?php selected($this->options['special-format'] == 'ct1' ); ?>><?php _e('Cellophane tape "center"', $this->text_domain ); ?></option>
207
+ <option value="ct2" <?php selected($this->options['special-format'] == 'ct2' ); ?>><?php _e('Cellophane tape "Top corner"', $this->text_domain ); ?></option>
208
+ <option value="ct3" <?php selected($this->options['special-format'] == 'ct3' ); ?>><?php _e('Cellophane tape "long"', $this->text_domain ); ?></option>
209
+ <option value="ct4" <?php selected($this->options['special-format'] == 'ct4' ); ?>><?php _e('Cellophane tape "digonal"', $this->text_domain ); ?></option>
210
+ <option value="ppc" <?php selected($this->options['special-format'] == 'ppc' ); ?>><?php _e('Curling paper', $this->text_domain ); ?></option>
211
+ <option value="tac" <?php selected($this->options['special-format'] == 'tac' ); ?>><?php _e('Cellophane tape and curling', $this->text_domain ); ?></option>
212
+ <option value="sBR" <?php selected($this->options['special-format'] == 'sBR' ); ?>><?php _e('Stitch blue & red', $this->text_domain ); ?></option>
213
+ <option value="sGY" <?php selected($this->options['special-format'] == 'sGY' ); ?>><?php _e('Stitch green & yellow', $this->text_domain ); ?></option>
214
+ <option value="sqr" <?php selected($this->options['special-format'] == 'sqr' ); ?>><?php _e('Square', $this->text_domain ); ?></option>
215
+ <option value="inI" <?php selected($this->options['special-format'] == 'inI' ); ?>><?php _e('Infomation orange', $this->text_domain ); ?></option>
216
+ <option value="inN" <?php selected($this->options['special-format'] == 'inN' ); ?>><?php _e('Neutral bluegreen', $this->text_domain ); ?></option>
217
+ <option value="inE" <?php selected($this->options['special-format'] == 'inE' ); ?>><?php _e('Enlightened green', $this->text_domain ); ?></option>
218
+ <option value="inR" <?php selected($this->options['special-format'] == 'inR' ); ?>><?php _e('Resistance blue', $this->text_domain ); ?></option>
219
+ <option value="wxp" <?php selected($this->options['special-format'] == 'wxp' ); ?>><?php _e('Windows XP', $this->text_domain ); ?></option>
220
+ <option value="w95" <?php selected($this->options['special-format'] == 'w95' ); ?>><?php _e('Windows 95', $this->text_domain ); ?></option>
221
+ <option value="slt" <?php selected($this->options['special-format'] == 'slt' ); ?>><?php _e('Slanting', $this->text_domain ); ?></option>
222
+ <option value="3Dr" <?php selected($this->options['special-format'] == '3Dr' ); ?>><?php _e('3D Rotate', $this->text_domain ); ?></option>
223
+ <option value="pin" <?php selected($this->options['special-format'] == 'pin' ); ?>><?php _e('Pushpin', $this->text_domain ); ?></option>
224
  </select>
225
+ <br><span style="color: #ff8844;"><?php echo __('*', $this->text_domain ).' '.__('It applies over other formatting settings.', $this->text_domain ); ?></span>
226
  </td>
227
  </tr>
228
+ </table>
229
 
230
+ <?php submit_button(); ?>
 
 
 
231
 
232
+ <table class="form-table">
233
+ <tr>
234
+ <th scope="row"><?php echo __('How to', $this->text_domain ).' '.__('(', $this->text_domain ).__('Japanese Only', $this->text_domain ).__(')', $this->text_domain ); ?></th>
235
+ <td>
236
+ <p><?php echo esc_attr($this->options['plugin-name']).' Ver.'.esc_attr($this->options['plugin-version'] ); ?></p>
237
+ <p><a href="<?php echo esc_attr($plugin_url ); ?>" rel="external noopener" target="_blank"><?php echo esc_attr($plugin_url ); ?></a></p>
238
+ </td>
239
+ </tr>
240
+ <tr class="pz-admin-only">
241
+ <th scope="row"><?php _e('Plugin Name', $this->text_domain ); ?></th>
242
+ <td><input name="properties[plugin-name]" type="text" size="20" value="<?php echo esc_attr($this->options['plugin-name'] ); ?>" readonly="readonly" <?php if ($this->options['admin-mode'] ) { echo 'ondblclick="this.readOnly=false;" '; }?>/></td>
243
  </tr>
244
+ <tr class="pz-admin-only">
245
+ <th scope="row"><?php _e('Plugin Abbreviation', $this->text_domain ); ?></th>
246
+ <td><input name="properties[plugin-abbreviation]" type="text" size="20" value="<?php echo esc_attr($this->options['plugin-abbreviation'] ); ?>" readonly="readonly" <?php if ($this->options['admin-mode'] ) { echo 'ondblclick="this.readOnly=false;" '; }?>/></td>
247
  </tr>
248
+ <tr class="pz-admin-only">
249
+ <th scope="row"><?php _e('Plugin Version', $this->text_domain ); ?></th>
250
+ <td><input name="properties[plugin-version]" type="text" size="20" value="<?php echo esc_attr($this->options['plugin-version'] ); ?>" readonly="readonly" <?php if ($this->options['admin-mode'] ) { echo 'ondblclick="this.readOnly=false;" '; }?>/></td>
251
+ </tr>
252
+ <tr class="pz-admin-only">
253
+ <th scope="row"><?php _e("Author's Site", $this->text_domain ); ?></th>
254
+ <td><input name="properties[author-url]" type="url" size="80" value="<?php echo esc_attr($this->options['author-url'] ); ?>" readonly="readonly" <?php if ($this->options['admin-mode'] ) { echo 'ondblclick="this.readOnly=false;" '; }?>/></td>
255
+ </tr>
256
+ <tr class="pz-admin-only">
257
+ <th scope="row"><?php _e('Plugin Path', $this->text_domain ); ?></th>
258
+ <td><input name="properties[plugin-path]" type="text" size="80" value="<?php echo esc_attr($this->options['plugin-path'] ); ?>" readonly="readonly" <?php if ($this->options['admin-mode'] ) { echo 'ondblclick="this.readOnly=false;" '; }?>/></td>
259
  </tr>
260
 
261
+ <tr class="pz-admin-only">
262
+ <th scope="row"><?php _e('Author Name', $this->text_domain ); ?></th>
263
+ <td><input name="properties[author-name]" type="text" size="40" value="<?php echo esc_attr($this->options['author-name'] ); ?>" readonly="readonly" <?php if ($this->options['admin-mode'] ) { echo 'ondblclick="this.readOnly=false;" '; }?>/></td>
264
+ </tr>
265
+ <tr class="pz-admin-only">
266
+ <th scope="row"><?php _e('Author Twitter', $this->text_domain ); ?></th>
267
+ <td><input name="properties[author-twitter]" type="text" size="40" value="<?php echo esc_attr($this->options['author-twitter'] ); ?>" readonly="readonly" <?php if ($this->options['admin-mode'] ) { echo 'ondblclick="this.readOnly=false;" '; }?>/></td>
268
+ </tr>
269
+ <tr>
270
+ <th scope="row"><?php _e("Author's Site", $this->text_domain ); ?></th>
271
+ <td><?php echo __('Popozure.', $this->text_domain ).' ('.__("Poporon's PC Daily Diary", $this->text_domain ).')'; ?><BR><a href="<?php echo $url; ?>" rel="external noopener" target="_blank"><?php echo $url; ?></A></td>
272
+ </tr>
273
+ <tr>
274
+ <th scope="row"><?php _e('When in Trouble', $this->text_domain ); ?></th>
275
+ <td><?php echo __('Twitter Account', $this->text_domain ); ?><BR><a href="https://twitter.com/<?php echo $this->options['author-twitter']; ?>" rel="external noopener" target="_blank">@<?php echo $this->options['author-twitter']; ?></A></td>
276
+ </tr>
277
+ <tr class="pz-admin-only">
278
+ <th scope="row"><?php _e('Donation', $this->text_domain ); ?></th>
279
+ <td><a href="https://www.amazon.co.jp/gp/registry/wishlist/2KIBQLC1VLA9X" rel="external noopenner noreferrer" target="_blank" target="_blank"><?php _e('Wishlist', $this->text_domain ); ?></a></td>
280
+ </tr>
281
  </table>
282
+ <div style="padding: 2px 16px 2px 16px; display: inline-block; background-color: #def; font-size: 14px; font-weight: 600; border-top: solid 1px #888; border-right: solid 1px #888; border-left: solid 1px #888; border-radius: 4px 4px 0 0; box-shadow: 8px 8px 8px; text-align: center;">
283
+ <?php _e('Changelog', $this->text_domain ); ?>
284
+ </div>
285
+ <div style="padding: 4px; width: 800px; height: 200px; background-color: #fff; border: solid 1px #888; box-shadow: 8px 8px 8px; line-height: 20px; white-space: nowrap; overflow: scroll; resize: both;">
286
+ <?php echo $changelog; ?>
287
+ </div>
288
  </div>
289
 
290
+ <div class="pz-lkc-page" id="pz-lkc-position">
291
+ <h3><?php echo __('Position Settings', $this->text_domain ).'&nbsp;<a href="'.$url.'/pz-linkcard-settings-position" rel="external noopener 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>
292
  <table class="form-table">
293
+ <tr>
294
+ <th scope="row"><?php _e('Link the Whole', $this->text_domain ); ?></th>
295
  <td>
296
  <label>
297
+ <input name="properties[link-all]" type="checkbox" value="1" <?php checked($this->options['link-all'] ); ?> />
298
+ <?php _e('Enclose the entire card at anchor.', $this->text_domain ); ?>
299
  </label>
300
  </td>
301
  </tr>
302
 
303
+ <tr>
304
+ <th scope="row"><?php _e('Margin', $this->text_domain ); ?></th>
305
  <td>
306
+ <table style="border: dashed 1px #000; background-color: #eee; width: 600px;">
307
  <tr>
308
  <td>
309
  </td>
310
  <td align="center">
311
+ <?php _e('Margin top', $this->text_domain ); ?><br>
312
  <select name="properties[margin-top]">
313
+ <option value="" <?php selected($this->options['margin-top'] == '' ); ?>><?php _e('Not defined', $this->text_domain ); ?></option>
314
+ <option value="0" <?php selected($this->options['margin-top'] == '0' ); ?>><?php _e('0', $this->text_domain ); ?></option>
315
+ <option value="4px" <?php selected($this->options['margin-top'] == '4px' ); ?>><?php _e('4px', $this->text_domain ); ?></option>
316
+ <option value="8px" <?php selected($this->options['margin-top'] == '8px' ); ?>><?php _e('8px', $this->text_domain ); ?></option>
317
+ <option value="16px" <?php selected($this->options['margin-top'] == '16px' ); ?>><?php _e('16px', $this->text_domain ); ?></option>
318
+ <option value="32px" <?php selected($this->options['margin-top'] == '32px' ); ?>><?php _e('32px', $this->text_domain ); ?></option>
319
+ <option value="40px" <?php selected($this->options['margin-top'] == '40px' ); ?>><?php _e('40px', $this->text_domain ); ?></option>
320
+ <option value="64px" <?php selected($this->options['margin-top'] == '64px' ); ?>><?php _e('64px', $this->text_domain ); ?></option>
321
  </select>
322
  </td>
323
  <td></td>
324
  </tr>
325
  <tr>
326
  <td align="center">
327
+ <?php _e('Margin left', $this->text_domain ); ?><br>
328
  <select name="properties[margin-left]">
329
+ <option value="" <?php selected($this->options['margin-left'] == '' ); ?>><?php _e('Not defined', $this->text_domain ); ?></option>
330
+ <option value="0" <?php selected($this->options['margin-left'] == '0' ); ?>><?php _e('0', $this->text_domain ); ?></option>
331
+ <option value="4px" <?php selected($this->options['margin-left'] == '4px' ); ?>><?php _e('4px', $this->text_domain ); ?></option>
332
+ <option value="8px" <?php selected($this->options['margin-left'] == '8px' ); ?>><?php _e('8px', $this->text_domain ); ?></option>
333
+ <option value="16px" <?php selected($this->options['margin-left'] == '16px' ); ?>><?php _e('16px', $this->text_domain ); ?></option>
334
+ <option value="32px" <?php selected($this->options['margin-left'] == '32px' ); ?>><?php _e('32px', $this->text_domain ); ?></option>
335
+ <option value="40px" <?php selected($this->options['margin-left'] == '40px' ); ?>><?php _e('40px', $this->text_domain ); ?></option>
336
+ <option value="64px" <?php selected($this->options['margin-left'] == '64px' ); ?>><?php _e('64px', $this->text_domain ); ?></option>
337
  </select>
338
  </td>
339
+ <td align="center" style="border: solid 1px #000; background-color: #fff;">
340
 
341
  <table class="form-table">
342
  <tr>
343
  <td colspan="2" align="center">
344
+ <?php _e('Margin top', $this->text_domain ); ?><br>
345
  <select name="properties[card-top]">
346
+ <option value="" <?php selected($this->options['card-top'] == '' ); ?>><?php _e('Not defined', $this->text_domain ); ?></option>
347
+ <option value="0" <?php selected($this->options['card-top'] == '0' ); ?>><?php _e('0', $this->text_domain ); ?></option>
348
+ <option value="4px" <?php selected($this->options['card-top'] == '4px' ); ?>><?php _e('4px', $this->text_domain ); ?></option>
349
+ <option value="8px" <?php selected($this->options['card-top'] == '8px' ); ?>><?php _e('8px', $this->text_domain ); ?></option>
350
+ <option value="16px" <?php selected($this->options['card-top'] == '16px' ); ?>><?php _e('16px', $this->text_domain ); ?></option>
351
+ <option value="24px" <?php selected($this->options['card-top'] == '24px' ); ?>><?php _e('24px', $this->text_domain ); ?></option>
352
+ <option value="32px" <?php selected($this->options['card-top'] == '32px' ); ?>><?php _e('32px', $this->text_domain ); ?></option>
353
+ <option value="40px" <?php selected($this->options['card-top'] == '40px' ); ?>><?php _e('40px', $this->text_domain ); ?></option>
354
+ <option value="64px" <?php selected($this->options['card-top'] == '64px' ); ?>><?php _e('64px', $this->text_domain ); ?></option>
355
  </select>
356
  </td>
357
  </tr>
358
  <tr>
359
  <td align="center">
360
+ <?php _e('Margin left', $this->text_domain ); ?><br>
361
  <select name="properties[card-left]">
362
+ <option value="" <?php selected($this->options['card-left'] == '' ); ?>><?php _e('Not defined', $this->text_domain ); ?></option>
363
+ <option value="0" <?php selected($this->options['card-left'] == '0' ); ?>><?php _e('0', $this->text_domain ); ?></option>
364
+ <option value="4px" <?php selected($this->options['card-left'] == '4px' ); ?>><?php _e('4px', $this->text_domain ); ?></option>
365
+ <option value="8px" <?php selected($this->options['card-left'] == '8px' ); ?>><?php _e('8px', $this->text_domain ); ?></option>
366
+ <option value="16px" <?php selected($this->options['card-left'] == '16px' ); ?>><?php _e('16px', $this->text_domain ); ?></option>
367
+ <option value="24px" <?php selected($this->options['card-left'] == '24px' ); ?>><?php _e('24px', $this->text_domain ); ?></option>
368
+ <option value="32px" <?php selected($this->options['card-left'] == '32px' ); ?>><?php _e('32px', $this->text_domain ); ?></option>
369
+ <option value="40px" <?php selected($this->options['card-left'] == '40px' ); ?>><?php _e('40px', $this->text_domain ); ?></option>
370
+ <option value="64px" <?php selected($this->options['card-left'] == '64px' ); ?>><?php _e('64px', $this->text_domain ); ?></option>
371
  </select>
372
  </td>
373
  <td align="center">
374
+ <?php _e('Margin right', $this->text_domain ); ?><br>
375
  <select name="properties[card-right]">
376
+ <option value="" <?php selected($this->options['card-right'] == '' ); ?>><?php _e('Not defined', $this->text_domain ); ?></option>
377
+ <option value="0" <?php selected($this->options['card-right'] == '0' ); ?>><?php _e('0', $this->text_domain ); ?></option>
378
+ <option value="4px" <?php selected($this->options['card-right'] == '4px' ); ?>><?php _e('4px', $this->text_domain ); ?></option>
379
+ <option value="8px" <?php selected($this->options['card-right'] == '8px' ); ?>><?php _e('8px', $this->text_domain ); ?></option>
380
+ <option value="16px" <?php selected($this->options['card-right'] == '16px' ); ?>><?php _e('16px', $this->text_domain ); ?></option>
381
+ <option value="24px" <?php selected($this->options['card-right'] == '24px' ); ?>><?php _e('24px', $this->text_domain ); ?></option>
382
+ <option value="32px" <?php selected($this->options['card-right'] == '32px' ); ?>><?php _e('32px', $this->text_domain ); ?></option>
383
+ <option value="40px" <?php selected($this->options['card-right'] == '40px' ); ?>><?php _e('40px', $this->text_domain ); ?></option>
384
+ <option value="64px" <?php selected($this->options['card-right'] == '64px' ); ?>><?php _e('64px', $this->text_domain ); ?></option>
385
  </select>
386
  </td>
387
  </tr>
388
  <tr>
389
  <td colspan="2" align="center">
390
+ <?php _e('Width', $this->text_domain ); ?> <input name="properties[width]" type="text" size="2" value="<?php echo esc_attr($this->options['width'] ); ?>" /><br>
391
+ <?php _e('Height', $this->text_domain ); ?><input name="properties[content-height]" type="text" size="2" value="<?php echo esc_attr($this->options['content-height'] ); ?>" /><br>
392
  </td>
393
  </tr>
394
  <tr>
395
  <td colspan="2" align="center">
396
+ <?php _e('Margin bottom', $this->text_domain ); ?><br>
397
  <select name="properties[card-bottom]">
398
+ <option value="" <?php selected($this->options['card-bottom'] == '' ); ?>><?php _e('Not defined', $this->text_domain ); ?></option>
399
+ <option value="0" <?php selected($this->options['card-bottom'] == '0' ); ?>><?php _e('0', $this->text_domain ); ?></option>
400
+ <option value="4px" <?php selected($this->options['card-bottom'] == '4px' ); ?>><?php _e('4px', $this->text_domain ); ?></option>
401
+ <option value="8px" <?php selected($this->options['card-bottom'] == '8px' ); ?>><?php _e('8px', $this->text_domain ); ?></option>
402
+ <option value="16px" <?php selected($this->options['card-bottom'] == '16px' ); ?>><?php _e('16px', $this->text_domain ); ?></option>
403
+ <option value="24px" <?php selected($this->options['card-bottom'] == '24px' ); ?>><?php _e('24px', $this->text_domain ); ?></option>
404
+ <option value="32px" <?php selected($this->options['card-bottom'] == '32px' ); ?>><?php _e('32px', $this->text_domain ); ?></option>
405
+ <option value="40px" <?php selected($this->options['card-bottom'] == '40px' ); ?>><?php _e('40px', $this->text_domain ); ?></option>
406
+ <option value="64px" <?php selected($this->options['card-bottom'] == '64px' ); ?>><?php _e('64px', $this->text_domain ); ?></option>
407
  </select>
408
  </td>
409
  </tr>
411
 
412
  </td>
413
  <td align="center">
414
+ <?php _e('Margin right', $this->text_domain ); ?><br>
415
  <select name="properties[margin-right]">
416
+ <option value="" <?php selected($this->options['margin-right'] == '' ); ?>><?php _e('Not defined', $this->text_domain ); ?></option>
417
+ <option value="0" <?php selected($this->options['margin-right'] == '0' ); ?>><?php _e('0', $this->text_domain ); ?></option>
418
+ <option value="4px" <?php selected($this->options['margin-right'] == '4px' ); ?>><?php _e('4px', $this->text_domain ); ?></option>
419
+ <option value="8px" <?php selected($this->options['margin-right'] == '8px' ); ?>><?php _e('8px', $this->text_domain ); ?></option>
420
+ <option value="16px" <?php selected($this->options['margin-right'] == '16px' ); ?>><?php _e('16px', $this->text_domain ); ?></option>
421
+ <option value="32px" <?php selected($this->options['margin-right'] == '32px' ); ?>><?php _e('32px', $this->text_domain ); ?></option>
422
+ <option value="40px" <?php selected($this->options['margin-right'] == '40px' ); ?>><?php _e('40px', $this->text_domain ); ?></option>
423
+ <option value="64px" <?php selected($this->options['margin-right'] == '64px' ); ?>><?php _e('64px', $this->text_domain ); ?></option>
424
  </select>
425
  </td>
426
  </tr>
427
  <tr>
428
  <td>
429
+ <input name="properties[centering]" type="checkbox" value="1" <?php checked($this->options['centering'] ); ?> /><?php _e('Centering', $this->text_domain ); ?>
430
  </td>
431
  <td align="center">
432
+ <?php _e('Margin bottom', $this->text_domain ); ?><br>
433
  <select name="properties[margin-bottom]">
434
+ <option value="" <?php selected($this->options['margin-bottom'] == '' ); ?>><?php _e('Not defined', $this->text_domain ); ?></option>
435
+ <option value="0" <?php selected($this->options['margin-bottom'] == '0' ); ?>><?php _e('0', $this->text_domain ); ?></option>
436
+ <option value="4px" <?php selected($this->options['margin-bottom'] == '4px' ); ?>><?php _e('4px', $this->text_domain ); ?></option>
437
+ <option value="8px" <?php selected($this->options['margin-bottom'] == '8px' ); ?>><?php _e('8px', $this->text_domain ); ?></option>
438
+ <option value="16px" <?php selected($this->options['margin-bottom'] == '16px' ); ?>><?php _e('16px', $this->text_domain ); ?></option>
439
+ <option value="32px" <?php selected($this->options['margin-bottom'] == '32px' ); ?>><?php _e('32px', $this->text_domain ); ?></option>
440
+ <option value="40px" <?php selected($this->options['margin-bottom'] == '40px' ); ?>><?php _e('40px', $this->text_domain ); ?></option>
441
+ <option value="64px" <?php selected($this->options['margin-bottom'] == '64px' ); ?>><?php _e('64px', $this->text_domain ); ?></option>
442
  </select>
443
  </td>
444
  <td>
447
  </table>
448
  </td>
449
  </tr>
450
+ <tr>
451
+ <th scope="row"><?php _e('Use Blockquote Tag', $this->text_domain ); ?></th>
452
+ <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('(Deprecated)', $this->text_domain ); ?></label></td>
453
  </tr>
454
  </table>
455
  </div>
456
 
457
+ <div class="pz-lkc-page" id="pz-lkc-display">
458
+ <h3><?php echo __('Display Settings', $this->text_domain ).'&nbsp;<a href="'.$url.'/pz-linkcard-settings-display" rel="external noopener 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>
459
  <table class="form-table">
460
  <tr>
461
+ <th scope="row"><?php _e('Layout', $this->text_domain ); ?></th>
462
  <td>
463
 
464
+ <table style="border: solid 1px #000; background-color: #fff; width: 600px;">
465
  <tr>
466
  <td colspan="2">
467
+ <?php _e('Site Information', $this->text_domain ); ?>
468
  <select name="properties[info-position]">
469
+ <option value="" <?php selected($this->options['info-position'] == '' ); ?>><?php _e('None', $this->text_domain ); ?></option>
470
+ <option value="1" <?php selected($this->options['info-position'] == '1' ); ?>><?php _e('Upper Side', $this->text_domain ); ?></option>
471
+ <option value="3" <?php selected($this->options['info-position'] == '3' ); ?>><?php _e('Above the Title', $this->text_domain ); ?></option>
472
+ <option value="2" <?php selected($this->options['info-position'] == '2' ); ?>><?php _e('Under Side', $this->text_domain ); ?></option>
473
  </select>
474
+ <label><input name="properties[use-sitename]" type="checkbox" value="1" <?php checked($this->options['use-sitename'] ); ?> /><?php _e('Use SiteName', $this->text_domain ); ?></label>
475
  </td>
476
  </tr>
477
  <tr>
478
  <td>
479
+ <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>
480
  </td>
481
  <td>
482
  </td>
483
  </tr>
484
  <tr>
485
  <td>
486
+ <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>
487
  </td>
488
  <td>
489
  </td>
490
  </tr>
491
  <tr>
492
  <td>
493
+ <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>
494
  </td>
495
  <td>
496
  </td>
497
  </tr>
498
  <tr>
499
  <td>
500
+ <label><input name="properties[separator]" type="checkbox" value="1" <?php checked($this->options['separator'] ); ?> /><?php _e('Separator line', $this->text_domain ); ?></label>
501
  </td>
502
  <td>
503
  </td>
505
  <tr>
506
  <td>
507
  <label>
508
+ <?php _e('Display URL', $this->text_domain ); ?>
509
  <select name="properties[display-url]">
510
+ <option value="" <?php selected($this->options['display-url'] == '' ); ?>><?php _e('None', $this->text_domain ); ?></option>
511
+ <option value="1" <?php selected($this->options['display-url'] == '1' ); ?>><?php _e('Under Title', $this->text_domain ); ?></option>
512
+ <option value="2" <?php selected($this->options['display-url'] == '2' ); ?>><?php _e('Bihind Site-Info', $this->text_domain ); ?></option>
513
  </select>
514
  </label>
515
  </td>
516
+ <td rowspan="3" style="border: solid 1px #000;">
517
+ <?php _e('Thumbnail', $this->text_domain ); ?>
518
  <select name="properties[thumbnail-position]">
519
+ <option value="0" <?php selected($this->options['thumbnail-position'] == '0' ); ?>><?php _e('None', $this->text_domain ); ?></option>
520
+ <option value="1" <?php selected($this->options['thumbnail-position'] == '1' ); ?>><?php _e('Right Side', $this->text_domain ); ?></option>
521
+ <option value="2" <?php selected($this->options['thumbnail-position'] == '2' ); ?>><?php _e('Left Side', $this->text_domain ); ?></option>
522
+ <option value="3" <?php selected($this->options['thumbnail-position'] == '3' ); ?>><?php _e('Upper Side', $this->text_domain ); ?></option>
523
  </select>
524
  <br>
525
+ <?php _e('Width', $this->text_domain ); ?><input name="properties[thumbnail-width]" type="text" size="2" value="<?php echo (isset($this->options['thumbnail-width']) ? $this->options['thumbnail-width'] : $this->defaults['thumbnail-width'] ); ?>" />
526
  <br>
527
+ <?php _e('Height', $this->text_domain ); ?><input name="properties[thumbnail-height]" type="text" size="2" value="<?php echo (isset($this->options['thumbnail-height']) ? $this->options['thumbnail-height'] : $this->defaults['thumbnail-height'] ); ?>" />
528
  <br>
529
+ <label><input name="properties[thumbnail-shadow]" type="checkbox" value="1" <?php checked($this->options['thumbnail-shadow'] ); ?> /><?php _e('Shadow', $this->text_domain ); ?></label>
530
  </td>
531
  </tr>
532
  <tr>
533
  <td>
534
+ <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>
535
  </td>
536
  </tr>
537
  <tr>
538
  <td>
539
+ <label><input name="properties[display-excerpt]" type="checkbox" value="1" <?php checked($this->options['display-excerpt'] ); ?> /><?php _e('Display excerpt', $this->text_domain ); ?></label>
540
  </td>
541
  </tr>
542
  <tr>
543
  <td>
544
+ <label><input name="properties[shadow-inset]" type="checkbox" value="1" <?php checked($this->options['shadow-inset'] ); ?> /><?php _e('Hollow', $this->text_domain ); ?></label>
545
  </td>
546
  <td>
547
  </td>
548
  </tr>
549
  <tr>
550
  <td>
551
+ <label><input name="properties[shadow]" type="checkbox" value="1" <?php checked($this->options['shadow'] ); ?> /><?php _e('Shadow', $this->text_domain ); ?></label></td>
552
  </td>
553
  </tr>
554
  <tr>
555
  <td>
556
+ <?php _e('Round a square', $this->text_domain ); ?>
557
  <select name="properties[radius]">
558
+ <option value="" <?php selected($this->options['radius'] == '' ); ?>><?php _e('None', $this->text_domain ); ?></option>
559
+ <option value="2" <?php selected($this->options['radius'] == '2' ); ?>><?php _e('4px', $this->text_domain ); ?></option>
560
+ <option value="1" <?php selected($this->options['radius'] == '1' ); ?>><?php _e('8px', $this->text_domain ); ?></option>
561
+ <option value="3" <?php selected($this->options['radius'] == '3' ); ?>><?php _e('16px', $this->text_domain ); ?></option>
562
+ <option value="4" <?php selected($this->options['radius'] == '4' ); ?>><?php _e('32px', $this->text_domain ); ?></option>
563
+ <option value="5" <?php selected($this->options['radius'] == '5' ); ?>><?php _e('64px', $this->text_domain ); ?></option>
564
  </select>
565
  </td>
566
  </tr>
567
  <tr>
568
  <td>
569
  <label>
570
+ <?php _e('When the mouse is on', $this->text_domain ); ?>
571
  <select name="properties[hover]">
572
+ <option value="" <?php selected($this->options['hover'] == '' ); ?>><?php _e('None', $this->text_domain ); ?></option>
573
+ <option value="1" <?php selected($this->options['hover'] == '1' ); ?>><?php _e('Lighten', $this->text_domain ); ?></option>
574
+ <option value="2" <?php selected($this->options['hover'] == '2' ); ?>><?php _e('Hover (light)', $this->text_domain ); ?></option>
575
+ <option value="3" <?php selected($this->options['hover'] == '3' ); ?>><?php _e('Hover (dark)', $this->text_domain ); ?></option>
576
+ <option value="7" <?php selected($this->options['hover'] == '7' ); ?>><?php _e('Radius', $this->text_domain ); ?></option>
577
  </select>
578
  </label>
579
  </td>
583
  </tr>
584
 
585
  <tr>
586
+ <th scope="row"><?php _e('Border', $this->text_domain ); ?></th>
587
  <td>
588
  <select name="properties[border-style]">
589
+ <option value="none" <?php selected($this->options['border-style'] == 'none' ); ?>><?php _e('None', $this->text_domain ); ?></option>
590
+ <option value="solid" <?php selected($this->options['border-style'] == 'solid' ); ?>><?php _e('Solid', $this->text_domain ); ?></option>
591
+ <option value="dotted" <?php selected($this->options['border-style'] == 'dotted' ); ?>><?php _e('Dotted', $this->text_domain ); ?></option>
592
+ <option value="dashed" <?php selected($this->options['border-style'] == 'dashed' ); ?>><?php _e('Dashed', $this->text_domain ); ?></option>
593
+ <option value="double" <?php selected($this->options['border-style'] == 'double' ); ?>><?php _e('Double', $this->text_domain ); ?></option>
594
+ <option value="groove" <?php selected($this->options['border-style'] == 'groove' ); ?>><?php _e('Groove', $this->text_domain ); ?></option>
595
+ <option value="ridge" <?php selected($this->options['border-style'] == 'ridge' ); ?>><?php _e('Ridge', $this->text_domain ); ?></option>
596
+ <option value="inset" <?php selected($this->options['border-style'] == 'inset' ); ?>><?php _e('Inset', $this->text_domain ); ?></option>
597
+ <option value="outset" <?php selected($this->options['border-style'] == 'outset' ); ?>><?php _e('Outset', $this->text_domain ); ?></option>
598
  </select>
599
+ &nbsp;<?php _e('Width', $this->text_domain ); ?><input name="properties[border-width]" type="text" size="2" value="<?php echo $this->options['border-width']; ?>" />
600
  </td>
601
  </tr>
602
 
603
+ <tr>
604
+ <th scope="row"><?php _e('Reset Image Style', $this->text_domain ); ?></th>
605
+ <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>
606
  </tr>
607
 
608
+ <tr>
609
+ <th scope="row"><?php _e('More Button', $this->text_domain ); ?></th>
610
  <td>
611
  <select name="properties[flg-more]">
612
+ <option value="" <?php selected($this->options['flg-more'] == '' ); ?>><?php _e('None', $this->text_domain ); ?></option>
613
+ <option value="1" <?php selected($this->options['flg-more'] == '1' ); ?>><?php _e('Text link', $this->text_domain ); ?></option>
614
+ <option value="2" <?php selected($this->options['flg-more'] == '2' ); ?>><?php _e('Simple button', $this->text_domain ); ?></option>
615
+ <option value="3" <?php selected($this->options['flg-more'] == '3' ); ?>><?php _e('Blue', $this->text_domain ); ?></option>
616
+ <option value="4" <?php selected($this->options['flg-more'] == '4' ); ?>><?php _e('Dark', $this->text_domain ); ?></option>
617
  </select>
618
+ <p><?php _e('*', $this->text_domain ); ?> <?php _e('It is recommended that you leave the card height blank when using this setting.', $this->text_domain ); ?></p>
619
  </td>
620
  </tr>
621
 
622
+ <tr>
623
+ <th scope="row"><?php _e('Display SNS Count', $this->text_domain ); ?></th>
624
  <td>
625
  <select name="properties[sns-position]">
626
+ <option value="" <?php selected($this->options['sns-position'] == '' ); ?>><?php _e('None', $this->text_domain ); ?></option>
627
+ <option value="1" <?php selected($this->options['sns-position'] == '1' ); ?>><?php _e('Bihind Title', $this->text_domain ); ?></option>
628
+ <option value="2" <?php selected($this->options['sns-position'] == '2' ); ?>><?php _e('Bihind Site-Info', $this->text_domain ); ?></option>
629
  </select>
630
+ <label><input name="properties[sns-tw]" type="checkbox" value="1" <?php checked($this->options['sns-tw'] ); ?> /><?php _e('Twitter', $this->text_domain ); ?></label>
631
+ <label><input name="properties[sns-fb]" type="checkbox" value="1" <?php checked($this->options['sns-fb'] ); ?> /><?php _e('Facebook', $this->text_domain ); ?></label>
632
+ <label><input name="properties[sns-hb]" type="checkbox" value="1" <?php checked($this->options['sns-hb'] ); ?> /><?php _e('Hatena', $this->text_domain ); ?></label>
633
+ <label><input name="properties[sns-po]" type="checkbox" value="1" <?php checked($this->options['sns-po'] ); ?> /><?php _e('Pocket', $this->text_domain ); ?></label>
634
  </td>
635
  </tr>
636
  </table>
637
  </div>
638
 
639
+ <div class="pz-lkc-page" id="pz-lkc-letter">
640
+ <h3><?php echo __('Letter Settings', $this->text_domain ).'&nbsp;<a href="'.$url.'/pz-linkcard-settings-letter" rel="external noopener 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>
641
  <table class="form-table">
642
+ <?php
643
+ $table = array(
644
+ array( 'slug' => 'title' , 'title' => __('Title', $this->text_domain ) ),
645
+ array( 'slug' => 'url' , 'title' => __('URL', $this->text_domain ) ),
646
+ array( 'slug' => 'excerpt' , 'title' => __('Excerpt', $this->text_domain ) ),
647
+ array( 'slug' => 'more' , 'title' => __('More Button', $this->text_domain ) ),
648
+ array( 'slug' => 'info' , 'title' => __('Site Information', $this->text_domain ) ),
649
+ array( 'slug' => 'added' , 'title' => __('Added Information', $this->text_domain ) ),
650
+ );
651
+ foreach ($table as $t) {
652
+ ?>
653
+ <tr>
654
+ <th scope="row"><?php echo $t['title']; ?></th>
655
  <td>
656
+ <div style="padding: 10px; border: solid 1px #000; background-color: #fff; width: 500px;">
657
  <div style="padding: 10px">
658
+ <?php _e('Color', $this->text_domain ); ?>
659
+ <?php $name = 'color-'.$t['slug']; $val = esc_attr($this->options[$name] ); ?>
660
+ <input name="properties[<?php echo $name; ?>]" type="color" value="<?php echo $val; ?>" class="pz-lkc-sync-text" />
661
+ <input name="properties[<?php echo $name; ?>]" type="text" value="<?php echo $val; ?>" class="pz-lkc-sync-text" style="width: 80px;" />
662
+ &emsp;
663
+ <?php $name = 'outline-'.$t['slug']; $val = esc_attr($this->options[$name] ); ?>
664
+ <label>
665
+ <input name="properties[<?php echo $name; ?>]" type="checkbox" value="1" <?php checked($val ); ?> /><?php _e('Outline', $this->text_domain ); ?></label>
666
+ <?php $name = 'outline-color-'.$t['slug']; $val = esc_attr($this->options[$name] ); ?>
667
+ <input name="properties[<?php echo $name; ?>]" type="color" value="<?php echo $val; ?>" class="pz-lkc-sync-text" />
668
+ <input name="properties[<?php echo $name; ?>]" type="text" value="<?php echo $val; ?>" class="pz-lkc-sync-text" style="width: 80px;" />
669
  </div>
670
  <div style="padding: 10px">
671
+ <?php _e('Size', $this->text_domain ); ?>
672
+ <?php $name = 'size-'.$t['slug']; $val = esc_attr($this->options[$name] ); ?>
673
+ <input name="properties[<?php echo $name; ?>]" type="text" value="<?php echo $val; ?>" size="2" />
674
+ &emsp;
675
+ <?php _e('Height', $this->text_domain ); ?>
676
+ <?php $name = 'height-'.$t['slug']; $val = esc_attr($this->options[$name] ); ?>
677
+ <input name="properties[<?php echo $name; ?>]" type="text" value="<?php echo $val; ?>" size="2" />
678
+ &emsp;
679
+ <?php $name = 'trim-'.$t['slug']; if ( array_key_exists($name, $this->options ) ) { $val = esc_attr($this->options[$name] ); ?>
680
+ <?php _e('Length', $this->text_domain ); ?>
681
+ <input name="properties[<?php echo $name; ?>]" type="text" value="<?php echo $val; ?>" size="2" />
682
+ <?php } ?>
683
+ <?php $name = 'nowrap-'.$t['slug']; if ( array_key_exists($name, $this->options ) ) { $val = esc_attr($this->options[$name] ); ?>
684
+ <label><input name="properties[<?php echo $name; ?>]" type="checkbox" value="1" <?php checked($val ); ?>><?php _e('No wrap', $this->text_domain ); ?></label>
685
+ <?php } ?>
686
  </div>
687
  </div>
688
  </td>
689
  </tr>
690
+ <?php } ?>
691
+ <tr>
692
+ <th scope="row"><?php _e('Resize', $this->text_domain ); ?></th>
693
+ <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>
 
 
 
 
 
 
 
 
 
 
 
694
  </tr>
695
+ </table>
696
+ </div>
697
+
698
+ <?php
699
+ $title = array(
700
+ array( 'slug' => 'ex', 'type' => 'external', 'title' => __('External Link Settings', $this->text_domain ) ),
701
+ array( 'slug' => 'in', 'type' => 'internal', 'title' => __('Internal Link Settings', $this->text_domain ) ),
702
+ array( 'slug' => 'th', 'type' => 'samepage', 'title' => __('Same Page Link Settings', $this->text_domain ) ),
703
+ );
704
+ foreach ($title as $t) {
705
+ ?>
706
+ <div class="pz-lkc-page" id="pz-lkc-<?php echo $t['type']; ?>">
707
+ <h3><?php echo $t['title'].'&nbsp;<a href="'.$url.'/pz-linkcard-settings-'.$t['type'].'-link" rel="external noopener 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>
708
+ <table class="form-table">
709
+ <tr>
710
+ <th scope="row"><?php _e('Border Color', $this->text_domain ); ?></th>
711
  <td>
712
+ <input name="properties[<?php echo $t['slug']; ?>-border-color]" type="color" value="<?php echo esc_attr($this->options[$t['slug'].'-border-color'] ); ?>" class="pz-lkc-sync-text" />
713
+ <input name="properties[<?php echo $t['slug']; ?>-border-color]" type="text" value="<?php echo esc_attr($this->options[$t['slug'].'-border-color'] ); ?>" class="pz-lkc-sync-text" style="width: 80px;" />
 
 
 
 
 
 
 
 
 
714
  </td>
715
  </tr>
716
+ <tr>
717
+ <th scope="row"><?php _e('Background Color', $this->text_domain ); ?></th>
718
  <td>
719
+ <input name="properties[<?php echo $t['slug']; ?>-bgcolor]" type="color" value="<?php echo esc_attr($this->options[$t['slug'].'-bgcolor'] ); ?>" class="pz-lkc-sync-text" />
720
+ <input name="properties[<?php echo $t['slug']; ?>-bgcolor]" type="text" value="<?php echo esc_attr($this->options[$t['slug'].'-bgcolor'] ); ?>" class="pz-lkc-sync-text" style="width: 80px;" />
 
 
 
 
 
 
 
 
721
  </td>
722
  </tr>
723
+ <tr>
724
+ <th scope="row"><?php _e('Background Image', $this->text_domain ); ?></th>
725
+ <td><input name="properties[<?php echo $t['slug']; ?>-image]" type="text" size="80" value="<?php echo esc_attr($this->options[$t['slug'].'-image'] ); ?>" /></td>
 
 
 
 
 
 
 
 
 
 
 
 
726
  </tr>
727
+ <tr>
728
+ <th scope="row"><?php _e('Thumbnail', $this->text_domain ); ?></th>
729
  <td>
730
+ <?php if ($t['slug'] == 'th' ) { ?>
731
+ <select disabled="disabled">
732
+ <option selected="selected"><?php _e('It is common with setting Internal-link', $this->text_domain ); ?></option>
733
+ </select>
734
+ <?php } else { ?>
735
+ <select name="properties[<?php echo $t['slug']; ?>-thumbnail]" class="pz-lkc-sync-check">
736
+ <option value="" <?php selected($this->options[$t['slug'].'-thumbnail'] == '' ); ?>><?php _e('None', $this->text_domain ); ?></option>
737
+ <option value="1" <?php selected($this->options[$t['slug'].'-thumbnail'] == '1' ); ?>><?php _e('Direct', $this->text_domain ); ?></option>
738
+ <option value="3" <?php selected($this->options[$t['slug'].'-thumbnail'] == '3' ); ?>><?php _e('Use WebAPI', $this->text_domain ); ?></option>
739
+ <option value="13" <?php selected($this->options[$t['slug'].'-thumbnail'] == '13' ); ?>><?php _e('Use WebAPI ,if can not direct', $this->text_domain ); ?></option>
740
+ </select>
741
+ <?php } ?>
742
  </td>
743
  </tr>
744
+ <tr>
745
+ <th scope="row"><?php _e('Thumbnail Size', $this->text_domain ); ?></th>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
746
  <td>
747
+ <?php if ($t['slug'] == 'th' ) { ?>
748
+ <select disabled="disabled">
749
+ <option selected="selected"><?php _e('It is common with setting Internal-link', $this->text_domain ); ?></option>
 
 
750
  </select>
751
+ <?php } else { ?>
752
+ <select name="properties[<?php echo $t['slug']; ?>-thumbnail-size]">
753
+ <option value="thumbnail" <?php selected($this->options[$t['slug'].'-thumbnail-size'] == 'thumbnail' ); ?>><?php _e('Thumbnail (150px)', $this->text_domain ); ?></option>
754
+ <option value="medium" <?php selected($this->options[$t['slug'].'-thumbnail-size'] == 'medium' ); ?>><?php _e('Medium (300px)', $this->text_domain ); ?></option>
755
+ <option value="large" <?php selected($this->options[$t['slug'].'-thumbnail-size'] == 'large' ); ?>><?php _e('Large (1024px)', $this->text_domain ); ?></option>
756
+ <option value="full" <?php selected($this->options[$t['slug'].'-thumbnail-size'] == 'full' ); ?>><?php _e('Full size', $this->text_domain ); ?></option>
757
+ </select>
758
+ <?php } ?>
759
  </td>
760
  </tr>
761
+ <tr>
762
+ <th scope="row"><?php _e('Site Icon', $this->text_domain ); ?></th>
763
  <td>
764
+ <?php if ($t['slug'] == 'th' ) { ?>
765
+ <select disabled="disabled">
766
+ <option selected="selected"><?php _e('It is common with setting Internal-link', $this->text_domain ); ?></option>
 
 
767
  </select>
768
+ <?php } else { ?>
769
+ <select name="properties[<?php echo $t['slug']; ?>-favicon]">
770
+ <option value="" <?php selected($this->options[$t['slug'].'-favicon'] == '' ); ?>><?php _e('None', $this->text_domain ); ?></option>
771
+ <option value="1" <?php selected($this->options[$t['slug'].'-favicon'] == '1' ); disabled($t['slug'] == 'ex' || ($t['slug'] == 'in' && !function_exists('has_site_icon') || !has_site_icon() ) ); ?>><?php _e('Direct', $this->text_domain ); ?></option>
772
+ <option value="3" <?php selected($this->options[$t['slug'].'-favicon'] == '3' ); ?>><?php _e('Use WebAPI', $this->text_domain ); ?></option>
773
+ <option value="13" <?php selected($this->options[$t['slug'].'-favicon'] == '13' ); disabled($t['slug'] == 'ex' || ($t['slug'] == 'in' && !function_exists('has_site_icon') || !has_site_icon() ) ); ?>><?php _e('Use WebAPI ,if can not direct', $this->text_domain ); ?></option>
774
+ </select>
775
+ <?php } ?>
776
  </td>
777
  </tr>
778
+ <tr>
779
+ <th scope="row"><?php _e('Added Information', $this->text_domain ); ?></th>
780
+ <td><input name="properties[<?php echo $t['slug']; ?>-info]" type="text" value="<?php echo esc_attr($this->options[$t['slug'].'-info'] ); ?>" class="regular-text" /></td>
781
  </tr>
782
+ <tr>
783
+ <th scope="row"><?php _e('Text of More Button', $this->text_domain ); ?></th>
784
+ <td>
785
+ <?php if ($t['slug'] == 'th' ) { ?>
786
+ <input type="text" value="<?php _e('It is common with setting Internal-link', $this->text_domain ); ?>" class="regular-text" disabled="disabled" />
787
+ <?php } else { ?>
788
+ <input name="properties[<?php echo $t['slug']; ?>-more-text]" type="text" value="<?php echo esc_attr($this->options[$t['slug'].'-more-text'] ); ?>" class="regular-text" />
789
+ <?php } ?>
790
+ </td>
791
  </tr>
792
+ <tr>
793
+ <th scope="row"><?php _e('Open New Window/Tab', $this->text_domain ); ?></th>
794
  <td>
795
+ <?php if ($t['slug'] == 'th' ) { ?>
796
+ <select disabled="disabled">
797
+ <option selected="selected"><?php _e('It is common with setting Internal-link', $this->text_domain ); ?></option>
798
+ </select>
799
+ <?php } else { ?>
800
+ <select name="properties[<?php echo $t['slug']; ?>-target]">
801
+ <option value="" <?php selected($this->options[$t['slug'].'-target'] == '' ); ?>><?php _e('None', $this->text_domain ); ?></option>
802
+ <option value="1" <?php selected($this->options[$t['slug'].'-target'] == '1' ); ?>><?php _e('All client', $this->text_domain ); ?></option>
803
+ <option value="2" <?php selected($this->options[$t['slug'].'-target'] == '2' ); ?>><?php _e('Other than mobile', $this->text_domain ); ?></option>
804
  </select>
805
+ <?php } ?>
806
  </td>
807
  </tr>
808
+ <tr>
809
+ <th scope="row"><?php _e('Get Contents', $this->text_domain ); ?></th>
810
  <td>
811
+ <?php if ($t['slug'] == 'th' ) { ?>
812
+ <select disabled="disabled">
813
+ <option selected="selected"><?php _e('It is common with setting Internal-link', $this->text_domain ); ?></option>
814
+ </select>
815
+ <?php } else { ?>
816
+ <select>
817
+ <option value="" <?php disabled($t['slug'] == 'ex' ); selected($t['slug'] <> 'ex' && $this->options[$t['slug'].'-get'] == '' ); ?>><?php _e('Always get the latest from the content', $this->text_domain ); ?></option>
818
+ <option value="1" <?php disabled($t['slug'] == 'ex' ); selected($t['slug'] <> 'ex' && $this->options[$t['slug'].'-get'] == '1' ); ?>><?php _e('Always get the latest from the excerpt', $this->text_domain ); ?></option>
819
+ <option value="2" <?php disabled($t['slug'] == 'ex' ); selected($t['slug'] <> 'ex' && $this->options[$t['slug'].'-get'] == '2' ); ?>><?php _e('Initially acquired only from the content', $this->text_domain ); ?></option>
820
+ </select>
821
+ <?php } ?>
822
  </td>
823
  </tr>
824
+ <?php if ($t['slug'] == 'ex' ) { ?>
825
+ <tr>
826
+ <th scope="row"><?php _e('Set NoFollow', $this->text_domain ); ?></th>
827
+ <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('(Deprecated)', $this->text_domain ); ?></label></td>
828
+ </tr>
829
+ <tr>
830
+ <th scope="row"><?php _e('Set NoOpener', $this->text_domain ); ?></th>
831
+ <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>
832
  </tr>
833
+ <tr>
834
+ <th scope="row"><?php _e('Use HatenaBlogCard', $this->text_domain ); ?></th>
835
+ <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('(Deprecated)', $this->text_domain ); ?></label></td>
836
  </tr>
837
+ <?php } else { ?>
838
+ <tr>
839
+ <th scope="row"><?php _e('Retry Get PID', $this->text_domain ); ?></th>
840
+ <td>
841
+ <label>
842
+ <?php if ($t['slug'] == 'th' ) { ?>
843
+ <input type="checkbox" checked="checked" disabled="disabled" /><?php _e('It is common with setting Internal-link', $this->text_domain ); ?>
844
+ <?php } else { ?>
845
+ <input type="checkbox" name="properties[flg-get-pid]" 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>
846
+ <?php } ?>
847
+ </label>
848
+ </td>
849
  </tr>
850
+ <?php } ?>
851
  </table>
852
  </div>
853
+ <?php } ?>
854
+
855
+ <div class="pz-lkc-page" id="pz-lkc-check">
856
+ <h3><?php echo __('Link Check Settings', $this->text_domain ).'&nbsp;<a href="'.$url.'/pz-linkcard-settings-link-check" rel="external noopener 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>
857
  <table class="form-table">
858
+ <tr>
859
+ <th scope="row"><?php _e('Relative URL', $this->text_domain ); ?></th>
860
+ <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>
 
 
 
 
 
 
 
 
861
  </tr>
862
+ <tr>
863
+ <th scope="row"><?php _e('Do Not Link at Error', $this->text_domain ); ?></th>
864
+ <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>
 
 
 
 
 
 
 
865
  </tr>
866
+ <tr>
867
+ <th scope="row"><?php _e('Disable SSL Verification', $this->text_domain ); ?></th>
868
+ <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>
 
 
 
 
 
 
 
869
  </tr>
870
+ <tr>
871
+ <th scope="row"><?php _e('Follow Location', $this->text_domain ); ?></th>
872
+ <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>
873
  </tr>
874
+ <tr>
875
+ <th scope="row"><?php _e('Set Referer', $this->text_domain ); ?></th>
876
+ <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>
877
  </tr>
878
+ <tr>
879
+ <th scope="row"><?php _e('Use User-Agent', $this->text_domain ); ?></th>
880
  <td>
881
+ <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>
882
+ <p style="margin-left: 20px;"><input name="properties[user-agent]" type="text" size="80" value="<?php echo esc_attr($this->options['user-agent'] ); ?>" readonly="readonly" ondblclick="this.readOnly=false;" /></p>
 
 
 
883
  </td>
884
  </tr>
885
+ <tr>
886
+ <th scope="row"><?php _e('Broken Link Checker', $this->text_domain ); ?></th>
887
+ <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>
 
 
 
 
 
 
 
888
  </tr>
889
+ <tr>
890
+ <th scope="row"><?php _e('Broken Link Count', $this->text_domain ); ?></th>
891
+ <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>
892
  </tr>
893
  </table>
894
  </div>
895
 
896
+ <div class="pz-lkc-page" id="pz-lkc-editor">
897
+ <h3><?php echo __('Editor Settings', $this->text_domain ).'&nbsp;<a href="'.$url.'/pz-linkcard-settings-editor" rel="external noopener 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>
898
  <table class="form-table">
899
+ <tr>
900
+ <th scope="row"><?php _e('Convert from Text Link', $this->text_domain ); ?></th>
901
+ <td><label><input name="properties[auto-atag]" type="checkbox" class="pz-lkc-sync-check" value="1" <?php checked($this->options['auto-atag'] ); ?> /><?php _e('Convert lines with text link only to Linkcard.', $this->text_domain ); ?></label></td>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
902
  </tr>
903
+ <tr>
904
+ <th scope="row"><?php _e('Convert from URL', $this->text_domain ); ?></th>
905
+ <td><label><input name="properties[auto-url]" type="checkbox" class="pz-lkc-sync-check" value="1" <?php checked($this->options['auto-url'] ); ?> /><?php _e('Convert lines with URL only to Linkcard.', $this->text_domain ); ?></label></td>
 
 
 
 
 
 
 
 
 
 
 
906
  </tr>
907
+ <tr>
908
+ <th scope="row"><?php _e('External Link Only', $this->text_domain ); ?></th>
909
+ <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>
 
 
 
 
 
910
  </tr>
911
+
912
+ <tr>
913
+ <th scope="row"><?php _e('Do Shortcode', $this->text_domain ); ?></th>
914
+ <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>
 
 
 
 
 
 
 
915
  </tr>
916
+
917
+ <tr>
918
+ <th scope="row"><?php _e('Add Insert Button', $this->text_domain ); ?></th>
919
+ <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>
 
 
920
  </tr>
921
+ <tr>
922
+ <th scope="row"><?php _e('Add Quick Tag', $this->text_domain ); ?></th>
923
+ <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>
 
 
924
  </tr>
 
 
925
 
926
+ <tr>
927
+ <th scope="row"><?php _e('ShortCode 1', $this->text_domain ); ?></th>
928
+ <td>[<input name="properties[code1]" type="text" id="code1" value="<?php echo esc_attr($this->options['code1'] ); ?>" 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>]
929
+ <p><?php _e('Case-sensitive', $this->text_domain ); ?></p></td>
 
 
930
  </tr>
931
+ <tr>
932
+ <th scope="row"><?php _e('Use InLineText', $this->text_domain ); ?></th>
933
+ <td>
934
+ [<span style="color: #888888;" class="copy-code1"><?php echo esc_attr($this->options['code1'] ); ?></span> url="http://xxx"]
935
+ <select name="properties[use-inline]" class="use-code1">
936
+ <option value="" <?php selected($this->options['use-inline'] == '' ); ?>><?php _e('No use', $this->text_domain ); ?></option>
937
+ <option value="1" <?php selected($this->options['use-inline'] == '1' ); ?>><?php _e('Use to excerpt', $this->text_domain ); ?></option>
938
+ <option value="2" <?php selected($this->options['use-inline'] == '2' ); ?>><?php _e('Use to title', $this->text_domain ); ?></option>
939
+ </select>
940
+ [/<span style="color: #888888;" class="copy-code1"><?php echo esc_attr($this->options['code1'] ); ?></span>]
941
+ <p><?php _e('This setting applies only to the Shortcode1', $this->text_domain ); ?></p></td>
942
+ </td>
943
  </tr>
944
+ <tr>
945
+ <th scope="row"><?php _e('ShortCode 2', $this->text_domain ); ?></th>
946
+ <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>]
947
+ <p><?php _e('Case-sensitive', $this->text_domain ); ?></p></td>
948
  </tr>
949
+ <tr>
950
+ <th scope="row"><?php _e('ShortCode 3', $this->text_domain ); ?></th>
951
+ <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>]
952
+ <p><?php _e('Case-sensitive', $this->text_domain ); ?></p></td>
953
  </tr>
954
+ <tr class="pz-admin-only">
955
+ <th scope="row"><?php _e('ShortCode 4', $this->text_domain ); ?></th>
956
+ <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>]
957
+ <p><?php _e('Case-sensitive', $this->text_domain ); ?></p></td>
958
  </tr>
959
+ <tr>
960
+ <th scope="row"><?php _e('Parameters', $this->text_domain ); ?></th>
961
+ <td>
962
+ [<span style="color: #888888;" class="copy-code1"><?php echo esc_attr($this->options['code1'] ); ?></span> url="http://xxx" <span style="color: #4488ff; font-weight: bold;">title=</span>"xxxxxx" <span style="color: #8844ff; font-weight: bold;">content=</span>"xxxxxx"]<br>
963
+ <?php _e('For any shortcode you can change the title and excerpt with `title` parameter and `content` parameter', $this->text_domain ); ?>
964
+ </ts>
965
  </tr>
966
  </table>
967
  </div>
968
 
969
+ <div class="pz-lkc-page" id="pz-lkc-multisite">
970
+ <h3><?php echo __('Multi Site Settings', $this->text_domain ).'&nbsp;<a href="'.$url.'/pz-linkcard-settings-multisite" rel="external noopener 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>
971
  <table class="form-table">
972
+ <tr>
973
+ <th scope="row"><?php _e('Multi Site', $this->text_domain ); ?></th>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
974
  <td>
975
+ <select>
976
+ <option value="0" selected(!$is_multisite ); disabled( $is_multisite ); ?>><?php _e('Disabled', $this->text_domain ); ?></option>
977
+ <option value="1" selected( $is_multisite ); disabled(!$is_multisite ); ?>><?php _e('Enabled', $this->text_domain ); ?></option>
978
+ </select>
979
+ <p><?php echo __('*', $this->text_domain ).' '.__('Cannot be changed', $this->text_domain ); ?></p>
980
  </td>
981
  </tr>
982
+ <tr>
983
+ <th scope="row"><?php _e('Type', $this->text_domain ); ?></th>
984
+ <td>
985
+ <select <?php disabled(!$is_multisite ); ?>>
986
+ <option value="0" selected(!$is_subdomain ); disabled( $is_subdomain ); ?>><?php _e('Subdirectories', $this->text_domain ); ?></option>
987
+ <option value="1" selected( $is_subdomain ); disabled(!$is_subdomain ); ?>><?php _e('Subdomains', $this->text_domain ); ?></option>
988
+ </select>
989
+ <p><?php echo __('*', $this->text_domain ).' '.__('Cannot be changed', $this->text_domain ); ?></p>
990
+ </td>
991
  </tr>
992
+ <tr>
993
+ <th scope="row"><?php _e('Current Blog ID', $this->text_domain ); ?></th>
994
+ <td>
995
+ <input name="properties[multi-myid]" type="text" size="8" value="<?php echo esc_attr($multi_myid ); ?>" readonly="readonly" />
996
+ </td>
997
  </tr>
998
+ <tr>
999
+ <th scope="row"><?php _e('Number of Sites', $this->text_domain ); ?></th>
1000
+ <td>
1001
+ <input name="properties[multi-count]" type="text" size="8" value="<?php echo esc_attr($multi_count ); ?>" readonly="readonly" />
1002
+ </td>
1003
  </tr>
1004
  </table>
1005
+
1006
+ <h3><?php echo __('Site List', $this->text_domain ).'&nbsp;<a href="'.$url.'/pz-linkcard-settings-multisite" rel="external noopener 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>
1007
+ <table name="sitelist" class="widefat striped">
1008
+ <thead>
1009
+ <tr>
1010
+ <th scope="col"><?php _e('Current', $this->text_domain ); ?></th>
1011
+ <th scope="col"><?php _e('Blog ID', $this->text_domain ); ?></th>
1012
+ <th scope="col"><?php _e('Site Name', $this->text_domain ); ?></th>
1013
+ <th scope="col"><?php _e('URL', $this->text_domain ); ?></th>
1014
+ <th scope="col"><?php _e('Domain', $this->text_domain ); ?></th>
1015
+ </tr>
1016
+ </thead>
1017
+ <tbody>
1018
+ <?php for ($i = 1; $i <= $multi_count; $i++) { ?>
1019
+ <tr>
1020
+ <th scope="row"><input type="checkbox" value="1" readonly="readonly"<?php if ($multi[$i]['id'] == $multi_myid ) { echo ' checked="checked"'; } ?> /></th>
1021
+ <td><input name="properties[multi-<?php echo $i; ?>-id]" type="hidden" value="<?php echo $multi[$i]['id']; ?>" /><?php echo $multi[$i]['id']; ?></td>
1022
+ <td><input name="properties[multi-<?php echo $i; ?>-name]" type="hidden" value="<?php echo $multi[$i]['name']; ?>" /><?php echo $multi[$i]['name']; ?></td>
1023
+ <td><input name="properties[multi-<?php echo $i; ?>-url]" type="hidden" value="<?php echo $multi[$i]['url']; ?>" /><?php echo $multi[$i]['url']; ?></td>
1024
+ <td><input name="properties[multi-<?php echo $i; ?>-domain]" type="hidden" value="<?php echo $multi[$i]['domain']; ?>" /><?php echo $multi[$i]['domain']; ?></td>
1025
+ </tr>
1026
+ <?php } ?>
1027
+ </tbody>
1028
+ </table>
1029
  </div>
1030
+
1031
+ <div class="pz-lkc-page" id="pz-lkc-advanced">
1032
+ <h3><?php echo __('Advanced Settings', $this->text_domain ).'&nbsp;<a href="'.$url.'/pz-linkcard-settings-advanced" rel="external noopener 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>
1033
  <table class="form-table">
1034
+ <tr>
1035
+ <th scope="row"><?php _e('Trailing Slash', $this->text_domain ); ?></th>
 
 
 
 
 
1036
  <td>
1037
+ <select name="properties[trail-slash]">
1038
+ <option value="" <?php selected($this->options['trail-slash'] == '' ); ?>><?php _e('As it', $this->text_domain ); ?></option>
1039
+ <option value="1" <?php selected($this->options['trail-slash'] == '1' ); ?>><?php _e('When only domain name, remove', $this->text_domain ); ?></option>
1040
+ <option value="2" <?php selected($this->options['trail-slash'] == '2' ); ?>><?php _e('Always remove', $this->text_domain ); ?></option>
 
1041
  </select>
 
 
1042
  </td>
1043
  </tr>
1044
+ <tr>
1045
+ <th scope="row"><?php _e('Class ID to be Added (for PC)', $this->text_domain ); ?></th>
1046
+ <td><input name="properties[class-pc]" type="text" size="40" value="<?php echo (isset($this->options['class-pc']) ? esc_attr($this->options['class-pc']) : '' ); ?>" /></td>
 
1047
  </tr>
1048
+ <tr>
1049
+ <th scope="row"><?php _e('Class ID to be Added (for Mobile)', $this->text_domain ); ?></th>
1050
+ <td><input name="properties[class-mobile]" type="text" size="40" value="<?php echo (isset($this->options['class-mobile']) ? esc_attr($this->options['class-mobile']) : '' ); ?>" /><br>
 
1051
  </tr>
1052
+
1053
+ <tr>
1054
+ <th scope="row"><?php _e('Compress', $this->text_domain ); ?></th>
1055
+ <td><label><input name="properties[flg-compress]" type="checkbox" value="1" <?php checked($this->options['flg-compress'] ); ?> /><?php _e('Compress CSS and JavaScript to improve access speed.', $this->text_domain ); ?></label></td>
1056
  </tr>
1057
+
1058
+ <tr>
1059
+ <th scope="row"><?php _e('File Menu', $this->text_domain ); ?></th>
1060
+ <td><label><input name="properties[flg-filemenu]" type="checkbox" value="1" <?php checked($this->options['flg-filemenu'] ); ?> /><?php _e('Display the file menu on the card management screen.', $this->text_domain ); ?></label></td>
 
 
1061
  </tr>
1062
 
1063
+ <tr>
1064
+ <th scope="row"><?php _e('Initialize Tab', $this->text_domain ); ?></th>
1065
+ <td><label><input name="properties[flg-initialize]" type="checkbox" value="1" <?php checked($this->options['flg-initialize'] ); ?> /><?php _e('Display the initialize tab on the settings screen.', $this->text_domain ); ?></label></td>
1066
  </tr>
1067
+
1068
+ <tr>
1069
+ <th scope="row"><?php _e('Google AMP URL', $this->text_domain ); ?></th>
1070
+ <td><label><input name="properties[flg-amp-url]" type="checkbox" value="1" <?php checked($this->options['flg-amp-url'] ); ?> /><?php echo __('If the URL is AMP, display simple.', $this->text_domain ).__('(Deprecated)', $this->text_domain ); ?></label></td>
1071
  </tr>
1072
+
1073
+ <tr>
1074
+ <th scope="row"><?php _e('Hide URL Error', $this->text_domain ); ?></th>
1075
+ <td><label><input name="properties[flg-invalid-hide]" type="checkbox" value="1" <?php checked($this->options['flg-invalid-hide'] ); ?> /><?php echo __('Do not display an error on the admin page.', $this->text_domain ).__('(Deprecated)', $this->text_domain ); ?></label></td>
1076
  </tr>
1077
 
1078
+ <tr>
1079
+ <th scope="row"><?php _e('Saved Datetime', $this->text_domain ); ?></th>
1080
+ <td>
1081
+ <input type="text" size="40" value="<?php echo date($datetime_format, $this->options['saved-date'] ); ?>" readonly="readonly" />
1082
+ <input name="properties[saved-date]" type="hidden" value="<?php echo $this->options['saved-date']; ?>" />
1083
+ </td>
1084
  </tr>
1085
 
1086
+ <tr>
1087
+ <th scope="row"><?php _e('Survey Mode', $this->text_domain ); ?></th>
1088
+ <td><label><input name="properties[debug-mode]" type="checkbox" value="1" <?php checked($this->options['debug-mode'] ); ?> /><?php _e('Outputs some events and setting information to a log file.', $this->text_domain ); _e('(Deprecated)', $this->text_domain ); ?></label></td>
1089
+ </tr>
1090
+ <tr class="pz-debug-only">
1091
+ <th scope="row"><?php _e('Administrator Mode', $this->text_domain ); ?></th>
1092
+ <td><label><input name="properties[admin-mode]" type="checkbox" value="1" <?php checked($this->options['admin-mode'] ); readonly(!$this->options['admin-mode'] ); if (!$this->options['admin-mode'] ) { echo 'ondblclick="this.readOnly=false;"'; } ?> /><?php _e('Display information that is not normally needed or open special settings.', $this->text_domain ); _e('(Deprecated)', $this->text_domain ); ?></label></td>
1093
  </tr>
1094
+ <tr class="pz-develop-only">
1095
+ <th scope="row"><?php _e('Develop Mode', $this->text_domain ); ?></th>
1096
+ <td><label><input name="properties[develop-mode]" type="checkbox" value="1" <?php checked($this->options['develop-mode'] ); ?> readonly="readonly" /><?php _e('Currently working in a development environment.', $this->text_domain ); ?></label></td>
1097
  </tr>
1098
 
1099
  </table>
1100
  </div>
1101
+
1102
+ <div class="pz-lkc-page" id="pz-lkc-etc">
1103
+ <h3><?php echo __('Stylesheet Settings', $this->text_domain ).'&nbsp;<a href="'.$url.'/pz-linkcard-settings-css" rel="external noopener 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>
1104
  <table class="form-table">
1105
+ <tr>
1106
+ <th scope="row"><?php _e('Stylesheet URL', $this->text_domain ); ?></th>
1107
  <td>
1108
+ <p><input name="properties[css-url]" type="url" size="80" title="<?php echo esc_attr($this->options['css-url'] ); ?>" value="<?php echo esc_attr($this->options['css-url'] ); ?>" readonly="readonly" /></p>
1109
+ <p><?php _e('Schemes (http and https) are omitted.', $this->text_domain ); ?></p>
 
 
 
 
1110
  </td>
1111
  </tr>
1112
+ <tr>
1113
+ <th scope="row"><?php _e('Stylesheet URL to Add', $this->text_domain ); ?></th>
1114
+ <td><input name="properties[css-url-add]" type="url" size="80" title="<?php echo esc_attr($this->options['css-url-add'] ); ?>" value="<?php echo esc_attr($this->options['css-url-add'] ); ?>" /><br><p><?php echo __('(', $this->text_domain ).__('ex.', $this->text_domain ).' '.$this->home_url.'/style.css '.__(')', $this->text_domain ); ?></p></td>
 
 
 
 
1115
  </tr>
1116
+ <tr>
1117
+ <th scope="row"><?php _e('Stylesheet Text to Add', $this->text_domain ); ?></th>
1118
+ <td><input name="properties[css-add]" type="text" size="80" title="<?php echo esc_attr($this->options['css-add'] ); ?>" value="<?php echo esc_attr($this->options['css-add'] ); ?>" /></td>
 
1119
  </tr>
1120
+ <tr class="pz-admin-only">
1121
+ <th scope="row"><?php _e('Stylesheet Version', $this->text_domain ); ?></th>
1122
+ <td><input name="properties[css-count]" type="text" size="10" title="<?php echo esc_attr($this->options['css-count'] ); ?>" value="<?php echo esc_attr($this->options['css-count'] ); ?>" readonly="readonly" <?php if ($this->options['admin-mode'] ) { echo 'ondblclick="this.readOnly=false;" '; }?>/></td>
 
1123
  </tr>
1124
+ <tr class="pz-admin-only">
1125
+ <th scope="row"><?php _e('Stylesheet File', $this->text_domain ); ?></th>
1126
+ <td><input name="properties[css-path]" type="text" size="80" title="<?php echo esc_attr($this->options['css-path'] ); ?>" value="<?php echo esc_attr($this->options['css-path'] ); ?>" readonly="readonly" /></td>
 
1127
  </tr>
1128
+ <tr class="pz-admin-only">
1129
+ <th scope="row"><?php _e('Stylesheet Templete File', $this->text_domain ); ?></th>
1130
+ <td><input name="properties[css-templete]" type="text" size="80" title="<?php echo esc_attr($this->options['css-templete'] ); ?>" value="<?php echo esc_attr($this->options['css-templete'] ); ?>" readonly="readonly" /></td>
 
1131
  </tr>
1132
+ </table>
1133
 
1134
+ <h3><?php echo __('Image Settings', $this->text_domain ).'&nbsp;<a href="'.$url.'/pz-linkcard-settings-image" rel="external noopener 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>
1135
+ <table class="form-table">
1136
+ <tr>
1137
+ <th scope="row"><?php _e('Image Cache URL', $this->text_domain ); ?></th>
1138
+ <td>
1139
+ <p><input name="properties[thumbnail-url]" type="url" 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>
1140
+ <p><?php _e('Schemes (http and https) are omitted.', $this->text_domain ); ?></p>
1141
+ <p><?php $size = pz_GetDirSize($this->options['thumbnail-dir'] ); echo __('Used', $this->text_domain ).__(': ', $this->text_domain ).pz_GetSizeStringSi($size).' ('.pz_GetStringBytes($size).')'; ?></p>
1142
+ </td>
1143
  </tr>
1144
+ <tr class="pz-admin-only">
1145
+ <th scope="row"><?php _e('Image Cache Directory', $this->text_domain ); ?></th>
1146
+ <td>
1147
+ <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>
1148
+ </td>
1149
  </tr>
1150
+ </table>
1151
+
1152
+ <h3 class="pz-debug-only"><?php echo __('Survey Settings', $this->text_domain ); ?></h3>
1153
+ <table class="form-table pz-debug-only">
1154
+ <tr class="pz-debug-only">
1155
+ <th scope="row"><?php _e('Log URL', $this->text_domain ); ?></th>
1156
+ <td>
1157
+ <p><input name="properties[debug-url]" type="url" title="<?php echo $this->options['debug-url']; ?>" value="<?php echo $this->options['debug-url']; ?>" size="80" onclick="this.select(0,this.value.length );" readonly="readonly" /></p>
1158
+ <p><?php $size = pz_GetDirSize($this->options['debug-dir'] ); echo __('Used', $this->text_domain ).__(': ', $this->text_domain ).pz_GetSizeStringSi($size).' ('.pz_GetStringBytes($size).')'; ?></p>
1159
+ </td>
1160
  </tr>
1161
+ <tr class="pz-admin-only">
1162
+ <th scope="row"><?php _e('Log Directory', $this->text_domain ); ?></th>
1163
  <td>
1164
+ <p><input name="properties[debug-dir]" type="text" title="<?php echo $this->options['debug-dir']; ?>" value="<?php echo $this->options['debug-dir']; ?>" size="80" onclick="this.select(0,this.value.length );" readonly="readonly" /></p>
 
1165
  </td>
1166
  </tr>
1167
+ </table>
1168
 
1169
+ <h3><?php echo __('Web-API Settings', $this->text_domain ).'&nbsp;<a href="'.$url.'/pz-linkcard-settings-web-api" rel="external noopener 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>
1170
+ <table class="form-table">
1171
+ <tr>
1172
+ <th scope="row"><?php _e('Site Icon API', $this->text_domain ); ?></th>
1173
+ <td>
1174
+ <input name="properties[favicon-api]" type="url" size="80" value="<?php echo esc_attr($this->options['favicon-api'] ); ?>" onclick="this.select(0,this.value.length );" />
1175
+ <p><?php echo __('%DOMAIN% replace to domain name.', $this->text_domain ).' '.__('(', $this->text_domain ).__('ex.', $this->text_domain ).' '.$domain.' '.__(')', $this->text_domain ).'<br>'.__('%DOMAIN_URL% replace to domain URL.').' '.__('(', $this->text_domain ).__('ex.', $this->text_domain ).' '.$domain_url.' '.__(')', $this->text_domain ).'<br>'.__('%URL% replace to URL.', $this->text_domain ).' '.__('(', $this->text_domain ).__('ex.', $this->text_domain ).' '.$url.$this->options['plugin-path'].' '.__(')', $this->text_domain ); ?>
1176
+ <p><?php _e('ex1.', $this->text_domain ); ?><input name="" type="text" size="70" value="https://www.google.com/s2/favicons?domain=%DOMAIN%" onclick="this.select(0,this.value.length );" readonly="readonly" /></p>
1177
+ <p><?php _e('ex2.', $this->text_domain ); ?><input name="" type="text" size="70" value="https://favicon.hatena.ne.jp/?url=%URL%" onclick="this.select(0,this.value.length );" readonly="readonly" /></p>
1178
+ </td>
1179
  </tr>
1180
+ <tr>
1181
+ <th scope="row" rowspan="3"><?php _e('Thumbnail API', $this->text_domain ); ?></th>
1182
+ <td>
1183
+ <input name="properties[thumbnail-api]" type="url" size="80" value="<?php echo esc_attr($this->options['thumbnail-api'] ); ?>" onclick="this.select(0,this.value.length );" />
1184
+ <p><?php echo __('%URL% replace to URL.', $this->text_domain ).' '.__('(', $this->text_domain ).__('ex.', $this->text_domain ).' '.$url.$this->options['plugin-path'].' '.__(')', $this->text_domain ); ?></p>
1185
+ <p><?php _e('ex1.', $this->text_domain ); ?><input name="" type="text" size="70" value="https://s.wordpress.com/mshots/v1/%URL%?w=200" onclick="this.select(0,this.value.length );" readonly="readonly" /></p>
1186
+ <p><?php _e('ex2.', $this->text_domain ); ?><input name="" type="text" size="70" value="https://capture.heartrails.com/200x200?%URL%" onclick="this.select(0,this.value.length );" readonly="readonly" /></p>
1187
+ </td>
1188
+ </tr>
1189
+ </table>
1190
  </div>
1191
+
1192
+ <div class="pz-lkc-page" id="pz-lkc-initialize">
1193
+ <h3><?php echo __('Initialize', $this->text_domain ).'<a href="'.$url.'/pz-linkcard-settings-initialize" rel="external noopener 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>
1194
  <table class="form-table">
1195
+ <tr>
1196
+ <th scope="row"><?php _e('Initialize Settings', $this->text_domain ); ?></th>
1197
+ <td>
1198
+ <button type="submit" name="action" class="pz-lkc-button" value="init-settings" onclick="return confirm('<?php _e('Are you sure?', $this->text_domain ); ?>');"><?php _e('Perform Initialization', $this->text_domain ); ?></button>
1199
+ <span class="pz-lkc-button-text"><?php _e('Reset the "Settings" to the initial value.', $this->text_domain ); ?></span>
1200
+ </td>
1201
+ </tr>
1202
+ <tr class="pz-admin-only">
1203
+ <th scope="row"><?php _e('Initialize Operation', $this->text_domain ); ?></th>
1204
+ <td>
1205
+ <button type="submit" name="action" class="pz-lkc-button" value="init-plugin" onclick="return confirm('<?php _e('Are you sure?', $this->text_domain ); ?>');"><?php _e('Perform a Reboot', $this->text_domain ); ?></button>
1206
+ <span style="pz-lkc-button-text"><?php echo __('Perform initial setup.', $this->text_domain ).'&nbsp;'.__('"Settings" will not be initialized.', $this->text_domain ); ?></span>
1207
+ </td>
1208
+ </tr>
1209
+ <tr class="pz-admin-only">
1210
+ <th scope="row"><?php _e('Initialization Exception', $this->text_domain ); ?></th>
1211
+ <td><label><input name="properties[initialize-exception]" type="checkbox" value="1" <?php checked($this->options['initialize-exception'] ); ?> /><?php echo __('Do not initialize "Survey Mode" and "Administrator Mode".', $this->text_domain ); ?></label></td>
1212
  </tr>
1213
  </table>
1214
  </div>
1220
  </div>
1221
  <?php
1222
  function pz_TrimNum($val, $init = 0 ) {
1223
+ $val = mb_convert_kana($val, 'n' );
1224
+ $val = intval(preg_replace('/[^0-9]/', '', $val ) );
1225
+ if ($val == 0 ) {
1226
  $val = $init;
1227
+ $val = intval(preg_replace('/[^0-9]/', '', $val ) );
1228
  }
1229
  return $val;
1230
  }
1231
  function pz_CheckColorCode($val ) {
1232
  // HTMLカラーコード
1233
+ if (preg_match('/^#([0-9A-F]{6}|[0-9A-F]{3})$/i', $val ) ) {
1234
  return true;
1235
  }
1236
  }
1237
  // ディレクトリ配下の使用サイズ
1238
+ function pz_GetDirSize($dir ) {
1239
+ $size = 0;
1240
+ $handle = opendir($dir );
1241
+ if (!$handle ) {
1242
+ return null;
1243
  }
1244
+ while ($file = readdir($handle ) ) {
 
1245
  $fullpath = $dir.'/'.$file;
1246
+ if (is_dir($fullpath ) ) {
1247
+ if ($file != '..' && $file != '.' ) {
1248
+ $size += pz_GetDirSize($fullpath );
1249
  }
1250
  } else {
1251
+ $size += filesize($fullpath );
1252
  }
1253
  }
1254
  return $size;
1255
  }
1256
 
1257
  // 数値をKB、MB、TBの単位に変換
1258
+ function pz_GetSizeStringSi($val ) {
1259
+ $label = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB' );
1260
+ for($i = 0; $val >= 1024 && $i < (count($label ) -1 ); $val /= 1024, $i++ );
1261
+ return (round($val, 2 ).' '.$label[$i] );
1262
  }
1263
  // 数値をKB、MB、TBの単位に変換
1264
+ function pz_GetStringBytes($val ) {
1265
+ if ($val == 1 ) {
1266
+ return number_format($val ).' byte';
1267
  } else {
1268
+ return number_format($val ).' bytes';
1269
  }
1270
  }
lib/pz-linkcard-style.php CHANGED
@@ -1,4 +1,4 @@
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'];
@@ -7,9 +7,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 );
12
-
13
  // かんたん書式設定
14
  switch ($this->options['special-format']) {
15
  case 'LkC': // Pz-LkC Default
@@ -207,7 +204,6 @@
207
  $file_text = str_replace('/*COLOR-URL*/', 'color: #59fbea;', $file_text );
208
  $file_text = str_replace('/*COLOR-EXCERPT*/', 'color: #59fbea;', $file_text );
209
  $file_text = str_replace('/*COLOR-INFO*/', 'color: #59fbea;', $file_text );
210
- $file_text = str_replace('/*COLOR-PLUGIN*/', 'color: #59fbea;', $file_text );
211
  $file_text = str_replace('/*EX-BGCOLOR*/', 'background-color: rgba( 35,100, 93,0.9);', $file_text );
212
  $file_text = str_replace('/*IN-BGCOLOR*/', 'background-color: rgba( 8, 25, 23,0.9);', $file_text );
213
  $file_text = str_replace('/*TH-BGCOLOR*/', 'background-color: rgba( 89,251,234,0.05);', $file_text );
@@ -220,7 +216,6 @@
220
  $file_text = str_replace('/*COLOR-URL*/', 'color: #ebbc4a;', $file_text );
221
  $file_text = str_replace('/*COLOR-EXCERPT*/', 'color: #ebbc4a;', $file_text );
222
  $file_text = str_replace('/*COLOR-INFO*/', 'color: #ebbc4a;', $file_text );
223
- $file_text = str_replace('/*COLOR-PLUGIN*/', 'color: #ebbc4a;', $file_text );
224
  $file_text = str_replace('/*EX-BGCOLOR*/', 'background-color: rgba( 94, 75, 29,0.9);', $file_text );
225
  $file_text = str_replace('/*IN-BGCOLOR*/', 'background-color: rgba( 23, 18, 7,0.9);', $file_text );
226
  $file_text = str_replace('/*TH-BGCOLOR*/', 'background-color: rgba(235,188, 74,0.05);', $file_text );
@@ -233,7 +228,6 @@
233
  $file_text = str_replace('/*COLOR-URL*/', 'color: #28f428;', $file_text );
234
  $file_text = str_replace('/*COLOR-EXCERPT*/', 'color: #28f428;', $file_text );
235
  $file_text = str_replace('/*COLOR-INFO*/', 'color: #28f428;', $file_text );
236
- $file_text = str_replace('/*COLOR-PLUGIN*/', 'color: #28f428;', $file_text );
237
  $file_text = str_replace('/*EX-BGCOLOR*/', 'background-color: rgba( 16, 97, 16,0.9);', $file_text );
238
  $file_text = str_replace('/*IN-BGCOLOR*/', 'background-color: rgba( 4, 24, 4,0.9);', $file_text );
239
  $file_text = str_replace('/*TH-BGCOLOR*/', 'background-color: rgba( 40,244, 40,0.05);', $file_text );
@@ -246,7 +240,6 @@
246
  $file_text = str_replace('/*COLOR-URL*/', 'color: #00c2ff;', $file_text );
247
  $file_text = str_replace('/*COLOR-EXCERPT*/', 'color: #00c2ff;', $file_text );
248
  $file_text = str_replace('/*COLOR-INFO*/', 'color: #00c2ff;', $file_text );
249
- $file_text = str_replace('/*COLOR-PLUGIN*/', 'color: #00c2ff;', $file_text );
250
  $file_text = str_replace('/*EX-BGCOLOR*/', 'background-color: rgba( 0, 77,102,0.9);', $file_text );
251
  $file_text = str_replace('/*IN-BGCOLOR*/', 'background-color: rgba( 0, 19, 25,0.9);', $file_text );
252
  $file_text = str_replace('/*TH-BGCOLOR*/', 'background-color: rgba( 0,194,255,0.05);', $file_text );
@@ -282,7 +275,6 @@
282
  }
283
  $file_text = str_replace('/*COLOR-ADDED*/', 'color: '.$this->options['color-added'].';', $file_text );
284
  $file_text = str_replace('/*COLOR-MORE*/', 'color: '.$this->options['color-more'].';', $file_text );
285
- $file_text = str_replace('/*COLOR-PLUGIN*/', 'color: '.$this->options['color-plugin'].';', $file_text );
286
 
287
  // 文字の大きさ
288
  $file_text = str_replace('/*SIZE-TITLE*/', 'font-size: '.$this->options['size-title'].';', $file_text );
@@ -291,7 +283,6 @@
291
  $file_text = str_replace('/*SIZE-INFO*/', 'font-size: '.$this->options['size-info'].';', $file_text );
292
  $file_text = str_replace('/*SIZE-ADDED*/', 'font-size: '.$this->options['size-added'].';', $file_text );
293
  $file_text = str_replace('/*SIZE-MORE*/', 'font-size: '.$this->options['size-more'].';', $file_text );
294
- $file_text = str_replace('/*SIZE-PLUGIN*/', 'font-size: '.$this->options['size-plugin'].';', $file_text );
295
 
296
  // 行の高さ
297
  $file_text = str_replace('/*HEIGHT-TITLE*/', 'line-height: '.$this->options['height-title'].';', $file_text );
@@ -300,7 +291,6 @@
300
  $file_text = str_replace('/*HEIGHT-INFO*/', 'line-height: '.$this->options['height-info'].';', $file_text );
301
  $file_text = str_replace('/*HEIGHT-ADDED*/', 'line-height: '.$this->options['height-added'].';', $file_text );
302
  $file_text = str_replace('/*HEIGHT-MORE*/', 'line-height: '.$this->options['height-more'].';', $file_text );
303
- $file_text = str_replace('/*HEIGHT-PLUGIN*/', 'line-height: '.$this->options['height-plugin'].';', $file_text );
304
 
305
  // 文字の縁取り
306
  if (isset($this->options['outline-title']) && $this->options['outline-title'] == '1') {
@@ -321,9 +311,6 @@
321
  if (isset($this->options['outline-more']) && $this->options['outline-more'] == '1') {
322
  $file_text = str_replace('/*OUTCOLOR-MORE*/', 'text-shadow: 0 -1px '.$this->options['outline-color-more'].', 1px -1px '.$this->options['outline-color-more'].', 1px 0 '.$this->options['outline-color-more'].', 1px 1px '.$this->options['outline-color-more'].', 0 1px '.$this->options['outline-color-more'].', -1px 1px '.$this->options['outline-color-more'].', -1px 0 '.$this->options['outline-color-more'].', -1px -1px '.$this->options['outline-color-more'].';', $file_text );
323
  }
324
- if (isset($this->options['outline-plugin']) && $this->options['outline-plugin'] == '1') {
325
- $file_text = str_replace('/*OUTCOLOR-PLUGIN*/', 'text-shadow: 0 -1px '.$this->options['outline-color-plugin'].', 1px -1px '.$this->options['outline-color-plugin'].', 1px 0 '.$this->options['outline-color-plugin'].', 1px 1px '.$this->options['outline-color-plugin'].', 0 1px '.$this->options['outline-color-plugin'].', -1px 1px '.$this->options['outline-color-plugin'].', -1px 0 '.$this->options['outline-color-plugin'].', -1px -1px '.$this->options['outline-color-plugin'].';', $file_text );
326
- }
327
 
328
  // カードの周りへの余白
329
  if ($this->options['margin-top']) {
@@ -630,17 +617,30 @@
630
  $file_text = str_replace('/*CREDIT*/', 'display: none;', $file_text );
631
  }
632
 
633
- $result = file_put_contents($css_path, $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);
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'];
7
  // テンプレートファイルの読み込み
8
  $file_text = file_get_contents($css_temp);
9
  if ($file_text) {
 
 
 
10
  // かんたん書式設定
11
  switch ($this->options['special-format']) {
12
  case 'LkC': // Pz-LkC Default
204
  $file_text = str_replace('/*COLOR-URL*/', 'color: #59fbea;', $file_text );
205
  $file_text = str_replace('/*COLOR-EXCERPT*/', 'color: #59fbea;', $file_text );
206
  $file_text = str_replace('/*COLOR-INFO*/', 'color: #59fbea;', $file_text );
 
207
  $file_text = str_replace('/*EX-BGCOLOR*/', 'background-color: rgba( 35,100, 93,0.9);', $file_text );
208
  $file_text = str_replace('/*IN-BGCOLOR*/', 'background-color: rgba( 8, 25, 23,0.9);', $file_text );
209
  $file_text = str_replace('/*TH-BGCOLOR*/', 'background-color: rgba( 89,251,234,0.05);', $file_text );
216
  $file_text = str_replace('/*COLOR-URL*/', 'color: #ebbc4a;', $file_text );
217
  $file_text = str_replace('/*COLOR-EXCERPT*/', 'color: #ebbc4a;', $file_text );
218
  $file_text = str_replace('/*COLOR-INFO*/', 'color: #ebbc4a;', $file_text );
 
219
  $file_text = str_replace('/*EX-BGCOLOR*/', 'background-color: rgba( 94, 75, 29,0.9);', $file_text );
220
  $file_text = str_replace('/*IN-BGCOLOR*/', 'background-color: rgba( 23, 18, 7,0.9);', $file_text );
221
  $file_text = str_replace('/*TH-BGCOLOR*/', 'background-color: rgba(235,188, 74,0.05);', $file_text );
228
  $file_text = str_replace('/*COLOR-URL*/', 'color: #28f428;', $file_text );
229
  $file_text = str_replace('/*COLOR-EXCERPT*/', 'color: #28f428;', $file_text );
230
  $file_text = str_replace('/*COLOR-INFO*/', 'color: #28f428;', $file_text );
 
231
  $file_text = str_replace('/*EX-BGCOLOR*/', 'background-color: rgba( 16, 97, 16,0.9);', $file_text );
232
  $file_text = str_replace('/*IN-BGCOLOR*/', 'background-color: rgba( 4, 24, 4,0.9);', $file_text );
233
  $file_text = str_replace('/*TH-BGCOLOR*/', 'background-color: rgba( 40,244, 40,0.05);', $file_text );
240
  $file_text = str_replace('/*COLOR-URL*/', 'color: #00c2ff;', $file_text );
241
  $file_text = str_replace('/*COLOR-EXCERPT*/', 'color: #00c2ff;', $file_text );
242
  $file_text = str_replace('/*COLOR-INFO*/', 'color: #00c2ff;', $file_text );
 
243
  $file_text = str_replace('/*EX-BGCOLOR*/', 'background-color: rgba( 0, 77,102,0.9);', $file_text );
244
  $file_text = str_replace('/*IN-BGCOLOR*/', 'background-color: rgba( 0, 19, 25,0.9);', $file_text );
245
  $file_text = str_replace('/*TH-BGCOLOR*/', 'background-color: rgba( 0,194,255,0.05);', $file_text );
275
  }
276
  $file_text = str_replace('/*COLOR-ADDED*/', 'color: '.$this->options['color-added'].';', $file_text );
277
  $file_text = str_replace('/*COLOR-MORE*/', 'color: '.$this->options['color-more'].';', $file_text );
 
278
 
279
  // 文字の大きさ
280
  $file_text = str_replace('/*SIZE-TITLE*/', 'font-size: '.$this->options['size-title'].';', $file_text );
283
  $file_text = str_replace('/*SIZE-INFO*/', 'font-size: '.$this->options['size-info'].';', $file_text );
284
  $file_text = str_replace('/*SIZE-ADDED*/', 'font-size: '.$this->options['size-added'].';', $file_text );
285
  $file_text = str_replace('/*SIZE-MORE*/', 'font-size: '.$this->options['size-more'].';', $file_text );
 
286
 
287
  // 行の高さ
288
  $file_text = str_replace('/*HEIGHT-TITLE*/', 'line-height: '.$this->options['height-title'].';', $file_text );
291
  $file_text = str_replace('/*HEIGHT-INFO*/', 'line-height: '.$this->options['height-info'].';', $file_text );
292
  $file_text = str_replace('/*HEIGHT-ADDED*/', 'line-height: '.$this->options['height-added'].';', $file_text );
293
  $file_text = str_replace('/*HEIGHT-MORE*/', 'line-height: '.$this->options['height-more'].';', $file_text );
 
294
 
295
  // 文字の縁取り
296
  if (isset($this->options['outline-title']) && $this->options['outline-title'] == '1') {
311
  if (isset($this->options['outline-more']) && $this->options['outline-more'] == '1') {
312
  $file_text = str_replace('/*OUTCOLOR-MORE*/', 'text-shadow: 0 -1px '.$this->options['outline-color-more'].', 1px -1px '.$this->options['outline-color-more'].', 1px 0 '.$this->options['outline-color-more'].', 1px 1px '.$this->options['outline-color-more'].', 0 1px '.$this->options['outline-color-more'].', -1px 1px '.$this->options['outline-color-more'].', -1px 0 '.$this->options['outline-color-more'].', -1px -1px '.$this->options['outline-color-more'].';', $file_text );
313
  }
 
 
 
314
 
315
  // カードの周りへの余白
316
  if ($this->options['margin-top']) {
617
  $file_text = str_replace('/*CREDIT*/', 'display: none;', $file_text );
618
  }
619
 
620
+ // ファイルの圧縮
621
+ $charset = '@charset "'.$this->charset.'";';
622
+ if ($this->options['flg-compress'] ) {
623
+ $file_text = preg_replace('/\s*\/\*[^*]*\*+([^\/][^*]*\*+)*\//', '', $file_text ); // コメント除去
624
+ $file_text = preg_replace('/:\s*/', ':', $file_text ); // コロンに続く空白除去
625
+ $file_text = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' ', '@charset "UTF-8";'), '', $file_text ); // 空白・改行除去
626
+ $file_text = $charset.$file_text.'/*'.$this->options['plugin-abbreviation'].$this->options['plugin-version'].'#'.$this->now.'*/'; // ヘッダ作成
627
+ } else {
628
+ $file_text = preg_replace('/\s*\/\*[^*]*\*+([^\/][^*]*\*+)*\//', '', $file_text ); // コメント除去
629
+ $file_text = $charset.PHP_EOL.'/* '.$this->options['plugin-name'].' ver.'.$this->options['plugin-version'].' CSS #'.$this->now.' */'.PHP_EOL.$file_text; // ヘッダ作成
630
+ }
631
+
632
+ // ファイル出力
633
+ $result = file_put_contents($css_path, $file_text);
634
+ if ($result ) {
635
+ $message = '<div class="notice notice-success is-dismissible"><p><strong>'.__('Succeeded in saving the Stylesheet.', $this->text_domain).'</strong></p></div>';
636
+ } else {
637
+ $message = '<div class="notice notice-error is-dismissible"><p><strong>'.__('Failed to save Stylesheet.', $this->text_domain).'</strong></p></div>';
638
  }
639
  } else {
640
+ $message = '<div class="notice notice-error is-dismissible"><p><strong>'.__('Failed to call the Stylesheet template.', $this->text_domain).'</strong></p></div>';
641
+ }
642
+ if (!$this->suppression ) {
643
+ echo $message;
644
  }
645
  unset($css_temp);
646
  unset($file_text);
pz-linkcard.php CHANGED
@@ -1,43 +1,27 @@
1
  <?php
2
  /*
3
- Plugin Name: Pz-LinkCard
4
- Plugin URI: http://poporon.poponet.jp/pz-linkcard
5
- Description: リンクをカード形式で表示します。
6
- Version: 2.4.2.2
7
- Author: poporon
8
- Author URI: http://poporon.poponet.jp
9
- License: GPLv2 or later
 
 
10
  */
11
 
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
- 'plugin-link' => null,
38
- 'plugin-url' => 'https://popozure.info/pz-linkcard',
39
  'plugin-name' => 'Pz-LinkCard',
40
- 'plugin-version' => '2.4.2.2',
 
 
 
 
41
 
42
  'flg-invalid' => null,
43
  'invalid-url' => null,
@@ -87,52 +71,48 @@ class Pz_LinkCard {
87
  'sns-po' => 1,
88
 
89
  'color-title' => '#111111',
90
- 'color-url' => '#4466ff',
91
- 'color-excerpt' => '#333333',
92
- 'color-more' => '#444444',
93
- 'color-info' => '#222222',
94
- 'color-added' => '#222222',
95
- 'color-plugin' => '#888888',
96
  'outline-title' => null,
97
- 'outline-url' => null,
98
- 'outline-excerpt' => null,
99
- 'outline-more' => null,
100
- 'outline-info' => null,
101
- 'outline-added' => null,
102
- 'outline-plugin' => null,
103
  'outline-color-title' => '#ffffff',
104
- 'outline-color-url' => '#ffffff',
105
- 'outline-color-excerpt' => '#ffffff',
106
- 'outline-color-more' => '#ffffff',
107
- 'outline-color-info' => '#ffffff',
108
- 'outline-color-added' => '#ffffff',
109
- 'outline-color-plugin' => '#ffffff',
110
  'size-title' => '16px',
111
- 'size-url' => '10px',
112
- 'size-excerpt' => '11px',
113
- 'size-more' => '12px',
114
- 'size-info' => '12px',
115
- 'size-added' => '12px',
116
- 'size-plugin' => '10px',
117
  'height-title' => '24px',
 
 
 
 
 
 
118
  'height-url' => '10px',
 
 
 
 
 
 
119
  'height-excerpt' => '17px',
 
 
 
 
 
120
  'height-more' => '40px',
 
 
 
 
121
  'height-info' => '12px',
122
- 'height-added' => '12px',
123
- 'height-plugin' => '10px',
124
- 'trim-title' => 80,
125
- 'trim-url' => 250,
126
- 'trim-excerpt' => 500,
127
  'trim-info' => 200,
128
- 'nowrap-title' => null,
129
- 'nowrap-url' => 1,
 
 
 
130
  'thumbnail-resize' => 1,
131
 
132
  'ex-border-color' => '#888888',
133
  'ex-bgcolor' => '#ffffff',
134
  'ex-image' => null,
135
  'ex-thumbnail' => 13,
 
136
  'ex-favicon' => 3,
137
  'ex-info' => null,
138
  'ex-more-text' => null,
@@ -145,6 +125,7 @@ class Pz_LinkCard {
145
  'in-bgcolor' => '#f8f8f8',
146
  'in-image' => null,
147
  'in-thumbnail' => 1,
 
148
  'in-favicon' => 3,
149
  'in-info' => null,
150
  'in-more-text' => null,
@@ -157,19 +138,7 @@ class Pz_LinkCard {
157
  'th-image' => null,
158
  'th-info' => null,
159
 
160
- 'favicon-api' => 'https://www.google.com/s2/favicons?domain=%DOMAIN%',
161
- 'thumbnail-api' => 'https://s.wordpress.com/mshots/v1/%URL%?w=100',
162
-
163
- 'cache-image-size' => 200,
164
- 'thumbnail-dir' => null,
165
- 'thumbnail-url' => null,
166
- 'css-url' => null,
167
- 'css-url-add' => null,
168
- 'css-add' => null,
169
- 'css-count' => 0,
170
- 'css-path' => null,
171
- 'css-templete' => null,
172
-
173
  'flg-unlink' => 1,
174
  'flg-ssl' => 1,
175
  'flg-redir' => 1,
@@ -178,7 +147,6 @@ class Pz_LinkCard {
178
  'user-agent' => null,
179
  'flg-alive' => 1,
180
  'flg-alive-count' => null,
181
- 'flg-subdir' => 1,
182
 
183
  'code1' => 'blogcard',
184
  'use-inline' => null,
@@ -192,103 +160,148 @@ class Pz_LinkCard {
192
  'flg-edit-insert' => 1,
193
  'flg-edit-qtag' => 1,
194
 
195
- 'trail-slash' => '1',
 
 
 
196
  'class-pc' => null,
197
  'class-mobile' => null,
 
 
 
198
  'flg-amp-url' => null,
199
- 'flg-idn' => 1,
200
- 'flg-relative-url' => null,
201
  'flg-invalid-hide' => null,
202
  'saved-date' => null,
203
- 'debug-time' => null,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
204
 
205
- 'initialize' => null
 
 
206
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
207
 
208
  public function __construct() {
209
- $this->slug = basename(dirname(__FILE__));
210
- $this->text_domain = $this->slug;
211
-
212
- $this->charset = get_bloginfo('charset');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
213
 
214
- $this->amp = '1';
215
-
216
- $this->now = current_time('timestamp', false);
217
- $this->now_mysql = current_time('mysql');
218
-
219
- $this->plugin_basename = plugin_basename(__FILE__);
220
- $this->plugin_dir_path = plugin_dir_path(__FILE__);
221
- $this->plugin_dir_url = plugin_dir_url (__FILE__);
222
-
223
- $wp_upload_dir = wp_upload_dir();
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])) {
231
- $this->options[$key] = null;
232
- }
233
  }
234
-
235
- // DB
236
- global $wpdb;
237
- $this->db_name = $wpdb->prefix.'pz_linkcard';
238
-
239
  // バージョンが違っていたら、DBとオプションを更新する
240
- if ($this->options['plugin-version'] <> $this->defaults['plugin-version']) {
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') ); // テキストエディタ用クイックタグ
254
- add_action ('admin_notices', array($this, 'add_notices')); // 注意書き
255
- add_filter ('mce_buttons', array($this, 'add_mce_button') ); // ビジュアルエディタ用ボタン
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
  }
284
- if (!wp_next_scheduled('pz_linkcard_alive')) {
285
- wp_schedule_event ( time() + 1800 , 'daily', 'pz_linkcard_alive');
286
  }
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
  }
@@ -300,21 +313,22 @@ class Pz_LinkCard {
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
  }
@@ -328,10 +342,14 @@ class Pz_LinkCard {
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 ) );
@@ -340,48 +358,72 @@ class Pz_LinkCard {
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'];
@@ -395,13 +437,13 @@ class Pz_LinkCard {
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
  }
@@ -410,12 +452,18 @@ class Pz_LinkCard {
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;
@@ -423,277 +471,278 @@ class Pz_LinkCard {
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'])) {
489
- if ($this->options['in-target'] == '1' || ($this->options['in-target'] == '2' && !$is_mobile)) {
490
- $target = ' target="_blank"'; // 新しいページで開く
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;
539
- $data['link_type'] = 0;
540
- $result = $this->pz_SetCache( $data );
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':
566
- $wrap_op = '<div class="lkc-this-wrap">';
567
- $wrap_cl = '</div>';
568
- $added_op = '<div class="lkc-this-added">';
569
- $added_cl = '</div>';
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">';
578
- $wrap_cl = '</div>';
579
- $added_op = '<div class="lkc-internal-added">';
580
- $added_cl = '</div>';
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">';
589
- $wrap_cl = '</div>';
590
- $added_op = '<div class="lkc-external-added">';
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;
@@ -701,978 +750,1240 @@ class Pz_LinkCard {
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 {
839
  // HTMLタグ作成
840
- switch (isset($this->options['info-position']) ? $this->options['info-position'] : null) {
841
- case '1':
842
- $tag = $wrap_op.$a_op_all.'<div class="lkc-card">'.$domain_info.'<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
  break;
844
- case '2':
845
- $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>'.$domain_info.'<div class="clear"></div></div>'.$a_cl_all.$wrap_cl;
846
  break;
847
- case '3':
848
- $tag = $wrap_op.$a_op_all.'<div class="lkc-card"><div class="lkc-content">'.$a_op.$thumbnail.$domain_info.'<div class="lkc-title"><div class="lkc-title-text">'.$title.'</div>'.$a_cl.$sns_title.$url1.'</div><div class="lkc-excerpt">'.$excerpt.'</div>'.$moretag.'</div><div class="clear"></div></div>'.$a_cl_all.$wrap_cl;
849
  break;
850
  default:
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
  }
887
  break;
888
- case '2': // 常に最後のスラッシュを除外する
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; // 自ページ
908
- } else {
909
- $link_type = 2; // 自サイト内
 
 
 
 
 
 
 
 
 
 
 
910
  }
911
  } else {
912
- $link_type = 0; // 外部サイト
913
- }
914
- // サブディレクトリ型マルチサイト対応
915
- if ($this->options['flg-subdir'] && function_exists('is_multisite') && is_multisite() && function_exists('is_subdomain_install') && !is_subdomain_install() && function_exists('is_main_site') && is_main_site()) {
916
- $this_blog_id = get_current_blog_id();
917
- $blog_id = 0;
918
- do {
919
- $blog_id++;
920
- $blog_url = get_site_url($blog_id);
921
- if ($blog_url && $blog_id <> $this_blog_id && substr($url, 0, mb_strlen($blog_url) ) == $blog_url ) {
922
- // ドメイン名
923
- if (preg_match('/https?:\/\/(.*)\//i', $blog_url.'/',$m)) {
924
- $domain_url = $m[0];
925
- $domain = $m[1];
926
- } else {
927
- $domain_url = null;
928
- $domain = null;
 
 
 
 
 
 
 
 
 
 
929
  }
930
- $link_type = 0; // 外部サイト
931
  }
932
- } while ($blog_url);
933
- }
934
- if ($this->options['debug-time']) {
935
- echo '<!-- Pz-LkC [TYPE='.$link_type.'] /-->'.PHP_EOL;
936
  }
937
- return $link_type;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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) == '//' ) { // 絶対パスだった場合(スキーム省略)
945
- return $rel_path;
 
946
  }
947
- $parse = parse_url($base_url );
948
- if (substr($rel_path, 0, 1) == '/' ) { // ドキュメントルート指定
949
- return $parse['scheme'].'://'.$parse ['host'].$rel_path;
 
 
 
 
 
 
 
950
  }
951
- return $parse['scheme'].'://'.$parse['host'].dirname($parse['path'] ).'/'.$rel_path;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
952
  }
953
 
954
  // ソーシャルカウント取得
955
  private function pz_RenewSNSCount($data ) {
956
- if (!isset($this->options['sns-position']) || $this->options['sns-position'] == '') {
957
- return null;
 
 
958
  }
959
- if (!isset($data) || !is_array($data)) {
960
- return null;
961
  }
962
-
963
- $data = $this->pz_GetCache($data);
964
- if (!isset($data) || !is_array($data)) {
965
- return null;
966
  }
967
-
 
 
 
 
 
968
  // ソーシャルカウント
969
  $sns_renew = false;
970
  $update_cnt = false;
971
-
972
  // タイムオーバー
973
- $opt = array( 'timeout' => 30 );
974
-
975
  // 保存期間満了でソーシャルカウントをリセット
976
- if ($this->now > $data['sns_nexttime'] && $data['result_code'] <= 200 ) {
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;
994
  }
995
  }
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) {
1023
- $data['sns_hatena'] = $count;
1024
- $update_cnt = true;
1025
  }
1026
  }
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;
1041
  }
1042
  }
1043
  }
1044
  }
1045
-
1046
  // 登録してから一週間までは毎日、それ以降は週一回更新(取得が固まらないようにランダム時間付与)
1047
- if ($update_cnt || ($this->now - strtotime($data['regist']) < WEEK_IN_SECONDS)) {
1048
- $sns_nexttime = $this->now + DAY_IN_SECONDS + rand(0, DAY_IN_SECONDS); // 1day + 0-24h
 
1049
  } else {
1050
- $sns_nexttime = $this->now + WEEK_IN_SECONDS + rand(0, DAY_IN_SECONDS); // 7days + 0-24h
1051
  }
1052
  // MINUTE_IN_SECONDS = 60
1053
  // HOUR_IN_SECONDS = 60 * MINUTE_IN_SECONDS = 3600
1054
  // DAY_IN_SECONDS = 24 * HOUR_IN_SECONDS = 86400
1055
  // WEEK_IN_SECONDS = 7 * DAY_IN_SECONDS = 604800
1056
- // YEAR_IN_SECONDS = 365 * DAY_IN_SECONDS
1057
 
 
1058
  global $wpdb;
1059
- $wpdb->update(
1060
- $this->db_name,
1061
- array(
1062
- 'sns_twitter' => $data['sns_twitter'],
1063
- 'sns_facebook' => $data['sns_facebook'],
1064
- 'sns_hatena' => $data['sns_hatena'],
1065
- 'sns_pocket' => $data['sns_pocket'],
1066
- 'sns_time' => $this->now,
1067
- 'sns_nexttime' => $sns_nexttime,
1068
- 'uptime' => $this->now
1069
- ),
1070
- array(
1071
- 'id' => $data['id']
1072
- )
1073
- );
1074
- return $data;
1075
  }
1076
 
1077
  // キャッシュデータを取得
1078
  private function pz_GetCache($data ) {
1079
- if (!isset($data) || !is_array($data)) {
1080
- return null;
1081
- }
1082
- global $wpdb;
1083
- if (!empty($data['url'])) {
1084
- $url = $data['url'];
1085
- $data = $wpdb->get_row($wpdb->prepare("SELECT * FROM $this->db_name WHERE url=%s", $url));
1086
- } elseif (isset($data['id']) && !is_null($data['id'])) {
1087
- $data_id = intval($data['id']);
1088
- $data = $wpdb->get_row($wpdb->prepare("SELECT * FROM $this->db_name WHERE id=%d", $data_id));
1089
  } else {
1090
- return null;
1091
  }
1092
- if ($wpdb->last_error <> '') { // DBエラーのとき、初期化する
1093
  $this->activate();
1094
  }
1095
- if (is_wp_error($data)) {
1096
- return null;
1097
  }
1098
  return (array) $data; // Arrayに直して返す
1099
  }
1100
 
1101
  // キャッシュデータを保存
1102
  private function pz_SetCache($data ) {
1103
- global $wpdb;
1104
- if (!isset($data) || !is_array($data)) {
1105
- return null;
1106
  }
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,
1136
- $data,
1137
- array(
1138
- 'id' => $data['id']
1139
- )
1140
- );
1141
- } else {
1142
- $result = $wpdb->update(
1143
- $this->db_name,
1144
- $data,
1145
- array(
1146
- 'url_key' => $data['url_key']
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
  }
1185
  }
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;
1198
- }
1199
- if (isset($data['id']) && !is_null($data['id'])) {
1200
- $data_id = intval($data['id']);
1201
- $result = $wpdb->delete($this->db_name, array('id' => $data_id), array('%d') );
1202
- return $result;
1203
- } elseif (isset($data['url']) && !is_null($data['url'])) {
1204
- $url = $this->pz_TrimURL($data['url']);
1205
- $result = $wpdb->delete($this->db_name, array('url' => $url), array('%s') );
1206
- return $result;
1207
- }
1208
- return null;
 
 
 
1209
  }
1210
 
1211
- // サイト内取得
1212
- private function pz_GetPost( $data ) {
 
 
 
 
 
 
 
 
 
 
 
 
1213
  // サイト名取得
1214
- $site_name = get_bloginfo('name');
1215
-
1216
  // ドメイン名
1217
- if (preg_match('/https?:\/\/(.*)\//i', home_url().'/',$m)) {
1218
- $domain_url = $m[0];
1219
- $domain = $m[1];
1220
- } else {
1221
- $domain_url = null;
1222
- $domain = null;
1223
- }
1224
-
1225
  // サイトアイコン
1226
- if (function_exists('has_site_icon') && has_site_icon()) {
1227
- $favicon = get_site_icon_url(16, '', 0);
1228
- } else {
1229
- $favicon = null;
1230
  }
1231
-
1232
- $title = null;
1233
- $excerpt = null;
1234
- $thumbnail = null;
1235
-
1236
  // 記事内容
1237
  $url = $data['url'];
1238
  $post_id = url_to_postid($url ); // 記事IDを取得
1239
- if ($this->options['debug-time']) {
1240
  echo '<!-- Pz-LkC [PID='.$post_id.'] /-->'.PHP_EOL;
1241
  }
1242
-
1243
- if ( !$post_id && isset($this->options['flg-get-pid']) ? true : false) {
1244
- $url = $this->Pz_GetRedirURL( $data ); // 本当の記事URLを取得
1245
  $post_id = url_to_postid($url ); // 記事IDを取得
1246
- if ($this->options['debug-time']) {
1247
  echo '<!-- Pz-LkC [PID='.$post_id.'(REDIR)] /-->'.PHP_EOL;
1248
  }
1249
  }
1250
-
1251
- if ( $post_id ) {
1252
- $result_code = 200; // 外部取得と同じコードをセット
1253
- $post = get_post($post_id); // 記事情報
1254
- if ( $this->options['in-get'] == '1') {
1255
- $title = $post->post_title; // 記事タイトル
1256
- $excerpt = $post->post_excerpt; // 抜粋文優先
1257
- if ($excerpt == '') {
1258
- $excerpt = $post->post_content; // 抜粋文が無かったら記事
1259
- }
1260
- } else {
1261
- $title = $post->post_title; // 記事タイトル
1262
- $excerpt = $post->post_content; // 記事内容から抜粋
1263
- }
1264
- $post_date = $post->post_date;
1265
- $thumbnail_id = get_post_thumbnail_id( $post_id ); // サムネイル
1266
- if ($this->options['debug-time']) {
1267
- echo '<!-- Pz-LkC [TID='.$thumbnail_id.'] /-->'.PHP_EOL;
1268
- }
1269
- $attach = wp_get_attachment_image_src( $thumbnail_id, 'thumbnail', true );
1270
- if (isset($attach) && count($attach) > 3 && isset($attach[0])) {
1271
- $thumbnail = $attach[0];
1272
- if (preg_match('/.*(\/\/.*)/', $thumbnail, $m)) { // スキームを外す
1273
- $thumbnail = $m[1];
1274
  }
1275
  }
1276
  } else {
1277
- $title = get_bloginfo('name');
1278
- $excerpt = get_bloginfo('description');
1279
- $site_name = get_bloginfo('name');
1280
- $thumbnail = '';
1281
- $result_code = '404';
1282
-
 
1283
  // カテゴリ ページの処理
1284
- $cat_dir = get_option('category_base');
1285
- $cat_url = home_url().'/'.($cat_dir ? $cat_dir : 'category').'/';
1286
  $cat_len = mb_strlen($cat_url );
1287
- if (substr($url, 0, $cat_len ) == $cat_url ) {
1288
- $cat_slug = substr($url, $cat_len );
1289
  $cat_data = get_category_by_slug($cat_slug );
1290
- $cat_count = ($cat_data->count - 0);
1291
- $title = __('Category', $this->text_domain ).' '.__('‘', $this->text_domain ).$cat_data->name.__('’', $this->text_domain );
1292
- $excerpt = __('(', $this->text_domain ).__('Count', $this->text_domain ).':'.($cat_data->count - 0).__(')', $this->text_domain ).' '.$cat_data->description;
1293
- if (isset($cat_data->slug)) {
1294
- $result_code = '200';
 
 
 
 
1295
  }
1296
  } else {
1297
  // タグ ページの処理
1298
- $cat_dir = get_option('tag_base');
1299
- $cat_url = home_url().'/'.($cat_dir ? $cat_dir : 'tag').'/';
1300
  $cat_len = mb_strlen($cat_url );
1301
- if (substr($url, 0, $cat_len ) == $cat_url ) {
1302
- $cat_slug = substr($url, $cat_len );
1303
- $cat_data = get_tags( array( 'slug' => $cat_slug ) );
1304
- $title = __('Tag', $this->text_domain ).' '.__('‘', $this->text_domain ).$cat_data[0]->name.__('’', $this->text_domain );
1305
- $excerpt = __('(', $this->text_domain ).__('Count', $this->text_domain ).':'.($cat_data[0]->count - 0).__(')', $this->text_domain ).' '.$cat_data[0]->description;
1306
- if (isset($cat_data[0]->slug)) {
1307
- $result_code = '200';
 
 
 
 
1308
  }
1309
  } else {
1310
- if ( !$post_id && isset($this->options['flg-get-pid']) ? true : false) {
1311
  $data = $this->Pz_GetCURL($data ); // 外部サイトとして読み込み
1312
  return $data;
1313
  }
1314
  }
1315
  }
1316
  }
1317
-
1318
  // タイトル整形
1319
- if (isset($title)) {
1320
- $str = $title;
1321
- $str = strip_tags($str); // タグの除去
1322
- $str = str_replace(array("\r", "\n"), '', $str); // 改行削除
1323
- $str = esc_html($str); // 念のためエスケープ
1324
- $str = mb_strimwidth($str, 0, 200, '...'); // 保管用のタイトルは200文字で切る
1325
- $title = $str;
1326
  }
1327
-
1328
  // 抜粋文整形
1329
- if (isset($excerpt)) {
1330
- $str = $excerpt;
1331
- $str = strip_tags($str); // タグの除去
1332
- $str = preg_replace('/<!--more-->.+/is', '', $str); // moreタグ以降削除
1333
- $str = preg_replace('/\[[^]]*\]/', '', $str); // ショートコードすべて除去
1334
- $str = str_replace(array("\r", "\n"), '', $str); // 改行削除
1335
- $str = esc_html($str); // 念のためエスケープ
1336
- $str = mb_strimwidth($str, 0, 500, '...'); // 保管用の記事内容は500文字で切る
1337
- $excerpt = $str;
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;
1350
  } else {
1351
- $before['mod_title'] = 1;
1352
  }
1353
- if (isset($data['excerpt']) && $data['excerpt'] == $excerpt ) {
1354
- $before['mod_excerpt'] = 0;
1355
  } else {
1356
- $before['mod_excerpt'] = 1;
1357
  }
1358
- if (!isset($data['use_post_id1'])) {
1359
  $data['use_post_id1'] = get_the_ID();
1360
  }
1361
- $data['scheme'] = $scheme;
1362
- $data['domain'] = $domain;
1363
- $data['location'] = $location;
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';
1371
- $data['result_code'] = $result_code;
1372
- $data['alive_result'] = $result_code;
1373
  $data['favicon'] = $favicon;
1374
-
1375
- return $data;
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;
1383
- $ch = curl_init($url);
1384
- curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); // データで取得
1385
- curl_setopt( $ch, CURLOPT_NOBODY, true ); // ヘッダのみ取得
1386
- curl_setopt( $ch, CURLOPT_TIMEOUT, 120 ); // タイムアウト
1387
- curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true ); // リダイレクトを処理する
1388
- curl_setopt( $ch, CURLOPT_MAXREDIRS, 5 ); // リダイレクトを処理する階層
1389
- $html = curl_exec($ch);
1390
- $errno = intval( curl_errno( $ch ) ); // cURL実行
1391
- if ( $errno ) {
1392
- $result_code = $errno;
1393
  $error = true;
 
1394
  } else {
1395
- $header = curl_getinfo($ch);
1396
- $result_code = $header['http_code']; // HTTPステータス
1397
- $error = false;
1398
  $url = $header['url'];
1399
  }
1400
- curl_close($ch);
1401
  }
1402
- return $url;
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 ); // データで取得
1434
- curl_setopt( $ch, CURLOPT_TIMEOUT, 8 ); // タイムアウト
1435
- if (isset($this->options['flg-referer']) ? true : false) {
1436
- curl_setopt( $ch, CURLOPT_REFERER, get_permalink() ); // リファラ
1437
- }
1438
- if (isset($this->options['flg-agent']) ? true : false) {
1439
- curl_setopt( $ch, CURLOPT_USERAGENT, $this->options['user-agent'] ); // ユーザーエージェントにPz-LinkCard-Crawlerを使う
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1440
  } else {
1441
- curl_setopt( $ch, CURLOPT_USERAGENT, esc_html( $_SERVER['HTTP_USER_AGENT'] ) ); // アクセス者のユーザーエージェントを使う
1442
  }
1443
- if (isset($this->options['flg-redir']) ? true : false) {
1444
- curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true ); // リダイレクトを処理する
1445
- curl_setopt( $ch, CURLOPT_MAXREDIRS, 8 ); // リダイレクトを処理する階層
1446
- curl_setopt( $ch, CURLOPT_AUTOREFERER, true ); // リダイレクト用リファラを自動セット
1447
  } else {
1448
- curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, false ); // リダイレクトを処理しない
1449
- }
1450
- curl_setopt( $ch, CURLOPT_COOKIESESSION, true ); // セッションCOOKIEを使用する
1451
- curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, (isset($this->options['flg-ssl']) ? false : true) ); // SSL検証
1452
- $html = curl_exec($ch);
1453
- $errno = intval( curl_errno( $ch ) ); // cURL実行
1454
- if ( $errno ) {
1455
- $html = ''; // cURLエラー
1456
- $result_code = $errno;
 
 
1457
  $error = true;
 
 
 
 
1458
  } else {
1459
- $header = curl_getinfo($ch);
1460
- $result_code = $header['http_code']; // HTTPステータス
1461
- $error = false;
 
 
 
 
1462
  }
1463
- curl_close($ch);
1464
  } else { // cURLが使用できない場合
1465
- $result = wp_remote_get( $url ); //wp_remote_get実行
1466
- if ( is_wp_error( $result ) ) {
1467
- $html = '';
1468
- $result_code = -1; // wp_remote_getエラー
 
 
1469
  $error = true;
 
 
 
 
1470
  } else {
1471
- $html = $result['body'];
1472
- $result_code = $result['response']['code']; // HTTPステータス
1473
- $error = false;
 
 
 
 
1474
  }
1475
  }
1476
 
1477
- // 文字コード判定
1478
- $charset = null;
1479
- if ($html <> '') {
1480
- if (preg_match('/charset\s*=\s*"*([^>\/\s"]*).*<\/head/si', $html, $m)) {
1481
- $m[1] = trim(trim($m[1]), '\'\"');
1482
- $charset = $m[1];
1483
  } else {
1484
- foreach(array('UTF-8','SJIS','EUC-JP','eucJP-win','ASCII','JIS','SJIS-win') as $c_charset) {
1485
  // 文字コード変換してみて内容が変わらないものを文字セットと判断する
1486
- if (mb_convert_encoding($html, $this->charset, $c_charset) == $html) {
1487
- $charset = $c_charset;
1488
  break;
1489
  }
1490
  }
1491
  }
1492
- if (is_null($charset)) {
1493
- $charset = mb_detect_encoding($html, 'ASCII,JIS,UTF-7,EUC-JP,SJIS,UTF-8');
1494
- $html = mb_convert_encoding($html, $this->charset, 'ASCII,JIS,UTF-7,EUC-JP,SJIS,UTF-8');
1495
- } elseif ($this->charset <> $charset) {
1496
- $html = mb_convert_encoding($html, $this->charset, $charset);
1497
  }
1498
-
1499
  // HEADタグ(METAタグ解析)
1500
- $head = null;
1501
- $tags = null;
1502
- if (preg_match('/<\s*head[^>]*>(.*)<\s*\/head\s*>/si', $html, $m)) {
1503
- $head = $m[1];
1504
- $tags = $this->pz_GetMeta($head);
1505
- }
1506
-
1507
- // タイトル
1508
- if (isset( $tags['og:title'] ) && $tags['og:title'] ) {
1509
- $title = $tags['og:title'] ;
1510
- } elseif (isset( $tags['twitter:title'] ) && $tags['twitter:title'] ) {
1511
- $title = $tags['twitter:title'] ;
1512
- } elseif (isset( $tags['title'] ) && $tags['title'] ) {
1513
- $title = $tags['title'] ;
1514
- }
1515
-
1516
- // 抜粋文・概要文
1517
- if (isset( $tags['og:description'] ) && $tags['og:description'] ) {
1518
- $excerpt = $tags['og:description'] ;
1519
- } elseif (isset( $tags['twitter:description'] ) && $tags['twitter:description'] ) {
1520
- $excerpt = $tags['twitter:description'] ;
1521
- } elseif (isset( $tags['description'] ) && $tags['description'] ) {
1522
- $excerpt = $tags['description'] ;
1523
- }
1524
-
1525
- // OGPから画像URL取得
1526
- if (isset( $tags['og:image'] ) && $tags['og:image'] ) {
1527
- $thumbnail_url = $tags['og:image'] ;
1528
- } elseif (isset( $tags['twitter:image'] ) && $tags['twitter:image'] ) {
1529
- $thumbnail_url = $tags['twitter:image'] ;
1530
  } else {
1531
- $thumbnail_url = '';
1532
- }
1533
- if ($thumbnail_url && !preg_match('/^https*:\/\//', $thumbnail_url, $m) ) {
1534
- $thumbnail_url = $this->pz_RelToURL($url, $thumbnail_url);
1535
- }
1536
-
1537
- // OGPからサイトアイコンURL取得
1538
- if (isset( $tags['icon'] ) && $tags['icon'] ) {
1539
- $favicon_url = $tags['icon'] ;
1540
- } elseif (isset( $tags['shortcut icon'] ) && $tags['shortcut icon'] ) {
1541
- $favicon_url = $tags['shortcut icon'] ;
1542
- } elseif (isset( $tags['apple-touch-icon'] ) && $tags['apple-touch-icon']) {
1543
- $favicon_url = $tags['apple-touch-icon'] ;
1544
- } else {
1545
- $favicon_url = '';
1546
- }
1547
- if ($favicon_url && !preg_match('/^https*:\/\//', $favicon_url, $m) ) {
1548
- $favicon_url = $this->pz_RelToURL($url, $favicon_url);
1549
- }
1550
-
1551
- // サイト名
1552
- if (isset( $tags['og:site_name'] ) && $tags['og:site_name'] ) {
1553
- $site_name = $tags['og:site_name'] ;
1554
- }
1555
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1556
  // タイトル整形
1557
- if (isset($title)) {
1558
- $str = $title;
1559
- $str = strip_tags($str); // タグの除去
1560
- $str = str_replace(array("\r", "\n"), '', $str); // 改行削除
1561
- $str = esc_html($str); // 念のためエスケープ
1562
- $str = mb_strimwidth($str, 0, 200, '...'); // 保管用のタイトルは200文字で切る
1563
- $title = $str;
1564
- }
1565
-
1566
  // 抜粋文整形
1567
- if (isset($excerpt)) {
1568
- $str = $excerpt;
1569
- $str = strip_tags($str); // タグの除去
1570
- $str = str_replace(array("\r", "\n"), '', $str); // 改行削除
1571
- $str = esc_html($str); // 念のためエスケープ
1572
- $str = mb_strimwidth($str, 0, 500, '...'); // 保管用の記事内容は500文字で切る
1573
- $excerpt = $str;
1574
- }
1575
-
1576
- // データセット
1577
- if (isset($data_id) && !is_null($data_id)) {
1578
- $data['id'] = $data_id;
1579
- }
1580
- if (isset($url_key) && !is_null($url_key)) {
1581
- $data['url_key'] = $url_key;
1582
- }
1583
- $data['site_name'] = $site_name;
1584
- $data['title'] = $title;
1585
- $data['excerpt'] = $excerpt;
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 );
1592
- $data['result_code'] = $result_code;
1593
- $data['alive_result'] = $result_code;
1594
- $data['scheme'] = $scheme;
1595
- $data['domain'] = $domain;
1596
- $data['location'] = $location;
1597
- $data['favicon'] = ( isset($favicon_url) ? $favicon_url : null );
1598
- if (!isset($data['use_post_id1']) || !$data['use_post_id1']) {
1599
  $data['use_post_id1'] = get_the_ID();
1600
  }
1601
- $data['sns_twitter'] = (isset( $data['sns_twitter'] ) ? $data['sns_twitter'] : -1 );
1602
- $data['sns_facebook'] = (isset( $data['sns_facebook'] ) ? $data['sns_facebook'] : -1 );
1603
- $data['sns_hatena'] = (isset( $data['sns_hatena'] ) ? $data['sns_hatena'] : -1 );
1604
- $data['sns_nexttime'] = (isset( $data['sns_nexttime'] ) ? $data['sns_nexttime'] : 0 );
1605
- $data['uptime'] = $this->now;
1606
- $data['alive_time'] = $this->now;
1607
- $data['alive_result'] = $result_code;
1608
- return $data;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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');
1616
  }
1617
-
1618
  // TITLEタグ
1619
- if (preg_match('/<\s*title\s*[^>]*>\s*([^<]*)\s*<\s*\/title\s*[^>]*>/si', $html, $m)) {
1620
- $tags['title'] = esc_html($m[1]);
1621
  }
1622
-
1623
  // metaタグ パース
1624
- $match = null;
1625
- preg_match_all('/<\s*meta\s(?=[^>]*?\b(?:name|property)\s*=\s*(?|"\s*([^"]*?)\s*"|\'\s*([^\']*?)\s*\'|([^"\'>]*?)(?=\s*\/?\s*>|\s\w+\s*=)))[^>]*?\bcontent\s*=\s*(?|"\s*([^"]*?)\s*"|\'\s*([^\']*?)\s*\'|([^"\'>]*?)(?=\s*\/?\s*>|\s\w+\s*=))[^>]*>/is', $html, $match);
1626
- if (isset($match) && is_array($match) && count($match) == 3 && count($match[1]) > 0) {
1627
- foreach ($match[1] as &$m) {
1628
- $m = strtolower($m);
1629
  }
1630
- unset($m);
1631
- $tags += array_combine($match[1], $match[2]);
1632
  }
1633
-
1634
  // linkタグ パース
1635
- $match = null;
1636
- preg_match_all('/<\s*link\s(?=[^>]*?\brel\s*=\s*(?|"\s*([^"]*?)\s*"|\'\s*([^\']*?)\s*\'|([^"\'>]*?)(?=\s*\/?\s*>|\s\w+\s*=)))[^>]*?\bhref\s*=\s*(?|"\s*([^"]*?)\s*"|\'\s*([^\']*?)\s*\'|([^"\'>]*?)(?=\s*\/?\s*>|\s\w+\s*=))[^>]*>/is', $html, $match);
1637
- if (isset($match) && is_array($match) && count($match) == 3 && count($match[1]) > 0) {
1638
- foreach ($match[1] as &$m) {
1639
- $m = strtolower($m);
1640
  }
1641
- unset($m);
1642
- $tags += array_combine($match[1], $match[2]);
1643
  }
1644
-
1645
- return $tags;
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_old)) { // ファイルが見つかった(拡張子なし)
1674
- rename ($file_path_old, $file_path_jpeg); // リネーム
1675
- if (filesize($file_path_jpeg) < 34) {
1676
  return null;
1677
  }
1678
  return $file_url;
@@ -1680,224 +1991,265 @@ class Pz_LinkCard {
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_size = $this->options['cache-image-size']; // サムネイル画像サイズ
1706
- if ($new_size < $this->defaults['cache-image-size']) { // 小さすぎたらデフォルト値を採用
1707
- $new_size = $this->defaults['cache-image-size'];
 
 
1708
  }
1709
 
1710
- $new_width = $new_size; //
1711
- $new_height = $new_size; // 高さ
1712
- if ($image_width <> $image_height) { // 正方形でない
1713
- if ($image_width > $image_height) { // 幅の方が大きい
1714
- $new_height = $image_height * ( $new_width / $image_width ); // 幅に合わせる
1715
- } else { // 高さの方が大きい
1716
- $new_width = $image_width * ( $new_height / $image_height ); // 高さに合わせる
 
 
 
 
 
 
1717
  }
1718
  }
1719
- $new_width = intval($new_width);
1720
- $new_height = intval($new_height);
1721
- if ($new_width <= 1 || $new_height <= 1) {
1722
- touch($file_path_jpeg); // 空ファイル作成
1723
- return null;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1724
  }
1725
 
1726
- $image_p = imagecreatetruecolor($new_width, $new_height); // パレットを用意
1727
- if (!$image_p) {
1728
- touch($file_path_jpeg); // 空ファイル作成
1729
- return null;
 
 
 
 
 
 
 
 
 
 
 
 
1730
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
1731
 
1732
- imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $image_width, $image_height); // サイズ変更してコピー
1733
- imagejpeg($image_p, $file_path_jpeg); // JPEGで保存
1734
- return $file_url; // 画像URLを返す
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1735
  }
1736
 
1737
  // 管理画面のスタイルシート、スクリプト設定
1738
  public function enqueue_admin($hook ) {
1739
  // カラーピッカー用のスタイルシート、スクリプト
1740
- wp_enqueue_script ('pz-linkcard-colorpicker', plugins_url('js/color-picker.js', __FILE__), array('wp-color-picker'), false, true);
1741
- wp_enqueue_script ('wp-color-picker');
1742
- wp_enqueue_style ('wp-color-picker');
1743
  // 設定画面用のスタイルシート、スクリプト
1744
- wp_enqueue_script ('pz-linkcard-admin', plugins_url('js/admin-settings.js', __FILE__), array('jquery'), false, true);
1745
- wp_enqueue_style ('pz-linkcard-admin', plugin_dir_url(__FILE__).'css/admin.css', array(), $this->options['plugin-version']);
1746
  }
1747
 
1748
  // 管理画面時の設定(フッター)
1749
  public function add_footer() {
1750
  // テキスト エディタ用のクイックタグ
1751
- if ($this->options['flg-edit-qtag']) {
1752
- if (wp_script_is('quicktags') ) {
1753
- echo '<script>QTags.addButton(\'pz-lkc\',\''.__('Linkcard', $this->text_domain ).'\',\'['.$this->options['code1'].' url="\',\'"]\',\'\',\''.__('Make Linkcard', $this->text_domain ).'\');</script>';
1754
  }
1755
  }
1756
  // ビジュアル エディタ用の挿入ダイアログ
1757
- require('lib/pz-linkcard-modal.php');
1758
  }
1759
 
1760
  // 管理画面時の注意書き設定
1761
  public function add_notices() {
1762
- if ($this->options['flg-invalid']) {
1763
- if (!$this->options['flg-invalid-hide']) {
1764
- 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>';
1765
  }
1766
  }
1767
  }
1768
 
1769
  // 管理画面時のスタイルシート、スクリプト設定
1770
  public function add_mce_button($buttons ) {
1771
- if ($this->options['flg-edit-insert']) {
1772
  $buttons[] = 'pz_linkcard_insert_shortcode';
1773
  }
1774
  return $buttons;
1775
  }
1776
  public function add_mce_plugin($plugins ) {
1777
- if ($this->options['flg-edit-insert']) {
1778
- $plugins[ "pz_linkcard_tinymce" ] = $this->plugin_dir_url.'js/mce-button.js';
1779
  }
1780
  return $plugins;
1781
  }
1782
 
1783
- // 通常時のスタイルシート
1784
- public function enqueue($hook ) {
1785
- $this->amp = null;
1786
- $css_version = $this->options['plugin-version'].'.'.$this->options['css-count'];
1787
- wp_enqueue_style ('pz-linkcard', $this->options['css-url'], array(), $css_version);
1788
- if ($this->options['css-url-add']) {
1789
- wp_enqueue_style('pz-linkcard-add', $this->options['css-url-add'], array(), $css_version);
1790
- }
1791
- }
1792
-
1793
  // 管理画面のサブメニュー追加
1794
  public function add_menu() {
1795
- $menu_manager = __('Pz LkC Cache', $this->text_domain);
1796
- $menu_settings = __('Pz LinkCard', $this->text_domain);
1797
- if ($this->options['flg-alive'] && $this->options['flg-alive-count']) {
1798
- global $wpdb;
1799
- $result = $wpdb->get_row("SELECT COUNT(*) AS count FROM $this->db_name WHERE alive_result = '404'");
1800
- if (isset($result) && isset($result->count)) {
1801
  $menu_manager .= '&nbsp;<span class="update-plugins"><span class="update-count lkc-menu-count">'.$result->count.'</span></span>';
1802
  }
1803
  }
1804
- add_management_page (__('LinkCard cache manager', $this->text_domain), $menu_manager, 'manage_options', 'pz-linkcard-cache', array($this, 'page_cacheman') );
1805
- add_options_page (__('LinkCard Settings', $this->text_domain), $menu_settings, 'manage_options', 'pz-linkcard-settings', array($this, 'page_settings') );
1806
- }
1807
-
1808
- // WP-CRONスケジュール(SNSカウント取得)
1809
- public function schedule_hook_check() {
1810
- if (!isset($this->options['sns-position']) || $this->options['sns-position'] == '') {
1811
- return null;
1812
- }
1813
-
1814
- global $wpdb;
1815
- $result = (array) $wpdb->get_results($wpdb->prepare("SELECT url,sns_nexttime FROM $this->db_name WHERE sns_nexttime<%d ORDER BY sns_nexttime ASC", $this->now));
1816
- $i = 0;
1817
- if (isset($result) && is_array($result) && count($result) > 0) {
1818
- foreach($result as $data) {
1819
- $i++;
1820
- if ($i > 10) {
1821
- wp_schedule_single_event(time() + 30, 'pz_linkcard_check');
1822
- break;
1823
- }
1824
- if (isset($data) && isset($data->url)) {
1825
- $data = $this->pz_RenewSNSCount(array('url' => $data->url) );
1826
- }
1827
- }
1828
- }
1829
  }
1830
 
1831
- // WP-CRONスケジュール(存在チェック)
1832
- public function schedule_hook_alive() {
1833
- if (!isset($this->options['flg-alive']) || $this->options['flg-alive'] == '') {
1834
- return null;
1835
- }
1836
-
1837
- global $wpdb;
1838
- $result = (array) $wpdb->get_results($wpdb->prepare("SELECT url,alive_time FROM $this->db_name WHERE alive_nexttime<%d ORDER BY alive_time ASC, id ASC", $this->now - WEEK_IN_SECONDS ));
1839
- $i = 0;
1840
- if (isset($result) && is_array($result) && count($result) > 0) {
1841
- foreach($result as $data) {
1842
- $i++;
1843
- if ($i > 5) {
1844
- wp_schedule_single_event(time() + 3600, 'pz_linkcard_alive');
1845
- break;
1846
- }
1847
- if (isset($data) && isset($data->url)) {
1848
- $before = $this->pz_GetCache( array( 'url' => $data->url ) );
1849
- $after = $this->pz_GetCURL( $before );
1850
- if ($before['title'] == $after['title'] ) {
1851
- $before['mod_title'] = 0;
1852
- } else {
1853
- $before['mod_title'] = 1;
1854
- }
1855
- if ($before['excerpt'] == $after['excerpt'] ) {
1856
- $before['mod_excerpt'] = 0;
1857
- } else {
1858
- $before['mod_excerpt'] = 1;
1859
- }
1860
- $before['alive_result'] = $after['result_code'];
1861
- $before['alive_time'] = $this->now;
1862
- $before['alive_nexttime'] = $this->now + WEEK_IN_SECONDS * 4 + rand(0, DAY_IN_SECONDS);
1863
- $before['thumbnail'] = $after['thumbnail'];
1864
- $before['favicon'] = $after['favicon'];
1865
- $before = $this->pz_SetCache( $before );
1866
- }
1867
- }
1868
- }
1869
- }
1870
-
1871
- // スタイルシート生成
1872
- private function pz_SetStyle() {
1873
- require('lib/pz-linkcard-style.php');
1874
- }
1875
-
1876
- // Pz カード管理 キャッシュ・マネージャ
1877
  public function page_cacheman() {
1878
- require('lib/pz-linkcard-cacheman.php');
1879
  }
1880
-
1881
- // Pz カード 設定画面
1882
  public function page_settings() {
1883
- require('lib/pz-linkcard-settings.php');
1884
  }
1885
 
1886
- // プラグイン一覧のクイックメニュー
1887
  public function action_links($links ) {
1888
- $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;
1889
  return $links;
1890
  }
1891
 
1892
- // プラグイン有効化
1893
  public function activate() {
1894
- require('lib/pz-linkcard-init.php');
1895
  }
1896
 
1897
- // プラグイン停止
1898
  public function deactivate() {
1899
- wp_clear_scheduled_hook('pz_linkcard_check');
1900
- wp_clear_scheduled_hook('pz_linkcard_alive');
 
 
 
 
 
 
 
 
 
 
1901
  }
1902
  }
1903
- $Class_Pz_LinkCard = new Pz_LinkCard;
1
  <?php
2
  /*
3
+ Plugin Name: Pz-LinkCard
4
+ Plugin URI: http://poporon.poponet.jp/pz-linkcard
5
+ Description: リンクをカード形式で表示します。
6
+ Version: 2.4.3
7
+ Author: Poporon
8
+ Author URI: http://poporon.poponet.jp
9
+ Text Domain: pz-linkcard
10
+ Domain Path: /language
11
+ License: GPLv2 or later
12
  */
13
 
14
+ defined('ABSPATH' ) || die;
15
 
16
  class Pz_LinkCard {
17
+ protected $defaults = array(
18
+ 'plugin-abbreviation' => 'Pz-LkC',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  'plugin-name' => 'Pz-LinkCard',
20
+ 'plugin-version' => '2.4.3',
21
+ 'plugin-path' => '/pz-linkcard',
22
+ 'author-url' => 'https://popozure.info',
23
+ 'author-name' => 'Poporon',
24
+ 'author-twitter' => 'popozure',
25
 
26
  'flg-invalid' => null,
27
  'invalid-url' => null,
71
  'sns-po' => 1,
72
 
73
  'color-title' => '#111111',
 
 
 
 
 
 
74
  'outline-title' => null,
 
 
 
 
 
 
75
  'outline-color-title' => '#ffffff',
 
 
 
 
 
 
76
  'size-title' => '16px',
 
 
 
 
 
 
77
  'height-title' => '24px',
78
+ 'trim-title' => 80,
79
+ 'nowrap-title' => null,
80
+ 'color-url' => '#4466ff',
81
+ 'outline-url' => null,
82
+ 'outline-color-url' => '#ffffff',
83
+ 'size-url' => '10px',
84
  'height-url' => '10px',
85
+ 'trim-url' => 250,
86
+ 'nowrap-url' => 1,
87
+ 'color-excerpt' => '#333333',
88
+ 'outline-excerpt' => null,
89
+ 'outline-color-excerpt' => '#ffffff',
90
+ 'size-excerpt' => '11px',
91
  'height-excerpt' => '17px',
92
+ 'trim-excerpt' => 500,
93
+ 'color-more' => '#444444',
94
+ 'outline-more' => null,
95
+ 'outline-color-more' => '#ffffff',
96
+ 'size-more' => '12px',
97
  'height-more' => '40px',
98
+ 'color-info' => '#222222',
99
+ 'outline-info' => null,
100
+ 'outline-color-info' => '#ffffff',
101
+ 'size-info' => '12px',
102
  'height-info' => '12px',
 
 
 
 
 
103
  'trim-info' => 200,
104
+ 'color-added' => '#222222',
105
+ 'outline-added' => null,
106
+ 'outline-color-added' => '#ffffff',
107
+ 'size-added' => '12px',
108
+ 'height-added' => '12px',
109
  'thumbnail-resize' => 1,
110
 
111
  'ex-border-color' => '#888888',
112
  'ex-bgcolor' => '#ffffff',
113
  'ex-image' => null,
114
  'ex-thumbnail' => 13,
115
+ 'ex-thumbnail-size' => 'thumbnail',
116
  'ex-favicon' => 3,
117
  'ex-info' => null,
118
  'ex-more-text' => null,
125
  'in-bgcolor' => '#f8f8f8',
126
  'in-image' => null,
127
  'in-thumbnail' => 1,
128
+ 'in-thumbnail-size' => 'thumbnail',
129
  'in-favicon' => 3,
130
  'in-info' => null,
131
  'in-more-text' => null,
138
  'th-image' => null,
139
  'th-info' => null,
140
 
141
+ 'flg-relative-url' => 1,
 
 
 
 
 
 
 
 
 
 
 
 
142
  'flg-unlink' => 1,
143
  'flg-ssl' => 1,
144
  'flg-redir' => 1,
147
  'user-agent' => null,
148
  'flg-alive' => 1,
149
  'flg-alive-count' => null,
 
150
 
151
  'code1' => 'blogcard',
152
  'use-inline' => null,
160
  'flg-edit-insert' => 1,
161
  'flg-edit-qtag' => 1,
162
 
163
+ 'multi-myid' => null,
164
+ 'multi-count' => null,
165
+
166
+ 'trail-slash' => 1,
167
  'class-pc' => null,
168
  'class-mobile' => null,
169
+ 'flg-filemenu' => null,
170
+ 'flg-initialize' => null,
171
+ 'flg-compress' => 1,
172
  'flg-amp-url' => null,
 
 
173
  'flg-invalid-hide' => null,
174
  'saved-date' => null,
175
+ 'admin-mode' => null,
176
+ 'debug-mode' => null,
177
+ 'develop-mode' => null,
178
+ 'debug-dir' => null,
179
+ 'debug-url' => null,
180
+
181
+ 'css-url' => null,
182
+ 'css-url-add' => null,
183
+ 'css-add' => null,
184
+ 'css-count' => 0,
185
+ 'css-path' => null,
186
+ 'css-templete' => null,
187
+ 'thumbnail-dir' => null,
188
+ 'thumbnail-url' => null,
189
+ 'favicon-api' => 'https://www.google.com/s2/favicons?domain=%DOMAIN%',
190
+ 'thumbnail-api' => 'https://s.wordpress.com/mshots/v1/%URL%?w=200',
191
 
192
+ 'initialize-settings' => null,
193
+ 'initialize-operation' => null,
194
+ 'initialize-exception' => null
195
  );
196
+ private $slug; // スラッグ
197
+ private $text_domain; // テキスト ドメイン(スラッグと同じ内容)
198
+ private $charset; // 文字セット
199
+ private $amp; // Google AMP
200
+ private $now; // 現在日時(ローカル時間)
201
+ private $home_url; // 自サイトのトップページURL
202
+ private $scheme; // 自サイトのスキーム
203
+ private $domain; // 自サイトのドメイン名
204
+ private $domain_url; // 自サイトのドメインURL
205
+ private $plugin_basename; // プラグイン ディレクトリの名前
206
+ private $plugin_dir_path; // プラグイン ディレクトリのパス
207
+ private $plugin_dir_url; // プラグイン ディレクトリのURL
208
+ private $plugin_link; // プラグインページのURL
209
+ private $upload_dir_path; // アップロード ディレクトリのパス
210
+ private $upload_dir_url; // アップロード ディレクトリのURL
211
+ private $db_name; // DBのテーブル名
212
+ private $suppression; // 出力抑制
213
+ private $options; // パラメータ
214
 
215
  public function __construct() {
216
+ $this->slug = basename(dirname(__FILE__ ) ); // スラッグ
217
+ $this->text_domain = $this->slug; // テキストドメイン(スラッグと同じ)
218
+ $this->charset = get_bloginfo('charset' ); // 文字セット
219
+ $this->amp = true; // 今がAMP表示かどうか判定
220
+ $this->now = current_time('timestamp', false ); // 現在日時(ローカル時間)
221
+ global $wpdb; // DBの宣言
222
+ $this->db_name = $wpdb->prefix.'pz_linkcard'; // DBのテーブル名
223
+ $this->plugin_basename = plugin_basename(__FILE__ ); // プラグイン ディレクトリの名前
224
+ $this->plugin_dir_path = plugin_dir_path(__FILE__ ); // プラグイン ディレクトリのパス
225
+ $this->plugin_dir_url = plugin_dir_url (__FILE__ ); // プラグイン ディレクトリのURL
226
+ $wp_upload_dir = wp_upload_dir();
227
+ $this->upload_dir_path = $wp_upload_dir['basedir'].'/'.$this->slug.'/'; // アップロード ディレクトリのパス
228
+ $this->upload_dir_url = $wp_upload_dir['baseurl'].'/'.$this->slug.'/'; // アップロード ディレクトリのURL
229
+ $this->suppression = false; // 出力抑制(header出力前かどうか)
230
+
231
+ // オプション取得
232
+ $this->options = $this->pz_GetOption();
233
+
234
+ // 自サイトのURLをセット
235
+ $this->home_url = esc_url(home_url() ); // 自サイトのトップページURL
236
 
237
+ // URL解析(自サイトチェック)(Optionsを読み込んでから)
238
+ $url_info = $this->Pz_GetURLInfo($this->home_url );
239
+ $this->scheme = $url_info['scheme']; // 自サイトのスキーム
240
+ $this->domain = $url_info['domain']; // 自サイトのドメイン名
241
+ $this->domain_url = $url_info['domain_url']; // 自サイトのドメインURL
242
+
243
+ // 管理者モードの解除
244
+ if (!$this->options['debug-mode'] ) {
245
+ $this->options['admin-mode'] = null;
 
 
 
 
 
 
 
 
 
 
246
  }
247
+ if (!$this->options['admin-mode'] ) {
248
+ $this->options['initialize-exception'] = null;
249
+ }
250
+
 
251
  // バージョンが違っていたら、DBとオプションを更新する
252
+ if ($this->options['plugin-version'] <> $this->defaults['plugin-version'] ) {
253
  $this->activate();
254
  }
255
+
256
+ // 言語の国際化(日本語化)
257
+ load_plugin_textdomain($this->text_domain, false, $this->slug.'/languages' );
258
+
259
  // 管理画面のとき
260
+ if (is_admin() ) {
261
+ register_activation_hook (__FILE__, array($this, 'activate' ) ); // プラグインを有効化するときの処理
262
+ register_deactivation_hook (__FILE__, array($this, 'deactivate' ) ); // プラグインを無効化するときの処理
263
+ add_action ('admin_menu', array($this, 'add_menu' ) ); // 設定メニュー
264
+ add_action ('admin_enqueue_scripts', array($this, 'enqueue_admin' ) ); // 設定メニュー用スクリプト
265
+ add_action ('admin_print_footer_scripts', array($this, 'add_footer' ) ); // テキストエディタ用クイックタグ
266
+ add_action ('admin_notices', array($this, 'add_notices' ) ); // 注意書き
267
+ add_filter ('mce_buttons', array($this, 'add_mce_button' ) ); // ビジュアルエディタ用ボタン
268
+ add_filter ('mce_external_plugins', array($this, 'add_mce_plugin' ) ); // ビジュアルエディタ用ボタン
269
+ add_filter ('plugin_action_links_'.$this->plugin_basename, array($this, 'action_links' ) ); // プラグイン画面
270
  } else {
271
+ add_action ('wp_enqueue_scripts', array($this, 'enqueue' ) ); // スタイルシート呼び出し
272
+ if ($this->options['auto-atag'] || $this->options['auto-url'] ) { // 自動置き換え
273
+ add_filter ('the_content', array($this, 'auto_replace' ) );
274
+ add_shortcode ('pz-linkcard-auto-replace', array($this, 'shortcode' ) );
275
  }
276
+ if ($this->options['code1'] ) { // ショートコード1
277
+ add_shortcode($this->options['code1'], array($this, 'shortcode' ) );
278
  }
279
+ if ($this->options['code2'] ) { // ショートコード2
280
+ add_shortcode($this->options['code2'], array($this, 'shortcode' ) );
281
  }
282
+ if ($this->options['code3'] ) { // ショートコード3
283
+ add_shortcode($this->options['code3'], array($this, 'shortcode' ) );
284
  }
285
+ if ($this->options['code4'] ) { // ショートコード4
286
+ add_shortcode($this->options['code4'], array($this, 'shortcode' ) );
287
  }
288
  }
289
+
290
  // SNS更新、リンク先チェック
291
+ add_action('pz_linkcard_check', array($this, 'schedule_hook_check' ) );
292
+ add_action('pz_linkcard_alive', array($this, 'schedule_hook_alive' ) );
293
+ if (!wp_next_scheduled('pz_linkcard_check' ) ) {
294
+ wp_schedule_event(time() + 10 , 'hourly', 'pz_linkcard_check' );
295
  }
296
+ if (!wp_next_scheduled('pz_linkcard_alive' ) ) {
297
+ wp_schedule_event(time() + 1800 , 'daily', 'pz_linkcard_alive' );
298
  }
299
  }
300
 
301
  // テキストリンクの行とURLのみの行をリンクカードへ置き換える処理(直接HTMLタグにするのでは無くショートコードに変換する。)
302
  public function auto_replace($content ) {
303
  if (!$this->options['auto-external'] ) {
304
+ // 内部リンクも外部リンクも変換する
305
  if ($this->options['auto-atag'] ) {
306
  $content = preg_replace('/(^|<br ?\/?>)(<p.*>)?<a .*href=[\'"](https?:\/\/[-_\.!~*()a-zA-Z0-9;\/?:\@&=+\$,%#]+)[\'"]((?!<IMG).)*<\/a>(<\/p>)?$/im', '[pz-linkcard-auto-replace url="$3"]', $content );
307
  }
313
  }
314
  return $content;
315
  } else {
316
+ // 外部リンクのみを変換する
317
+ if ($this->options['auto-atag'] ) {
318
  preg_match_all('/(^|<br ?\/?>)(<p.*>)?(<a .*href=[\'"](https?:\/\/[-_\.!~*()a-zA-Z0-9;\/?:\@&=+\$,%#]+)[\'"]((?!<IMG).)*<\/a>)(<\/p>)?$/im', $content, $m );
319
+ for ($i = 0 ; $i < count($m[0]) ; $i++ ) {
320
  $url = $m[4][$i];
321
+ if ($this->Pz_LinkType($url ) == 0 ) {
322
  $tag = '[pz-linkcard-auto-replace url="'.$url.'"]';
323
  $content = preg_replace('{'.$m[0][$i].'}', $tag, $content, 1 );
324
  }
325
  }
326
  }
327
+ if ($this->options['auto-url'] ) {
328
  preg_match_all('/(^|<br ?\/?>)(<p.*>)?(https?:\/\/[-_\.!~*()a-zA-Z0-9;\/?:\@&=+\$,%#]+)(<\/p>|<br ?\/?>)?$/im', $content, $m );
329
+ for ($i = 0 ; $i < count($m[0]) ; $i++ ) {
330
  $url = $m[3][$i];
331
+ if ($this->Pz_LinkType($url ) == 0 ) {
332
  $tag = '[pz-linkcard-auto-replace url="'.$url.'"]';
333
  $content = preg_replace('{'.$m[0][$i].'}', $tag, $content, 1 );
334
  }
342
  }
343
 
344
  // ショートコード処理
345
+ public function shortcode($atts, $content = null, $shortcode ) {
346
  // 実行時間
347
+ if ($this->options['debug-mode'] ) {
348
+ if (function_exists('hrtime' ) ) {
349
+ $start_time = hrtime(true ) / 1000;
350
+ } else {
351
+ $start_time = microtime(true );
352
+ }
353
  echo PHP_EOL.'<!-- Pz-LkC [Debug mode: On] /-->'.PHP_EOL;
354
  echo '<!-- Pz-LkC [shortcode]'.PHP_EOL;
355
  echo '$atts='.html_entity_decode(print_r($atts, true ) );
358
  echo '/-->'.PHP_EOL;
359
  }
360
 
361
+ // キーをすべて小文字にする
362
+ // $atts = array_change_key_case($atts, CASE_LOWER);
363
+
364
  // URLパラメータ
365
+ switch (true) {
366
+ case (!empty($atts['url'] ) ) :
367
  $url = $atts['url'];
368
+ break;
369
+ case (!empty($atts['href'] ) ) : // Aタグのようにhrefパラメータも有効にする
370
  $url = $atts['href'];
371
+ break;
372
+ case (!empty($atts['uri'] ) ) : // 密かに記述ミス対応(uriやurIでもurlとして判定する)
373
  $url = $atts['uri'];
374
+ break;
375
+ case (!empty($atts['ur1'] ) ) : // 密かに記述ミス対応(ur1でもurlとして判定する)
376
  $url = $atts['ur1'];
377
+ break;
378
+ case (!empty($atts[0] ) ) : // 謎の記述ミスに対応
379
+ $url = $atts[0];
380
+ break;
381
+ case (!empty($atts[1] ) ) : // 謎の記述ミスに対応
382
+ $url = $atts[1];
383
+ break;
384
+ default:
385
  $url = null;
386
+ break;
387
  }
388
+
389
+ // 指定されたurlパラメータ(エラー表示用)
390
+ $url_org = $url;
391
+
392
+ // 相対URLを絶対URLに変換(ショートコードのURLで相対パス表記の場合、内部リンクと見なす)
393
+ if ($this->options['flg-relative-url'] && !mb_strpos($url, '://' ) ) {
394
+ $url = $this->pz_RelToURL($this->home_url, $url );
395
  }
396
+
397
+ // URLのサニタイズ&エンティティ化
398
+ $url = $this->pz_EncodeURL($url ,true );
399
+
400
+ // URLエラー
401
  if (!$url ) {
402
+ if (!$this->options['flg-invalid'] ) {
403
  $url_now = get_permalink();
404
  $post_id = url_to_postid($url_now );
405
+ if ($post_id ) {
406
  $this->options['flg-invalid'] = true;
407
  $this->options['invalid-url'] = $url_now;
408
  $this->options['invalid-time'] = $this->now;
409
+ // オプション更新
410
+ $result = $this->pz_UpdateOption();
411
  }
412
  }
413
+ $tag = '<div class="lkc-card"><div class="lkc-this-wrap"><div class="lkc-info">'.$this->options['plugin-name'].'</div><div class="lkc-excerpt">'.__('-', $this->text_domain ).' '.__('Incorrect URL specification.', $this->text_domain ).'<br>'.__('-', $this->text_domain ).' '.__('URL', $this->text_domain ).'='.html_entity_decode($url_org ).'</div></div></div>';
414
+ $err_info = print_r($atts, true );
415
+ return PHP_EOL.'<div id="lkc-error" class="lkc-error"><!-- '.html_entity_decode($err_info ).' -->'.$tag.'</div>'.PHP_EOL;
416
  }
417
+
418
+ // URLパラメータに編集後のURLを返す
419
  $atts['url'] = $url;
420
 
421
+ // titleパラメータが無かったらNULLにする
422
+ if (!isset($atts['title'] ) ) {
423
  $atts['title'] = null;
424
  }
425
 
426
+ // excerptパラメータが無かったらNULLにする
427
  if (!isset($atts['excerpt'] ) ) {
428
  if (isset($atts['content'] ) ) {
429
  $atts['excerpt'] = $atts['content'];
437
  }
438
 
439
  // 囲まれ文字(ショートコード1のみ有効)
440
+ if ($shortcode == $this->options['code1'] ) {
441
+ switch ($this->options['use-inline'] ) {
442
+ case 1:
443
+ $atts['excerpt'] = isset($content ) ? $content : null;
444
  break;
445
+ case 2:
446
+ $atts['title'] = isset($content ) ? $content : null;
447
  break;
448
  }
449
  }
452
  $tag = $this->pz_GetHTML($atts );
453
 
454
  // 実行時間
455
+ if ($this->options['debug-mode'] ) {
456
+ if (function_exists('hrtime' ) ) {
457
+ $end_time = hrtime(true ) / 1000;
458
+ } else {
459
+ $end_time = microtime(true );
460
+ }
461
+ $elasped_time = $end_time - $start_time;
462
+ $format_time = number_format($elasped_time / 1000, 8, '.', ',' );
463
  echo '<!-- Pz-LkC [shortcode]'.PHP_EOL;
464
+ echo ' URL='.$url.PHP_EOL;
465
+ echo ' ElaspedTime='.$format_time.'ms'.PHP_EOL;
466
+ echo '-->'.PHP_EOL;
467
  }
468
 
469
  return $tag;
471
 
472
  // キャッシュやリンク先からリンクカードのHTMLを生成
473
  private function pz_GetHTML($atts ) {
474
+ if ($this->options['debug-mode'] ) {
475
  echo '<!-- Pz-LkC [pz_GetHTML]'.PHP_EOL;
476
  echo '$atts='.html_entity_decode(print_r($atts, true ) );
477
  echo '/-->'.PHP_EOL;
478
  }
479
 
480
+ // リンク先URL
481
+ $url = isset($atts['url'] ) ? $atts['url'] : null ;
 
482
 
483
+ // URL指定なし
484
+ if (!$url ) {
485
+ return null;
486
  }
487
 
488
+ // 変数の用意
489
+ $is_internal = false;
490
+ $is_samepage = false;
491
+ $is_mobile = false;
492
+ $data_id = null;
493
+ $site_name = null;
494
+ $title = null;
495
+ $excerpt = null;
496
+ $thumbnail_url = null;
497
+ $favicon_url = null;
498
+ $update_result = null;
499
+ $sns_tw = null;
500
+ $sns_fb = null;
501
+ $sns_hb = null;
502
+ $sns_po = null;
503
+ $alive_result = null;
504
+ $post_date = null;
505
+
506
  // モバイルチェック
507
+ if (function_exists('wp_is_mobile' ) && wp_is_mobile() ) {
508
+ $is_mobile = true;
509
  }
510
+ if ($this->options['debug-mode'] ) {
511
  echo '<!-- Pz-LkC [pz_GetHTML] $is_mobile="'.$is_mobile.'" /-->'.PHP_EOL;
512
  }
513
 
514
+ // URL解析(自サイトチェック)
515
+ $url_info = $this->Pz_GetURLInfo($url );
516
+ $scheme = $url_info['scheme']; // スキーム
517
+ $domain = $url_info['domain']; // ドメイン名
518
+ $domain_url = $url_info['domain_url']; // ドメインURL
519
+ $is_external = $url_info['is_external']; // 外部リンク
520
+ $is_internal = $url_info['is_internal']; // 内部リンク
521
+ $is_samepage = $url_info['is_samepage']; // 同一ページ
 
522
 
523
  // モバイルかPCかのクラス名を追加
524
  $class_id = 'linkcard';
525
  if ($is_mobile && $this->options['class-mobile'] ) {
526
  $class_id .= ' '.$this->options['class-mobile'];
527
+ } elseif ($this->options['class-pc'] ) {
528
  $class_id .= ' '.$this->options['class-pc'];
529
  }
530
 
531
  // キャッシュから取得
532
+ $data = array('url' => $url );
533
+ $result = $this->pz_GetCache($data );
534
+ if (isset($result ) && is_array($result ) && isset($result['url'] ) ) {
 
 
535
  $data = $result;
536
  $data_id = $data['id'];
537
  $url = $data['url'];
538
+ if ($this->options['debug-mode'] ) {
539
+ echo '<!-- Pz-LkC [pz_GetHTML] get from cache $data_id="'.$data_id.'" /-->'.PHP_EOL;
540
+ }
541
  }
542
 
543
  // 内部リンクの処理
544
+ if ($is_internal ) {
545
+ if ($this->options['debug-mode'] ) {
546
  echo '<!-- Pz-LkC [pz_GetHTML] Internal link /-->'.PHP_EOL;
547
  }
548
  // リンクターゲットの設定
549
+ $target = null; // 同じタブに開く
550
+ if (isset($this->options['in-target'] ) ) {
551
+ if ($this->options['in-target'] == 1 || ($this->options['in-target'] == 2 && !$is_mobile ) ) {
552
+ $target = ' target="_blank"'; // 新しいタブで開く
553
  }
554
  }
555
+
556
  // nofollowの指定
557
+ $rel = null;
558
+ if ((isset($atts['follow'] ) && mb_strtolower($atts['follow'] ) == 'no' ) || (isset($atts['nofollow'] ) && mb_strtolower($atts['nofollow'] ) == 'true' ) ) {
559
+ $rel = ' rel="nofollow"'; // 要望により内部リンクでもnofollow可能(ショートコードのパラメータで指定時のみ)
560
  }
561
+
562
  // キャッシュが無い、もしくは強制取得
563
+ if (is_null($data_id ) || (isset($atts['force'] ) && $atts['force'] == true ) ) {
564
+ $data = $this->pz_GetPost($data ); // 最新記事内容を取得
565
+ $result = $this->pz_SetCache($data ); // 保存
566
+ } elseif ($this->options['in-get'] <> 2 ) {
567
+ $data = $this->pz_GetPost($data ); // 最新記事内容を取得
 
 
568
  }
569
  }
570
 
571
  // 外部リンクの処理
572
+ if ($is_external ) {
573
+ if ($this->options['debug-mode'] ) {
574
  echo '<!-- Pz-LkC [pz_GetHTML] External link /-->'.PHP_EOL;
575
  }
576
  // リンクターゲットの設定
577
+ $target = null; // 同じタブに開く
578
  if (isset($this->options['ex-target'] ) ) {
579
+ if ($this->options['ex-target'] == 1 || ($this->options['ex-target'] == 2 && !$is_mobile ) ) {
580
+ $target = ' target="_blank"'; // 新しいタブで開く
581
  }
582
  }
583
+
584
  // noopenerとnofollowの指定
585
  $rel = 'external';
586
+ if ($this->options['nofollow'] || (isset($atts['follow'] ) && mb_strtolower($atts['follow'] ) == 'no' ) || (isset($atts['nofollow'] ) && mb_strtolower($atts['nofollow'] ) == 'true' ) ) {
587
+ $rel .= ' nofollow'; // nofollow指定。趣味の問題?
588
  }
589
+ if ($this->options['noopener'] ) {
590
  $rel .= ' noopenner';
591
  }
592
  $rel = ' rel="'.$rel.'"';
593
+
594
  // キャッシュが無い、もしくは強制取得
595
+ if (!$data_id || (isset($atts['force'] ) && $atts['force'] == true ) ) {
596
+ $result = $this->pz_GetCURL($data ); // cURLで記事内容を取得
597
+ if (isset($result ) && is_array($result ) && isset($result['url'] ) ) {
598
+ $data = $result;
599
+ $result = $this->pz_SetCache($data );
 
600
  }
601
  }
602
  }
603
 
604
+ // 記事内容をセット
605
+ $title = isset($data['title']) ? $data['title'] : null;
606
+ $excerpt = isset($data['excerpt']) ? $data['excerpt'] : null;
607
+ $site_name = isset($data['site_name']) ? $data['site_name'] : null;
608
+ $thumbnail_url = isset($data['thumbnail']) ? $data['thumbnail'] : null;
609
+ $update_result = isset($data['update_result']) ? $data['update_result'] : null;
610
+ $alive_result = isset($data['alive_result'])? $data['alive_result'] : null;
611
+ $html_thumbnail = null;
612
+ $html_favicon = null;
 
 
 
 
 
 
 
 
613
 
614
  // ラッピング
615
+ if ($is_internal ) {
616
+ if ($is_samepage ) {
617
+ $html_wrap_op = '<div class="lkc-this-wrap">';
618
+ $html_wrap_cl = '</div>';
619
+ $html_added_op = '<div class="lkc-this-added">';
620
+ $html_added_cl = '</div>';
621
+ $more = null;
622
+ $more_text = null;
623
+ $info = isset($this->options['th-info'] ) ? $this->options['th-info'] : null ;
624
+ $sw_thumbnail = isset($this->options['in-thumbnail'] ) ? $this->options['in-thumbnail'] : 0 ;
625
+ $sw_favicon = isset($this->options['in-favicon'] ) ? $this->options['in-favicon'] : 0 ;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
626
  } else {
627
+ $html_wrap_op = '<div class="lkc-internal-wrap">';
628
+ $html_wrap_cl = '</div>';
629
+ $html_added_op = '<div class="lkc-internal-added">';
630
+ $html_added_cl = '</div>';
631
+ $more = isset($this->options['flg-more'] ) ? $this->options['flg-more'] : null ;
632
+ $more_text = isset($this->options['in-more-text'] ) ? $this->options['in-more-text'] : null ;
633
+ $info = isset($this->options['in-info'] ) ? $this->options['in-info'] : null ;
634
+ $sw_thumbnail = isset($this->options['in-thumbnail'] ) ? $this->options['in-thumbnail'] : 0 ;
635
+ $sw_favicon = isset($this->options['in-favicon'] ) ? $this->options['in-favicon'] : 0 ;
636
  }
637
+ } else {
638
+ // 外部リンクで「はてなブログカード」を使う
639
+ if ( $this->options['use-hatena'] ) {
640
+ // 「はてなブログカード」をそのまま利用する
641
+ $tag = '<div class="lkc-iframe-wrap"><iframe src="https://hatenablog-parts.com/embed?url=' .$url.'" class="lkc-iframe" scrolling="no" frameborder="0"></iframe></div>';
642
+ if ($this->options['blockquote'] ) {
643
+ $tag = '<div class="'.$class_id.'"><blockquote class="lkc-quote">'.$tag.'</blockquote></div>';
644
+ } else {
645
+ $tag = '<div class="'.$class_id.'">'.$tag.'</div>';
646
+ }
647
+ return $tag; // タグを出力してさっさと終了
648
+ }
649
+ $html_wrap_op = '<div class="lkc-external-wrap">';
650
+ $html_wrap_cl = '</div>';
651
+ $html_added_op = '<div class="lkc-external-added">';
652
+ $html_added_cl = '</div>';
653
+ $more = isset($this->options['flg-more'] ) ? $this->options['flg-more'] : null ;
654
+ $more_text = isset($this->options['ex-more-text'] ) ? $this->options['ex-more-text'] : null ;
655
+ $info = isset($this->options['ex-info'] ) ? $this->options['ex-info'] : null ;
656
+ $sw_thumbnail = isset($this->options['ex-thumbnail'] ) ? $this->options['ex-thumbnail'] : 0 ;
657
+ $sw_favicon = isset($this->options['ex-favicon'] ) ? $this->options['ex-favicon'] : 0 ;
658
  }
659
 
660
  // サムネイル取得
661
+ if ($this->options['thumbnail-position'] ) {
662
+ if ($sw_thumbnail == 1 || $sw_thumbnail == 13 ) { // 直接取得
663
+ if ($is_external ) {
 
 
664
  $thumbnail_url = $this->pz_GetThumbnail($thumbnail_url ); // 外部サイトのサムネイルをキャッシュ
665
  }
666
+ if ($thumbnail_url ) {
667
+ $html_thumbnail = '<img class="lkc-thumbnail-img" src="'.$thumbnail_url.'" alt="" />';
668
+ } elseif ($sw_thumbnail == 13 ) { // 直接取得に失敗
669
  $sw_thumbnail = 3;
670
  }
671
  }
672
+ if ($sw_thumbnail == 3 ) { // WebAPIを利用
673
+ // サムネイル取得WebAPI
674
+ if ($this->options['thumbnail-api'] ) {
675
+ $html_thumbnail = $this->options['thumbnail-api'];
676
+ $html_thumbnail = preg_replace('/%DOMAIN_URL%/', $domain_url, $html_thumbnail );
677
+ $html_thumbnail = preg_replace('/%DOMAIN%/', $domain, $html_thumbnail );
678
+ $html_thumbnail = preg_replace('/%URL%/', rawurlencode($url ), $html_thumbnail );
679
+ $html_thumbnail = '<img class="lkc-thumbnail-img" src="'.$html_thumbnail.'" alt="" />';
680
  }
681
  }
682
  }
683
 
684
  // ファビコン取得
685
+ if ($this->options['info-position'] ) {
686
+ if ($sw_favicon == 1 || $sw_favicon == 13 ) { // 直接取得
687
+ if ($is_internal ) {
688
+ $favicon_url = get_site_icon_url(32 ); // 自サイトのサイトアイコン
689
+ }
690
+ if ($favicon_url ) {
691
+ $html_favicon = '<img class="lkc-favicon" src="'.$favicon_url.'" alt="" width=16 height=16 />';
692
+ } elseif ($sw_favicon == 13 ) { // 直接取得に失敗
693
+ $sw_favicon = 3;
694
  }
695
  }
696
+ if ($sw_favicon == 3 ) { // WebAPIを利用
697
+ // サイトアイコン取得WebAPI
698
+ if ($this->options['favicon-api'] ) {
699
+ $html_favicon = $this->options['favicon-api'];
700
+ $html_favicon = preg_replace('/%DOMAIN_URL%/', $domain_url, $html_favicon );
701
+ $html_favicon = preg_replace('/%DOMAIN%/', $domain, $html_favicon );
702
+ $html_favicon = preg_replace('/%URL%/', rawurlencode($url ), $html_favicon );
703
+ $html_favicon = '<img class="lkc-favicon" src="'.$html_favicon.'" alt="" width=16 height=16 />';
704
  }
705
  }
706
  }
707
 
708
  // タイトル
709
+ if (!$title ) {
710
+ $title = $this->pz_DecodeURL($url, true ); // タイトル取得できていなかったらURLをセットする
711
  }
712
 
713
  // パラメータ取得(タイトル・抜粋文)
714
+ if (isset($atts['title'] ) && $atts['title'] ) { // title パラメータ
715
  $title = $atts['title'];
716
  $excerpt = null;
717
  }
718
+ if (isset($atts['excerpt'] ) && $atts['excerpt'] ) { // excerpt パラメータ
719
  $excerpt = $atts['excerpt'];
720
  }
721
 
722
  // タイトル整形
723
  if ($title ) {
724
+ $str = $title;
725
+ $str = strip_tags($str ); // タグの除去
726
+ $str = str_replace(array("\r", "\n"), null, $str ); // 改行削除
727
+ $str = esc_html($str ); // 念のためエスケープ
728
+ if ($this->options['trim-title'] ) {
729
+ $str = mb_strimwidth($str, 0, $this->options['trim-title'] , '...' );
730
  }
731
+ $title = $str;
732
  }
733
 
734
  // 抜粋文整形(抜粋文非表示の場合、空欄にする)
735
+ if (!$this->options['display-excerpt'] ) {
736
+ $excerpt = null;
737
  } else {
738
  if ($excerpt ) {
739
  $str = $excerpt;
740
  $str = strip_tags($str ); // タグの除去
741
+ $str = preg_replace('/<!--more-->.+/is', null, $str ); // moreタグ以降削除
742
+ $str = preg_replace('/\[[^]]*\]/', null, $str ); // ショートコードすべて除去
743
+ $str = str_replace(array("\r", "\n"), null, $str ); // 改行削除
744
  $str = esc_html($str ); // 念のためエスケープ
745
+ if ($this->options['trim-excerpt'] ) {
746
  $str = mb_strimwidth($str, 0, $this->options['trim-excerpt'] , '...' );
747
  }
748
  $excerpt = $str;
750
  }
751
 
752
  // サイト名称を使わない場合、ドメイン名で上書き
753
+ $site_title = null;
754
+ if ($this->options['use-sitename'] && $site_name ) {
755
  $c_site_name = $site_name;
756
+ if ($this->options['trim-info'] ) {
757
  $str = $site_name;
758
+ $str = mb_strimwidth($str, 0, $this->options['trim-info'] , '...' );
759
  $site_name = $str;
760
  }
761
+ if ($site_name <> $c_site_name ) {
762
  $site_title = ' title="'.$c_site_name.'"';
763
  }
764
  } else {
765
+ // 国際ドメイン対応(日本語ドメイン対応)
766
+ if (function_exists('idn_to_utf8' ) && substr($domain, 0, 4 ) == 'xn--' ) {
 
767
  $site_name = idn_to_utf8($domain );
768
+ } else {
769
+ $site_name = $domain;
770
  }
771
  }
772
 
773
  // リンク先URL
774
+ if ($this->options['flg-unlink'] && ($alive_result < 100 || $alive_result >= 400 ) ) {
775
  // Not Found の時は見え消ししてリンクしない
776
+ $html_a_op_all = '<div class="lkc-unlink">';
777
+ $html_a_cl_all = '</div>';
778
+ $html_a_op = null;
779
+ $html_a_cl = null;
780
+ $html_st_op = '<strike>';
781
+ $html_st_cl = '</strike>';
782
+ } elseif ($this->options['link-all'] ) {
783
  // カード全体をリンク(どこをクリックしても良いのが分かり易い)
784
+ $html_a_op_all = '<a class="lkc-link no_icon" href="'.$url.'"'.$target.$rel.'>';
785
+ $html_a_cl_all = '</a>';
786
+ $html_a_op = null;
787
+ $html_a_cl = null;
788
+ $html_st_op = null;
789
+ $html_st_cl = null;
790
  } else {
791
  // タイトルとかURLとかを個別でリンク(タイトルや抜粋文などの文字を範囲指定をしてコピー等がし易い)
792
+ $html_a_op_all = null;
793
+ $html_a_cl_all = null;
794
+ $html_a_op = '<a class="lkc-link no_icon" href="'.$url.'"'.$target.$rel.'>';
795
+ $html_a_cl = '</a>';
796
+ $html_st_op = null;
797
+ $html_st_cl = null;
798
  }
799
 
800
  // ソーシャルカウントの表示
801
+ $sns = null;
802
+ $html_sns_title = null;
803
+ $html_sns_info = null;
804
+ if ($this->options['sns-position'] ) {
805
  // カード全体をリンクにするときは表示のみ
806
  if ($this->options['link-all'] ) {
807
  if ($this->options['sns-tw'] && $sns_tw > 0 ) {
808
+ $sns .= ' <div class="lkc-sns-tw">'.$sns_tw.'&nbsp;tweet' .(($sns_tw > 1 ) ? 's' : null ).'</div>';
809
  }
810
  if ($this->options['sns-fb'] && $sns_fb > 0 ) {
811
+ $sns .= ' <div class="lkc-sns-fb">'.$sns_fb.'&nbsp;share' .(($sns_fb > 1 ) ? 's' : null ).'</div>';
812
  }
813
  if ($this->options['sns-hb'] && $sns_hb > 0 ) {
814
+ $sns .= ' <div class="lkc-sns-hb">'.$sns_hb.'&nbsp;user' .(($sns_hb > 1 ) ? 's' : null ).'</div>';
815
  }
816
  if ($this->options['sns-po'] && $sns_po > 0 ) {
817
+ $sns .= ' <div class="lkc-sns-po">'.$sns_po.'&nbsp;pocket'.(($sns_po > 1 ) ? 's' : null ).'</div>';
818
  }
819
  } else {
820
  // 外部リンクアイコンを表示させるプラグイン対応のため no_icon を付与
821
+ $url_noscheme = preg_replace('/.*\/\/(.*)/', '$1', $url ); // スキームを外す
822
  if ($this->options['sns-tw'] && $sns_tw > 0 ) {
823
+ $sns .= ' <a class="lkc-sns-tw no_icon" href="https://twitter.com/search?q=' .$url_noscheme.'&text='.esc_html($title ).'" target="_blank">'.$sns_tw.'&nbsp;tweet'.(($sns_tw > 1 ) ? 's' : null ).'</a>';
824
  }
825
  if ($this->options['sns-fb'] && $sns_fb > 0 ) {
826
+ $sns .= ' <a class="lkc-sns-fb no_icon" href="https://www.facebook.com/" target="_blank">'.$sns_fb.'&nbsp;share'.(($sns_fb > 1 ) ? 's' : null ).'</a>';
827
  }
828
  if ($this->options['sns-hb'] && $sns_hb > 0 ) {
829
+ $sns .= ' <a class="lkc-sns-hb no_icon" href="https://b.hatena.ne.jp/entry/s/' .$url_noscheme.'" target="_blank">'.$sns_hb.'&nbsp;user'.(($sns_hb > 1 ) ? 's' : null ).'</a>';
830
  }
831
  if ($this->options['sns-po'] && $sns_po > 0 ) {
832
+ $sns .= ' <a class="lkc-sns-po no_icon" href="https://getpocket.com/" target="_blank">'.$sns_po.'&nbsp;pocket'.(($sns_po > 1 ) ? 's' : null ).'</a>';
833
  }
834
  }
835
  if ($sns ) {
836
+ if ($this->options['sns-position'] == 1 ) {
837
+ $html_sns_title = '<div class="lkc-share">'.$sns.'</div>';
838
  } else {
839
+ $html_sns_info = '&nbsp;'.'<div class="lkc-share">'.$sns.'</div>';
840
  }
841
  }
842
  }
843
 
844
  // サムネイル
845
+ if ($html_thumbnail ) {
846
+ $html_thumbnail = '<figure class="lkc-thumbnail">'.$html_thumbnail.'</figure>';
847
  }
848
 
849
+ // 表示用のURL
850
+ $disp_url = $this->pz_DecodeURL($url, true );
 
 
851
 
852
  // 続きを読むボタン
853
+ if ($more && $more_text ) {
854
+ $html_moretag = '<div class="lkc-more">'.$html_a_op.'<div class="lkc-more-text">'.$more_text.'</div>'.$html_a_cl.'</div>';
855
  } else {
856
+ $html_moretag = null;
857
  }
858
 
859
  // リンク先URL
860
+ $html_url1 = null;
861
+ $html_url2 = null;
862
+ switch ($this->options['display-url'] ) {
863
+ case 1:
864
+ $html_url1 = '<div class="lkc-url">'.$html_st_op.$html_a_op.$disp_url.$html_st_cl.$html_a_cl.'</div>';
865
+ break;
866
+ case 2:
867
+ $html_url2 = '&nbsp;<div class="lkc-url-info">'.$html_st_op.$html_a_op.$disp_url.$html_st_cl.$html_a_cl.'</div>';
868
+ break;
869
  }
870
 
871
  // サイト情報
872
+ if ($info ) {
873
+ $added_info = $html_added_op.$info.$html_added_cl;
874
  } else {
875
  $added_info = null;
876
  }
877
+ if ($this->options['display-date'] && $post_date && $is_internal ) {
878
+ $info_date = '<div class="lkc-date">'.date('Y.m.d', strtotime($post_date ) ).'</div>';
879
  } else {
880
+ $info_date = null;
881
  }
882
+ $domain_info = '<div class="lkc-info">'.$html_a_op.$html_favicon.'<div class="lkc-domain"'.$site_title.'>'.$site_name.'</div>'.$added_info.$html_a_cl.$html_sns_info.$html_url2.$info_date.'</div>';
883
 
884
  // Google AMPに対応
885
+ 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"]) ) ) ) {
886
  // 簡易タグ作成
887
+ $tag = '<table border="1" cellspacing="0" cellpadding="4"><tbody></tr><tr><td>'.$excerpt.'<br>'.$html_a_op_all.$html_a_op.$title.$html_a_cl.$html_a_cl_all.' - '.$site_name.'</td></tr></tbody></table>';
888
  } else {
889
  // HTMLタグ作成
890
+ switch ($this->options['info-position'] ) {
891
+ case 1:
892
+ $tag = $html_wrap_op.$html_a_op_all.'<div class="lkc-card">'.$domain_info.'<div class="lkc-content">'.$html_a_op.$html_thumbnail.'<div class="lkc-title"><div class="lkc-title-text">'.$title.'</div>'.$html_a_cl.$html_sns_title.'</div>'.$html_url1.'<div class="lkc-excerpt">'.$excerpt.'</div>'.$html_moretag.'</div><div class="clear"></div></div>'.$html_a_cl_all.$html_wrap_cl;
893
  break;
894
+ case 2:
895
+ $tag = $html_wrap_op.$html_a_op_all.'<div class="lkc-card"><div class="lkc-content">'.$html_a_op.$html_thumbnail.'<div class="lkc-title"><div class="lkc-title-text">'.$title.'</div>'.$html_a_cl.$html_sns_title.'</div>'.$html_url1.'<div class="lkc-excerpt">'.$excerpt.'</div>'.$html_moretag.'</div>'.$domain_info.'<div class="clear"></div></div>'.$html_a_cl_all.$html_wrap_cl;
896
  break;
897
+ case 3:
898
+ $tag = $html_wrap_op.$html_a_op_all.'<div class="lkc-card"><div class="lkc-content">'.$html_a_op.$html_thumbnail.$domain_info.'<div class="lkc-title"><div class="lkc-title-text">'.$title.'</div>'.$html_a_cl.$html_sns_title.$html_url1.'</div><div class="lkc-excerpt">'.$excerpt.'</div>'.$html_moretag.'</div><div class="clear"></div></div>'.$html_a_cl_all.$html_wrap_cl;
899
  break;
900
  default:
901
+ $tag = $html_wrap_op.$html_a_op_all.'<div class="lkc-card"><div class="lkc-content">'.$html_a_op.$html_thumbnail.'<div class="lkc-title"><div class="lkc-title-text">'.$title.'</div>'.$html_a_cl.$html_sns_title.'</div>'.$html_url1.'<div class="lkc-excerpt">'.$excerpt.'</div>'.$html_moretag.'</div><div class="clear"></div></div>'.$html_a_cl_all.$html_wrap_cl;
902
  }
903
  }
904
 
905
  // 引用文扱い
906
+ if ($this->options['blockquote'] ) {
907
+ $tag = '<div class="'.$class_id.'"><blockquote class="lkc-quote">'.$tag.'</blockquote></div>';
908
  } else {
909
+ $tag = '<div class="'.$class_id.'">'.$tag.'</div>';
910
  }
911
 
912
  return $tag;
913
  }
914
 
915
+ // URLのエンコード(DB格納用のURL作成)
916
+ private function pz_EncodeURL($url = null, $sanitize = false ) {
917
+ // URL指定なし
918
+ if (!$url ) {
919
+ return null;
920
+ }
921
+
922
+ // URLのサニタイズ
923
+ if ($sanitize ) {
924
+ $url = $this->pz_SanitizeURL($url );
925
+ if (!$url ) {
926
+ return null;
927
+ }
928
+ }
929
+
930
+ // 日本語がある
931
+ if (!preg_match("/^[\x20-\x7E]+$/", $url ) ) {
932
+ // 国際ドメイン対応(日本語ドメイン対応)
933
+ $url_info = $this->pz_GetURLInfo($url );
934
+ if (function_exists('idn_to_ascii' ) && !preg_match("/^[\x20-\x7E]+$/", $url_info['domain'] ) ) {
935
+ $domain_before = (isset($url_info['scheme'] ) ? $url_info['scheme'] : null).'://'.(isset($url_info['domain'] ) ? $url_info['domain'] : null);
936
+ $domain_after = (isset($url_info['scheme'] ) ? $url_info['scheme'] : null).'://'.(isset($url_info['domain'] ) ? idn_to_ascii($url_info['domain'] ) : null);
937
+ $url = $domain_after.mb_substr($url, mb_strlen($domain_before ) ); // URLのスキーム+ドメイン部分だけ入れ替え
938
+ }
939
+
940
+ // 日本語がある
941
+ if (!preg_match("/^[\x20-\x7E]+$/", $url ) ) {
942
+ $url = $this->pz_EncodeURI($url ); // エンティティ化
943
+ }
944
+ }
945
+
946
+ return $url;
947
+ }
948
+
949
+ // URLのデコード(表示用URL作成)
950
+ private function pz_DecodeURL($url = null, $sanitize = false ) {
951
+ // URL指定なし
952
+ if (!$url ) {
953
+ return null;
954
+ }
955
+
956
+ // URLのサニタイズ
957
+ if ($sanitize ) {
958
+ $url = $this->pz_SanitizeURL($url );
959
+ if (!$url ) {
960
+ return null;
961
+ }
962
+ }
963
+
964
+ // 国際ドメイン対応(日本語ドメイン対応)
965
+ $url_info = $this->pz_GetURLInfo($url );
966
+ if (function_exists('idn_to_utf8' ) && substr($url_info['domain'], 0, 4 ) == 'xn--' ) {
967
+ $domain_before = (isset($url_info['scheme'] ) ? $url_info['scheme'] : null).'://'.(isset($url_info['domain'] ) ? $url_info['domain'] : null);
968
+ $domain_after = (isset($url_info['scheme'] ) ? $url_info['scheme'] : null).'://'.(isset($url_info['domain'] ) ? idn_to_utf8($url_info['domain'] ) : null);
969
+ $url = $domain_after.mb_substr($url, mb_strlen($domain_before ) ); // URLのスキーム+ドメイン部分だけ入れ替え
970
+ }
971
+
972
+ // エンティティ文字のデコード
973
+ $url = rawurldecode($url );
974
+
975
+ return $url;
976
+ }
977
+
978
+ // URLのサニタイズ
979
+ private function pz_SanitizeURL($url = null ) {
980
+ if ($this->options['debug-mode'] ) {
981
+ echo '<!-- Pz-LkC [pz_SanitizeURL]'.PHP_EOL;
982
  echo '$url='.html_entity_decode($url ).PHP_EOL;
983
  echo '/-->'.PHP_EOL;
984
  }
985
 
986
+ // URL指定なし
987
  if (!$url ) {
988
+ return null;
989
+ }
990
+
991
+ // クォート文字の除去
992
+ $url = preg_replace('/\A[  \'\"‘’“”″]+|[  \'\"‘’“”″]+\z/', '', $url );
993
+ $url = str_replace('&#8221;', '', $url );
994
+
995
+ // 日本語がある
996
+ if (!preg_match("/^[\x20-\x7E]+$/", $url ) ) {
997
+ $multibyte = true;
998
+ $url = $this->pz_EncodeURL($url, false);
999
+ } else {
1000
+ $multibyte = false;
1001
  }
1002
 
1003
+ // Aタグがあったら最初にあるAタグのhrefを持ってくる
1004
+ if (preg_match('/<a .*href\s*=\s*[\'"](https?:\/\/[-_\.!~*()a-zA-Z0-9;\/?:\@&=+\$,%#]+)[\'"].*<\/a>/sui', $url, $m ) ) {
1005
+ $url = $m[1];
1006
+ }
1007
+
1008
+ // 最初にあるURLっぽいのを持ってくる
1009
+ if (preg_match('/(https?:\/\/[-_\.!~*()a-zA-Z0-9;\/?:\@&=+\$,%#]+)[\'"]?/sui', $url, $m ) ) {
1010
+ $url = $m[1];
1011
+ }
1012
+
1013
+ // 余計な文字を除去
1014
+ $url = esc_url($url );
1015
+
1016
+ // 最後のスラッシュの除去
1017
+ switch ($this->options['trail-slash'] ) {
1018
+ case 1: // URLがドメイン名だけの場合、最後のスラッシュを除外する
1019
+ $url_info = $this->pz_GetURLInfo($url );
1020
+ if (!isset($url_info['path'] ) || $url_info['path'] == '/' ) {
1021
+ $url = rtrim($url, '/' );
1022
  }
1023
  break;
1024
+ case 2: // 常に最後のスラッシュを除外する
1025
+ $url = rtrim($url, '/' );
1026
  break;
1027
  }
1028
 
1029
+ // 日本語がある
1030
+ if ($multibyte ) {
1031
+ $url = $this->pz_DecodeURL($url, false);
 
 
1032
  }
1033
 
1034
  return $url;
1035
  }
1036
 
1037
  // 内部サイト・外部サイトの判断
1038
+ private function pz_GetURLInfo($url ) {
1039
+ // URLの指定なし
1040
+ if (!isset($url ) ) {
1041
+ return null;
1042
+ }
1043
+
1044
+ // 内部リンク判定
1045
+ $domain_url = $this->home_url; // ドメインURL
1046
+ if (mb_substr($url, 0, mb_strlen($domain_url ) ) == $domain_url ) {
1047
+ $is_external = false;
1048
+ $is_samepage = false;
1049
+ $is_internal = true; // 内部リンク
1050
+ $url_m = parse_url($domain_url ); // URLパース(ドメイン名などを抽出)
1051
+ $scheme = isset($url_m['scheme'] ) ? $url_m['scheme'] : null; // スキーム
1052
+ $domain = mb_substr($domain_url, mb_strlen($scheme ) + 3 ); // ドメイン
1053
+ if (get_permalink() == $url ) {
1054
+ $is_samepage = true; // 同一ページリンク
1055
  }
1056
  } else {
1057
+ $is_external = true; // 外部リンク
1058
+ $is_samepage = false;
1059
+ $is_internal = false;
1060
+ $url_m = parse_url($url ); // URLパース(ドメイン名などを抽出)
1061
+ $scheme = isset($url_m['scheme'] ) ? $url_m['scheme'] : null; // スキーム
1062
+ $scheme_c = $scheme ? $scheme.':' : null;
1063
+ $domain = isset($url_m['host'] ) ? $url_m['host'] : null; // ドメイン名
1064
+ $domain_url = isset($url_m['host'] ) ? $scheme_c.'//'.$url_m['host'] : null; // ドメインURL
1065
+ }
1066
+
1067
+ // サブディレクトリ型マルチサイト対応(内部リンク判定の場合のみ)
1068
+ if ($is_internal && function_exists('is_multisite' ) && is_multisite() && function_exists('is_subdomain_install' ) && !is_subdomain_install() && function_exists('is_main_site' ) && is_main_site() ) {
1069
+ $blog_myid = get_current_blog_id();
1070
+ $blog_id = 0;
1071
+ for ($i = 1; $i <= 1000; $i++ ) {
1072
+ $blog_url = get_site_url($i );
1073
+ if (!$blog_url ) {
1074
+ break;
1075
+ }
1076
+ if ($i <> $blog_myid ) {
1077
+ if (mb_substr($url, 0, mb_strlen($blog_url ) ) == $blog_url ) {
1078
+ $domain_url = $blog_url;
1079
+ $domain = preg_replace('/.*\/\/(.*)/', '$1', $blog_url );
1080
+ $is_external = true; // 外部リンク
1081
+ $is_samepage = false;
1082
+ $is_internal = false;
1083
+ break;
1084
  }
 
1085
  }
1086
+ }
 
 
 
1087
  }
1088
+
1089
+ // 返り値
1090
+ $ret_arr['is_external'] = $is_external; // 外部リンク
1091
+ $ret_arr['is_internal'] = $is_internal; // 内部リンク
1092
+ $ret_arr['is_samepage'] = $is_samepage; // 同一ページリンク
1093
+ $ret_arr['scheme'] = $scheme; // スキーム
1094
+ $ret_arr['domain'] = $domain; // ドメイン
1095
+ $ret_arr['domain_url'] = $domain_url; // ドメインURL
1096
+ $ret_arr['port'] = isset($url_m['port'] ) ? $url_m['port'] : null; // ポート
1097
+ $ret_arr['user'] = isset($url_m['user'] ) ? $url_m['user'] : null; // ユーザー名
1098
+ $ret_arr['pass'] = isset($url_m['pass'] ) ? $url_m['pass'] : null; // パスワード
1099
+ $ret_arr['path'] = isset($url_m['path'] ) ? $url_m['path'] : null; // パス(ドメイン名以降)
1100
+ $ret_arr['query'] = isset($url_m['query'] ) ? $url_m['query'] : null; // クエスチョンマーク ? 以降
1101
+ $ret_arr['fragment'] = isset($url_m['fragment'] ) ? $url_m['fragment'] : null; // ハッシュマーク # 以降
1102
+
1103
+ return $ret_arr;
1104
  }
1105
 
1106
  // 相対パスをURLにする
1107
+ private function pz_RelToURL($base_url = null, $rel_path = null ) {
1108
+ if ($this->options['debug-mode'] ) {
1109
+ echo '<!-- Pz-LkC [pz_LinkType]'.PHP_EOL;
1110
+ echo '$base_url='.esc_html($base_url ).PHP_EOL;
1111
+ echo '$rel_path='.esc_html($rel_path ).PHP_EOL;
1112
+ echo '/-->'.PHP_EOL;
1113
  }
1114
+
1115
+ // ベースURLをパース
1116
+ $base_url = $this->Pz_SanitizeURL($base_url ); // 念のためサニタイズ
1117
+ $info_base = $this->Pz_GetURLInfo($base_url );
1118
+ $info_rel = $this->Pz_GetURLInfo($rel_path );
1119
+
1120
+ // 絶対パスだった場合(スキームあり)
1121
+ if ($info_rel['scheme'] ) {
1122
+ $return_url = $rel_path;
1123
+ return $return_url;
1124
  }
1125
+
1126
+ // 絶対パスだった場合(スキーム省略)
1127
+ if (substr($rel_path, 0, 2 ) == '//' ) {
1128
+ $return_url = $info_base['scheme'].':'.$rel_path;
1129
+ return $return_url;
1130
+ }
1131
+
1132
+ // ルート指定
1133
+ if (substr($rel_path, 0, 1 ) == '/' ) {
1134
+ $return_url = $info_base['domain_url'].$rel_path;
1135
+ return $return_url;
1136
+ }
1137
+
1138
+ // とりあえずくっつける
1139
+ $return_url = trim($base_url, '/' ).'/'.$rel_path;
1140
+ return $return_url;
1141
+ }
1142
+
1143
+ // 日本語URLをHTMLエンコードする
1144
+ private function pz_EncodeURI($url ) {
1145
+ $pattern =
1146
+ array(
1147
+ // UnEscaped
1148
+ '%2D'=>'-', '%5F'=>'_', '%2E'=>'.', '%21'=>'!', '%7E'=>'~', '%2A'=>'*', '%27'=>"'", '%28'=>'(', '%29'=>')',
1149
+ // Reserved
1150
+ '%3B'=>';', '%2C'=>',', '%2F'=>'/', '%3F'=>'?', '%3A'=>':', '%40'=>'@', '%26'=>'&', '%3D'=>'=', '%2B'=>'+', '%24'=>'$',
1151
+ // Score
1152
+ '%23'=>'#'
1153
+ );
1154
+ $url = rawurlencode($url );
1155
+ $url = strtr($url, $pattern);
1156
+ return $url;
1157
  }
1158
 
1159
  // ソーシャルカウント取得
1160
  private function pz_RenewSNSCount($data ) {
1161
+ if ($this->options['debug-mode'] ) {
1162
+ echo '<!-- Pz-LkC [pz_RenerSNSCount]'.PHP_EOL;
1163
+ echo '$data="'.esc_html(print_r($data, true ) ).'"<br>';
1164
+ echo '/-->'.PHP_EOL;
1165
  }
1166
+ if (!$this->options['sns-position'] ) {
1167
+ return null;
1168
  }
1169
+ if (!isset($data ) || !is_array($data ) ) {
1170
+ return null;
 
 
1171
  }
1172
+
1173
+ $data = $this->pz_GetCache($data );
1174
+ if (!isset($data ) || !is_array($data ) ) {
1175
+ return null;
1176
+ }
1177
+
1178
  // ソーシャルカウント
1179
  $sns_renew = false;
1180
  $update_cnt = false;
1181
+
1182
  // タイムオーバー
1183
+ $opt = array('timeout' => 30 );
1184
+
1185
  // 保存期間満了でソーシャルカウントをリセット
1186
+ if ($this->now > $data['sns_nexttime'] && $data['update_result'] >= 100 && $data['update_result'] < 400 ) {
1187
+ $sns_renew = true;
1188
  }
1189
+
1190
  // エンコードURL
1191
+ $url_raw = rawurlencode($data['url'] );
1192
+
1193
  // Twitter Digitminimiのcount.jsoonを使用
1194
+ if (isset($this->options['sns-tw'] ) && !is_null($this->options['sns-tw'] ) ) {
1195
+ $count_before = isset($data['sns_twitter'] ) ? $data['sns_twitter'] : -1;
1196
+ if ($sns_renew || $count_before < 0 ) {
1197
+ $result = wp_remote_get('https://jsoon.digitiminimi.com/twitter/count.json?url=' .$url_raw, $opt );
1198
+ if (isset($result ) && !is_wp_error($result ) && $result['response']['code'] == 200 ) {
1199
+ $json = json_decode($result['body'] );
1200
+ $count = intval($json->count );
1201
+ if ($count > $count_before ) {
1202
+ $data['sns_twitter'] = $count;
1203
+ $update_cnt = true;
1204
  }
1205
  }
1206
  }
1207
  }
1208
+
1209
  // facebook
1210
+ //if (isset($this->options['sns-fb'] ) && !is_null($this->options['sns-fb'] ) ) {
1211
+ // $count_before = intval(isset($data['sns_facebook'] ) ? $data['sns_facebook'] : -1 );
1212
+ // if ($sns_renew || $count_before < 0 ) {
1213
+ // $result = wp_remote_get('https://graph.facebook.com?fields=og_object{engagement}&id=' .$url_raw, $opt );
1214
+ // if (isset($result ) && !is_wp_error($result ) && $result['response']['code'] == 200 ) {
1215
+ // $json = json_decode($result['body'] );
1216
+ // $count = intval($json->{'og_object'}->{'engagement'}->{'count'});
1217
+ // if ($count > $count_before ) {
1218
+ // $data['sns_facebook'] = $count;
1219
+ // $update_cnt = true;
1220
  // }
1221
  // }
1222
  // }
1223
  //}
1224
+
1225
  // はてなブックマーク
1226
+ if (isset($this->options['sns-hb'] ) && !is_null($this->options['sns-hb'] ) ) {
1227
+ $count_before = isset($data['sns_hatena'] ) ? $data['sns_hatena'] : -1;
1228
+ if ($sns_renew || $count_before < 0 ) {
1229
+ $result = wp_remote_get('http://api.b.st-hatena.com/entry.count?url=' .$url_raw, $opt );
1230
+ if (isset($result ) && !is_wp_error($result ) && $result['response']['code'] == 200 ) {
1231
+ $count = intval($result['body'] );
1232
+ if ($count > $count_before ) {
1233
+ $data['sns_hatena'] = $count;
1234
+ $update_cnt = true;
1235
  }
1236
  }
1237
  }
1238
  }
1239
+
1240
  // Pocket
1241
+ if (isset($this->options['sns-po'] ) && !is_null($this->options['sns-po'] ) ) {
1242
+ $count_before = isset($data['sns_pocket'] ) ? $data['sns_pocket'] : -1;
1243
+ if ($sns_renew || $count_before < 0 ) {
1244
+ $result = wp_remote_get('https://widgets.getpocket.com/api/saves?url=' .$url_raw, $opt );
1245
+ if (isset($result ) && !is_wp_error($result ) && $result['response']['code'] == 200 ) {
1246
+ $json = json_decode($result['body'] );
1247
+ $count = intval($json->saves );
1248
+ if ($count > $count_before ) {
1249
+ $data['sns_pocket'] = $count;
1250
+ $update_cnt = true;
1251
  }
1252
  }
1253
  }
1254
  }
1255
+
1256
  // 登録してから一週間までは毎日、それ以降は週一回更新(取得が固まらないようにランダム時間付与)
1257
+ $data['sns_time'] = $this->now;
1258
+ if ($update_cnt || ($this->now - $data['regist_time'] < WEEK_IN_SECONDS ) ) {
1259
+ $data['sns_nexttime'] = $this->now + DAY_IN_SECONDS + rand(0, DAY_IN_SECONDS ); // 1day + 0-24h
1260
  } else {
1261
+ $data['sns_nexttime'] = $this->now + WEEK_IN_SECONDS + rand(0, DAY_IN_SECONDS ); // 7days + 0-24h
1262
  }
1263
  // MINUTE_IN_SECONDS = 60
1264
  // HOUR_IN_SECONDS = 60 * MINUTE_IN_SECONDS = 3600
1265
  // DAY_IN_SECONDS = 24 * HOUR_IN_SECONDS = 86400
1266
  // WEEK_IN_SECONDS = 7 * DAY_IN_SECONDS = 604800
1267
+ // YEAR_IN_SECONDS = 365 * DAY_IN_SECONDS
1268
 
1269
+ // DBの宣言
1270
  global $wpdb;
1271
+
1272
+ // DB更新
1273
+ $result = $wpdb->update($this->db_name, $data, array('id' => $data['id'] ) );
1274
+
1275
+ return $data;
 
 
 
 
 
 
 
 
 
 
 
1276
  }
1277
 
1278
  // キャッシュデータを取得
1279
  private function pz_GetCache($data ) {
1280
+ if (!isset($data ) || !is_array($data ) ) {
1281
+ return null;
1282
+ }
1283
+ global $wpdb;
1284
+ if (!empty($data['url'] ) ) {
1285
+ $url = $data['url'];
1286
+ $data = $wpdb->get_row($wpdb->prepare("SELECT * FROM $this->db_name WHERE url=%s", $url ) );
1287
+ } elseif (isset($data['id'] ) && !is_null($data['id'] ) ) {
1288
+ $data_id = intval($data['id'] );
1289
+ $data = $wpdb->get_row($wpdb->prepare("SELECT * FROM $this->db_name WHERE id=%d", $data_id ) );
1290
  } else {
1291
+ return null;
1292
  }
1293
+ if ($wpdb->last_error ) { // DBエラーのとき、初期化する
1294
  $this->activate();
1295
  }
1296
+ if (is_wp_error($data ) ) {
1297
+ return null;
1298
  }
1299
  return (array) $data; // Arrayに直して返す
1300
  }
1301
 
1302
  // キャッシュデータを保存
1303
  private function pz_SetCache($data ) {
1304
+ // 項目が空っぽ
1305
+ if (!isset($data ) || !is_array($data ) ) {
1306
+ return null;
1307
  }
1308
+ if (!isset($data['url'] ) || !$data['url'] ) {
1309
+ return null;
1310
  }
1311
+
1312
  // リンク先URL
1313
+ $url = $this->pz_EncodeURL($data['url'] ,true );
1314
+ $data['url'] = $url;
1315
+
1316
  // URLからキーの生成
1317
+ if (!isset($data['url_key'] ) || !$data['url_key'] ) {
1318
+ $data['url_key'] = hash('sha256', $url, true );
1319
  }
1320
+
1321
+ // ID
1322
+ if (isset($data['id'] ) && !$data['id'] ) {
1323
+ unset($data['id']);
1324
+ }
1325
+
1326
+ // URL解析(自サイトチェック)
1327
+ $url_info = $this->Pz_GetURLInfo($url );
1328
+ $data['scheme'] = $url_info['scheme']; // スキーム
1329
+ $data['domain'] = $url_info['domain']; // ドメイン名
1330
+
1331
+ // 記事内容等
1332
+ $data['site_name'] = isset($data['site_name'] ) ? $data['site_name'] : null; // リンク先:サイト名称
1333
+ $data['title'] = isset($data['title'] ) ? $data['title'] : null; // リンク先:タイトル
1334
+ $data['excerpt'] = isset($data['excerpt'] ) ? $data['excerpt'] : null; // リンク先:抜粋文
1335
+ $data['thumbnail'] = isset($data['thumbnail'] ) ? $data['thumbnail'] : null; // リンク先:サムネイルURL
1336
+ $data['favicon'] = isset($data['favicon'] ) ? $data['favicon'] : null; // リンク先:サイトアイコンURL
1337
+ $data['charset'] = isset($data['charset'] ) ? $data['charset'] : 'Unknown'; // リンク先:文字コード
1338
+ if (!isset($data['update_result'] ) || $data['update_result'] <= 0 ) {
1339
+ $data['update_result'] = 200;
1340
+ }
1341
+
1342
  // 登録時情報
1343
+ if (!isset($data['regist_time'] ) || !$data['regist_time'] ) {
1344
+ $data['regist_title'] = $data['title']; // 登録時:タイトル
1345
+ $data['regist_excerpt'] = $data['excerpt']; // 登録時:抜粋文
1346
+ $data['regist_charset'] = $data['charset']; // 登録時:文字コード
1347
+ $data['regist_result'] = $data['update_result']; // 登録時:結果コード
1348
  $data['regist_time'] = $this->now;
1349
  }
1350
+
1351
+ // 日本語項目のエンティティ文字を出コード
1352
+ $data['title'] = html_entity_decode($data['title'] ); // リンク先:タイトル
1353
+ $data['excerpt'] = html_entity_decode($data['excerpt'] ); // リンク先:抜粋文
1354
+ $data['regist_title'] = html_entity_decode($data['regist_title'] ); // 登録時:タイトル
1355
+ $data['regist_excerpt'] = html_entity_decode($data['regist_excerpt'] ); // 登録時:抜粋文
1356
+
1357
+ // 生存確認
1358
+ if (!isset($data['alive_time'] ) || !$data['alive_time'] ) {
1359
+ $data['alive_result'] = $data['update_result'];
1360
+ $data['alive_time'] = $this->now;
1361
+ $data['alive_nexttime'] = $this->now + WEEK_IN_SECONDS * 4 + rand(0, DAY_IN_SECONDS );
1362
+ }
1363
+
1364
+ // SNS関連
1365
+ $data['sns_twitter'] = isset($data['sns_twitter'] ) ? $data['sns_twitter'] : -1; // SNS:Twitter
1366
+ $data['sns_facebook'] = isset($data['sns_facebook'] ) ? $data['sns_facebook'] : -1; // SNS:facebook
1367
+ $data['sns_hatena'] = isset($data['sns_hatena'] ) ? $data['sns_hatena'] : -1; // SNS:はてなブックマーク
1368
+ $data['sns_pocket'] = isset($data['sns_pocket'] ) ? $data['sns_pocket'] : -1; // SNS:ポケット
1369
+ $data['sns_nexttime'] = isset($data['sns_nexttime'] ) ? $data['sns_nexttime'] : $this->now; // SNS:次回取得日時
1370
+ $data['sns_time'] = isset($data['sns_time'] ) ? $data['sns_time'] : $this->now; // SNS:最終取得日時
1371
+
1372
+ // 記事IDの再取得
1373
+ global $wpdb;
1374
+ $use_post_id_t = $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'] ) );
1375
+ if ($use_post_id_t ) {
1376
+ $use_post_id_t = (array) $use_post_id_t[0];
1377
+ $use_post_id_t = array_unique($use_post_id_t );
1378
+ $use_post_id_t = array_values($use_post_id_t );
1379
+ } else {
1380
+ $use_post_id_t = array();
1381
+ }
1382
+ $data['use_post_id1'] = isset($use_post_id_t[0]) ? $use_post_id_t[0] : null;
1383
+ $data['use_post_id2'] = isset($use_post_id_t[1]) ? $use_post_id_t[1] : null;
1384
+ $data['use_post_id3'] = isset($use_post_id_t[2]) ? $use_post_id_t[2] : null;
1385
+ $data['use_post_id4'] = isset($use_post_id_t[3]) ? $use_post_id_t[3] : null;
1386
+ $data['use_post_id5'] = isset($use_post_id_t[4]) ? $use_post_id_t[4] : null;
1387
+ $data['use_post_id6'] = isset($use_post_id_t[5]) ? $use_post_id_t[5] : null;
1388
+
1389
+ // 更新内容
1390
+ $data['mod_title'] = ($data['title'] <> $data['regist_title'] ? true : false ); // 更新:登録後からタイトル変更有無
1391
+ $data['mod_excerpt'] = ($data['title'] <> $data['regist_title'] ? true : false ); // 更新:登録後から抜粋文変更有無
1392
+
1393
  // 最終更新日時
1394
+ $data['update_time'] = $this->now;
1395
+
1396
+ // DB更新キー取得
1397
+ if (!isset($data['id'] ) || !$data['id']) {
1398
+ $now = $this->pz_GetCache(array('url' => $data['url'] ) );
1399
+ if (isset($now['id'] ) ) {
1400
+ $data['id'] = $now['id'];
1401
+ }
1402
+ }
1403
+
1404
  // DB更新
1405
+ global $wpdb;
1406
+ $result = null;
1407
+ if (isset($data['id'] ) ) {
1408
+ $result = $wpdb->update($this->db_name, $data, array('id' => $data['id'] ) );
 
 
 
 
 
 
 
 
 
 
 
 
1409
  }
1410
+
1411
  // DB更新失敗の場合、挿入
1412
+ if (!$result ) {
 
 
1413
  // 新規の場合、IDをクリア
1414
+ unset($data['id'] );
1415
+ $result = $wpdb->insert($this->db_name, $data );
 
 
 
1416
  // DB挿入失敗の場合、日本語項目(サイト名)をクリアして挿入
1417
+ if (!$result ) {
1418
+ unset($data['site_name'] );
1419
+ $result = $wpdb->insert($this->db_name, $data );
 
 
 
1420
  // DB挿入失敗の場合、日本語項目(概要文)をクリアして挿入
1421
+ if (!$result ) {
1422
+ unset($data['excerpt'] );
1423
+ $result = $wpdb->insert($this->db_name, $data );
 
 
 
1424
  // DB挿入失敗の場合、日本語項目(タイトル)をクリアして挿入
1425
+ if (!$result ) {
1426
+ unset($data['title'] );
1427
+ $result = $wpdb->insert($this->db_name, $data );
 
 
 
1428
  // DB挿入失敗の場合、諦める
1429
+ if (!$result ) {
1430
+ return null;
1431
  }
1432
  }
1433
  }
1434
  }
1435
  }
1436
+ return $this->pz_GetCache($data ); // 登録された内容を読み直す
 
1437
  }
1438
 
1439
  // キャッシュデータを削除
1440
  private function pz_DelCache($data ) {
1441
+ global $wpdb;
1442
+ if (!isset($data ) || !is_array($data ) ) {
1443
+ return null;
1444
+ }
1445
+ if (isset($data['id'] ) ) {
1446
+ $result = $wpdb->delete($this->db_name, array('id' => $data['id'] ), array('%d' ) );
1447
+ if ($result ) {
1448
+ return true;
1449
+ }
1450
+ }
1451
+ if (isset($data['url'] ) ) {
1452
+ $result = $wpdb->delete($this->db_name, array('url' => $data['url'] ), array('%s' ) );
1453
+ if ($result ) {
1454
+ return true;
1455
+ }
1456
+ }
1457
+ return null;
1458
  }
1459
 
1460
+ // 内部リンク・記事情報取得
1461
+ private function pz_GetPost($data ) {
1462
+ // 初期化
1463
+ $url = null;
1464
+ $post_id = null;
1465
+ $site_name = null;
1466
+ $domain_url = null;
1467
+ $domain = null;
1468
+ $title = null;
1469
+ $excerpt = null;
1470
+ $thumbnail = null;
1471
+ $favicon = null;
1472
+ $post_date = 0;
1473
+
1474
  // サイト名取得
1475
+ $site_name = get_bloginfo('name' );
1476
+
1477
  // ドメイン名
1478
+ $domain = $this->domain;
1479
+ $domain_url = $this->domain_url;
1480
+
 
 
 
 
 
1481
  // サイトアイコン
1482
+ if (function_exists('has_site_icon' ) && has_site_icon() ) {
1483
+ $favicon = get_site_icon_url(16, null, 0 );
 
 
1484
  }
1485
+
 
 
 
 
1486
  // 記事内容
1487
  $url = $data['url'];
1488
  $post_id = url_to_postid($url ); // 記事IDを取得
1489
+ if ($this->options['debug-mode'] ) {
1490
  echo '<!-- Pz-LkC [PID='.$post_id.'] /-->'.PHP_EOL;
1491
  }
1492
+
1493
+ if (!$post_id && $this->options['flg-get-pid'] ) {
1494
+ $url = $this->Pz_GetRedirURL($data ); // 本当の記事URLを取得
1495
  $post_id = url_to_postid($url ); // 記事IDを取得
1496
+ if ($this->options['debug-mode'] ) {
1497
  echo '<!-- Pz-LkC [PID='.$post_id.'(REDIR)] /-->'.PHP_EOL;
1498
  }
1499
  }
1500
+
1501
+ if ($post_id ) {
1502
+ // 記事IDが取得できた場合
1503
+ $update_result = 200; // 外部取得と同じコードをセット
1504
+ $post = get_post($post_id ); // 記事情報
1505
+ $title = $post->post_title; // 記事タイトル
1506
+ $excerpt = $post->post_content; // 記事内容から抜粋
1507
+ if ($this->options['in-get'] == 1 && $post->post_excerpt ) {
1508
+ $excerpt = $post->post_excerpt; // 抜粋文
1509
+ }
1510
+ $post_date = $post->post_date; // 投稿日
1511
+ $thumbnail_id = get_post_thumbnail_id($post_id ); // サムネイル
1512
+ if ($thumbnail_id ) {
1513
+ $attach = wp_get_attachment_image_src($thumbnail_id, ($this->options['in-thumbnail-size'] ? $this->options['in-thumbnail-size'] : 'thumbnail'), true );
1514
+ if (isset($attach ) && count($attach ) > 3 && isset($attach[0] ) ) {
1515
+ $thumbnail = $attach[0];
1516
+ if (preg_match('/.*(\/\/.*)/', $thumbnail, $m ) ) { // スキームを外す
1517
+ $thumbnail = $m[1];
1518
+ }
 
 
 
 
 
1519
  }
1520
  }
1521
  } else {
1522
+ // 記事IDが取得できなかった場合
1523
+ $update_result = 404;
1524
+ $title = get_bloginfo('name' );
1525
+ $excerpt = get_bloginfo('description' );
1526
+ $post_date = 0;
1527
+ $thumbnail = null;
1528
+
1529
  // カテゴリ ページの処理
1530
+ $cat_dir = get_option('category_base' );
1531
+ $cat_url = $this->domain_url.'/'.($cat_dir ? $cat_dir : 'category' ).'/';
1532
  $cat_len = mb_strlen($cat_url );
1533
+ if (mb_substr($url, 0, $cat_len ) == $cat_url ) {
1534
+ $cat_slug = mb_substr($url, $cat_len );
1535
  $cat_data = get_category_by_slug($cat_slug );
1536
+ if ($cat_data ) {
1537
+ $cat_count = ($cat_data->count - 0 );
1538
+ $title = __('Category', $this->text_domain ).' '.__('', $this->text_domain ).$cat_data->name.__('', $this->text_domain );
1539
+ $excerpt = __('(', $this->text_domain ).__('Count', $this->text_domain ).':'.($cat_data->count - 0 ).__(')', $this->text_domain ).' '.$cat_data->description;
1540
+ $update_result = 200;
1541
+ } else {
1542
+ $title = __('Category', $this->text_domain ).' '.__('‘', $this->text_domain ).rawurldecode($cat_slug ).__('’', $this->text_domain );
1543
+ $excerpt = __('Not Found', $this->text_domain );
1544
+ $update_result = 403;
1545
  }
1546
  } else {
1547
  // タグ ページの処理
1548
+ $cat_dir = get_option('tag_base' );
1549
+ $cat_url = $this->domain_url.'/'.($cat_dir ? $cat_dir : 'tag' ).'/';
1550
  $cat_len = mb_strlen($cat_url );
1551
+ if (mb_substr($url, 0, $cat_len ) == $cat_url ) {
1552
+ $cat_slug = mb_substr($url, $cat_len );
1553
+ $cat_data = get_tags(array('slug' => $cat_slug ) );
1554
+ if ($cat_data ) {
1555
+ $title = __('Tag', $this->text_domain ).' '.__('', $this->text_domain ).$cat_data[0]->name.__('', $this->text_domain );
1556
+ $excerpt = __('(', $this->text_domain ).__('Count', $this->text_domain ).':'.($cat_data[0]->count - 0 ).__(')', $this->text_domain ).' '.$cat_data[0]->description;
1557
+ $update_result = 200;
1558
+ } else {
1559
+ $title = __('Tag', $this->text_domain ).' '.__('‘', $this->text_domain ).rawurldecode($cat_slug ).__('’', $this->text_domain );
1560
+ $excerpt = __('Not Found', $this->text_domain );
1561
+ $update_result = 403;
1562
  }
1563
  } else {
1564
+ if (!$post_id && $this->options['flg-get-pid'] ) {
1565
  $data = $this->Pz_GetCURL($data ); // 外部サイトとして読み込み
1566
  return $data;
1567
  }
1568
  }
1569
  }
1570
  }
1571
+
1572
  // タイトル整形
1573
+ if ($title ) {
1574
+ $str = $title;
1575
+ $str = strip_tags($str ); // タグの除去
1576
+ $str = str_replace(array("\r", "\n"), null, $str ); // 改行削除
1577
+ $str = esc_html($str ); // 念のためエスケープ
1578
+ $str = mb_strimwidth($str, 0, 200, '...' ); // 保管用のタイトルは200文字で切る
1579
+ $title = $str;
1580
  }
1581
+
1582
  // 抜粋文整形
1583
+ if ($excerpt ) {
1584
+ $str = $excerpt;
1585
+ $str = strip_tags($str ); // タグの除去
1586
+ $str = preg_replace('/<!--more-->.+/is', null, $str ); // moreタグ以降削除
1587
+ $str = preg_replace('/\[[^]]*\]/', null, $str ); // ショートコードすべて除去
1588
+ $str = str_replace(array("\r", "\n"), null, $str ); // 改行削除
1589
+ $str = esc_html($str ); // 念のためエスケープ
1590
+ $str = mb_strimwidth($str, 0, 500, '...' ); // 保管用の記事内容は500文字で切る
1591
+ $excerpt = $str;
1592
  }
 
 
 
 
 
 
 
1593
 
1594
  // データセット
1595
+ if (isset($data['title'] ) && $data['title'] == $title ) {
1596
+ $before['mod_title'] = false;
1597
  } else {
1598
+ $before['mod_title'] = true;
1599
  }
1600
+ if (isset($data['excerpt'] ) && $data['excerpt'] == $excerpt ) {
1601
+ $before['mod_excerpt'] = false;
1602
  } else {
1603
+ $before['mod_excerpt'] = true;
1604
  }
1605
+ if (!isset($data['use_post_id1'] ) ) {
1606
  $data['use_post_id1'] = get_the_ID();
1607
  }
1608
+ $url_info = $this->Pz_GetURLInfo($url ); // URL解析(自サイトチェック)
1609
+ $data['scheme'] = $url_info['scheme']; // スキーム
1610
+ $data['domain'] = $url_info['domain']; // ドメイン名
1611
  $data['site_name'] = $site_name;
1612
  $data['title'] = $title;
1613
  $data['excerpt'] = $excerpt;
 
1614
  $data['thumbnail'] = $thumbnail;
1615
  $data['favicon'] = $favicon;
1616
  $data['charset'] = 'UTF-8';
1617
+ $data['update_result'] = $update_result;
1618
+ $data['alive_result'] = $update_result;
1619
  $data['favicon'] = $favicon;
1620
+
1621
+ return $data;
1622
  }
1623
 
1624
  // リダイレクト先URL取得
1625
+ private function pz_GetRedirURL($data ) {
1626
  $url = $data['url'];
1627
+ $error = false;
1628
+ if (function_exists('curl_init' ) ) { // cURLを使用する
1629
+ $update_result = 0;
1630
+ $ch = curl_init($url );
1631
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true ); // データで取得
1632
+ curl_setopt($ch, CURLOPT_NOBODY, true ); // ヘッダのみ取得
1633
+ curl_setopt($ch, CURLOPT_TIMEOUT, 120 ); // タイムアウト
1634
+ curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true ); // リダイレクトを処理する
1635
+ curl_setopt($ch, CURLOPT_MAXREDIRS, 5 ); // リダイレクトを処理する階層
1636
+ $html = curl_exec($ch ); // cURL実行
1637
+ $err_no = curl_errno($ch ); // cURLエラーコード
1638
+ if ($err_no ) {
1639
  $error = true;
1640
+ $update_result = $err_no;
1641
  } else {
1642
+ $header = curl_getinfo($ch );
1643
+ $update_result = $header['http_code']; // HTTPステータス
 
1644
  $url = $header['url'];
1645
  }
1646
+ curl_close($ch );
1647
  }
1648
+ return $url;
1649
  }
1650
 
1651
+ // 外部リンク・記事情報取得
1652
  private function pz_GetCURL($data ) {
1653
+ if ($this->options['debug-mode'] ) {
1654
+ echo '<!-- Pz-LkC [pz_GetCURL]'.PHP_EOL;
1655
+ echo '$data="'.esc_html(print_r($data, true ) ).PHP_EOL;
1656
+ echo '/-->'.PHP_EOL;
1657
+ }
1658
+
1659
+ // リンク先URL
1660
+ $url = isset($data['url']) ? $data['url'] : null ;
1661
+
1662
+ // URL指定なし
1663
+ if (!$url ) {
1664
+ return null;
1665
+ }
1666
+
1667
+ // URLエンコード
1668
+ $url = $this->pz_EncodeURL($url ,true );
1669
+
1670
+ // 初期化
1671
+ $domain = null;
1672
+ $sitename = null;
1673
+ $author = null;
1674
+ $type = null;
1675
+ $title = null;
1676
+ $excerpt = null;
1677
+ $thumbnail_url = null;
1678
+ $favicon_url = null;
1679
+ $charset = null;
1680
+ $http_code = null;
1681
+ $error = false;
1682
+
1683
+ // URL解析(自サイトチェック)
1684
+ $url_info = $this->Pz_GetURLInfo($url );
1685
+ $scheme = $url_info['scheme']; // スキーム
1686
+ $domain = $url_info['domain']; // ドメイン名
1687
+ $domain_url = $url_info['domain_url']; // ドメインURL
1688
+
1689
+ // リンク先サイトのアクセス
1690
+ if (function_exists('curl_init' ) ) { // cURLを使用する
1691
+ $ch = curl_init($url ); // cURLハンドル取得
1692
+ // cURL パラメータ
1693
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true ); // データで取得
1694
+ curl_setopt($ch, CURLOPT_TIMEOUT, 8 ); // タイムアウト
1695
+ if ($this->options['flg-referer'] ) {
1696
+ curl_setopt($ch, CURLOPT_REFERER, get_permalink() ); // リファラ
1697
+ }
1698
+ if ($this->options['flg-agent'] ) {
1699
+ curl_setopt($ch, CURLOPT_USERAGENT, $this->options['user-agent'] ); // ユーザーエージェントにPz-LinkCard-Crawlerを使う
1700
  } else {
1701
+ curl_setopt($ch, CURLOPT_USERAGENT, esc_html($_SERVER['HTTP_USER_AGENT'] ) ); // アクセス者のユーザーエージェントを使う
1702
  }
1703
+ if ($this->options['flg-redir'] ) {
1704
+ curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true ); // リダイレクトを処理する
1705
+ curl_setopt($ch, CURLOPT_MAXREDIRS, 8 ); // リダイレクトを処理する階層
1706
+ curl_setopt($ch, CURLOPT_AUTOREFERER, true ); // リダイレクト用リファラを自動セット
1707
  } else {
1708
+ curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false ); // リダイレクトを処理しない
1709
+ }
1710
+ curl_setopt($ch, CURLOPT_COOKIESESSION, true ); // セッションCOOKIEを使用する
1711
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, ($this->options['flg-ssl'] ) ); // SSL検証
1712
+ curl_setopt($ch, CURLOPT_FAILONERROR, false ); // HTTPエラーのときcURLをエラーにしない
1713
+ // cURL 実行
1714
+ $curl_data = curl_exec($ch ); // cURL実行
1715
+ $err_no = curl_errno($ch ); // cURLエラーコード
1716
+ $err_message = curl_error($ch ); // cURLエラーメッセージ
1717
+ // エラーチェック
1718
+ if ($err_no ) {
1719
  $error = true;
1720
+ $http_header = null;
1721
+ $http_type = null;
1722
+ $http_body = null;
1723
+ $http_code = $err_no;
1724
  } else {
1725
+ $http_header = curl_getinfo($ch ); // HTTPヘッダー
1726
+ $http_type = $http_header['content_type']; // Content_Type
1727
+ $http_body = $curl_data; // HTTPボディー
1728
+ $http_code = $http_header['http_code']; // HTTPステータス
1729
+ if ($http_code >= 400 ) {
1730
+ $error = true;
1731
+ }
1732
  }
1733
+ curl_close($ch );
1734
  } else { // cURLが使用できない場合
1735
+ // wp_remote_get 実行
1736
+ $rget_data = wp_remote_get($url ); // wp_remote_get実行
1737
+ $err_no = is_wp_error($rget_data ); // wp_remote_getエラー有無
1738
+ $err_message = null; // wp_remote_getエラーメッセージ
1739
+ // エラーチェック
1740
+ if ($err_no ) {
1741
  $error = true;
1742
+ $http_header = null;
1743
+ $http_type = null;
1744
+ $http_body = null;
1745
+ $http_code = -1;
1746
  } else {
1747
+ $http_header = $rget_data['response']; // HTTPヘッダー
1748
+ $http_type = $http_header['content_type']; // Content_Type
1749
+ $http_body = $rget_data['body']; // HTTPボディー
1750
+ $http_code = $http_header['code']; // HTTPステータス
1751
+ if ($http_code >= 400 ) {
1752
+ $error = true;
1753
+ }
1754
  }
1755
  }
1756
 
1757
+ if (substr($http_type, 0, 9) == 'text/html' && $http_body ) {
1758
+ // 文字コード判定
1759
+ if (preg_match('/charset\s*=\s*"*([^>\/\s"]*).*<\/head/si', $http_body, $m ) ) {
1760
+ $m[1] = trim(trim($m[1] ), '\'\"' );
1761
+ $charset = $m[1];
 
1762
  } else {
1763
+ foreach(array('UTF-8','SJIS','EUC-JP','eucJP-win','ASCII','JIS','SJIS-win' ) as $c_charset ) {
1764
  // 文字コード変換してみて内容が変わらないものを文字セットと判断する
1765
+ if (mb_convert_encoding($http_body, $this->charset, $c_charset ) == $http_body ) {
1766
+ $charset = $c_charset;
1767
  break;
1768
  }
1769
  }
1770
  }
1771
+ if (!$charset ) {
1772
+ $charset = mb_detect_encoding($http_body, 'ASCII,JIS,UTF-7,EUC-JP,SJIS,UTF-8' );
1773
+ $http_body = mb_convert_encoding($http_body, $this->charset, 'ASCII,JIS,UTF-7,EUC-JP,SJIS,UTF-8' );
1774
+ } elseif ($this->charset <> $charset ) {
1775
+ $http_body = mb_convert_encoding($http_body, $this->charset, $charset );
1776
  }
1777
+
1778
  // HEADタグ(METAタグ解析)
1779
+ $html_head = null;
1780
+ $tags = null;
1781
+ if (preg_match('/<\s*head[^>]*>(.*)<\s*\/head\s*>/si', $http_body, $m ) ) {
1782
+ $html_head = $m[1];
1783
+ $tags = $this->pz_GetMeta($html_head );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1784
  } else {
1785
+ $tags = $this->pz_GetMeta($http_body );
1786
+ }
1787
+
1788
+ // Open Graph Protcol
1789
+ $og_url = isset($tags['og:url'] ) ? $tags['og:url'] : null;
1790
+ $og_type = isset($tags['og:type'] ) ? $tags['og:type'] : null;
1791
+ $og_sitename = isset($tags['og:site_name'] ) ? $tags['og:site_name'] : null;
1792
+ $og_author = null;
1793
+ $og_title = isset($tags['og:title'] ) ? $tags['og:title'] : null;
1794
+ $og_excerpt = isset($tags['og:description'] ) ? $tags['og:description'] : null;
1795
+ $og_image = isset($tags['og:image'] ) ? $tags['og:image'] : null;
1796
+ $og_favicon = null;
1797
+
1798
+ // Twitter card
1799
+ $tw_url = null;
1800
+ $tw_sitename = isset($tags['twitter:site'] ) ? $tags['twitter:site'] : null;
1801
+ $tw_author = isset($tags['twitter:creator'] ) ? $tags['twitter:creator'] : null;
1802
+ $tw_type = isset($tags['twitter:card'] ) ? $tags['twitter:card'] : null;
1803
+ $tw_title = isset($tags['twitter:title'] ) ? $tags['twitter:title'] : null;
1804
+ $tw_excerpt = isset($tags['twitter:description'] )? $tags['twitter:description'] : null;
1805
+ $tw_image = isset($tags['twitter:image'] ) ? $tags['twitter:image'] : null;
1806
+ $tw_favicon = null;
1807
+
1808
+ // HTML
1809
+ $title = isset($tags['title'] ) ? $tags['title'] : null;
1810
+ $excerpt = isset($tags['description'] ) ? $tags['description'] : null;
1811
+
1812
+ // 優先順序
1813
+ if ($og_title ) {
1814
+ $title = $og_title;
1815
+ $excerpt = $og_excerpt;
1816
+ } elseif ($tw_title ) {
1817
+ $title = $tw_title;
1818
+ $excerpt = $tw_excerpt;
1819
+ }
1820
+ if ($og_image ) {
1821
+ $thumbnail_url = $og_image;
1822
+ } elseif ($tw_image ) {
1823
+ $thumbnail_url = $tw_image;
1824
+ }
1825
+ $sitename = $og_sitename;
1826
+
1827
+ // サムネイルURL取得
1828
+ if ($thumbnail_url && !preg_match('/^https*:\/\//i', $thumbnail_url, $m ) ) {
1829
+ $thumbnail_url = $this->pz_RelToURL($url, $thumbnail_url );
1830
+ }
1831
+ $thumbnail_url = $this->pz_EncodeURL($thumbnail_url, true );
1832
+
1833
+ // サイトアイコンURL取得
1834
+ if (isset( $tags['icon'] ) && $tags['icon'] ) {
1835
+ $favicon_url = $tags['icon'];
1836
+ } elseif (isset( $tags['shortcut icon'] ) && $tags['shortcut icon'] ) {
1837
+ $favicon_url = $tags['shortcut icon'];
1838
+ } elseif (isset( $tags['apple-touch-icon'] ) && $tags['apple-touch-icon'] ) {
1839
+ $favicon_url = $tags['apple-touch-icon'];
1840
+ }
1841
+ if ($favicon_url && !preg_match('/^https*:\/\//i', $favicon_url, $m ) ) {
1842
+ $favicon_url = $this->pz_RelToURL($url, $favicon_url );
1843
+ }
1844
+ $favicon_url = $this->pz_EncodeURL($favicon_url, true );
1845
+
1846
  // タイトル整形
1847
+ if ($title ) {
1848
+ $str = $title;
1849
+ $str = strip_tags($str ); // タグの除去
1850
+ $str = str_replace(array("\r", "\n"), '', $str ); // 改行削除
1851
+ $str = esc_html($str ); // 念のためエスケープ
1852
+ $str = mb_strimwidth($str, 0, 200, '...' ); // 保管用のタイトルは200文字で切る
1853
+ $title = $str;
1854
+ }
1855
+
1856
  // 抜粋文整形
1857
+ if ($excerpt ) {
1858
+ $str = $excerpt;
1859
+ $str = strip_tags($str ); // タグの除去
1860
+ $str = str_replace(array("\r", "\n"), '', $str ); // 改行削除
1861
+ $str = esc_html($str ); // 念のためエスケープ
1862
+ $str = mb_strimwidth($str, 0, 500, '...' ); // 保管用の記事内容は500文字で切る
1863
+ $excerpt = $str;
1864
+ }
1865
+ }
1866
+
1867
+ // 呼ばれている記事
1868
+ if (!isset($data['use_post_id1'] ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1869
  $data['use_post_id1'] = get_the_ID();
1870
  }
1871
+
1872
+ // リダイレクト先URL
1873
+ if (isset($http_header['url'] ) && $http_header['url'] && $url <> $http_header['url'] ) {
1874
+ $url_redir = $http_header['url'];
1875
+ } else {
1876
+ $url_redir = null;
1877
+ }
1878
+
1879
+ // データセット
1880
+ $data['id'] = isset($data['id']) ? $data['id'] : null; // リンクカードID
1881
+ $data['url'] = $url; // リンク先:URL
1882
+ $data['url_redir'] = $url_redir; // リンク先:リダイレクト先URL
1883
+ $data['url_key'] = isset($data['url_key']) ? $data['url_key'] : null; // リンク先:URLハッシュ値
1884
+ $data['scheme'] = $scheme; // リンク先:URLスキーム
1885
+ $data['domain'] = $domain; // リンク先:URLドメイン
1886
+ $data['site_name'] = $sitename; // リンク先:サイト名称
1887
+ $data['title'] = $title; // リンク先:タイトル
1888
+ $data['excerpt'] = $excerpt; // リンク先:抜粋文
1889
+ $data['thumbnail'] = $thumbnail_url; // リンク先:サムネイルURL
1890
+ $data['favicon'] = $favicon_url; // リンク先:サイトアイコンURL
1891
+ $data['charset'] = $charset; // リンク先:文字コード
1892
+ $data['alive_time'] = $this->now; // 生存確認:確認日時
1893
+ $data['alive_nexttime'] = $this->now + WEEK_IN_SECONDS * 4 + rand(0, DAY_IN_SECONDS ); // 生存確認:次回確認日時
1894
+ $data['alive_result'] = $http_code; // 生存確認:HTTPレスポンス
1895
+ $data['sns_twitter'] = isset($data['sns_twitter'] ) ? $data['sns_twitter'] : -1; // SNS:Twitter
1896
+ $data['sns_facebook'] = isset($data['sns_facebook'] ) ? $data['sns_facebook'] : -1; // SNS:facebook
1897
+ $data['sns_hatena'] = isset($data['sns_hatena'] ) ? $data['sns_hatena'] : -1; // SNS:はてなブックマーク
1898
+ $data['sns_pocket'] = isset($data['sns_pocket'] ) ? $data['sns_pocket'] : -1; // SNS:ポケット
1899
+ $data['sns_time'] = isset($data['sns_time']) ? $data['sns_time'] : 0; // SNS:最終取得日時
1900
+ $data['sns_nexttime'] = isset($data['sns_nexttime'] ) ? $data['sns_nexttime'] : 0; // SNS:次回取得日時
1901
+ $data['use_post_id1'] = isset($data['use_post_id1'] ) ? $data['use_post_id1'] : null; // 呼ばれている記事
1902
+ $data['use_post_id2'] = isset($data['use_post_id2'] ) ? $data['use_post_id2'] : null; // 呼ばれている記事
1903
+ $data['use_post_id3'] = isset($data['use_post_id3'] ) ? $data['use_post_id3'] : null; // 呼ばれている記事
1904
+ $data['use_post_id4'] = isset($data['use_post_id4'] ) ? $data['use_post_id4'] : null; // 呼ばれている記事
1905
+ $data['use_post_id5'] = isset($data['use_post_id5'] ) ? $data['use_post_id5'] : null; // 呼ばれている記事
1906
+ $data['use_post_id6'] = isset($data['use_post_id6'] ) ? $data['use_post_id6'] : null; // 呼ばれている記事
1907
+ $data['regist_title'] = isset($data['regist_title'] ) ? $data['regist_title'] : $title; // 登録時:タイトル
1908
+ $data['regist_excerpt'] = isset($data['regist_excerpt'] ) ? $data['regist_excerpt'] : $excerpt; // 登録時:抜粋文
1909
+ $data['regist_charset'] = isset($data['regist_charset'] ) ? $data['regist_charset'] : $charset; // 登録時:文字コード
1910
+ $data['regist_time'] = isset($data['regist_time'] ) ? $data['regist_time'] : 0; // 登録時:登録日時
1911
+ $data['regist_result'] = isset($data['regist_result'] ) ? $data['regist_result'] : $http_code; // 登録時:HTTPレスポンス
1912
+ $data['mod_title'] = false; // 更新:登録後からタイトル変更有無
1913
+ $data['mod_excerpt'] = false; // 更新:登録後から抜粋文変更有無
1914
+ $data['update_time'] = $this->now; // 更新:最終更新日
1915
+ $data['update_result'] = $http_code; // 更新:HTTPレスポンス
1916
+ return $data;
1917
  }
1918
 
1919
  // TITLEとMETAタグを分解
1920
+ private function pz_GetMeta($html, $tags = null, $clear = false ) {
1921
+ if ($clear == true || !isset($tags ) ) {
1922
+ $tags = null;
1923
+ $tags = array('none' => 'none' );
1924
  }
1925
+
1926
  // TITLEタグ
1927
+ if (preg_match('/<\s*title\s*[^>]*>\s*([^<]*)\s*<\s*\/title\s*[^>]*>/si', $html, $m ) ) {
1928
+ $tags['title'] = esc_html($m[1]);
1929
  }
1930
+
1931
  // metaタグ パース
1932
+ $match = null;
1933
+ preg_match_all('/<\s*meta\s(?=[^>]*?\b(?:name|property)\s*=\s*(?|"\s*([^"]*?)\s*"|\'\s*([^\']*?)\s*\'|([^"\'>]*?)(?=\s*\/?\s*>|\s\w+\s*=) ))[^>]*?\bcontent\s*=\s*(?|"\s*([^"]*?)\s*"|\'\s*([^\']*?)\s*\'|([^"\'>]*?)(?=\s*\/?\s*>|\s\w+\s*=) )[^>]*>/is', $html, $match );
1934
+ if (isset($match ) && is_array($match ) && count($match ) == 3 && count($match[1] ) > 0 ) {
1935
+ foreach($match[1] as &$m ) {
1936
+ $m = strtolower($m );
1937
  }
1938
+ unset($m );
1939
+ $tags += array_combine($match[1], $match[2] );
1940
  }
1941
+
1942
  // linkタグ パース
1943
+ $match = null;
1944
+ preg_match_all('/<\s*link\s(?=[^>]*?\brel\s*=\s*(?|"\s*([^"]*?)\s*"|\'\s*([^\']*?)\s*\'|([^"\'>]*?)(?=\s*\/?\s*>|\s\w+\s*=) ))[^>]*?\bhref\s*=\s*(?|"\s*([^"]*?)\s*"|\'\s*([^\']*?)\s*\'|([^"\'>]*?)(?=\s*\/?\s*>|\s\w+\s*=) )[^>]*>/is', $html, $match );
1945
+ if (isset($match ) && is_array($match ) && count($match ) == 3 && count($match[1] ) > 0 ) {
1946
+ foreach($match[1] as &$m ) {
1947
+ $m = strtolower($m );
1948
  }
1949
+ unset($m );
1950
+ $tags += array_combine($match[1], $match[2] );
1951
  }
1952
+
1953
+ return $tags;
1954
  }
1955
 
1956
  // サムネイル取得(外部リンクOGP画像取得)
1957
+ private function pz_GetThumbnail($url, $force = false ) {
1958
+ if (!isset($url ) || !$url || $url == 'https://s0.wp.com/i/blank.jpg' ) {
1959
+ return null;
1960
  }
1961
+
1962
+ // サムネイルのディレクトリとディレクトリURL
1963
+ $file_dir = $this->options['thumbnail-dir'];
1964
+ $file_dir_url = $this->options['thumbnail-url'];
1965
+ if (!$file_dir || !$file_dir_url ) {
1966
  return null;
1967
  }
1968
 
1969
+ // 画像URLを元にしてファイル名を生成
1970
+ $file_name = bin2hex(hash('sha256', esc_url($url ), true ) ); // ファイル名(URLをハッシュしてファイル名にする)
1971
  $file_ext = '.jpeg'; // 拡張子
1972
  $file_path_old = $file_dir.$file_name; // ファイルのフルパス
1973
  $file_path_jpeg = $file_dir.$file_name.$file_ext; // ファイルのフルパス
1974
  $file_url = $file_dir_url.$file_name.$file_ext; // 画像URL
1975
+
1976
+ // ファイル名が見つかったときの処理
1977
+ if (!$force ) { // 強制取得の指定なし
1978
+ if (file_exists ($file_path_jpeg ) ) { // ファイルが見つかった(拡張子あり)
1979
+ if (filesize($file_path_jpeg ) < 34 ) { // JPEGのヘッダが34バイトなので、それ未満は取得できていないファイル
1980
  return null;
1981
  }
1982
  return $file_url;
1983
  }
1984
+ if (file_exists ($file_path_old ) ) { // ファイルが見つかった(拡張子なし)
1985
+ rename ($file_path_old, $file_path_jpeg ); // 拡張子ありにリネーム
1986
+ if (filesize($file_path_jpeg ) < 34 ) { // JPEGのヘッダが34バイトなので、それ未満は取得できていないファイル
1987
  return null;
1988
  }
1989
  return $file_url;
1991
  }
1992
 
1993
  // cURLで画像取得
1994
+ $ch = curl_init();
1995
+ curl_setopt($ch, CURLOPT_URL, $url );
1996
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
1997
+ curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false );
1998
+ curl_setopt($ch, CURLOPT_TIMEOUT, 10 );
1999
+ curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3 );
2000
+ $body = curl_exec($ch );
2001
+ $header = curl_getinfo($ch );
2002
+ curl_close($ch );
2003
+ if ($header['http_code'] <> 200 ) { // 指定されたURLの画像が存在しない
2004
+ touch($file_path_jpeg ); // 空ファイル作成
2005
+ return null;
2006
  }
2007
 
2008
  // 画像生成
2009
+ $image = imagecreatefromstring($body ); // 画像読み込み
2010
+ $image_width = imagesx($image );
2011
+ $image_height = imagesy($image );
2012
+ if ($image_width < 8 || $image_height < 8 ) { // 8x8未満は画像ではないと見なす
2013
+ touch($file_path_jpeg ); // 空ファイル作成
2014
+ return null;
2015
+ }
2016
+
2017
+ // 変換後の画像サイズ
2018
+ switch ($this->options['ex-thumbnail-size']) {
2019
+ case 'thumbnail':
2020
+ $new_width = 150; // 幅
2021
+ $new_height = 150; // 高さ
2022
+ break;
2023
+ case 'medium':
2024
+ $new_width = 300;
2025
+ $new_height = 300;
2026
+ break;
2027
+ case 'large':
2028
+ $new_width = 1024;
2029
+ $new_height = 1024;
2030
+ break;
2031
+ case 'full':
2032
+ $new_width = $image_width;
2033
+ $new_height = $image_height;
2034
+ break;
2035
+ default:
2036
+ $new_width = 150;
2037
+ $new_height = 150;
2038
+ break;
2039
+ }
2040
+
2041
+ // 縦横比を保つ
2042
+ if ($image_width > $image_height ) { // 幅の方が大きい
2043
+ $new_height = intval($image_height * ($new_width / $image_width ) ); // 幅に合わせる
2044
+ } elseif ($image_width < $image_height ) { // 高さの方が大きい
2045
+ $new_width = intval($image_width * ($new_height / $image_height ) ); // 高さに合わせる
2046
+ }
2047
+ if ($new_width <= 1 || $new_height <= 1 ) {
2048
+ touch($file_path_jpeg ); // 空ファイル作成
2049
+ return null;
2050
  }
2051
 
2052
+ // パレットを用意
2053
+ $image_pallet = imagecreatetruecolor($new_width, $new_height );
2054
+ if (!$image_pallet ) {
2055
+ touch($file_path_jpeg ); // 空ファイル作成
2056
+ return null;
2057
  }
2058
 
2059
+ // 画像ファイルを保存
2060
+ imagecopyresampled($image_pallet, $image, 0, 0, 0, 0, $new_width, $new_height, $image_width, $image_height ); // サイズ変更してコピー
2061
+ imagejpeg($image_pallet, $file_path_jpeg ); // JPEGで保存
2062
+ return $file_url; // 画像URLを返す
2063
+ }
2064
+
2065
+ // 設定を取得する
2066
+ private function pz_GetOption($defaults = null ) {
2067
+ $defaults = isset($defaults) ? $defaults : $this->defaults ;
2068
+ $options = get_option('Pz_LinkCard_options', $defaults );
2069
+ foreach($defaults as $key => $value ) {
2070
+ if (!array_key_exists($key, $options ) ) {
2071
+ $options[$key] = null;
2072
  }
2073
  }
2074
+ return $options;
2075
+ }
2076
+
2077
+ // 設定を更新する
2078
+ private function pz_UpdateOption($options = null, $before = null ) {
2079
+ $before = isset($before) ? $before : $this->pz_GetOption() ;
2080
+ $options = isset($options) ? $options : $this->options ;
2081
+
2082
+ // 必要ディレクトリが無い場合、作り直す
2083
+ require_once('lib/pz-linkcard-settings-setup.php' );
2084
+
2085
+ // 変更有無チェック
2086
+ $flg_update = false;
2087
+ if ($before <> $options ) {
2088
+ $flg_update = true;
2089
+ $options['saved-date'] = $this->now; // 保存日時をセット
2090
+ }
2091
+
2092
+ // CSSバージョン(CSSキャッシュ対策)
2093
+ $options['css-count'] += 1;
2094
+
2095
+ // 設定の更新
2096
+ $result = update_option('Pz_LinkCard_options', $options );
2097
+
2098
+ // 更新できたら設定を戻す
2099
+ if ($result ) {
2100
+ $this->options = $options;
2101
  }
2102
 
2103
+ // デバグ用ログ出力
2104
+ if ($options['debug-mode'] ) {
2105
+ $result_log = $this->pz_OutputLOG('Update_Option(Result='.$result.')' );
2106
+ $result_log = $this->pz_OutputLOG(print_r($this->options, true ) );
2107
+ }
2108
+ return $flg_update;
2109
+ }
2110
+
2111
+ // 設定を初期化する
2112
+ private function pz_InitializeOption($options = null, $defaults = null ) {
2113
+ $options = isset($before) ? $before : $this->pz_GetOption() ;
2114
+ $defaults = isset($defaults) ? $defaults : $this->defaults ;
2115
+
2116
+ $takeover = array('css-templete', 'css-path', 'css-url', 'css-count', 'thumbnail-dir', 'thumbnail-url', 'debug-dir', 'debug-url', 'user-agent', 'saved-date', 'develop-mode' );
2117
+ if ($options['initialize-exception'] ) {
2118
+ array_push($takeover, 'initialize-exception', 'admin-mode', 'debug-mode' );
2119
  }
2120
+ if ($options['css-count'] = $defaults['css-count'] ) {
2121
+ $takeover += array('css-count' );
2122
+ }
2123
+ foreach($takeover as $key ) {
2124
+ $defaults[$key] = $options[$key];
2125
+ }
2126
+ $this->options = $defaults;
2127
+
2128
+ // 設定を更新する
2129
+ $result = $this->pz_UpdateOption();
2130
+
2131
+ return $result;
2132
+ }
2133
 
2134
+ // スタイルシート生成
2135
+ private function pz_SetStyle() {
2136
+ require_once('lib/pz-linkcard-style.php' );
2137
+ }
2138
+
2139
+ // デバグ用の文字列表示
2140
+ private function pz_OutputLOG($user_message ) {
2141
+ $message = date('Y-m-d H:i:s', current_time('timestamp', false ) ).' '.$user_message.(mb_substr($user_message, -1, 1) == PHP_EOL ? null : PHP_EOL );
2142
+ $filename = $this->options['debug-dir'].$this->slug.'_'.date('Ymd').'.log';
2143
+ $result = file_put_contents($filename, $message, FILE_APPEND );
2144
+ return $result;
2145
+ }
2146
+
2147
+ // 通常時のスタイルシート
2148
+ public function enqueue($hook ) {
2149
+ $this->amp = null;
2150
+ $css_version = $this->options['plugin-version'].'.'.$this->options['css-count'];
2151
+ wp_enqueue_style ('pz-linkcard', $this->options['css-url'], array(), $css_version );
2152
+ if ($this->options['css-url-add'] ) {
2153
+ wp_enqueue_style('pz-linkcard-add', $this->options['css-url-add'], array(), $css_version );
2154
+ }
2155
  }
2156
 
2157
  // 管理画面のスタイルシート、スクリプト設定
2158
  public function enqueue_admin($hook ) {
2159
  // カラーピッカー用のスタイルシート、スクリプト
2160
+ // wp_enqueue_script ('wp-color-picker' );
2161
+ // wp_enqueue_style ('wp-color-picker' );
2162
+ // wp_enqueue_script ('pz-linkcard-colorpicker', plugins_url('js/color-picker.js', __FILE__ ), array('wp-color-picker' ), $this->options['plugin-version'], true );
2163
  // 設定画面用のスタイルシート、スクリプト
2164
+ wp_enqueue_script ('pz-linkcard-admin', plugins_url('js/admin-settings.js', __FILE__ ), array('jquery' ), $this->options['plugin-version'], true );
2165
+ wp_enqueue_style ('pz-linkcard-admin', plugin_dir_url(__FILE__ ).'css/admin.css', array(), $this->options['plugin-version'] );
2166
  }
2167
 
2168
  // 管理画面時の設定(フッター)
2169
  public function add_footer() {
2170
  // テキスト エディタ用のクイックタグ
2171
+ if ($this->options['flg-edit-qtag'] ) {
2172
+ if (wp_script_is('quicktags' ) ) {
2173
+ echo '<script>QTags.addButton(\'pz-lkc\',\''.__('Linkcard', $this->text_domain ).'\',\'['.$this->options['code1'].' url="\',\'"]\',\'\',\''.__('Make Linkcard', $this->text_domain ).'\' );</script>';
2174
  }
2175
  }
2176
  // ビジュアル エディタ用の挿入ダイアログ
2177
+ require_once('lib/pz-linkcard-modal.php' );
2178
  }
2179
 
2180
  // 管理画面時の注意書き設定
2181
  public function add_notices() {
2182
+ if ($this->options['flg-invalid'] ) {
2183
+ if (!$this->options['flg-invalid-hide'] ) {
2184
+ echo '<div class="notice notice-error is-dismissible"><p><strong>'.$this->options['plugin-name'].': '.__('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>';
2185
  }
2186
  }
2187
  }
2188
 
2189
  // 管理画面時のスタイルシート、スクリプト設定
2190
  public function add_mce_button($buttons ) {
2191
+ if ($this->options['flg-edit-insert'] ) {
2192
  $buttons[] = 'pz_linkcard_insert_shortcode';
2193
  }
2194
  return $buttons;
2195
  }
2196
  public function add_mce_plugin($plugins ) {
2197
+ if ($this->options['flg-edit-insert'] ) {
2198
+ $plugins[ "pz_linkcard_tinymce" ] = $this->plugin_dir_url.'js/mce-button.js';
2199
  }
2200
  return $plugins;
2201
  }
2202
 
 
 
 
 
 
 
 
 
 
 
2203
  // 管理画面のサブメニュー追加
2204
  public function add_menu() {
2205
+ $menu_manager = __('Pz LkC Cache', $this->text_domain );
2206
+ $menu_settings = __('Pz LinkCard', $this->text_domain );
2207
+ if ($this->options['flg-alive'] && $this->options['flg-alive-count'] ) {
2208
+ global $wpdb;
2209
+ $result = $wpdb->get_row("SELECT COUNT(*) AS count FROM $this->db_name WHERE alive_result < 100 OR alive_result >= 400");
2210
+ if (isset($result ) && isset($result->count ) ) {
2211
  $menu_manager .= '&nbsp;<span class="update-plugins"><span class="update-count lkc-menu-count">'.$result->count.'</span></span>';
2212
  }
2213
  }
2214
+ add_management_page (__('LinkCard Cache Manager', $this->text_domain ), $menu_manager, 'manage_options', 'pz-linkcard-cache', array($this, 'page_cacheman' ) );
2215
+ add_options_page (__('LinkCard Settings', $this->text_domain ), $menu_settings, 'manage_options', 'pz-linkcard-settings', array($this, 'page_settings' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2216
  }
2217
 
2218
+ // 管理画面>Pz カード管理
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2219
  public function page_cacheman() {
2220
+ require_once('lib/pz-linkcard-cacheman.php' );
2221
  }
2222
+
2223
+ // 管理画面>Pz カード設定
2224
  public function page_settings() {
2225
+ require_once('lib/pz-linkcard-settings.php' );
2226
  }
2227
 
2228
+ // 管理画面>プラグイン>一覧>クイックメニュー
2229
  public function action_links($links ) {
2230
+ $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;
2231
  return $links;
2232
  }
2233
 
2234
+ // 管理画面>プラグイン>有効化
2235
  public function activate() {
2236
+ require_once('lib/pz-linkcard-init.php' );
2237
  }
2238
 
2239
+ // 管理画面>プラグイン>停止
2240
  public function deactivate() {
2241
+ wp_clear_scheduled_hook('pz_linkcard_check' );
2242
+ wp_clear_scheduled_hook('pz_linkcard_alive' );
2243
+ }
2244
+
2245
+ // WP-CRONスケジュール(SNSカウント取得)
2246
+ public function schedule_hook_check() {
2247
+ require_once('lib/pz-linkcard-cron-sns.php' );
2248
+ }
2249
+
2250
+ // WP-CRONスケジュール(存在チェック)
2251
+ public function schedule_hook_alive() {
2252
+ require_once('lib/pz-linkcard-cron-alive.php' );
2253
  }
2254
  }
2255
+ $Class_Pz_LinkCard = new Pz_LinkCard;
readme.txt CHANGED
@@ -1,11 +1,12 @@
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
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
 
9
  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.
@@ -17,18 +18,18 @@ This plugin is intended to display a link in a blog card format.
17
 
18
  Easy to use. Just to write a short code.
19
 
20
- You can change the appearance in the `settings` screen .
21
 
22
- You can edit or delete the cache on the `manage` screen .
23
 
24
  The goodbye to the text-only link.
25
 
26
- * It will access to WebAPI for the thumbnail image acquisition and site icon of acquisition. In addition , it will save the title and excerpt statement to the database. For more information you want to read the item of "arbitrary section" about this.
27
 
28
 
29
- このプラグインはショートコードでURLを指定することで、リンクをブログカード形式で表示させるものです。
30
 
31
- 外部リンクと内部リンクで、カードの色や新しくウィンドウを開くかなど、設定を変更することができます。
32
 
33
  リンク先の情報はキャッシュされるため、ソーシャルカウント等も表示されるカード形式のリンクとしては高速に表示されます。
34
 
@@ -36,128 +37,107 @@ The goodbye to the text-only link.
36
 
37
  テキストにリンク設定しただけでは物足りないと感じていたら、ぜひお試しください。
38
 
39
- ※このプラグインはサムネイルの取得やサイトアイコンの取得のためにリンク先のURLをWebAPIに送信します。また、タイトル・抜粋文をDBへ保存します。詳細は「Arbitrary section」をお読みください。
 
40
 
41
 
42
  == Installation ==
43
 
44
- WordPressダッシュボードからのインストール
45
-
46
- (From your WordPress dashboard)
47
-
48
 
49
- 1. 「プラグイン」→「新規追加」を選びます
 
 
 
50
 
51
- (Plugins menu > Add New)
52
 
53
- 2. 「Pz-LinkCard」を検索します
54
 
55
- (Search for Pz-HatenaBlogCard)
 
 
 
 
56
 
57
- 3. プラグイン名と作者を確認していただき、「今すぐインストール」を押します
58
 
59
- (Install)
60
-
61
- 4. 「有効化する」を選び、有効化します
62
 
63
- (Activate)
 
 
 
64
 
65
 
66
  WordPress.org からのダウンロードおよびインストール
67
 
68
- (From WordPress.org)
69
-
70
- 1. WordPress.orgのプラグイン一覧から「Pz-LinkCard」を検索します
71
-
72
- (Search "pz-linkcard" plugin from wordpress.org)
73
-
74
- 2. プラグイン名と作者を確認していただき、ダウンロードします
75
-
76
- (Download ZIP file)
77
-
78
- 3. WordPressをインストールしているディレクトリ配下の、「/wp-content/plugins」ディレクトリ配下に「pz-linkcard」ディレクトリを作成します
79
-
80
- (Upload pz-linkcard directory to the /wp-content/plugins/ directory)
81
-
82
- 4. ダウンロードしたZIPファイルを展開します
83
-
84
- 5. プラグイン一覧から「有効化」を選んで、有効化します
85
-
86
- (Activate the plugin through the 'Plugins' menu in WordPress)
87
 
88
 
89
  新しいバージョンを有効化したら動作しなくなった場合
90
 
91
- 1. Pz-LinkCard がインストールされているディレクトリ名を変更もしくは削除します
92
-
93
- 2. WordPressダッシュボードに入ると、プラグインが無効化されたというメッセージが表示されます
94
-
95
- 3. 先ほど変更したディレクトリ名を戻します(戻してもプラグインは勝手に有効化されません)
96
-
97
- 4. 当サイトから古い安定版をダウンロードします
98
-
99
  5. 上書きコピーを行ったあと、有効化を選んで、有効化します
100
-
101
  6. 不具合が起きた状態や状況、テストサイトであれば、アクセスするためのURLを教えていただけると早急に修正できる場合があります
102
 
103
 
104
  == Frequently asked questions ==
105
 
106
- Q1.
107
- データベースの容量を圧迫しませんか?
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
- 「続きを読む」ボタンが表示されない。
158
 
159
- A7.
160
- カードの「高さ」を空欄にして記事内容が全て表示されるように指定しないと表示されないことがあります。
 
 
 
 
 
161
 
162
 
163
  == Screenshots ==
@@ -170,21 +150,102 @@ A7.
170
 
171
 
172
  == Changelog ==
173
- Ver.2.4.2.2
174
- * 追加するCSSファイルが呼び出せていなかった不具合を修正。(Thanks @longer_n)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
175
  Fixed: Fixed a bug that the additional CSS function does not work properly
176
  * CSSのURLが正しくなくてスタイルシートが適用されない不具合を修正。(Thanks @longer_n)
177
  Fixed a bug that CSS could not be read correctly
178
 
179
- Ver2.4.2.1
180
- * 外部サイトのサムネイル画像に失敗してエラーが出てしまう不具合を修正。(Ver2.4.1で発生)(Thanks ‎@kotobatoad)
181
- Fixed: Fixed a bug that an error occurs when thumbnail images on external sites fail.
182
- * カード管理画面で外部サイトのサムネイル画像が表示されない不具合を修正。(Ver2.4.2で発生)
183
- Fixed: Fixed a bug that thumbnail images of external sites are not displayed on the card management screen.
184
 
185
- Ver2.4.2
186
- * 設定画面の「画像」タブにて、指定した画像サイズによってはエラーが発生する不具合を修正。(Thanks @miya_gal_ossan)
187
  Fixed: Fixed image size error on settings screen
 
 
188
  * 設定画面で使用するjQueryを修正。
189
  Fixed: Review and fix jQuery on the settings screen.
190
  * ビジュアル エディタ(クラシック エディタ)で使用するjQueryを修正。
@@ -192,14 +253,14 @@ Ver2.4.2
192
  * アンインストール時にファイルが残ったままだったのを削除するように修正。
193
  Fixed: Fixed to delete the directory that remained at the time of uninstallation.
194
  * ドキュメント(readme.txt)修正。
195
- Modified: Modify `readme.txt`.
196
  * 設定画面の項目名を一部修正。
197
  Modified: Corrected the item name on the setting screen.
198
- * 設定画面の「配置」タブにて、BLOCKQUOTEの設定を非推奨に変更。
199
  Modified: Modified blockquote setting on the setting screen to deprecated.
200
- * 設定画面の「外部リンク」タブにて、「rel="nofollow"」の設定を非推奨に変更。
201
  Modified: Mofified nofollow setting on the setting screen to deprecated.
202
- * 設定画面の「エディタ」タブにて、ショートコード1を設定しなくてもエラーとしないように変更。
203
  Modified: Modified shortcode to optional on the setting screen
204
  * 設定画面の設定保存等のメッセージを閉じられるように変更。
205
  Modified: Modified to close the message on the setting screen.
@@ -211,58 +272,60 @@ Ver2.4.2
211
  Modified: Modified date format on card management screen.
212
  * 設定を更新した時、ブラウザのキャッシュに関係無くCSSファイルを読み直すように修正。
213
  Modified: Modified to read the CSS file again when updating the settings
214
- * facebookのシェア数が取得できないため、API利用を停止。
215
  Modified: Suspended because the number of shares on facebook cannot be obtained.
 
 
 
 
 
 
216
  * 設定画面に「CSS」タブを追加。
217
  Added: Added "CSS" tab to the setting screen.
218
- * 設定画面の「エラー」タブにて、URLエラーのある記事の行へのリンクを追加。
219
  Added: Added a link to an article with an error on the settings screen.
220
  * 設定画面の「外部リンク」タブに、「rel="noopener"」の設定を追加。
221
- Added: Added noopener setting on the setting screen.
 
 
222
  * 設定画面の「画像」タブに、キャッシュ画像のディレクトリ名と使用量の表示を追加。
223
- Added: Added display of image usage to the setting screen.
224
  * 設定画面の「画像」タブに、キャッシュ画像のディレクトリURLの表示を追加。
225
- Added: Added display of image directory to setting screen
226
- * 設定画面の「上級者向け」タブに、URLエラーをWordPress管理画面に表示しない設定を追加。
227
- Added: Added a setting to hide the url error of the management screen on the setting screen.
228
  * 設定画面の「上級者向け」タブに、設定を保存した日時の表示を追加。
229
- Added: Added the saved date to the setting screen.
230
- * 設定画面の「エディタ」タブの「ショートコード実行」の初期選択をチェック有りに変更。
231
- Modified: Modified the initial settings.
232
- * 当バージョンへバージョンアップした際、「ショートコード実行」をチェック有りに強制変更。
233
- Modified: Forcibly set "Do shortcode" to on.
234
- * 「ショートコード実行」がオンになっている場合の動作を「URL行の変換」もしくは「リンク行の変換」がオンになっている場合のみに変更。
235
- Modified: Modified the condition of "Do shortcode".
236
 
237
- Ver2.4.1
238
  * WordPress 5.6 での動作確認。
239
  Compatible with WordPress 5.6.
240
- * 外部サイトの画像をキャッシュするときのサイズを選択できる機能を追加。(Thanks @peacediner)
241
- Added: Added settings to allow you to choose the size when caching images from external sites.
242
 
243
- Ver2.4.0
244
  * WordPress 5.4.2 での動作確認。
245
  Compatible with WordPress 5.4.2.
246
  * WordPress 5.5 での動作確認。
247
  Compatible with WordPress 5.5.
248
  * WordPress 5.5.3 での動作確認。
249
  Compatible with WordPress 5.5.3.
250
- * 記事では無いページでURL無効のエラーが出てしまうのを抑制。(Thanks @rindark , @Rina_sendai)
251
  Fixed: Suppressed incorrect error display.
252
- * サブディレクトリ型マルチサイトの判定においてエラーが出てしまうのを抑制。
253
  Fixed: Suppressed incorrect error display.
254
 
255
- Ver2.3.1
256
  * WordPress 5.3 での動作確認。
257
  Compatible with WordPress 5.3.
258
  * ビジュアル エディタのボタンが表示されない不具合を修正。
259
  Fixed a bug that the button of the visual editor is not displayed.
260
 
261
- Ver2.3.0
262
- * プラグインなどのインストール状況によって設定画面のタブが動作しない不具合を修正。
263
  Fixed: Fixed a bug that the tab of the setting screen does not respond.
264
 
265
- Ver2.2.9
266
  * WordPress 5.2.3 での動作確認。
267
  Compatible with WordPress 5.2.3.
268
  * 設定画面の「かんたん書式設定」に「コンパクト」を追加。
@@ -276,7 +339,7 @@ Ver2.2.9
276
  * 外部リンク、内部リンク、同ページでそれぞれ枠線の色を選択できるように機能を追加。
277
  Added: Added settings so that you can select the border color for external links, internal links, and the same page.
278
 
279
- Ver2.2.8
280
  * WordPressテーマ「Cocoon」を使用しているとき、外部リンクのアイコンが表示されないように修正。
281
  Fixed: When using the WordPress theme "Cocoon", the external link icon was not displayed.
282
  * WordPressテーマ「JIN」を使用しているとき、余分な空行が表示されないように修正。
@@ -288,7 +351,7 @@ Ver2.2.8
288
  * 「続きを読む」ボタンをSPAN要素からDIV要素に変更。
289
  Modified: "Read more button" changed from SPAN element to DIV element.
290
 
291
- Ver2.2.7
292
  * サイトアイコンの垂直位置(vertical-align)をテキスト下(text-bottom)から中央(middle)へ変更。
293
  Modified: Changed the vertical position of the site icon (vertical-align) from the bottom of the text (text-bottom) to the middle (middle).
294
  * サイト追加情報をSPANタグからDIVタグへ変更。
@@ -311,18 +374,18 @@ Ver2.2.7
311
  Modified: Added tiny format "Windows XP".
312
  * 内部リンクがキャッシュされない不具合を修正。(Thanks @Masa_s_Record)
313
  Fixed: Fixed a bug that internal links are not cached.
314
- * サイトアイコンが取得できないときに警告エラーが発生していたのを修正。
315
  Fixed: Fixed a bug.
316
 
317
- Ver2.2.6.2
318
  * バグ修正。
319
  Fixed: Fixed a bug.
320
 
321
- Ver2.2.6.1
322
  * バグ修正。
323
  Fixed: Fixed a bug.
324
 
325
- Ver2.2.6
326
  * 設定画面の「余白」に「40px」を追加。
327
  Added: Added "40px" to "Margin" value.
328
  * ドメイン名(サイト名称)にマウスカーソルを重ねたときにアンダーラインが表示されないように変更。
@@ -330,23 +393,23 @@ Ver2.2.6
330
  * 挿入ボタンを押したとき、モーダルウィンドウが開くように変更。
331
  Modified: Changed to open a modal window when the insert button is pressed.
332
 
333
- Ver2.2.5
334
  * 内部リンクでもnofollow指定できるように修正。
335
  Modified: Fixed to be able to specify nofollow even for internal links.
336
  * 押しピンの画像がクリック無効になるように修正。
337
  Modified: Fixed push pin image to be click invalid.
338
 
339
- Ver2.2.4
340
  * WordPress 5.2.2 での動作確認。
341
  Compatible with WordPress 5.2.2.
342
  * ショートコードごとにnofollowを追加できる機能を追加。
343
  Added: Added the function to add nofollow per short code.
344
  * スタイルシートの取得方法を変更。
345
  Modified: Changed style sheet acquisition method.
346
- * 内部リンクのサムネイルのURLからスキームを省略するように変更。
347
  Modified: Changed to omit scheme from URL of internal link thumbnail.
348
 
349
- Ver2.2.3
350
  * 設定画面にショートコードを強制的に展開する機能を追加。
351
  Added: Added the function to forcibly expand the short code to the setting.
352
  * WordPress 5.2 での動作確認。
@@ -354,15 +417,15 @@ Ver2.2.3
354
  * WordPress 5.2.1 での動作確認。
355
  Compatible with WordPress 5.2.1.
356
 
357
- Ver2.2.2.1
358
- * ビジュアル エディタでエラーが表示されてしまうことがあるのを修正。
359
  Fixed: Fixed a bug.
360
 
361
- Ver2.2.2
362
- * ビジュアルエディタの挿入ボタンの仕組みを見直。
363
  Modified: Review the mechanism of the insert button in the visual editor.
364
 
365
- Ver2.2.1
366
  * WordPress 5.0.1 での動作確認。
367
  Compatible with WordPress 5.0.1.
368
  * WordPress 5.0.2 での動作確認。
@@ -371,42 +434,42 @@ Ver2.2.1
371
  Compatible with WordPress 5.0.3.
372
  * WordPress 5.1 での動作確認。
373
  Compatible with WordPress 5.1.
374
- * URLエラーの解除方法のメッセージを追加。
375
  Modified: Added a message on how to cancel the URL error.
376
  * 編集画面で警告が出ていたのを修正。
377
  Fixed: Fix warning on edit screen.
378
 
379
- Ver2.2.0
380
  * WordPress 5.0 での動作確認。
381
  Compatible with WordPress 5.0.
382
- * 存在しないURLを指定したときに警告エラーが発生していたのを修正。
383
  Fixed: Fixed a bug.
384
- * カード管理画面で警告エラーが発生していたのを修正。
385
  Fixed: Fixed a bug.
386
 
387
- Ver2.1.9.1
388
- * カード管理画面で警告エラーが発生していたのを修正。
389
  Fixed: Fixed a bug.
390
 
391
- Ver2.1.9
392
  * 相対URLを指定したときにサイトURLを補完する機能を追加。
393
  Added: Added a function to supplement site URL when relative URL is specified.
394
 
395
- Ver2.1.8.4
396
  * サイト情報が「なし」の場合、「続きを読む」ボタンが表示されなかったのを修正。(Thanks Andrew)
397
- Fixed: Fixed a bug that the `Read more` button is not displayed.
398
 
399
- Ver2.1.8.3
400
- * カード管理画面で警告エラーが発生していたのを修正。(Thanks @sayataro98)
401
  Fixed: Fixed a bug.
402
  * 「続きを読む」ボタンが表示されなかったのを修正。(Thanks Andrew)
403
- Fixed: Fixed a bug that the `Read more` button is not displayed.
404
 
405
- Ver2.1.8.2
406
- * 警告エラーが発生していたのを修正。
407
  Fixed: Fixed a bug.
408
 
409
- Ver 2.1.8.1
410
  * フィルターの優先度を指定するように修正。
411
  Modified: Fix to specify filter priority.
412
  * リンク切れチェックの周期が長くなるように修正。
@@ -414,7 +477,7 @@ Ver 2.1.8.1
414
  * 編集画面に次回のリンク切れチェック日時を表示。
415
  Modified: The next link break check date and time was displayed on the edit screen.
416
 
417
- Ver 2.1.8
418
  * 設定画面の「かんたん書式設定」の「Pzカード 標準書式」を「Pzカード オリジナル」に名称変更。
419
  Modified: Minor fixes.
420
  * 設定画面の「かんたん書式設定」の「Pzカード 標準書式」を微調整。
@@ -435,58 +498,58 @@ Ver 2.1.8
435
  Fixed: Fixed a bug.
436
  * ソーシャルカウントに「Pocket」を追加。
437
  Added: Added Pocket social count.
438
- * アンカーテキストの装飾を無効にする。
439
  Added: Added setting to disable anchor text decoration.
440
 
441
- Ver2.1.7.1
442
  * 設定画面の「かんたん書式設定」に「見出し」を追加。
443
  Added: Tiny format 'Headline'.
444
  * スタイルシートを整理。
445
  Modified: Minor fixes.
446
 
447
- Ver2.1.7
448
- * 「外部サイト」「内部サイト」「同ページ」の判定方法を修正。
449
  Modified: Change judgment method.
450
  * 設定画面に外部リンクのみ変換する設定を追加。(テーマに内部リンクのカード化機能がある場合を想定)(Thanks @mocochat)
451
  Added: Added 'Convert only external link'.
452
  * 文字コードを自動判断したときの結果を修正。
453
  Modified: Minor fixes.
454
 
455
- Ver2.1.6.2
456
  * アンカーテキストのアンダーラインが表示されてしまうのを修正。
457
  Fixed: Fixed a bug.
458
 
459
- Ver2.1.6.1
460
  * サイト情報を表示しないとき、ワーニングが出ていたのを修正。
461
  Fixed: Fixed a bug.(Thanks @ryuji120912)
462
 
463
- Ver2.1.6
464
  * 設定画面にTwitterアカウントを表示。
465
  Added: Added 'When in trouble'.
466
- * タイトル取得(正規表現)を修正。
467
  Modified: Fixed title acquisition method.
468
  * アンカーテキストのアンダーラインを無しに。
469
  Modified: Changed the text-decoration to "none".
470
 
471
- Ver2.1.5
472
  * 文字装飾を「無し」(none)に変更。
473
  Modified: Changed the text-decoration to "none".
474
  * 設定画面の「影」の初期設定を「影を付けない」に変更。
475
  Modified: Changed the initial setting to "Do not add shadows".
476
  * 設定画面の「角をまるめる」の初期設定を「角を丸めない」に変更。
477
  Modified: Changed the initial setting to "Do not round".
478
- * 設定画面の外部サイトのサムネイルの初期設定を「直接取得できない場合、WebAPIを利用する」に変更。
479
  Modified: Changed the initial setting to "Use WebAPI ,If can not direct".
480
  * 設定画面の「角をまるめる」にサイズを追加。
481
  Modified: Square rounding has added some sizes.
482
  * 設定画面の「カードの余白」に「24px」を追加。
483
  Modified: 24px was added to the card margin.
484
  * 設定画面のサムネイル取得WebAPIのHeartRail社の例をhttpsに変更。
485
- Modified: Modified HeartRail API URL to support SSL.
486
- * facebookのシェア数取得APIをhttpsに変更。
487
- Modified: Modified facebook API URL to support SSL.
488
- * Twitterのツイート数取得APIをhttpsに変更。
489
- Modified: Modified Twitter API URL to support SSL.
490
  * Tweet(s)をクリックしたときの動作をツイート検索に変更。
491
  Modified: From registration to search at Twitter.
492
  * User(s)をクリックしたときの動作をはてなブックマーク数表示に変更。
@@ -498,38 +561,38 @@ Ver2.1.5
498
  * 設定画面の「付加情報」を「見出し表示」にする設定を追加。(Thanks @hituji_1234)
499
  Added: Added setting to set additional information as heading.
500
 
501
- Ver2.1.4.2
502
  * WordPress 4.9.8 での動作確認。
503
  Compatible with WordPress 4.9.8.
504
 
505
- Ver2.1.4.1
506
  * URLの記述ミスを修正。
507
  Modified: Corresponded to URL mistake.
508
 
509
- Ver2.1.4
510
  * CHARSETを判断できないパターンがあったのを修正。(Thanks サイノア)
511
  Fixed: There was a pattern which can not judge CHARSET, so I fixed it.
512
  * カード管理画面で「すべて」を選んだときに「内部リンク」のみが表示されていたのを修正。
513
  Fixed: Fixed a bug in card management.
514
 
515
- Ver2.1.3.1
516
  * WordPress 4.9.6 での動作確認。
517
  Compatible with WordPress 4.9.6.
518
 
519
- Ver2.1.3
520
  * WordPress管理画面のカード管理画面のサブメニュー項目の横にリンク切れの件数を表示する機能を追加。(Thanks @Oncle1316)
521
  Added: Added setting to display the number of broken links next to the submenu.
522
 
523
- Ver2.1.2.2
524
- * 定義されていない変数を使用していたためNoriceエラーが出てしまうのを修正。
525
  Fixed: Fixed a bug.
526
 
527
- Ver2.1.2.1
528
- * プラグインの新規インストールもしくは停止から有効化した際にエラーが出てしまうのを修正。
529
  Fixed: Fixed a bug.
530
 
531
- Ver2.1.2
532
- * 直接取得サムネイルのサイズを100pxから200pxへ変更。
533
  Fixed: Directly acquired thumbnail size was changed from 100px to 200px.
534
  * 横幅に合わせて縮小表示させるときのフォントサイズと行の高さを調整。
535
  Fixed: Adjusted the font size and line height when reducing the display to fit the width.
@@ -540,24 +603,24 @@ Ver2.1.2
540
  * カード管理画面の一括メニューに「サムネイルの再取得」を追加。
541
  Added: "Renew thumbnail" was added to the batch menu of the card management screen.
542
 
543
- Ver2.1.1.1
544
  * WordPress 4.9.5 での動作確認。
545
  Compatible with WordPress 4.9.5
546
 
547
- Ver2.1.1
548
  * 設定画面に「続きを読む」ボタンの文字の色とサイズを追加。
549
  Added: Added setting of color and size of "Read more".
550
 
551
- Ver2.1.0.1
552
  * カード管理画面に「リンク切れ」の項目を追加。
553
  Added: Added "Link broken" item to card management.
554
  * スタイルシートを読み込まないときに簡易表示するように修正。(Google AMP対応)
555
  Modified: If CSS is not loaded, display simple.
556
- * テキストエディタのクイックタグを表示するかを選択できるように設定を追加。
557
  Added: Added settings to allow you to choose whether to display quick tags in a text editor.
558
- * ビジュアルエディタの挿入ボタンを表示するかを選択できるように設定を追加。
559
  Added: Added settings to allow you to choose whether to display the insert button in the visual editor.
560
- * 続きを読むボタンを追加できるように修正。(Thanks @R18otomegame)
561
  Added: Added so that you can set the Read more button
562
  * 設定画面の誤記を修正。
563
  Fixed: The mistyping was corrected.
@@ -566,49 +629,49 @@ Ver2.1.0.1
566
  * 設定画面にバージョン表記を追加。
567
  Modified: Version was written on setting screen.
568
 
569
- Ver2.0.8
570
  * WordPress 4.9.4 での動作確認。
571
  Compatible with WordPress 4.9.4
572
  * 設定画面の、ショートコードの表示を修正。
573
  Fixed: Fixed so that the short code is displayed immediately on the setting screen.
574
- * 設定画面に、スタイルシートを追加できる設定を追加。
575
  Fixed: Fix to be able to add stylesheet.
576
- * カード管理画面で警告エラーが出ていたのを修正。
577
  Fixed: Fixed a bug.
578
 
579
- Ver2.0.7.2
580
  * WordPress 4.9.2 での動作確認。
581
  Compatible with WordPress 4.9.2
582
  * 設定画面の一部が日本語表記になっていなかったのを修正。
583
  Fixed: A part of the setting screen was not written in Japanese was fixed.
584
 
585
- Ver2.0.7.1
586
  * バグ修正。
587
  Fixed: Fixed a bug.
588
 
589
- Ver2.0.7
590
  * WordPress 4.9 での動作確認。
591
  Compatible with WordPress 4.9
592
- * URLパラメーターが無効な場合にエラー表示する機能から一部のURLを除外。
593
  Modified: Exclude some URLs from errors
594
- * サブディレクトリ型のマルチサイトのとき、メインサイトからサブサイトを外部リンクと判定する設定を追加。
595
  Added: In the case of the multi-site of the subdirectory type, the site under the subdirectory is judged as an external site.
596
 
597
- Ver2.0.6
598
- * URLパラメーターが無効な場合にエラー表示する機能を追加。
599
  Added the function to display URL parameter.
600
 
601
- Ver2.0.5
602
  * 内部リンクの記事ID取得が失敗した場合に外部アクセスする機能を追加。(サイト全体に負荷がかかる可能性があります)
603
  Added: If the PostID can not be acquired, the URL of the redirect destination is acquired.
604
 
605
- Ver2.0.4.1
606
- * アクセスされたURLの末尾が「/?amp=1」だった場合に簡易表示する設定を追加。(Google AMP暫定対応)
607
- Added: Simple display if the end of URL is `/?amp=1`.
608
  * ドキュメント(readme.txt)修正。
609
- Fixed: Fixed a typo in `readme.txt`.
610
 
611
- Ver2.0.4
612
  * WordPress 4.8.2 での動作確認。
613
  Compatible with WordPress 4.8.2
614
  * 「外部リンクにはてなブログカードを使用」した際のURLを変更。
@@ -622,48 +685,48 @@ Ver2.0.4
622
  * 設定画面の「サムネイルの位置」に「上側」を追加。
623
  Added: "Upper" has been added to the position of the thumbnail.
624
 
625
- Ver2.0.3
626
- * 404エラーのときでもリンクを有効にする設定を追加。(Thanks @toru1231)
627
  Added: Added setting to enable link even on 404 error.
628
  * 内部リンクの抜粋文が取得できていなかったのを修正。
629
  Fixed: Fixed an excerpt of the internal link could not be acquired.
630
- * 外部リンクのサムネイル取得が出来なくなる不具合を修正。
631
  Fixed: Fixed a bug that you can not acquire thumbnails of external links.
632
 
633
- Ver2.0.2
634
- * サイトアイコンのURLを取得するように修正。
635
  Fixed: Fix to get URL of site icon.
636
- * サムネイル画像、サイトアイコンが相対指定の場合に対応。
637
  Modified: Corresponds to relative specified URL.
638
- * パラメータが誤っているときにエラーが表示されない場合があったのを修正。
639
  Fixed: Fix to display error when parameter is wrong.
640
 
641
- Ver2.0.1.1
642
- * 警告エラーが発生していたのを修正。
643
  Fixed: Fixed a bug.
644
 
645
- Ver2.0.1
646
  * 内部リンクのカテゴリーページ/タグページに対応。
647
  Added: Supported display of category page.
648
 
649
- Ver2.0.0.3
650
- * Ver2.0.0.2で発生した内部リンクが取得できない不具合を修正。
651
  Fixed: Fixed a bug.
652
 
653
- Ver2.0.0.2
654
- * 未実装のJavaScriptを呼び出し、サーバーログにエラーが出ていたのを修正。
655
  Fixed: Fixed a bug.
656
 
657
- Ver2.0.0.1
658
- * idn_to_utf8()が実装されていない環境でエラーが出ていたのを修正。
659
  Fixed: Fixed a bug.
660
 
661
- Ver2.0.0
662
  * ショートコードでURLを指定する際に「href」も使用できるように変更。(Thanks @weblearninglog)
663
  Modified: "href" was added to the parameter that specifies the URL.
664
- * 設定画面に、テキストエディタへの「クイックタグ」追加の設定を追加。(Thanks @kumasan_kenkou)
665
  Added: A quick tag was added to the text editor.
666
- * 設定画面に、ビジュアルエディタへの「リンクカード作成」ボタン追加の設定を追加。
667
  Added: A card insertion button was added to the visual editor.
668
  * 設定画面に、テキストリンクだけが記載されている行をリンクカードに変更する機能を追加。
669
  Added: Added the function to convert text link to card.
@@ -671,15 +734,15 @@ Ver2.0.0
671
  Added: Added the function to convert URL to card.
672
  * カード管理画面のタイトルと抜粋文を変更されている場合に太文字で表示するように変更。
673
  Modified: Changed so that changed parts are displayed in bold letters on the card management screen.
674
- * 設定画面に、日本語ドメイン(IDNA ASCIIドメイン)に対応する設定を追加。(Thanks @ichinosecom)
675
  Added: It supports display of IDNA ASCII domain.
676
 
677
- Ver1.8.2
678
- * スタイルシートのURLからスキームを削除。(Thanks @mataku_hair)
679
  Modified: The style sheet URL was corrected.
680
  * InstantWPで使用した場合にカード管理画面が文字化けするのを修正。(Thanks aya)
681
  Fixed: Fixed garbled characters on the management screen.
682
- * 外部サイトのサムネイルの保存ディレクトリを変更。
683
  Modified: Changed directory to save thumbnails.
684
  * カード管理画面を狭い画面で見ると表示が崩れるのを修正。
685
  Fixed: Fixed display collapse of the management screen.
@@ -687,66 +750,65 @@ Ver1.8.2
687
  Modified: The character set column of the management screen was deleted.
688
  * カード管理画面のソーシャルカウントの表示を複数列から1列に変更。
689
  Modified: Changed the social count column of the management screen.
690
- * カード管理画面に外部サイトのサムネイル画像の表示を追加。
691
- Modified: The thumbnail display was added to the management screen.
692
 
693
- Ver1.8.1
694
  * WordPress 4.8 での動作確認。
695
  Compatible with WordPress 4.8
696
- * 内部リンクのサムネイル取得について、フルサイズの画像を取得していたのを修正。(Thanks @cstudyupdate)
697
  Fixed: Fixed a bug. Corrected the size of thumbnail to be acquired.
698
- * 設定画面の外部サイトのサムネイルの取得方法に「直接取得」が選べるように機能を追加。
699
- Added: Added setting the direct acquisition of the thumbnail of the external site.
700
  * 設定画面の「かんたん書式設定」にはてなブログカード風の「シンプル」を追加。
701
  Added: Tiny format 'Simple'.
702
 
703
- Ver1.8.0
704
  * 設定画面のカラーコード入力にチェックを追加。
705
  Added: Added color code check.
706
  * 設定画面に、アクセスされたURLの末尾が「/amp」「/amp/」だった場合に簡易表示する設定を追加。(Google AMP暫定対応)(Thanks @misoji_13)
707
- Added: Simple display if the end of URL is `/amp`.
708
  * 設定画面の「かんたん書式設定」に「押しピン」を追加。(Thanks @kautakku )
709
  Added: Tiny format 'Pushpin'.
710
 
711
- Ver1.7.9.1
712
  * 抜粋文の文字フォントサイズが枠線のものになってしまう不具合を修正。(Thanks @cgrio0822)
713
  Fixed: Fixed a bug. Incorrect font size of excerpt.
714
 
715
-
716
- Ver1.7.9
717
  * キャッシュ用DBが作成されず、CPUが高負荷になってしまう不具合を修正。
718
  Fixed: Fixed a bug that table is not created.
719
  * METAタグの名前が大文字が混ざっていると取得できなかったのを修正。(Thanks @J_kindan)
720
  * 内部リンクが取得できない時に外部アクセスしていたのが高負荷に繋がっていたため、外部アクセスしないように修正。(Thanks @J_kindan)
721
  Fixed: Fixed a high load bug
722
 
723
- Ver1.7.8
724
  * キャッシュ用DBが作成されず、CPUが高負荷になってしまう不具合を修正。(Thanks @J_kindan)
725
  Fixed: Fixed a bug that table is not created.
726
 
727
- Ver1.7.7
728
- * アイキャッチ画像が設定されていないテーマの場合にエラーが発生してしまうのを修正。(Thanks enomoto , sato)
729
  Fixed: Fixed a bug
730
 
731
- Ver1.7.6
732
- * 設定画面に、用例などを追加。
733
  Added: Add tips at settings screen
734
  * 設定画面の「かんたん書式設定」に「縫い目」を追加。(Thanks @i_tsu_tsu)
735
  Added: Tiny format 'Stitch'.
736
- * 設定画面に、サムネイル画像のサイズの設定を追加。(Thanks @misoji_13)
737
  Modified: Able to change the size of the thumbnail.
738
 
739
- Ver1.7.5
740
  * WordPress 4.7.1 での動作確認。
741
  Compatible with WordPress 4.7.1.
742
  * アクティベート/バージョンアップ時に重複データを削除する機能を追加。
743
  Cleaning up garbage from the database at activation.
744
  * 設定画面の項目追加と整理。
745
  Modified: Cleaned up the settings screen
746
- * 設定画面に用例などを追加。
747
  Added: Add tips at settings screen
748
  * 設定画面に、サイト情報、タイトル、URL、抜粋文部分の行の高さを追加。(Thanks @keitaihoo , @ud_fibonacci)
749
- Added: Added setting. `Height` in letter.
750
  * 設定画面に、「ドメイン名のみ」以外の場合でも末尾のスラッシュを除去する設定を追加。
751
  Added: Added setting. Trailing slash.
752
  * facebookのシェア数が取得できなくなっていたのを修正。(Thanks @i_tsu_tsu)
@@ -766,104 +828,104 @@ Ver1.7.5
766
  * WebAPIに使用しているURLのデフォルトをSSL対応のものに変更。(Thanks @fumieblog , @hareannie01)
767
  Modified: Supports SSL for WebAPI URL.
768
 
769
- Ver1.7.4
770
  * キャッシュ用DBが作成されず、CPUが高負荷になってしまう不具合を修正。
771
  Fixed: Fixed a bug that table is not created.
772
 
773
- Ver1.7.3
774
  * ドメイン名が取得できていない不具合を修正。
775
  Fixed: Fixed a bug that domain-name disappears.
776
 
777
- Ver1.7.2
778
  * WordPress 4.6 での動作確認。
779
  Compatible with WordPress 4.6.
780
  * 幅に合わせて縮小を有効にしたとき、サムネイルと合わせて文字サイズも小さくするように修正。(Thanks @fumieblog)
781
  Modified: Modified so as also to small character size to fit the size of screen.
782
- * カード管理画面で再取得時にソーシャルカウントが消えてしまう不具合を修正。(1.7.1で発生)(Thanks @i_tsu_tsu)
783
  Fixed: Fixed a bug that social count disappears.
784
- * 内部リンクの画像が取得できない不具合を修正。(1.7.1で発生)(Thanks @i_tsu_tsu)
785
  Fixed: Fixed a bug that thumbnail can not display.
786
- * マルチサイトへの対応方法が誤っていたため修正。(1.7.1で発生)(Thanks @kyutechnabe)
787
  Fixed: When the multi-site, fixes a bug that setting is not properly reflected.
788
 
789
- Ver1.7.1
790
  * 記事内容がキャッシュされない不具合を修正。(Thanks @i_tsu_tsu)
791
  Fixed: Fixed a bug that article content can not be acquired.
792
- * 取得時エラーのサイトのサムネイル表示をしないように修正。(Thanks @misoji_13)
793
  Modified: Time of the error, modified so that it does not display the thumbnail.
794
  * マルチサイトへの仮対応。(Thanks @kyutechnabe)
795
  Modified: Modification of the order to respond to multi-site.
796
 
797
- Ver1.7.0
798
  * ドメイン名のみのときに最後のスラッシュを削除する機能を追加。(Thanks @toru1231)
799
- Added: Added setting. `In the case of domain names, to ignore the trailing-slash`.
800
- * 定型書式に「小麦色」を追加。(Thanks @fumieblog)
801
- Added: Added border `Wheat'.
802
 
803
- Ver1.6.9
804
  * WordPress 4.5.3 での動作確認。
805
  Compatible with WordPress 4.5.3.
806
  * 設定画面で表示幅によってサムネイルを調整する「幅に合わせて縮小」を初期選択するように変更。
807
- Modified: Scaled down to fit the screen size in setting. Default change `disabled` to `enabled`.
808
- * Twitter代替API「count.jsoon」を使用してツイート数の取得に対応。
809
- Modified: Use an alternative API to get the Twitter count.
810
- * 内部リンクのときでWordPress標準のサイトアイコンが設定されていない場合、内部取得を選べないように修正。(Thanks @meiko2285)
811
  Fixed: Fix the method of acquiring the site icon in the internal site.
812
- * 内部リンクのときでサムネイル(アイキャッチ)が設定されていない場合、WebAPIを利用する設定を追加。(Thanks @fumieblog)
813
  Added: Added thumbnail acquisition method at the internal links.
814
- * SSL証明書の検証を無効にする機能を設定に追加。
815
  Added: Added the ability to disable the verification of SSL certificate.
816
  * リンク切れチェック機能の追加にあたってプログラムを一部見直し。(Thanks @misoji_13)
817
 
818
- Ver1.6.8
819
  * WordPress 4.5.2 での動作確認。
820
  Compatible with WordPress 4.5.2.
821
- * 警告エラーが発生していたのを修正。(@junya_0606)
822
  Fixed: Fixed a notice.
823
- * 指定したリンク先によってはMETAタグを内部テーブルに展開するのに失敗してFatalエラーが出るのを修正。(Thanks @misoji_13 , @ryu-blacknd)
824
  Fixed: Fixed an error. In had failed Perth META tags.
825
  * カード管理画面のPHPショートタグを使用しないように修正。(Thanks @toru1231)
826
  Fixed: Fixed so as not to use PHP-short-tags.
827
 
828
- Ver1.6.7
829
  * 設定画面にて、内部リンクの記事抜粋方法を選択できるように修正。(Thanks @okamurajun)
830
  Added: Added a method of article excerpt internal link in setting.
831
 
832
- Ver1.6.6
833
  * 設定画面に「画面の幅によってサムネイルを小さくする」機能を追加。(Thanks 弁保社長)
834
  Added: Scaled down to fit the screen size in setting.
835
 
836
- Ver1.6.5
837
  * WordPress 4.4 での動作確認。
838
  Compatible with WordPress 4.4.
839
  * 設定画面に文字のふちどり指定を追加。(Thanks @okaerinasainet)
840
  Added: Add a border of letters in setting.
841
- * facebookのシェアURLの指定が誤っていたため修正。
842
- Fixed: Fixed incorrect facebook API URL.
843
 
844
- Ver1.6.4
845
  * facebookのシェア数が2以上でも1と表示されていたのを修正。(Thanks 弁保社長)
846
  Fixed: Shares of facebook has not been able to properly get.
847
  * 設定画面にリンクカードのDIV要素に任意のクラス名を設定できるように追加。(Thanks @misoji_13)
848
  Added: Grant function of any class name
849
 
850
- Ver1.6.3
851
- * ツイッターのツイート数取得API終了に伴い、ツイート数取得処理を削除。設定画面に更新されない旨のメッセージを追加。
852
- Modified: Correspondence associated with the end Tweets number acquiring API.
853
  * 設定画面のツイート数表示の初期選択を「表示しない」に変更。
854
  Modified: Changed the initial selection of the number of tweets display on the setting screen to "Hide".
855
- * カード管理画面からソーシャルカウントの再取得を行ったとき、処理を二度行っていたので修正。(1.6.0で発生した不具合)
856
  Fixed: Bugfix.
857
 
858
- Ver1.6.2
859
- * サンフランシスコ時間で11月20日を経過したが、ツイート数が取得できているので制限を一時的に解除。
860
  Modified: Deadline of Tweets number get me grew day.
861
 
862
- Ver1.6.1
863
- * 標準時間で11月20日を経過したが、ツイート数が取得できているので制限を一日延長。
864
  Modified: Deadline of Tweets number get me grew day.
865
 
866
- Ver1.6.0
867
  * リンク先の取得に wp_remote_get() を使用していたのを、cURL に変更。
868
  Modified: Acquired without the wp_remote_get, modified to use a cURL.
869
  * charsetの取得方法を変更。
@@ -873,35 +935,35 @@ Ver1.6.0
873
  * 「カード内側の余白」の設定を追加と、それに伴うCSS修正。(Thanks yunosuke)
874
  Added: Add the margins of the inner card.
875
 
876
- Ver1.1.1
877
  * METAタグの取得方法を修正。
878
  Fixed: Fixed to had failed parsing of meta tags.
879
 
880
- Ver1.1.0
881
- * 2015年11月20日までのTwitter非公式API廃止に伴い、同日以降取得しないように修正。
882
- Modified: Since November 20, 2015 , it does not use the Twitter API.
883
  * 設定画面の「新しいウィンドウで開く」をチェックボックスからリストに変更。
884
  Modified: Change "Open in new window" from the check box to the list on the setting screen.
885
  * 設定画面の「新しいウィンドウで開く」に「モバイル以外(パソコンのみ新しいウィンドウで開く)」を追加。(Thanks @misoji_13)
886
  Added: Added "Other than mobile" to "Open in new window" on the settings screen.
887
 
888
- Ver1.0.3
889
- * キャッシュ保存時にキーが正しく設定されないことがあったのを修正。
890
  * カード管理画面で内部ID(連番)の表示を追加。
891
- * 定型書式「紙がめくれる効果」を修正。(テーマによってはレイアウトが崩れる可能性があります)
892
- * 定型書式「テープと紙めくれ」を追加。(テーマによってはレイアウトが崩れる可能性があります)
893
 
894
- Ver1.0.2
895
  * カード管理画面でキャッシュを編集したとき、一部の文字をエスケープしていなかったのを修正。
896
  * バージョンアップの度に一部のパラメータがデフォルトに戻っていたのを修正。
897
  * プログラム内でのキャッシュの読み書き方法の改善。
898
 
899
- Ver1.0.1
900
  * カード管理画面でキャッシュを編集したとき、内部IDがクリアされてしまう不具合を修正。
901
 
902
- Ver1.0.0
903
  * 全体的なプログラムの見直し。
904
- * URLが空欄などの場合の対応。
905
  * 文字エンコードまわりを修正。
906
  * DBキャッシュまわりを修正。
907
  * ショートコードの囲い文字の扱いの仕様変更。
@@ -915,46 +977,47 @@ Ver1.0.0
915
  * 内部リンクのURLにもリンク(Aタグ)を追加。
916
  * ページング機能を追加。
917
 
918
- Ver0.1.4
919
- * <head>にprefixなどがあるときに、metaタグの解析に失敗していたのを修正。
920
- * パラメータに閉じの「半角角かっこ(大かっこ)」がある場合に、URLに余分なコードが入ってしまうのを修正。
921
 
922
- Ver0.1.3
923
  * content=''となっているOGP情報は無視するように修正。
924
  * metaタグ表記にシングルクォートが使われている場合でも取得できるように修正。
925
- * 定型書式「Pzカード標準書式」を使用し、「サイト情報」を「下側」にしている場合、サイト名が見えなくなるのを修正。
926
  * カード管理画面のセキュリティを強化。
927
  * 設定画面の「サイト情報」の位置を追加。
928
  * 設定画面に「サイト情報」と「記事内容」の間を区切るための「区切り線」を追加。
929
- * サムネイル取得APIの初期設定をWordPress.comのものに変更。
930
  * タイトルや抜粋文をパラメータ等で設定した場合にもHTML等を除去するように変更。
931
 
932
- Ver0.1.2
933
  * 「新しいウィンドウで開く」の設定を追加。
934
  * カード管理画面のソート順を修正。
935
  * facebookの表記を「f」から「fb」へ変更。
936
 
937
- Ver0.1.1
938
  * 公開後発見されたバグを修正。
939
 
940
- Ver0.1.0
941
  * 公式プラグインディレクトリでの最初の公開バージョン。
942
 
943
- Ver0.0.1
944
  * サイト「ぽぽづれ」内での最初の公開バージョン。
945
 
946
- Ver0.0.0
947
  * 途中まで作成していたバージョンを破棄。
948
- * Pz-HatenaBlogCard ver1.2.5 を元にDBアクセス部分を移植してPz-LinkCardを作成。
949
  * サイト「ぽぽづれ(開発環境)」での動作検証。
950
  * サイト「ぽぽづれ」での動作検証。
951
 
952
 
953
  == Upgrade notice ==
954
 
 
955
  == Arbitrary section ==
956
 
957
- == Display and DB cache ==
958
 
959
  This plug-in one create a DB table when you have activated. ( Prefix + "pz_linkcard")
960
 
@@ -963,12 +1026,12 @@ Open the pages of the article when the "For the first time it appears " , and ca
963
  Therefore , the display for the first time is slow , the second and subsequent display is fast.
964
 
965
 
966
- == Create files ==
967
 
968
- CSS file are stored in a custom folder under `/wp-content/Uploads` .
969
 
970
 
971
- == Use Web API ==
972
 
973
  Number of SNS share have been acquired by the JSON request.
974
 
@@ -980,61 +1043,60 @@ Number of SNS share have been acquired by the JSON request.
980
 
981
  * Pocket ... https://widgets.getpocket.com/api/saves?url=[URL]
982
 
983
- Displays using the `Google-favicon API` to get the favicon. This can be changed.
984
 
985
- Displays using the `WordPress.org mshots API` to get the thumbnail. This can be changed.
986
 
987
 
988
- == 表示とキャッシュ ==
989
 
990
  このプラグインは、有効化したときにDBテーブルを一つ作成します。(プレフィックス+「pz_linkcard」)
991
 
992
  外部リンクを設定した場合、記事のページを開いて「初めて表示された」ときに、リンク先のサイトからタイトル・抜粋文を取得してDBへキャッシュします。
993
 
994
-
995
- カードの枚数分、外部サイトへのアクセスが発生するため多量のリンクを作成すると表示に時間がかかります。
996
 
997
  次回の表示はDBキャッシュから行うので高速に表示を行います。
998
 
999
  (内部でのDBアクセスが発生しますが、通常は軽微なものです。カード1枚表示のたびに、取得のために1クエリ発行します。更新が発生した場合には挿入・更新のためのクエリが1回発生します。)
1000
 
1001
 
1002
- == ソーシャルカウントの取得 ==
1003
 
1004
  ソーシャルカウントについては、「Twitter(ツイッター)のツイート数」「facebook(フェイスブック)のシェア数」「はてなブックマークのブックマーク数」「Pocketの登録数」の4種類に対応しています。
1005
 
1006
- それぞれAPIへのJSONリクエストにより値を取得します。
1007
 
1008
  バックグラウンドで取得するため、ページの表示速度には影響がありません。
1009
 
1010
- 取得した値はタイトルや抜粋文と同様、DBへキャッシュを行うため、直近の表示にはAPIアクセスが発生しません。
1011
 
1012
  ソーシャルカウントの再取得は、最後の取得から4時間~36時間程度のランダムな時間で行います。
1013
 
1014
- また、各APIについては、仕様変更やサービス終了に伴い、正常に取得できなくなる場合があります。
1015
 
1016
 
1017
- == 画像取得WebAPIの利用 ==
1018
 
1019
- 設定画面からサムネイル取得のWebAPIが指定できます。
1020
 
1021
- 「WebAPIを利用する」にすることでページのスクリーンショット画像を取得します。
1022
 
1023
- 参考.画像取得APIの設定について https://popozure.info/20151004/9317
1024
 
1025
 
1026
- 設定画面からサイトアイコン(ファビコン)取得のWebAPIが指定できます。
1027
 
1028
  サイトアイコンの場所はサイトによってバリエーションが多いため、WebAPIを使用する前提となります。
1029
 
1030
  正式に公開されているWebAPIでは無いため、仕様変更やサービス終了に伴い、正常に取得できなくなく場合があります。
1031
 
1032
 
1033
- == その他 ==
1034
 
1035
- Pz-HatenaBlogCard からの設定引き継ぎ機能はありません。この機会に触ったことのなかった設定項目にも触れていただければ幸いです。
1036
 
1037
- ショートコードを変えることで、Pz-HatenaBlogCard と併用利用することができますが、通常はリソース消費が増えるだけなので、推奨はしません。
1038
 
1039
 
1040
  ショートコード内にURLを記述した場合、WordPressピンバックは飛びません。
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.2
6
  Stable tag: trunk
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
+ Requires PHP: 7.0
10
  Donate link: https://www.amazon.co.jp/gp/registry/wishlist/2KIBQLC1VLA9X
11
 
12
  This plugin is intended to display a link in a blog card format. The goodbye to the text-only link.
18
 
19
  Easy to use. Just to write a short code.
20
 
21
+ You can change the appearance in the settings screen .
22
 
23
+ You can edit or delete the cache on the manage screen .
24
 
25
  The goodbye to the text-only link.
26
 
27
+ * It will access to WebAPI for the thumbnail image acquisition and site icon of acquisition. In addition , it will save the title and excerpt statement to the database. For more information you want to read the item of arbitrary section about this.
28
 
29
 
30
+ このプラグインはショートコードでURLを指定する事で、リンクをブログカード形式で表示させるものです。
31
 
32
+ 外部リンクと内部リンクで、カードの色や新しくウィンドウを開くか等、設定を変更する事ができます。
33
 
34
  リンク先の情報はキャッシュされるため、ソーシャルカウント等も表示されるカード形式のリンクとしては高速に表示されます。
35
 
37
 
38
  テキストにリンク設定しただけでは物足りないと感じていたら、ぜひお試しください。
39
 
40
+ ※このプラグインはサムネイル取得やサイトアイコン取得のためにリンク先URLをWebAPIに送信します。
41
+ ※タイトルや抜粋文等をDBへ保存します。詳細は「Arbitrary section」をお読みください。
42
 
43
 
44
  == Installation ==
45
 
46
+ Install from WordPress admin panel
 
 
 
47
 
48
+ 1. From the WordPress admin panel, click "Plugins" -> "Add new".
49
+ 2. In the browser input box, type "Pz-LinkCard".
50
+ 3. Select the "Pz-LinkCard" plugin and click "Install".
51
+ 4. Activate the plugin.
52
 
 
53
 
54
+ Install from .zip file
55
 
56
+ 1. Download the plugin from this page.
57
+ 2. Save the .zip file to a location on your computer.
58
+ 3. Open the WordPress admin panel, and click "Plugins" -> "Add new".
59
+ 4. Click "upload" then browse to the .zip file downloaded from this page.
60
+ 5. Click "Install" and then "Activate plugin".
61
 
 
62
 
63
+ WordPressダッシュボードからのインストール
 
 
64
 
65
+ 1. WordPress管理画面から「プラグイン」→「新規追加」とクリックしていきます。
66
+ 2. 検索ボックスに「Pz-LinkCard」を入力して検索します。
67
+ 3. プラグイン名「Pz-LinkCard」と作者「poporon」を確認して「今すぐインストール」をクリックします。
68
+ 4. 「有効化する」をクリックして有効化します。
69
 
70
 
71
  WordPress.org からのダウンロードおよびインストール
72
 
73
+ 1. WordPress.orgのプラグイン一覧から「Pz-LinkCard」を検索します。
74
+ 2. プラグイン名「Pz-LinkCard」と作者「poporon」を確認してダウンロードします。
75
+ 3. WordPress管理画面から「プラグイン」→「新規追加」とクリックしていきます。
76
+ 4. 「プラグインのアップロード」をクリックしてダウンロードしてあるZIPファイルを選択します。
77
+ 5. プラグイン一覧から「有効化」をクリックして有効化します。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
 
79
 
80
  新しいバージョンを有効化したら動作しなくなった場合
81
 
82
+ 1. FTPソフトやサーバーのコントロールパネルからWordPressのインストールされているディレクトリを確認します。
83
+ 2. 「/wp-content/plugins/pz-linkcard」のディレクトリ名を変更します。(例.pz-linkcard-disable )
84
+ 2. WordPressダッシュボードに入ると、プラグインが無効化されたというメッセージが表示されます。
85
+ 3. 先ほど変更したディレクトリ名を元に戻します(戻してもプラグインは勝手に有効化されません)
86
+ 4. プラグインのページから古い安定版をダウンロードします
 
 
 
87
  5. 上書きコピーを行ったあと、有効化を選んで、有効化します
 
88
  6. 不具合が起きた状態や状況、テストサイトであれば、アクセスするためのURLを教えていただけると早急に修正できる場合があります
89
 
90
 
91
  == Frequently asked questions ==
92
 
93
+ = データベースの容量を圧迫しませんか? =
 
94
 
95
+ リンク先URL、タイトル、抜粋文等を取得してデータベースに格納します。
 
96
  URLごとに保存されるため、別の記事でも同一URLを指定した場合にデータは増えません。
97
  結果として記事内にタイトルや抜粋文を記述してリンクを設定するのと大きな差は無いと思います。
98
  記事からショートコードを消してもデータベースからキャッシュ情報は削除されません。
99
  キャッシュ情報を削除する場合、カード管理画面から個別で削除してください。
100
  また、アンインストール時にプラグインと設定内容、キャッシュ用のデータベースを削除します。
101
+ 外部リンクのサムネイルに「直接取得」を指定すると、リンク先サイトの画像を取得してサイズを拡大・縮小したファイルを作成します。
102
  画像サイズを大きくするとファイル容量が増えるのでご注意ください。
103
 
104
+ = 内部リンクでの場合も新しいウィンドウで開きたいのですが? =
 
105
 
106
+ 設定画面から「外部リンク」と「内部リンク」、それぞれ「新しいタブで開く」の設定項目があります。
107
+ 「モバイルのみ」と設定すると、パソコン等では別タブで開き、スマートフォンでは同一タブに開く事もできます。
108
+ 新しいウィンドウで開くか、新しいタブで開くかは、ブラウザ側の制御となるため、ほとんどの場合新しいタブで開く事となります。
109
 
110
+ = WordPressのピンバックがリンク先へ飛びません。 =
 
111
 
 
112
  WordPressピンバックは記事中にリンクを直接記述しないと飛びません。
113
  ショートコード内にURLを記述した場合、ピンバックは飛びません。
114
+ 直接URLを記述し、設定画面の「エディタ」タブから「URL行の変換」を有効にする事で対応できます。
115
 
116
+ = SSLサイトの内容が取得できません。 =
 
117
 
118
+ WordPressが動作しているサーバー側のSSL証明書が更新されていない場合等の場合、SSL検証が失敗されるのが原因と思われます。
119
+ SSL検証を行わない」を有効にする事で改善される場合があります。(非推奨)
120
 
121
+ = nofollowの設定は重要ですか? =
 
122
 
123
+ 外部リンクにのみnofollowが設定できます。
 
124
  Googleではnofollowを指定したリンク先はリンク元のサイトの評価に使用しないとしています。
125
  通常は使用しない事をお勧めしますが、サイトの運用ポリシーによって使用する事は差し支えありません。
126
 
127
+ = noopenerの設定は重要ですか? =
 
128
 
129
+ 外部リンクにnoopenerを設定する事で、悪意を持ったサイトからリンク元のタブを保護する事ができるため設定する事を推奨します。
130
+ 最近のウェブブラウザでは指定が無くてもnoopenerの動作をする物が増えています。
 
 
131
 
132
+ = 直接取得したサムネイルが粗い。 =
 
133
 
134
+ 外部リンクのサムネイルの直接取得は著作権法上の引用の範囲を超える事のないように低解像度(100px四方)としていました。
135
+ Ver.2.1.2から200px四方に変更、Ver.2.4.1から自由に指定できるように変更しました。
136
+ イラストや写真が載っているサイトの画像を高画質で取得し、ギャラリーのような形で表示した場合等は違法と判断される恐れがあります。
137
+
138
+ = 「続きを読む」ボタンが表示されない。 =
139
+
140
+ カードの「高さ」を空欄にして記事内容が全て表示されるように指定しないと表示されない事があります。
141
 
142
 
143
  == Screenshots ==
150
 
151
 
152
  == Changelog ==
153
+
154
+ = 2.4.3 =
155
+ * WordPress 5.6.2 での動作確認。
156
+ Compatible with WordPress 5.6.2.
157
+ * ドキュメント(readme.txt)修正。
158
+ Modified: Modify "readme.txt".
159
+ * ショートコードのURLパラメータの解釈方法を修正。(Thanks @longer_n)
160
+ Fixed: Fixed interpretation of shortcode URL parameters
161
+ * 外部リンクで指定された画像URLが存在しない場合、警告エラーが発生する不具合を修正。(Thanks @miya_gal_ossan)
162
+ Fixed: Fixed a bug that the image URL specified on the external link does not exist.
163
+ * 内部リンクで存在しないカテゴリページを指定した場合、警告エラーが発生する不具合を修正。
164
+ Fixed: Fixed a bug that a warning error occurs when a category page that does not exist is specified in the internal link.
165
+ * 内部リンクで存在しないタグページを指定した場合、警告エラーが発生する不具合を修正。
166
+ Fixed: Fixed a bug that a warning error occurs when a tag page that does not exist is specified in the internal link.
167
+ * 内部リンクでサムネイルが無い場合、デフォルト画像が出てしまう不具合を修正。
168
+ Fixed: Fixed a bug when there is no thumbnail in the internal link.
169
+ * 内部リンクで指定された記事が存在しない場合、警告エラーが発生する不具合を修正。
170
+ Fixed: Fixed a bug when the article specified by the internal link does not exist.
171
+ * 相対URLが指定されている場合、分析に失敗して警告エラーが発生する不具合を修正。(Ver.2.1.9から発生)
172
+ Fixed: Fixed a bug that an error occurs when converting relative URLs
173
+ * リンク先のサーバーが見つからない場合にリンクを設定しないように修正。
174
+ Fixed: Fixed not to set the link when the linked server cannot be found.
175
+ * <HEAD>や<BODY>といったHTMLタグが無いサイトでもTITLEタグやMETAタグを取得するように修正。
176
+ Fixed: Fixed to get TITLE tag and META tag even on sites without HTML tags such as <HEAD> and <BODY>.
177
+ * 外部リンクのサムネイルのキャッシュ画像のURLからスキーム(http:やhttps:)を省略するように変更。(Thanks @miya_gal_ossan)
178
+ Modified: Modified to omit the scheme (http: and https:) from the URL of the cache image of the thumbnail of the external link.
179
+ * 設定画面から国際化ドメイン(IDNA ASCIIドメイン)に対応する設定を削除。
180
+ Modified: Deleted the setting corresponding to the internationalized domain (IDNA ASCII domain) from the setting screen.
181
+ * 設定に関わらず国際化ドメインに対応。
182
+ Modified: Supports internationalized domains regardless of settings.
183
+ * 設定画面で使うカラーピッカーをWordPressの物からHTML5の物に変更。
184
+ Modified: Modified the color picker used on the setting screen from WordPress to HTML5.
185
+ * 設定画面の「相対指定URL」の設定項目を「上級者向け」タブから「リンク先の検査」タブへ移動。
186
+ Modified: Moved the setting item of "Relative URL" on the setting screen from the "Advanced" tab to the "Link Check" tab.
187
+ * 設定画面の「基本」タブに、「更新履歴」の表示を追加。
188
+ Added: Added the display of "Changelog" to the "Basic" tab of the setting screen.
189
+ * 設定画面の「リンク先の検査」タブに「相対指定URL」を追加。
190
+ Added: Added "Relative URL" to the "Link Check" tab of the setting screen.
191
+ * 設定画面の「Web API」タブ、「画像」タブ、「CSS」タブを削除。
192
+ Modified: Removed "Web API" tab, "Image" tab, and "CSS" tab on the setting screen.
193
+ * 設定画面に「その他」タブを追加。(「Web API」「画像」「CSS」の内容を統合)
194
+ Added: Added "etc." tab to the setting screen. (Integrates the contents of "Web API", "Image" and "CSS")
195
+ * 設定画面の「外部リンク」タブに「サムネイルサイズ」の設定を追加。
196
+ Added: Added "Thumbnail Size" setting to "External Link" tab of the setting screen.
197
+ * 設定画面の「内部リンク」タブに「サムネイルサイズ」の設定を追加。(Thanks @in_seki)
198
+ Added: Added "Thumbnail Size" setting to "Internal Link" tab of the setting screen.
199
+ * 設定画面の「リンクチェック」タブの「相対指定URL」の初期選択をチェック有りに変更。
200
+ Modified: Modified the initial selection of "Relative URL" on the "Link Check" tab of the setting screen to Checked.
201
+ * 設定画面に「マルチサイト」タブを追加。(マルチサイト設定時のみ表示されます)
202
+ Added: Added "Multi Site" tab to the setting screen. (Displayed only when multi-site is set)
203
+ * 設定画面の「上級者向け」タブに「ファイルメニュー」の設定を追加。
204
+ Added: Added settings of "File Menu" to the "Advanced" tab of the setting screen.
205
+ * 設定画面の「上級者向け」タブに「初期化タブ」を表示する設定を追加。
206
+ Added: Added a setting to display the "Initialization Tab" in the "Advanced" tab of the setting screen.
207
+ * 設定画面の「上級者向け」タブから「実行時間の表示」の設定を削除。
208
+ Modified: Deleted the setting of "Display execution time" from the "Advanced" tab of the setting screen.
209
+ * 設定画面の「上級者向け」タブに「調査モード」の設定を追加。(通常は使用しないでください)
210
+ Added a setting to display the "Survey Mode" in the "Advanced" tab of the setting screen. (Do not use normally)
211
+ * 設定画面の「上級者向け」タブに「管理者モード」の設定を追加。(動作無能に陥る設定が可能なため、通常は使用しないでください。)
212
+ Added a setting to display the "Administrator Mode" in the "Advanced" tab of the setting screen. (Do not use normally as it can be set to incapacitate.)
213
+ * 設定画面の「上級者向け」タブに「開発者モード」の設定を追加。(動作無能に陥る設定が可能なため、通常は使用しないでください。)
214
+ Added a setting to display the "Developer Mode" in the "Advanced" tab of the setting screen. (Do not use normally as it can be set to incapacitate.)
215
+ * 設定画面の「上級者向け」タブの「URLによるAMP判断」を非推奨に変更。
216
+ Modified: Modified "AMP judgment by URL" on the "Advanced" tab of the setting screen to Deprecated.
217
+ * 設定画面で「変更を保存」を押した際、開いているタブをそのままにするように変更。
218
+ Modified: Modified to leave open tabs when pressing "Save Changes" on the settings screen.
219
+ * 設定画面の「初期化」タブを非表示に変更。(「上級者向け」タブから表示させることができます。)
220
+ Modified: Modified "Initialize" tab of the setting screen to hide. (It can be displayed from the "Advanced" tab.)
221
+ * カード管理画面の一覧に全件表示されていたものを、1ページに10個表示されるように修正。
222
+ Fixed: Fixed all the items displayed in the list on the card management screen so that 10 items are displayed on one page.
223
+ * カード管理画面の外部リンクのURLにリンクを追加。
224
+ Added: Added a link to the URL of the external link on the card management screen.
225
+ * カード管理画面にインポート・エクスポートの機能を追加。(設定画面で「ファイルメニュー」を有効にする必要があります。)
226
+ Added: Added import / export function to the card management screen. (You need to enable "File Menu" on the settings screen.)
227
+ * カード管理画面のドメイン名の表示を国際化ドメインに対応。
228
+ Modified: The domain name display on the card management screen is compatible with internationalized domains.
229
+ * URL表示に<CITE>タグを使用しないように変更。(URLがイタリック表示では無くなります。)
230
+ Modified: Modified not to use <CITE> tag in URL. (The URL is no longer displayed in italics.)
231
+
232
+ = 2.4.2.2 =
233
+ * 追加するCSSファイルが呼び出せていなかった不具合を修正。(Thanks @miya_gal_ossan)
234
  Fixed: Fixed a bug that the additional CSS function does not work properly
235
  * CSSのURLが正しくなくてスタイルシートが適用されない不具合を修正。(Thanks @longer_n)
236
  Fixed a bug that CSS could not be read correctly
237
 
238
+ = 2.4.2.1 =
239
+ * 外部リンクのサムネイルの取得に失敗して警告エラーが発生する不具合を修正。(Ver.2.4.1から発生)(Thanks ‎@kotobatoad)
240
+ Fixed: Fixed a bug that an error occurs when thumbnail images on external links fail.
241
+ * カード管理画面で外部リンクのサムネイルが表示されない不具合を修正。(Ver.2.4.2から発生)
242
+ Fixed: Fixed a bug that thumbnail images of external links are not displayed on the card management screen.
243
 
244
+ = 2.4.2 =
245
+ * 設定画面の「画像」タブにて、指定した画像サイズによっては警告エラーが発生する不具合を修正。(Thanks @miya_gal_ossan)
246
  Fixed: Fixed image size error on settings screen
247
+ * 外部リンクで指定された画像URLが応答しない場合、タイムアウトまで約60秒待ってしまう不具合を修正。(Thanks @miya_gal_ossan)
248
+ Fixed: Fixed a bug that the image URL specified on the external link does not respond.
249
  * 設定画面で使用するjQueryを修正。
250
  Fixed: Review and fix jQuery on the settings screen.
251
  * ビジュアル エディタ(クラシック エディタ)で使用するjQueryを修正。
253
  * アンインストール時にファイルが残ったままだったのを削除するように修正。
254
  Fixed: Fixed to delete the directory that remained at the time of uninstallation.
255
  * ドキュメント(readme.txt)修正。
256
+ Modified: Modify "readme.txt".
257
  * 設定画面の項目名を一部修正。
258
  Modified: Corrected the item name on the setting screen.
259
+ * 設定画面の「配置」タブの「BLOCKQUOTEの設定」を非推奨に変更。
260
  Modified: Modified blockquote setting on the setting screen to deprecated.
261
+ * 設定画面の「外部リンク」タブの「rel="nofollow" の設定」を非推奨に変更。
262
  Modified: Mofified nofollow setting on the setting screen to deprecated.
263
+ * 設定画面の「エディタ」タブにて、ショートコード1を設定しなくても設定エラーとしないように変更。
264
  Modified: Modified shortcode to optional on the setting screen
265
  * 設定画面の設定保存等のメッセージを閉じられるように変更。
266
  Modified: Modified to close the message on the setting screen.
272
  Modified: Modified date format on card management screen.
273
  * 設定を更新した時、ブラウザのキャッシュに関係無くCSSファイルを読み直すように修正。
274
  Modified: Modified to read the CSS file again when updating the settings
275
+ * facebookのシェア数が取得できないため、WebAPIの利用を停止。
276
  Modified: Suspended because the number of shares on facebook cannot be obtained.
277
+ * 設定画面の「エディタ」タブの「ショートコード実行」の初期選択をチェック有りに変更。
278
+ Modified: Modified the initial settings.
279
+ * 当バージョンへバージョンアップした際、「ショートコード実行」をチェック有りに強制変更。
280
+ Modified: Forcibly set "Do shortcode" to on.
281
+ * 「ショートコード実行」がオンになっている場合の動作を「URL行の変換」もしくは「リンク行の変換」がオンになっている場合のみに変更。
282
+ Modified: Modified the condition of "Do shortcode".
283
  * 設定画面に「CSS」タブを追加。
284
  Added: Added "CSS" tab to the setting screen.
285
+ 設定画面の「エラー」タブにて、URL指定エラーのある記事の行へのリンクを追加。
286
  Added: Added a link to an article with an error on the settings screen.
287
  * 設定画面の「外部リンク」タブに、「rel="noopener"」の設定を追加。
288
+ Added: Added settings of "rel="noopener" to the "External Link" tab of the setting screen.
289
+ * 設定画面に「画像」タブを追加。
290
+ Added: Added "Image" tab to the setting screen.
291
  * 設定画面の「画像」タブに、キャッシュ画像のディレクトリ名と使用量の表示を追加。
292
+ Added: Added display of cache image directory name and usage to the "Image" tab of the setting screen.
293
  * 設定画面の「画像」タブに、キャッシュ画像のディレクトリURLの表示を追加。
294
+ Added: Added display of cache image directory URL to the "Image" tab of the setting screen.
295
+ * 設定画面の「上級者向け」タブに、「URLエラーを非表示」の設定を追加。(URLエラー時にWordPress管理画面にエラー表示をしなくなります。)
296
+ Added: Added settings of "Hide URL Error" to the "Advanced" tab of the setting screen.(The error will not be displayed on the WordPress administration screen when a URL error occurs.)
297
  * 設定画面の「上級者向け」タブに、設定を保存した日時の表示を追加。
298
+ Added: Added display of saved date to the "Advanced" tab of the setting screen.
 
 
 
 
 
 
299
 
300
+ = 2.4.1 =
301
  * WordPress 5.6 での動作確認。
302
  Compatible with WordPress 5.6.
303
+ * 外部リンクの画像をキャッシュするときのサイズを選択できる機能を追加。(Thanks @peacediner)
304
+ Added: Added settings to allow you to choose the size when caching images from external link.
305
 
306
+ = 2.4.0 =
307
  * WordPress 5.4.2 での動作確認。
308
  Compatible with WordPress 5.4.2.
309
  * WordPress 5.5 での動作確認。
310
  Compatible with WordPress 5.5.
311
  * WordPress 5.5.3 での動作確認。
312
  Compatible with WordPress 5.5.3.
313
+ * 記事では無いページでURL指定エラーが発生する不具合を修正。(ポストIDが取得できないURLを除外)(Thanks @rindark , @Rina_sendai)
314
  Fixed: Suppressed incorrect error display.
315
+ * サブディレクトリ型マルチサイトの判定において警告エラーが発生する不具合を修正。
316
  Fixed: Suppressed incorrect error display.
317
 
318
+ = 2.3.1 =
319
  * WordPress 5.3 での動作確認。
320
  Compatible with WordPress 5.3.
321
  * ビジュアル エディタのボタンが表示されない不具合を修正。
322
  Fixed a bug that the button of the visual editor is not displayed.
323
 
324
+ = 2.3.0 =
325
+ * プラグイン等のインストール状況によって設定画面のタブが動作しない不具合を修正。
326
  Fixed: Fixed a bug that the tab of the setting screen does not respond.
327
 
328
+ = 2.2.9 =
329
  * WordPress 5.2.3 での動作確認。
330
  Compatible with WordPress 5.2.3.
331
  * 設定画面の「かんたん書式設定」に「コンパクト」を追加。
339
  * 外部リンク、内部リンク、同ページでそれぞれ枠線の色を選択できるように機能を追加。
340
  Added: Added settings so that you can select the border color for external links, internal links, and the same page.
341
 
342
+ = 2.2.8 =
343
  * WordPressテーマ「Cocoon」を使用しているとき、外部リンクのアイコンが表示されないように修正。
344
  Fixed: When using the WordPress theme "Cocoon", the external link icon was not displayed.
345
  * WordPressテーマ「JIN」を使用しているとき、余分な空行が表示されないように修正。
351
  * 「続きを読む」ボタンをSPAN要素からDIV要素に変更。
352
  Modified: "Read more button" changed from SPAN element to DIV element.
353
 
354
+ = 2.2.7 =
355
  * サイトアイコンの垂直位置(vertical-align)をテキスト下(text-bottom)から中央(middle)へ変更。
356
  Modified: Changed the vertical position of the site icon (vertical-align) from the bottom of the text (text-bottom) to the middle (middle).
357
  * サイト追加情報をSPANタグからDIVタグへ変更。
374
  Modified: Added tiny format "Windows XP".
375
  * 内部リンクがキャッシュされない不具合を修正。(Thanks @Masa_s_Record)
376
  Fixed: Fixed a bug that internal links are not cached.
377
+ * サイトアイコンの取得が失敗した際に、警告エラーが発生する不具合を修正。
378
  Fixed: Fixed a bug.
379
 
380
+ = 2.2.6.2 =
381
  * バグ修正。
382
  Fixed: Fixed a bug.
383
 
384
+ = 2.2.6.1 =
385
  * バグ修正。
386
  Fixed: Fixed a bug.
387
 
388
+ = 2.2.6 =
389
  * 設定画面の「余白」に「40px」を追加。
390
  Added: Added "40px" to "Margin" value.
391
  * ドメイン名(サイト名称)にマウスカーソルを重ねたときにアンダーラインが表示されないように変更。
393
  * 挿入ボタンを押したとき、モーダルウィンドウが開くように変更。
394
  Modified: Changed to open a modal window when the insert button is pressed.
395
 
396
+ = 2.2.5 =
397
  * 内部リンクでもnofollow指定できるように修正。
398
  Modified: Fixed to be able to specify nofollow even for internal links.
399
  * 押しピンの画像がクリック無効になるように修正。
400
  Modified: Fixed push pin image to be click invalid.
401
 
402
+ = 2.2.4 =
403
  * WordPress 5.2.2 での動作確認。
404
  Compatible with WordPress 5.2.2.
405
  * ショートコードごとにnofollowを追加できる機能を追加。
406
  Added: Added the function to add nofollow per short code.
407
  * スタイルシートの取得方法を変更。
408
  Modified: Changed style sheet acquisition method.
409
+ * 内部リンクのサムネイルのURLからスキーム(http:やhttps:)を省略するように変更。
410
  Modified: Changed to omit scheme from URL of internal link thumbnail.
411
 
412
+ = 2.2.3 =
413
  * 設定画面にショートコードを強制的に展開する機能を追加。
414
  Added: Added the function to forcibly expand the short code to the setting.
415
  * WordPress 5.2 での動作確認。
417
  * WordPress 5.2.1 での動作確認。
418
  Compatible with WordPress 5.2.1.
419
 
420
+ = 2.2.2.1 =
421
+ * ビジュアル エディタで警告エラーが発生する不具合を修正。
422
  Fixed: Fixed a bug.
423
 
424
+ = 2.2.2 =
425
+ * ビジュアル エディタの挿入ボタンの仕組みを見直し。
426
  Modified: Review the mechanism of the insert button in the visual editor.
427
 
428
+ = 2.2.1 =
429
  * WordPress 5.0.1 での動作確認。
430
  Compatible with WordPress 5.0.1.
431
  * WordPress 5.0.2 での動作確認。
434
  Compatible with WordPress 5.0.3.
435
  * WordPress 5.1 での動作確認。
436
  Compatible with WordPress 5.1.
437
+ * URL指定エラーの解除方法をメッセージに追加。
438
  Modified: Added a message on how to cancel the URL error.
439
  * 編集画面で警告が出ていたのを修正。
440
  Fixed: Fix warning on edit screen.
441
 
442
+ = 2.2.0 =
443
  * WordPress 5.0 での動作確認。
444
  Compatible with WordPress 5.0.
445
+ * 存在しないURLを指定したときに警告エラーが発生する不具合を修正。
446
  Fixed: Fixed a bug.
447
+ * カード管理画面で警告エラーが発生する不具合を修正。
448
  Fixed: Fixed a bug.
449
 
450
+ = 2.1.9.1 =
451
+ * カード管理画面で警告エラーが発生する不具合を修正。
452
  Fixed: Fixed a bug.
453
 
454
+ = 2.1.9 =
455
  * 相対URLを指定したときにサイトURLを補完する機能を追加。
456
  Added: Added a function to supplement site URL when relative URL is specified.
457
 
458
+ = 2.1.8.4 =
459
  * サイト情報が「なし」の場合、「続きを読む」ボタンが表示されなかったのを修正。(Thanks Andrew)
460
+ Fixed: Fixed a bug that the "Read more" button is not displayed.
461
 
462
+ = 2.1.8.3 =
463
+ * カード管理画面で警告エラーが発生する不具合を修正。(Thanks @sayataro98)
464
  Fixed: Fixed a bug.
465
  * 「続きを読む」ボタンが表示されなかったのを修正。(Thanks Andrew)
466
+ Fixed: Fixed a bug that the "Read more" button is not displayed.
467
 
468
+ = 2.1.8.2 =
469
+ * 警告エラーが発生する不具合を修正。
470
  Fixed: Fixed a bug.
471
 
472
+ = 2.1.8.1 =
473
  * フィルターの優先度を指定するように修正。
474
  Modified: Fix to specify filter priority.
475
  * リンク切れチェックの周期が長くなるように修正。
477
  * 編集画面に次回のリンク切れチェック日時を表示。
478
  Modified: The next link break check date and time was displayed on the edit screen.
479
 
480
+ = 2.1.8 =
481
  * 設定画面の「かんたん書式設定」の「Pzカード 標準書式」を「Pzカード オリジナル」に名称変更。
482
  Modified: Minor fixes.
483
  * 設定画面の「かんたん書式設定」の「Pzカード 標準書式」を微調整。
498
  Fixed: Fixed a bug.
499
  * ソーシャルカウントに「Pocket」を追加。
500
  Added: Added Pocket social count.
501
+ * アンカーテキストの装飾を無くすように修正。
502
  Added: Added setting to disable anchor text decoration.
503
 
504
+ = 2.1.7.1 =
505
  * 設定画面の「かんたん書式設定」に「見出し」を追加。
506
  Added: Tiny format 'Headline'.
507
  * スタイルシートを整理。
508
  Modified: Minor fixes.
509
 
510
+ = 2.1.7 =
511
+ * 「外部リンク」「内部リンク」「同ページ」の判定方法を修正。
512
  Modified: Change judgment method.
513
  * 設定画面に外部リンクのみ変換する設定を追加。(テーマに内部リンクのカード化機能がある場合を想定)(Thanks @mocochat)
514
  Added: Added 'Convert only external link'.
515
  * 文字コードを自動判断したときの結果を修正。
516
  Modified: Minor fixes.
517
 
518
+ = 2.1.6.2 =
519
  * アンカーテキストのアンダーラインが表示されてしまうのを修正。
520
  Fixed: Fixed a bug.
521
 
522
+ = 2.1.6.1 =
523
  * サイト情報を表示しないとき、ワーニングが出ていたのを修正。
524
  Fixed: Fixed a bug.(Thanks @ryuji120912)
525
 
526
+ = 2.1.6 =
527
  * 設定画面にTwitterアカウントを表示。
528
  Added: Added 'When in trouble'.
529
+ * タイトル取得方法(正規表現)を修正。
530
  Modified: Fixed title acquisition method.
531
  * アンカーテキストのアンダーラインを無しに。
532
  Modified: Changed the text-decoration to "none".
533
 
534
+ = 2.1.5 =
535
  * 文字装飾を「無し」(none)に変更。
536
  Modified: Changed the text-decoration to "none".
537
  * 設定画面の「影」の初期設定を「影を付けない」に変更。
538
  Modified: Changed the initial setting to "Do not add shadows".
539
  * 設定画面の「角をまるめる」の初期設定を「角を丸めない」に変更。
540
  Modified: Changed the initial setting to "Do not round".
541
+ * 設定画面の外部リンクのサムネイルの初期設定を「直接取得できない場合、WebAPIを利用する」に変更。
542
  Modified: Changed the initial setting to "Use WebAPI ,If can not direct".
543
  * 設定画面の「角をまるめる」にサイズを追加。
544
  Modified: Square rounding has added some sizes.
545
  * 設定画面の「カードの余白」に「24px」を追加。
546
  Modified: 24px was added to the card margin.
547
  * 設定画面のサムネイル取得WebAPIのHeartRail社の例をhttpsに変更。
548
+ Modified: Modified HeartRail WebAPI URL to support SSL.
549
+ * facebookのシェア数取得WebAPIをhttpsに変更。
550
+ Modified: Modified facebook WebAPI URL to support SSL.
551
+ * Twitterのツイート数取得WebAPIをhttpsに変更。
552
+ Modified: Modified Twitter WebAPI URL to support SSL.
553
  * Tweet(s)をクリックしたときの動作をツイート検索に変更。
554
  Modified: From registration to search at Twitter.
555
  * User(s)をクリックしたときの動作をはてなブックマーク数表示に変更。
561
  * 設定画面の「付加情報」を「見出し表示」にする設定を追加。(Thanks @hituji_1234)
562
  Added: Added setting to set additional information as heading.
563
 
564
+ = 2.1.4.2 =
565
  * WordPress 4.9.8 での動作確認。
566
  Compatible with WordPress 4.9.8.
567
 
568
+ = 2.1.4.1 =
569
  * URLの記述ミスを修正。
570
  Modified: Corresponded to URL mistake.
571
 
572
+ = 2.1.4 =
573
  * CHARSETを判断できないパターンがあったのを修正。(Thanks サイノア)
574
  Fixed: There was a pattern which can not judge CHARSET, so I fixed it.
575
  * カード管理画面で「すべて」を選んだときに「内部リンク」のみが表示されていたのを修正。
576
  Fixed: Fixed a bug in card management.
577
 
578
+ = 2.1.3.1 =
579
  * WordPress 4.9.6 での動作確認。
580
  Compatible with WordPress 4.9.6.
581
 
582
+ = 2.1.3 =
583
  * WordPress管理画面のカード管理画面のサブメニュー項目の横にリンク切れの件数を表示する機能を追加。(Thanks @Oncle1316)
584
  Added: Added setting to display the number of broken links next to the submenu.
585
 
586
+ = 2.1.2.2 =
587
+ * 定義されていない変数を使用していたため警告エラーが発生する不具合を修正。
588
  Fixed: Fixed a bug.
589
 
590
+ = 2.1.2.1 =
591
+ * プラグインの新規インストールもしくは停止から有効化した際に警告エラーが発生する不具合を修正。
592
  Fixed: Fixed a bug.
593
 
594
+ = 2.1.2 =
595
+ * 直接取得するサムネイルのサイズを100pxから200pxへ変更。
596
  Fixed: Directly acquired thumbnail size was changed from 100px to 200px.
597
  * 横幅に合わせて縮小表示させるときのフォントサイズと行の高さを調整。
598
  Fixed: Adjusted the font size and line height when reducing the display to fit the width.
603
  * カード管理画面の一括メニューに「サムネイルの再取得」を追加。
604
  Added: "Renew thumbnail" was added to the batch menu of the card management screen.
605
 
606
+ = 2.1.1.1 =
607
  * WordPress 4.9.5 での動作確認。
608
  Compatible with WordPress 4.9.5
609
 
610
+ = 2.1.1 =
611
  * 設定画面に「続きを読む」ボタンの文字の色とサイズを追加。
612
  Added: Added setting of color and size of "Read more".
613
 
614
+ = 2.1.0.1 =
615
  * カード管理画面に「リンク切れ」の項目を追加。
616
  Added: Added "Link broken" item to card management.
617
  * スタイルシートを読み込まないときに簡易表示するように修正。(Google AMP対応)
618
  Modified: If CSS is not loaded, display simple.
619
+ * 設定画面に、テキストエディタのクイックタグを表示するかを選択する設定を追加。
620
  Added: Added settings to allow you to choose whether to display quick tags in a text editor.
621
+ * 設定画面に、ビジュアルエディタの挿入ボタンを表示するかを選択する設定を追加。
622
  Added: Added settings to allow you to choose whether to display the insert button in the visual editor.
623
+ * 設定画面に、「続きを読むボタン」を追加するかと選択する設定を追加。(Thanks @R18otomegame)
624
  Added: Added so that you can set the Read more button
625
  * 設定画面の誤記を修正。
626
  Fixed: The mistyping was corrected.
629
  * 設定画面にバージョン表記を追加。
630
  Modified: Version was written on setting screen.
631
 
632
+ = 2.0.8 =
633
  * WordPress 4.9.4 での動作確認。
634
  Compatible with WordPress 4.9.4
635
  * 設定画面の、ショートコードの表示を修正。
636
  Fixed: Fixed so that the short code is displayed immediately on the setting screen.
637
+ * 設定画面に、スタイルシートを追加する設定を追加。
638
  Fixed: Fix to be able to add stylesheet.
639
+ * カード管理画面で警告エラーが発生する不具合を修正。
640
  Fixed: Fixed a bug.
641
 
642
+ = 2.0.7.2 =
643
  * WordPress 4.9.2 での動作確認。
644
  Compatible with WordPress 4.9.2
645
  * 設定画面の一部が日本語表記になっていなかったのを修正。
646
  Fixed: A part of the setting screen was not written in Japanese was fixed.
647
 
648
+ = 2.0.7.1 =
649
  * バグ修正。
650
  Fixed: Fixed a bug.
651
 
652
+ = 2.0.7 =
653
  * WordPress 4.9 での動作確認。
654
  Compatible with WordPress 4.9
655
+ * 記事では無いページでURL指定エラーが発生する不具合を修正。(特定のURLを除外)
656
  Modified: Exclude some URLs from errors
657
+ * 設定画面に、サブディレクトリ型のマルチサイトのとき、メインサイトからサブサイトを外部リンクと判定する設定を追加。
658
  Added: In the case of the multi-site of the subdirectory type, the site under the subdirectory is judged as an external site.
659
 
660
+ = 2.0.6 =
661
+ * URLパラメーターが無効な場合にURL指定エラーを表示する機能を追加。
662
  Added the function to display URL parameter.
663
 
664
+ = 2.0.5 =
665
  * 内部リンクの記事ID取得が失敗した場合に外部アクセスする機能を追加。(サイト全体に負荷がかかる可能性があります)
666
  Added: If the PostID can not be acquired, the URL of the redirect destination is acquired.
667
 
668
+ = 2.0.4.1 =
669
+ * 設定画面に、アクセスされたURLの末尾が「/?amp=1」だったとき、簡易表示する設定を追加。(Google AMP暫定対応)
670
+ Added: Simple display if the end of URL is "/?amp=1".
671
  * ドキュメント(readme.txt)修正。
672
+ Fixed: Fixed a typo in "readme.txt".
673
 
674
+ = 2.0.4 =
675
  * WordPress 4.8.2 での動作確認。
676
  Compatible with WordPress 4.8.2
677
  * 「外部リンクにはてなブログカードを使用」した際のURLを変更。
685
  * 設定画面の「サムネイルの位置」に「上側」を追加。
686
  Added: "Upper" has been added to the position of the thumbnail.
687
 
688
+ = 2.0.3 =
689
+ * 設定画面に、404エラーのときでもリンクを有効にする設定を追加。(Thanks @toru1231)
690
  Added: Added setting to enable link even on 404 error.
691
  * 内部リンクの抜粋文が取得できていなかったのを修正。
692
  Fixed: Fixed an excerpt of the internal link could not be acquired.
693
+ * 外部リンクのサムネイル取得が失敗する不具合を修正。
694
  Fixed: Fixed a bug that you can not acquire thumbnails of external links.
695
 
696
+ = 2.0.2 =
697
+ * 外部リンクの場合、サイトアイコンURLを取得するように修正。
698
  Fixed: Fix to get URL of site icon.
699
+ * サムネイルURL、サイトアイコンURLが相対パスの場合に絶対パスに変換するように修正。
700
  Modified: Corresponds to relative specified URL.
701
+ * パラメータが誤っているときに設定エラーが表示されない場合があったのを修正。
702
  Fixed: Fix to display error when parameter is wrong.
703
 
704
+ = 2.0.1.1 =
705
+ * 警告エラーが発生する不具合を修正。
706
  Fixed: Fixed a bug.
707
 
708
+ = 2.0.1 =
709
  * 内部リンクのカテゴリーページ/タグページに対応。
710
  Added: Supported display of category page.
711
 
712
+ = 2.0.0.3 =
713
+ * 内部リンクが取得できない不具合を修正。(Ver.2.0.0.2から発生)
714
  Fixed: Fixed a bug.
715
 
716
+ = 2.0.0.2 =
717
+ * 未実装のJavaScriptを呼び出し、エラーがサーバーログに出力される不具合を修正。
718
  Fixed: Fixed a bug.
719
 
720
+ = 2.0.0.1 =
721
+ * idn_to_utf8()が実装されていない環境で警告エラーが発生する不具合を修正。
722
  Fixed: Fixed a bug.
723
 
724
+ = 2.0.0 =
725
  * ショートコードでURLを指定する際に「href」も使用できるように変更。(Thanks @weblearninglog)
726
  Modified: "href" was added to the parameter that specifies the URL.
727
+ * 設定画面に、テキストエディタへ「クイックタグ」を追加する設定を追加。(Thanks @kumasan_kenkou)
728
  Added: A quick tag was added to the text editor.
729
+ * 設定画面に、ビジュアルエディタへ「リンクカード作成」を追加する設定を追加。
730
  Added: A card insertion button was added to the visual editor.
731
  * 設定画面に、テキストリンクだけが記載されている行をリンクカードに変更する機能を追加。
732
  Added: Added the function to convert text link to card.
734
  Added: Added the function to convert URL to card.
735
  * カード管理画面のタイトルと抜粋文を変更されている場合に太文字で表示するように変更。
736
  Modified: Changed so that changed parts are displayed in bold letters on the card management screen.
737
+ * 設定画面に、国際化ドメイン(IDNA ASCIIドメイン)に対応する設定を追加。(Thanks @ichinosecom)
738
  Added: It supports display of IDNA ASCII domain.
739
 
740
+ = 1.8.2 =
741
+ * スタイルシートのURLからスキーム(http:やhttps:)を省略するように変更。(Thanks @mataku_hair)
742
  Modified: The style sheet URL was corrected.
743
  * InstantWPで使用した場合にカード管理画面が文字化けするのを修正。(Thanks aya)
744
  Fixed: Fixed garbled characters on the management screen.
745
+ * 外部リンクのサムネイルの保存ディレクトリを変更。
746
  Modified: Changed directory to save thumbnails.
747
  * カード管理画面を狭い画面で見ると表示が崩れるのを修正。
748
  Fixed: Fixed display collapse of the management screen.
750
  Modified: The character set column of the management screen was deleted.
751
  * カード管理画面のソーシャルカウントの表示を複数列から1列に変更。
752
  Modified: Changed the social count column of the management screen.
753
+ * カード管理画面に外部リンクのサムネイルの表示を追加。
754
+ Added: Added display of thumbnail to the management screen.
755
 
756
+ = 1.8.1 =
757
  * WordPress 4.8 での動作確認。
758
  Compatible with WordPress 4.8
759
+ * 内部リンクのサムネイル取得について、フルサイズ画像を取得していたのを修正。(Thanks @cstudyupdate)
760
  Fixed: Fixed a bug. Corrected the size of thumbnail to be acquired.
761
+ * 設定画面の「外部リンク」タブの、「サムネイルの取得方法」で「直接取得」を選択可能に変更。
762
+ Modified: Modified to be able to select "Direct" from "Thumbnail" on the "External Link" tab of the setting screen.
763
  * 設定画面の「かんたん書式設定」にはてなブログカード風の「シンプル」を追加。
764
  Added: Tiny format 'Simple'.
765
 
766
+ = 1.8.0 =
767
  * 設定画面のカラーコード入力にチェックを追加。
768
  Added: Added color code check.
769
  * 設定画面に、アクセスされたURLの末尾が「/amp」「/amp/」だった場合に簡易表示する設定を追加。(Google AMP暫定対応)(Thanks @misoji_13)
770
+ Added: Simple display if the end of URL is "/amp".
771
  * 設定画面の「かんたん書式設定」に「押しピン」を追加。(Thanks @kautakku )
772
  Added: Tiny format 'Pushpin'.
773
 
774
+ = 1.7.9.1 =
775
  * 抜粋文の文字フォントサイズが枠線のものになってしまう不具合を修正。(Thanks @cgrio0822)
776
  Fixed: Fixed a bug. Incorrect font size of excerpt.
777
 
778
+ = 1.7.9 =
 
779
  * キャッシュ用DBが作成されず、CPUが高負荷になってしまう不具合を修正。
780
  Fixed: Fixed a bug that table is not created.
781
  * METAタグの名前が大文字が混ざっていると取得できなかったのを修正。(Thanks @J_kindan)
782
  * 内部リンクが取得できない時に外部アクセスしていたのが高負荷に繋がっていたため、外部アクセスしないように修正。(Thanks @J_kindan)
783
  Fixed: Fixed a high load bug
784
 
785
+ = 1.7.8 =
786
  * キャッシュ用DBが作成されず、CPUが高負荷になってしまう不具合を修正。(Thanks @J_kindan)
787
  Fixed: Fixed a bug that table is not created.
788
 
789
+ = 1.7.7 =
790
+ * アイキャッチ画像が設定されていないテーマの場合に警告エラーが発生する不具合を修正。(Thanks enomoto , sato)
791
  Fixed: Fixed a bug
792
 
793
+ = 1.7.6 =
794
+ * 設定画面に、用例等を追加。
795
  Added: Add tips at settings screen
796
  * 設定画面の「かんたん書式設定」に「縫い目」を追加。(Thanks @i_tsu_tsu)
797
  Added: Tiny format 'Stitch'.
798
+ * 設定画面に、サムネイルのサイズの設定を追加。(Thanks @misoji_13)
799
  Modified: Able to change the size of the thumbnail.
800
 
801
+ = 1.7.5 =
802
  * WordPress 4.7.1 での動作確認。
803
  Compatible with WordPress 4.7.1.
804
  * アクティベート/バージョンアップ時に重複データを削除する機能を追加。
805
  Cleaning up garbage from the database at activation.
806
  * 設定画面の項目追加と整理。
807
  Modified: Cleaned up the settings screen
808
+ * 設定画面に用例等を追加。
809
  Added: Add tips at settings screen
810
  * 設定画面に、サイト情報、タイトル、URL、抜粋文部分の行の高さを追加。(Thanks @keitaihoo , @ud_fibonacci)
811
+ Added: Added setting. "Height" in letter.
812
  * 設定画面に、「ドメイン名のみ」以外の場合でも末尾のスラッシュを除去する設定を追加。
813
  Added: Added setting. Trailing slash.
814
  * facebookのシェア数が取得できなくなっていたのを修正。(Thanks @i_tsu_tsu)
828
  * WebAPIに使用しているURLのデフォルトをSSL対応のものに変更。(Thanks @fumieblog , @hareannie01)
829
  Modified: Supports SSL for WebAPI URL.
830
 
831
+ = 1.7.4 =
832
  * キャッシュ用DBが作成されず、CPUが高負荷になってしまう不具合を修正。
833
  Fixed: Fixed a bug that table is not created.
834
 
835
+ = 1.7.3 =
836
  * ドメイン名が取得できていない不具合を修正。
837
  Fixed: Fixed a bug that domain-name disappears.
838
 
839
+ = 1.7.2 =
840
  * WordPress 4.6 での動作確認。
841
  Compatible with WordPress 4.6.
842
  * 幅に合わせて縮小を有効にしたとき、サムネイルと合わせて文字サイズも小さくするように修正。(Thanks @fumieblog)
843
  Modified: Modified so as also to small character size to fit the size of screen.
844
+ * カード管理画面で再取得時にソーシャルカウントが消えてしまう不具合を修正。(Ver.1.7.1から発生)(Thanks @i_tsu_tsu)
845
  Fixed: Fixed a bug that social count disappears.
846
+ * 内部リンクの画像が取得できない不具合を修正。(Ver.1.7.1から発生)(Thanks @i_tsu_tsu)
847
  Fixed: Fixed a bug that thumbnail can not display.
848
+ * マルチサイトへの対応方法が誤っていたため修正。(Ver.1.7.1から発生)(Thanks @kyutechnabe)
849
  Fixed: When the multi-site, fixes a bug that setting is not properly reflected.
850
 
851
+ = 1.7.1 =
852
  * 記事内容がキャッシュされない不具合を修正。(Thanks @i_tsu_tsu)
853
  Fixed: Fixed a bug that article content can not be acquired.
854
+ * 取得エラーが発生するサイトのサムネイルを表示しないように修正。(Thanks @misoji_13)
855
  Modified: Time of the error, modified so that it does not display the thumbnail.
856
  * マルチサイトへの仮対応。(Thanks @kyutechnabe)
857
  Modified: Modification of the order to respond to multi-site.
858
 
859
+ = 1.7.0 =
860
  * ドメイン名のみのときに最後のスラッシュを削除する機能を追加。(Thanks @toru1231)
861
+ Added: Added setting. "In the case of domain names, to ignore the trailing-slash".
862
+ * 設定画面の「定型書式」に「小麦色」を追加。(Thanks @fumieblog)
863
+ Added: Added border "Wheat'.
864
 
865
+ = 1.6.9 =
866
  * WordPress 4.5.3 での動作確認。
867
  Compatible with WordPress 4.5.3.
868
  * 設定画面で表示幅によってサムネイルを調整する「幅に合わせて縮小」を初期選択するように変更。
869
+ Modified: Scaled down to fit the screen size in setting. Default change "disabled" to "enabled".
870
+ * Twitter代替WebAPI「count.jsoon」を使用してツイート数の取得に対応。
871
+ Modified: Use an alternative WebAPI to get the Twitter count.
872
+ * 設定画面で、内部リンクのときでWordPress標準のサイトアイコンが設定されていない場合、内部取得を選べないように修正。(Thanks @meiko2285)
873
  Fixed: Fix the method of acquiring the site icon in the internal site.
874
+ * 設定画面に、内部リンクのときでサムネイルが設定されていない場合、WebAPIを利用できる設定を追加。(Thanks @fumieblog)
875
  Added: Added thumbnail acquisition method at the internal links.
876
+ * 設定画面に、SSL証明書の検証を無効にできる設定を追加。
877
  Added: Added the ability to disable the verification of SSL certificate.
878
  * リンク切れチェック機能の追加にあたってプログラムを一部見直し。(Thanks @misoji_13)
879
 
880
+ = 1.6.8 =
881
  * WordPress 4.5.2 での動作確認。
882
  Compatible with WordPress 4.5.2.
883
+ * 警告エラーが発生する不具合を修正。(@junya_0606)
884
  Fixed: Fixed a notice.
885
+ * 指定したリンク先によってはMETAタグを内部テーブルに展開するのに失敗して致命的エラーが発生する不具合を修正。(Thanks @misoji_13 , @ryu-blacknd)
886
  Fixed: Fixed an error. In had failed Perth META tags.
887
  * カード管理画面のPHPショートタグを使用しないように修正。(Thanks @toru1231)
888
  Fixed: Fixed so as not to use PHP-short-tags.
889
 
890
+ = 1.6.7 =
891
  * 設定画面にて、内部リンクの記事抜粋方法を選択できるように修正。(Thanks @okamurajun)
892
  Added: Added a method of article excerpt internal link in setting.
893
 
894
+ = 1.6.6 =
895
  * 設定画面に「画面の幅によってサムネイルを小さくする」機能を追加。(Thanks 弁保社長)
896
  Added: Scaled down to fit the screen size in setting.
897
 
898
+ = 1.6.5 =
899
  * WordPress 4.4 での動作確認。
900
  Compatible with WordPress 4.4.
901
  * 設定画面に文字のふちどり指定を追加。(Thanks @okaerinasainet)
902
  Added: Add a border of letters in setting.
903
+ * facebookのシェア数取得WebAPIのURLが誤っていたため修正。
904
+ Fixed: Fixed incorrect facebook WebAPI URL.
905
 
906
+ = 1.6.4 =
907
  * facebookのシェア数が2以上でも1と表示されていたのを修正。(Thanks 弁保社長)
908
  Fixed: Shares of facebook has not been able to properly get.
909
  * 設定画面にリンクカードのDIV要素に任意のクラス名を設定できるように追加。(Thanks @misoji_13)
910
  Added: Grant function of any class name
911
 
912
+ = 1.6.3 =
913
+ * 「Twitter純正WebAPI」の公開終了に伴ってツイート数取得処理を削除。設定画面に更新されない旨のメッセージを追加。
914
+ Modified: Correspondence associated with the end Tweets number acquiring WebAPI.
915
  * 設定画面のツイート数表示の初期選択を「表示しない」に変更。
916
  Modified: Changed the initial selection of the number of tweets display on the setting screen to "Hide".
917
+ * カード管理画面からソーシャルカウントの再取得を行ったとき、処理を二度行っていたので修正。(Ver.1.6.0から発生)
918
  Fixed: Bugfix.
919
 
920
+ = 1.6.2 =
921
+ * サンフランシスコ時間で11月20日を経過したが「Twitter純正WebAPI」でツイート数が取得できているので制限を一時的に解除。
922
  Modified: Deadline of Tweets number get me grew day.
923
 
924
+ = 1.6.1 =
925
+ * 標準時間で11月20日を経過したが「Twitter純正WebAPI」でツイート数が取得できているので制限を一日延長。
926
  Modified: Deadline of Tweets number get me grew day.
927
 
928
+ = 1.6.0 =
929
  * リンク先の取得に wp_remote_get() を使用していたのを、cURL に変更。
930
  Modified: Acquired without the wp_remote_get, modified to use a cURL.
931
  * charsetの取得方法を変更。
935
  * 「カード内側の余白」の設定を追加と、それに伴うCSS修正。(Thanks yunosuke)
936
  Added: Add the margins of the inner card.
937
 
938
+ = 1.1.1 =
939
  * METAタグの取得方法を修正。
940
  Fixed: Fixed to had failed parsing of meta tags.
941
 
942
+ = 1.1.0 =
943
+ * 2015年11月20日に「Twitter純正WebAPI」が廃止される事に伴い、同日以降取得しないように修正。
944
+ Modified: Since November 20, 2015 , it does not use the Twitter WebAPI.
945
  * 設定画面の「新しいウィンドウで開く」をチェックボックスからリストに変更。
946
  Modified: Change "Open in new window" from the check box to the list on the setting screen.
947
  * 設定画面の「新しいウィンドウで開く」に「モバイル以外(パソコンのみ新しいウィンドウで開く)」を追加。(Thanks @misoji_13)
948
  Added: Added "Other than mobile" to "Open in new window" on the settings screen.
949
 
950
+ = 1.0.3 =
951
+ * キャッシュ保存時にキーが正しく設定されない事があったのを修正。
952
  * カード管理画面で内部ID(連番)の表示を追加。
953
+ * 設定画面の「定型書式」に「紙がめくれる効果」を修正。(テーマによってはレイアウトが崩れる可能性があります)
954
+ * 設定画面の「定型書式」に「テープと紙めくれ」を追加。(テーマによってはレイアウトが崩れる可能性があります)
955
 
956
+ = 1.0.2 =
957
  * カード管理画面でキャッシュを編集したとき、一部の文字をエスケープしていなかったのを修正。
958
  * バージョンアップの度に一部のパラメータがデフォルトに戻っていたのを修正。
959
  * プログラム内でのキャッシュの読み書き方法の改善。
960
 
961
+ = 1.0.1 =
962
  * カード管理画面でキャッシュを編集したとき、内部IDがクリアされてしまう不具合を修正。
963
 
964
+ = 1.0.0 =
965
  * 全体的なプログラムの見直し。
966
+ * URLが空欄等の場合の対応。
967
  * 文字エンコードまわりを修正。
968
  * DBキャッシュまわりを修正。
969
  * ショートコードの囲い文字の扱いの仕様変更。
977
  * 内部リンクのURLにもリンク(Aタグ)を追加。
978
  * ページング機能を追加。
979
 
980
+ = 0.1.4 =
981
+ * <head>にprefix等があるときに、metaタグの解析に失敗していたのを修正。
982
+ * パラメータに閉じの「半角角かっこ(大かっこ)」がある場合に、URLに余分なコードが入ってしまう不具合を修正。
983
 
984
+ = 0.1.3 =
985
  * content=''となっているOGP情報は無視するように修正。
986
  * metaタグ表記にシングルクォートが使われている場合でも取得できるように修正。
987
+ * 設定画面の定型書式に「Pzカード標準書式」を使用し、「サイト情報」を「下側」にしている場合、サイト名が見えなくなる不具合を修正。
988
  * カード管理画面のセキュリティを強化。
989
  * 設定画面の「サイト情報」の位置を追加。
990
  * 設定画面に「サイト情報」と「記事内容」の間を区切るための「区切り線」を追加。
991
+ * サムネイル取得WebAPIの初期設定をWordPress.comのものに変更。
992
  * タイトルや抜粋文をパラメータ等で設定した場合にもHTML等を除去するように変更。
993
 
994
+ = 0.1.2 =
995
  * 「新しいウィンドウで開く」の設定を追加。
996
  * カード管理画面のソート順を修正。
997
  * facebookの表記を「f」から「fb」へ変更。
998
 
999
+ = 0.1.1 =
1000
  * 公開後発見されたバグを修正。
1001
 
1002
+ = 0.1.0 =
1003
  * 公式プラグインディレクトリでの最初の公開バージョン。
1004
 
1005
+ = 0.0.1 =
1006
  * サイト「ぽぽづれ」内での最初の公開バージョン。
1007
 
1008
+ = 0.0.0 =
1009
  * 途中まで作成していたバージョンを破棄。
1010
+ * Pz-HatenaBlogCard Ver.1.2.5 を元にDBアクセス部分を移植してPz-LinkCardを作成。
1011
  * サイト「ぽぽづれ(開発環境)」での動作検証。
1012
  * サイト「ぽぽづれ」での動作検証。
1013
 
1014
 
1015
  == Upgrade notice ==
1016
 
1017
+
1018
  == Arbitrary section ==
1019
 
1020
+ = Display and DB cache =
1021
 
1022
  This plug-in one create a DB table when you have activated. ( Prefix + "pz_linkcard")
1023
 
1026
  Therefore , the display for the first time is slow , the second and subsequent display is fast.
1027
 
1028
 
1029
+ = Create files =
1030
 
1031
+ CSS file are stored in a custom folder under "/wp-content/Uploads" .
1032
 
1033
 
1034
+ = Use Web API =
1035
 
1036
  Number of SNS share have been acquired by the JSON request.
1037
 
1043
 
1044
  * Pocket ... https://widgets.getpocket.com/api/saves?url=[URL]
1045
 
1046
+ Displays using the "Google-favicon API" to get the favicon. This can be changed.
1047
 
1048
+ Displays using the "WordPress.org mshots API" to get the thumbnail. This can be changed.
1049
 
1050
 
1051
+ = 表示とキャッシュ =
1052
 
1053
  このプラグインは、有効化したときにDBテーブルを一つ作成します。(プレフィックス+「pz_linkcard」)
1054
 
1055
  外部リンクを設定した場合、記事のページを開いて「初めて表示された」ときに、リンク先のサイトからタイトル・抜粋文を取得してDBへキャッシュします。
1056
 
1057
+ 外部リンクを設定した場合、カードの枚数分だけ外部サイトへのアクセスが発生するため多量のリンクを作成すると、記事をプレビューした時等、最初の表示に時間がかかります。
 
1058
 
1059
  次回の表示はDBキャッシュから行うので高速に表示を行います。
1060
 
1061
  (内部でのDBアクセスが発生しますが、通常は軽微なものです。カード1枚表示のたびに、取得のために1クエリ発行します。更新が発生した場合には挿入・更新のためのクエリが1回発生します。)
1062
 
1063
 
1064
+ = ソーシャルカウントの取得 =
1065
 
1066
  ソーシャルカウントについては、「Twitter(ツイッター)のツイート数」「facebook(フェイスブック)のシェア数」「はてなブックマークのブックマーク数」「Pocketの登録数」の4種類に対応しています。
1067
 
1068
+ それぞれWebAPIを使用して値を取得します。
1069
 
1070
  バックグラウンドで取得するため、ページの表示速度には影響がありません。
1071
 
1072
+ 取得した値はタイトルや抜粋文と同様、DBへキャッシュを行うため、直近の表示にはWebAPIアクセスが発生しません。
1073
 
1074
  ソーシャルカウントの再取得は、最後の取得から4時間~36時間程度のランダムな時間で行います。
1075
 
1076
+ また、各WebAPIについては、仕様変更やサービス終了に伴い、正常に取得できなくなる場合があります。
1077
 
1078
 
1079
+ = 画像取得WebAPIの利用 =
1080
 
1081
+ 設定画面からサムネイル取得WebAPIが指定できます。
1082
 
1083
+ 「WebAPIを利用する」にする事でページのスクリーンショット画像を取得します。
1084
 
1085
+ 参考.画像取得WebAPIの設定について https://popozure.info/20151004/9317
1086
 
1087
 
1088
+ 設定画面からサイトアイコン取得WebAPIが指定できます。
1089
 
1090
  サイトアイコンの場所はサイトによってバリエーションが多いため、WebAPIを使用する前提となります。
1091
 
1092
  正式に公開されているWebAPIでは無いため、仕様変更やサービス終了に伴い、正常に取得できなくなく場合があります。
1093
 
1094
 
1095
+ = その他 =
1096
 
1097
+ Pz-HatenaBlogCard からの設定引き継ぎ機能はありません。この機会に触った事のなかった設定項目にも触れていただければ幸いです。
1098
 
1099
+ ショートコードを変える事で、Pz-HatenaBlogCard と併用利用する事ができますが、通常はリソース消費が増えるだけなので、推奨はしません。
1100
 
1101
 
1102
  ショートコード内にURLを記述した場合、WordPressピンバックは飛びません。
templete/pz-linkcard-templete.css CHANGED
@@ -1,4 +1,3 @@
1
- /* [Pz-LkC][/*VERSION*/] CSS */
2
  .linkcard {
3
  /*MARGIN-TOP*/
4
  /*MARGIN-BOTTOM*/
@@ -20,6 +19,9 @@
20
  .lkc-link {
21
  /*ANKER*/
22
  }
 
 
 
23
  .lkc-external-wrap {
24
  /*EX-BORDER*/
25
  /*EX-BGCOLOR*/
 
1
  .linkcard {
2
  /*MARGIN-TOP*/
3
  /*MARGIN-BOTTOM*/
19
  .lkc-link {
20
  /*ANKER*/
21
  }
22
+ .lkc-unlink {
23
+ cursor: not-allowed;
24
+ }
25
  .lkc-external-wrap {
26
  /*EX-BORDER*/
27
  /*EX-BGCOLOR*/
uninstall.php CHANGED
@@ -1,32 +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
- $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
- }
1
+ <?php if (!function_exists('get_option' ) ) die; ?>
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
  }