WP Editorが入力テキスト要素の "placeholder"属性も削除するのはなぜですか?もちろん、私はHTMLモードを使用しています。これが入力です。
<input type="text" value="" name="s" style="width: 550px;" placeholder="Search this website..">
投稿を更新した後(削除後):
<input type="text" value="" name="s" style="width: 550px;">
WP Editorにそのような属性を取り除かせたくありません。
どんな助け?
許可された要素と属性のリストは、$allowedposttags
に設定されているグローバル変数wp-includes/kses.php
に格納されています。
これを上書きするには、次の内容の単純な muプラグイン を作成します。
<?php # -*- coding: utf-8 -*-
/**
* Plugin Name: Enable placeholder attribute for input elements in post tags.
* Version: 2012.07.18
*/
add_action( 'init', 'wpse_54829_register_placeholder' );
function wpse_54829_register_placeholder()
{
global $allowedposttags;
$default = empty ( $allowedposttags['input'] ) ? array () : $allowedposttags['input'];
$custom = array (
'placeholder' => TRUE,
'name' => TRUE,
'value' => TRUE,
'size' => TRUE,
'maxlength' => TRUE,
'type' => TRUE,
'required' => TRUE
);
$allowedposttags['input'] = array_merge( $default, $custom );
}
コンテンツ<input placeholder="pass" required />
を含むこの投稿は、作成者アカウントで作成されました:
あなたはショートコードを使うことができます! ;)
<?php
// desired output: <input type="text" value="" name="s" style="width: 550px;" placeholder="Search this website..">
// sc: [text_input name="s" style="width: 550px;" placeholder="Search this website.."]
add_shortcode('text_input','text_input_sc');
function text_input_sc($atts) {
// modify defaults as you wish
$defaults = array(
'id' => null,
'class' => null,
'value' => null,
'name' => null,
'size' => null,
'style' => null,
'placeholder' => null
);
$args = shortcode_atts($defaults, $atts);
$out = array();
foreach ($args as $attr => $value) {
if ( null !== $value )
$out[] = $attr.'="'.$value.'"';
}
$out = trim(implode(' ', $out));
if( !empty($out) )
$out = ' '.$out;
return vsprintf('<input type="text"%s>', $out);
}
テストされていませんが、間違いなく動作するはずです。