htmlタグが勝手に削除される原因

自分の調べ方が下手なのか、理由についてはあまり情報が出てこなかったのですが、新しい要素や有害となりそうなタグは予め除去するようにWordPress側で予め制限しているようです。

ちなみに/wp-includes/ディレクトリにある「kses.php」に$allowedposttagsという変数名で宣言されている配列があり、こちらがデフォルトで許可されているタグリストになるようです。
*本記事最下部に、バージョン4.7.3で確認したリストを記載しましたので、ご参照ください。

canvasを使って描画したい

まだまだユーザー側(閲覧者側)の利用環境が新しいとは限らず仕方なく断念することはあっても、使いたいニーズはかなりありますよね。「もうそこまで考えなくても大丈夫でしょ」と思われた方は羨ましい限りです。。

方法その1:ショートコードにして使う

後述する「フィルター関数を使う」が推奨される方法だと思いますが、ショートコードにして変数を使った処理をしたい場合はこちらの方が便利かも知れません。その場合のサンプルは下記になります。

*サンプルでは、適当にidを変数として受け取る形にしてありますが、特に意味はありません。

function 関数名($atts){
 $atts = shortcode_atts(array(
 'id' => null
 ),$atts);
 $id = $atts['id'];
 $html = <<< EOA
 <canvas id="{$id}" height="XXXX" width="XXXX"></canvas>
EOA;
 return $html;
}
add_shortcode('ショートコード名','関数名');

**function.phpに関数処理を記述し、add_shortcode(‘ショートコード名’,’関数名’)を記載すると、[ショートコード名]と入力すると、記述した処理が走ります。

方法その2:フィルター関数を使う

wp_kses_allowed_htmlという関数を利用してフィルター処理をすることでcanvasタグが使えるようになるようです。
この関数を利用するとcanvasだけでなく他の利用出来ないタグも使えるようになりますので、投稿時に消えてしまうタグが出てきたら一度試してみると良いと思います。

function 関数名($tags,$context) {
  if($context == 'post'){
    $tags['canvas'] = array('id'=>true, 'width'=>true, 'height'=>true);
  }
  return $tags;
}
add_filter( 'wp_kses_allowed_html', '関数名', 10, 2 );

 


登録タグ一覧

address
a
abbr
acronym
area
article
aside
audio

b
bdo
big
blockquote
br
button

caption
cite
code
col
colgroup

del
dd
dfn
details
div
dl
dt

em

fieldset
figure
figcaption
font
footer
form

h1
h2
h3
h4
h5
h6
header
hgroup
hr

i
img
ins

kbd

label
legend
li

map
mark
menu

nav

p
pre

q

s
samp
span
section
small
strike
strong
sub
summary
sup

table
tbody
td
textarea
tfoot
th
thead
title
tr
track
tt

u
ul

ol

var
video

Similar Posts