wp widgetで出力されるタグを排除する

2018年10月10日

WordPressのwidgetで出力されるコードには

<div class="textwidget">○○○</div>

というタグが付く。
例えばwidgetのbefore afterで

<p></p>

を指定しても、上記のタグの出力のせいか、

<p>〇〇〇〇</p>

とはならず、

<p>   </p>
<div class="textwidget">〇〇〇〇</div>

となっていた。

そこで余計なことをする

<div class="textwidget"></div>

をなくすことに。

wp-includes/widget/class-wp-widget-text.phpをコピーをとって編集。
325行目あたりの

<div class="textwidget"><?php echo $text; ?></div>

のdiv囲みを取り払って

<?php echo $text;?>

のみにする。
このままではWordpressがアップデートすると元に戻ってしまうので、class-wp-widget-text.phpをごっそりfunctions.phpに記述。
class WP_Widget_Text_noclass extends WP_Widget {
ここのWP_Widget_Text_noclassの部分を使用に合わせて変更。

public function __construct() {
	$widget_ops = array(
	'classname' => 'widget_text_noclass',
	'description' => __( 'textwidgetクラスのないテキストウィジェット' ),

ここのclassname,discriptionをそれぞれ変更。

最後に(ここでハマった)

add_action('widgets_init',create_function('', 'return register_widget("WP_Widget_Text_noclass");'));

を追加。WP_Widget_TYext_noclassの部分は上記に合わせて変更する。

これでOK。
 

PAGE TOP