Pz-LinkCard - Version 2.4.4.4

Version Description

  • WordPress 5.7.1 Compatible with WordPress 5.7.1.
  • WordPress 5.7.2 Compatible with WordPress 5.7.2.
  • WordPress 5.8 Compatible with WordPress 5.8.
  • WordPress 5.8.1 Compatible with WordPress 5.8.1.
  • Added: Added escape sequence to the character string displayed on the list of the card management screen.
  • Added: Added escape sequence to the character string displayed on the editor of the card management screen.
  • Added: Added escape sequence to the character string when displaying the link-card.
Download this release

Release Info

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

Code changes from version 2.4.4.3 to 2.4.4.4

lib/pz-linkcard-cacheman-list.php CHANGED
@@ -1,38 +1,41 @@
1
  <?php defined('ABSPATH' ) || wp_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
  // 抽出条件
@@ -64,55 +67,53 @@
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
 
@@ -125,13 +126,6 @@
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, ";
@@ -196,9 +190,9 @@
196
  <option value="" selected="selected"><?php _e('All Domain', $this->text_domain ); ?></option>
197
  <?php
198
  foreach ($domain_list as $rec ) {
199
- $disp_domain = (function_exists('idn_to_utf8' ) && mb_substr($rec->domain, 0, 4) == 'xn--') ? idn_to_utf8($rec->domain ) : $rec->domain ;
200
- $selected = $rec->domain == $refine ? ' selected="selected"' : null ;
201
- echo '<option value="'.$rec->domain.'"'.$selected.'>'.$disp_domain.' ('.$rec->count.')</option>';
202
  }
203
  ?>
204
  </select>
@@ -306,26 +300,26 @@
306
  }
307
  }
308
  if ($is_internal ) {
309
- $html_url .= '<a href="'.$url.'" title="'.$url.'" rel="internal" target="_self">';
310
  } else {
311
- $html_url .= '<a href="'.$url.'" title="'.$url.'" rel="external noopenner noreferrer" target="_blank">';
312
  }
313
- $html_url .= $this->pz_DecodeURL($url ).'</a>';
314
 
315
  // タイトル
316
- $title = htmlspecialchars($data->title );
317
  if ($data->regist_title == $data->title ) {
318
- $html_title = $title;
319
  } else {
320
- $html_title = '<b>'.$title.'</b>';
321
  }
322
 
323
  // 抜粋文
324
- $excerpt = htmlspecialchars($data->excerpt );
325
  if ($data->regist_excerpt == $data->excerpt ) {
326
- $html_excerpt = $excerpt;
327
  } else {
328
- $html_excerpt = '<b>'.$excerpt.'</b>';
329
  }
330
 
331
  // SNSカウント
@@ -366,14 +360,6 @@
366
  }
367
  }
368
 
369
- // $html_post_id = null;
370
- // $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;
371
- // $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;
372
- // $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;
373
- // $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;
374
- // $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;
375
- // $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;
376
-
377
  // HTTPレスポンス
378
  $html_result = '<span class="pz-lkc-man-body-result-update">'.strHTTPCode($data->update_result, $this->pz_HTTPMessage($data->update_result ) ).'</span>';
379
  if ($data->update_result <> $data->alive_result ) {
@@ -398,8 +384,8 @@
398
  </div>
399
  </td>
400
  <td><div class="pz-lkc-man-body-excerpt" title="<?php echo $excerpt; ?>"><?php echo $html_excerpt; ?></div></td>
401
- <td class="pz-lkc-man-body-charset pz-lkc-admin-only"><?php echo $data->charset; ?></td>
402
- <td><div class="pz-lkc-man-body-domain"><div 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; } ?></div><span class="pz-lkc-man-body-sitename" title="<?php echo $data->site_name; ?>"><?php echo $data->site_name; ?></span></div></td>
403
  <td class="pz-lkc-man-body-sns"><?php echo $html_sns; ?></td>
404
  <td class="pz-lkc-man-body-resist-time pz-lkc-admin-only"><?php $dt=$data->regist_time; ?><span title="<?php echo date($this->datetime_format, $dt); ?>"><?php echo date('Y', $dt ); ?><br><?php echo date('m/d', $dt ); ?><br><?php echo date('H:i', $dt ); ?></span></td></td>
405
  <td class="pz-lkc-man-body-update-time"><?php $dt=$data->update_time; ?><span title="<?php echo date($this->datetime_format, $dt); ?>"><?php echo date('Y', $dt ); ?><br><?php echo date('m/d', $dt ); ?><br><?php echo date('H:i', $dt ); ?></span></td></td>
1
  <?php defined('ABSPATH' ) || wp_die; ?>
2
  <?php
3
+ // ドメイン一覧作成
4
+ $domain_list = $wpdb->get_results("SELECT domain, site_name, count(*) AS count FROM $this->db_name GROUP BY DOMAIN ASC", ARRAY_A );
5
+
6
+ // ドメイン存在チェック
7
+ $refine = null;
8
+ if ($param_refine ) {
9
+ foreach ($domain_list as $item ) {
10
+ if ($param_refine == $item['domain'] ) {
11
+ $refine = $item['domain'];
12
+ break;
13
+ }
14
+ }
15
+ }
16
+
17
+ // キーワード
18
+ if ($param_keyword ) {
19
+ $keyword = stripslashes($param_keyword );
20
+ } else {
21
+ $keyword = null;
 
 
 
 
 
 
 
 
 
22
  }
23
 
24
+ // ソート項目パラメータ
25
+ $column_rec = $wpdb->get_results("SELECT * FROM $this->db_name LIMIT 1", ARRAY_A ); // 1レコード目を取得
26
+ $param_orderby = strtolower($param_orderby );
27
+ if (isset($column_rec[0] ) && array_key_exists($param_orderby, $column_rec[0] ) ) { // 項目名に存在するかチェック
28
+ $orderby = $param_orderby; // 存在したら項目名にセットする
29
+ } else {
30
+ $orderby = 'id'; // 存在しない項目名の場合 'id' をセットする
31
+ }
32
+
33
+ // ソート順パラメータ
34
+ $param_order = strtolower($param_order );
35
+ if ($param_order == 'asc' ) {
36
+ $order = 'asc'; // 昇順
37
+ } else {
38
+ $order = 'desc'; // 降順
39
  }
40
 
41
  // 抽出条件
67
  }
68
  }
69
 
70
+ // キーワード指定
71
+ $param = array();
72
+ if ($keyword ) {
73
+ $like = '%' . $wpdb->esc_like($keyword ) . '%';
74
+ $param[] = $like;
75
+ $param[] = $like;
 
76
  if ($where ) {
77
+ $where .= " AND ";
 
 
78
  }
79
+ $where .= "( title LIKE '%s' OR excerpt LIKE '%s' )";
80
  }
81
 
82
  // ドメイン指定
83
+ if ($refine ) {
84
+ $param[] = $refine;
 
 
 
 
85
  if ($where ) {
86
+ $where .= " AND ";
 
 
87
  }
88
+ $where .= "domain = %s";
89
  }
90
 
91
  // 検索SQL作成
92
+ $sql = "SELECT * FROM $this->db_name";
93
+ if ($where ) {
94
+ $sql .= " WHERE $where";
95
  }
96
+ if ($orderby ) {
97
+ $sql .= " ORDER BY $orderby $order";
98
  }
99
+ if (strpos($sql, 'UPDATE' ) || strpos($sql, 'UNION' ) ) { // 気持ち程度のインジェクション対策
100
+ $sql = null;
101
  }
102
 
103
  // データ抽出
104
+ switch (count($param ) ) {
105
+ case 1:
106
+ $data_now = $wpdb->get_results($wpdb->prepare($sql, $param[0] ) );
107
+ break;
108
+ case 2:
109
+ $data_now = $wpdb->get_results($wpdb->prepare($sql, $param[0], $param[1] ) );
110
+ break;
111
+ case 3:
112
+ $data_now = $wpdb->get_results($wpdb->prepare($sql, $param[0], $param[1], $param[2] ) );
113
+ break;
114
+ default:
115
  $data_now = $wpdb->get_results($sql );
116
+ break;
117
  }
118
  $count_now = count($data_now );
119
 
126
  $page_next = intval(($page_now < $page_max ) ? $page_now + 1 : null ); // 次のページ数
127
  $page_top = intval(($page_now < 1 ) ? 0 : (($page_now - 1 ) * $page_limit ) ); // ページの最初(0 origin)
128
 
 
 
 
 
 
 
 
129
  // 件数確認
130
  $sql = "SELECT COUNT( * ) AS count_all, ";
131
  $sql .= "COUNT( CASE WHEN url LIKE '".get_bloginfo('url' )."%' THEN 1 END ) AS count_internal, ";
190
  <option value="" selected="selected"><?php _e('All Domain', $this->text_domain ); ?></option>
191
  <?php
192
  foreach ($domain_list as $rec ) {
193
+ $disp_domain = (function_exists('idn_to_utf8' ) && mb_substr($rec[domain], 0, 4) == 'xn--') ? idn_to_utf8($rec[domain] ) : $rec[domain] ;
194
+ $selected = $rec[domain] == $refine ? ' selected="selected"' : null ;
195
+ echo '<option value="'.htmlspecialchars($rec[domain] ).'"'.$selected.'>'.htmlspecialchars($disp_domain ).' ('.$rec[count].')</option>';
196
  }
197
  ?>
198
  </select>
300
  }
301
  }
302
  if ($is_internal ) {
303
+ $html_url .= '<a href="'.htmlspecialchars($url ).'" title="'.htmlspecialchars($url ).'" rel="internal" target="_self">';
304
  } else {
305
+ $html_url .= '<a href="'.htmlspecialchars($url ).'" title="'.htmlspecialchars($url ).'" rel="external noopenner noreferrer" target="_blank">';
306
  }
307
+ $html_url .= htmlspecialchars($this->pz_DecodeURL($url ) ).'</a>';
308
 
309
  // タイトル
310
+ $title = $data->title;
311
  if ($data->regist_title == $data->title ) {
312
+ $html_title = htmlspecialchars($title );
313
  } else {
314
+ $html_title = '<b>'.htmlspecialchars($title ).'</b>';
315
  }
316
 
317
  // 抜粋文
318
+ $excerpt = $data->excerpt;
319
  if ($data->regist_excerpt == $data->excerpt ) {
320
+ $html_excerpt = htmlspecialchars($excerpt );
321
  } else {
322
+ $html_excerpt = '<b>'.htmlspecialchars($excerpt ).'</b>';
323
  }
324
 
325
  // SNSカウント
360
  }
361
  }
362
 
 
 
 
 
 
 
 
 
363
  // HTTPレスポンス
364
  $html_result = '<span class="pz-lkc-man-body-result-update">'.strHTTPCode($data->update_result, $this->pz_HTTPMessage($data->update_result ) ).'</span>';
365
  if ($data->update_result <> $data->alive_result ) {
384
  </div>
385
  </td>
386
  <td><div class="pz-lkc-man-body-excerpt" title="<?php echo $excerpt; ?>"><?php echo $html_excerpt; ?></div></td>
387
+ <td class="pz-lkc-man-body-charset pz-lkc-admin-only"><?php echo htmlspecialchars($data->charset ); ?></td>
388
+ <td><div class="pz-lkc-man-body-domain"><div 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; } ?></div><span class="pz-lkc-man-body-sitename" title="<?php echo htmlspecialchars($data->site_name ); ?>"><?php echo htmlspecialchars($data->site_name ); ?></span></div></td>
389
  <td class="pz-lkc-man-body-sns"><?php echo $html_sns; ?></td>
390
  <td class="pz-lkc-man-body-resist-time pz-lkc-admin-only"><?php $dt=$data->regist_time; ?><span title="<?php echo date($this->datetime_format, $dt); ?>"><?php echo date('Y', $dt ); ?><br><?php echo date('m/d', $dt ); ?><br><?php echo date('H:i', $dt ); ?></span></td></td>
391
  <td class="pz-lkc-man-body-update-time"><?php $dt=$data->update_time; ?><span title="<?php echo date($this->datetime_format, $dt); ?>"><?php echo date('Y', $dt ); ?><br><?php echo date('m/d', $dt ); ?><br><?php echo date('H:i', $dt ); ?></span></td></td>
lib/pz-linkcard-cacheman.php CHANGED
@@ -8,33 +8,34 @@
8
  <input type="text" class="pz-lkc-display pz-lkc-hide" name="pz-lkc-admin" value="<?php echo $this->options['admin-mode']; ?>" />
9
  <input type="text" class="pz-lkc-display pz-lkc-hide" name="pz-lkc-develop" value="<?php echo $this->options['develop-mode']; ?>" />
10
  <?php
11
- $data = null;
12
  if (isset($_REQUEST['update'] ) ) {
13
- $action = 'update';
14
  if (isset($_REQUEST['data'] ) && is_array($_REQUEST['data'] ) ) {
15
- $data = $_REQUEST['data'];
16
  }
17
- $bulk_id = null;
18
  } elseif (isset($_REQUEST['cancel'] ) ) {
19
- $action = null;
20
- $bulk_id = null;
21
  } else {
22
- $action = isset($_REQUEST['action'] ) ? $_REQUEST['action'] : null;
23
- $bulk_id = isset($_REQUEST['id'] ) ? $_REQUEST['id'] : null;
24
  }
25
- $refine = isset($_REQUEST['refine'] ) ? $_REQUEST['refine'] : null;
26
- $keyword = isset($_REQUEST['keyword'] ) ? $_REQUEST['keyword'] : null;
27
- $orderby = isset($_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : null;
28
- $order = isset($_REQUEST['order'] ) ? $_REQUEST['order'] : null;
29
- $orderby_now = isset($_REQUEST['orderby_now'] ) ? $_REQUEST['orderby_now'] : null;
30
- $order_now = isset($_REQUEST['order_now'] ) ? $_REQUEST['order_now'] : null;
31
- $extraction = isset($_REQUEST['extraction'] ) ? $_REQUEST['extraction'] : null;
32
- $cache_id = isset($_REQUEST['cache_id'] ) ? $_REQUEST['cache_id'] : null;
33
- $confirm = isset($_REQUEST['confirm'] ) ? $_REQUEST['confirm'] : null;
34
- $update_result = isset($_REQUEST['update_result'] ) ? $_REQUEST['update_result'] : null;
35
- $alive_result = isset($_REQUEST['alive_result'] ) ? $_REQUEST['alive_result'] : null;
36
- $paged = isset($_REQUEST['paged'] ) ? $_REQUEST['paged'] : 1;
37
- $paged = intval($paged ) - 0;
 
38
 
39
  $mydomain = null;
40
  if (preg_match('{https?://(.*)/}i', $this->home_url.'/',$m ) ) {
8
  <input type="text" class="pz-lkc-display pz-lkc-hide" name="pz-lkc-admin" value="<?php echo $this->options['admin-mode']; ?>" />
9
  <input type="text" class="pz-lkc-display pz-lkc-hide" name="pz-lkc-develop" value="<?php echo $this->options['develop-mode']; ?>" />
10
  <?php
11
+ $data = null;
12
  if (isset($_REQUEST['update'] ) ) {
13
+ $action = 'update';
14
  if (isset($_REQUEST['data'] ) && is_array($_REQUEST['data'] ) ) {
15
+ $data = $_REQUEST['data'];
16
  }
17
+ $bulk_id = null;
18
  } elseif (isset($_REQUEST['cancel'] ) ) {
19
+ $action = null;
20
+ $bulk_id = null;
21
  } else {
22
+ $action = isset($_REQUEST['action'] ) ? $_REQUEST['action'] : null;
23
+ $bulk_id = isset($_REQUEST['id'] ) ? $_REQUEST['id'] : null;
24
  }
25
+
26
+ $param_refine = isset($_REQUEST['refine'] ) ? $_REQUEST['refine'] : null;
27
+ $param_keyword = isset($_REQUEST['keyword'] ) ? $_REQUEST['keyword'] : null;
28
+ $param_orderby = isset($_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : null;
29
+ $param_order = isset($_REQUEST['order'] ) ? $_REQUEST['order'] : null;
30
+
31
+ $extraction = isset($_REQUEST['extraction'] ) ? $_REQUEST['extraction'] : null;
32
+ $cache_id = isset($_REQUEST['cache_id'] ) ? $_REQUEST['cache_id'] : null;
33
+ $confirm = isset($_REQUEST['confirm'] ) ? $_REQUEST['confirm'] : null;
34
+ $update_result = isset($_REQUEST['update_result'] ) ? $_REQUEST['update_result'] : null;
35
+ $alive_result = isset($_REQUEST['alive_result'] ) ? $_REQUEST['alive_result'] : null;
36
+
37
+ $paged = isset($_REQUEST['paged'] ) ? $_REQUEST['paged'] : 1;
38
+ $paged = intval($paged ) - 0;
39
 
40
  $mydomain = null;
41
  if (preg_match('{https?://(.*)/}i', $this->home_url.'/',$m ) ) {
pz-linkcard.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Pz-LinkCard
4
  Plugin URI: http://poporon.poponet.jp/pz-linkcard
5
  Description: リンクをカード形式で表示します。
6
- Version: 2.4.4.3
7
  Author: Poporon
8
  Author URI: http://poporon.poponet.jp
9
  Text Domain: pz-linkcard
@@ -17,7 +17,7 @@ class Pz_LinkCard {
17
  protected $defaults = array(
18
  'plugin-abbreviation' => 'Pz-LkC',
19
  'plugin-name' => 'Pz-LinkCard',
20
- 'plugin-version' => '2.4.4.3',
21
  'plugin-path' => '/pz-linkcard',
22
  'author-url' => 'https://popozure.info',
23
  'author-name' => 'Poporon',
@@ -994,6 +994,9 @@ class Pz_LinkCard {
994
  // 半角空白があったらエンティティ化(エンコード)
995
  $url = str_replace(' ', '%20', $url );
996
 
 
 
 
997
  // デコードしたURLを返却
998
  return $url;
999
  }
3
  Plugin Name: Pz-LinkCard
4
  Plugin URI: http://poporon.poponet.jp/pz-linkcard
5
  Description: リンクをカード形式で表示します。
6
+ Version: 2.4.4.4
7
  Author: Poporon
8
  Author URI: http://poporon.poponet.jp
9
  Text Domain: pz-linkcard
17
  protected $defaults = array(
18
  'plugin-abbreviation' => 'Pz-LkC',
19
  'plugin-name' => 'Pz-LinkCard',
20
+ 'plugin-version' => '2.4.4.4',
21
  'plugin-path' => '/pz-linkcard',
22
  'author-url' => 'https://popozure.info',
23
  'author-name' => 'Poporon',
994
  // 半角空白があったらエンティティ化(エンコード)
995
  $url = str_replace(' ', '%20', $url );
996
 
997
+ // HTMLタグをエスケープ
998
+ $url = htmlspecialchars($url );
999
+
1000
  // デコードしたURLを返却
1001
  return $url;
1002
  }
readme.txt CHANGED
@@ -2,7 +2,7 @@
2
  Contributors: Poporon
3
  Tags: LinkCard, BlogCard, Internal Link, External Link
4
  Requires at least: 4.3
5
- Tested up to: 5.7
6
  Stable tag: trunk
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -151,6 +151,22 @@ Ver.2.1.2から200px四方に変更、Ver.2.4.1から自由に指定できるよ
151
 
152
  == Changelog ==
153
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  = 2.4.4.3 =
155
  * 設定画面の「エディタ」タブの「テキストリンク行を変換」を有効にした場合、行の始めから終わりまでAタグで囲われている場合、画像等があっても変換してしまう不具合を修正。(Thanks @magemagemaaage)
156
  Fixed: Fixed a bug that "Convert text link line" on the "Editor" tab of the setting screen converts even if there is something other than text.
2
  Contributors: Poporon
3
  Tags: LinkCard, BlogCard, Internal Link, External Link
4
  Requires at least: 4.3
5
+ Tested up to: 5.8.1
6
  Stable tag: trunk
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
151
 
152
  == Changelog ==
153
 
154
+ = 2.4.4.4 =
155
+ * WordPress 5.7.1 での動作確認。
156
+ Compatible with WordPress 5.7.1.
157
+ * WordPress 5.7.2 での動作確認。
158
+ Compatible with WordPress 5.7.2.
159
+ * WordPress 5.8 での動作確認。
160
+ Compatible with WordPress 5.8.
161
+ * WordPress 5.8.1 での動作確認。
162
+ Compatible with WordPress 5.8.1.
163
+ * カード管理画面の一覧画面に表示される文字列にエスケープ処理を追加。
164
+ Added: Added escape sequence to the character string displayed on the list of the card management screen.
165
+ * カード管理画面の編集画面に表示される文字列にエスケープ処理を追加。
166
+ Added: Added escape sequence to the character string displayed on the editor of the card management screen.
167
+ * リンクカードを表示する際の文字列にエスケープ処理を追加。
168
+ Added: Added escape sequence to the character string when displaying the link-card.
169
+
170
  = 2.4.4.3 =
171
  * 設定画面の「エディタ」タブの「テキストリンク行を変換」を有効にした場合、行の始めから終わりまでAタグで囲われている場合、画像等があっても変換してしまう不具合を修正。(Thanks @magemagemaaage)
172
  Fixed: Fixed a bug that "Convert text link line" on the "Editor" tab of the setting screen converts even if there is something other than text.