wordpress 特定のカテゴリーで、Pタグとbrダグを削除するには。


wordpressは自動整形して<p>段落<br>改行タグが自動的に挿入される。

今までは、自動挿入される<p><br>タグは不要だな、と思ってプラグイン「PS Disable Auto Formatting」で削除していた。しかし、このサイトは、掲示板を設けているので一般の人も投稿する事もあると思われる。投稿フォームでタグを入れるのは考えにくいし、旧サイトから記事を移行するのにもいちいちタグを入れるのは面倒なので、wordpressの自動整形は有効にする事にする。

しかし、問題が…

サイト構築のメモを記事にしていく時には、記事内にコードを書く事も多い。その場合、自動整形が有効になっているとコード内にも<p><br>タグが…。

う〜ん。問題だ。

コードを書くカテゴリーだけPタグとbrダグを削除出来ないだろうか?

プラグイン無しで、Pタグとbrダグを削除する方法

調べてみると、Pタグとbrダグを削除するコードが見つかった。

参考サイト

function.phpにコードを書く場合は

remove_filter('the_content', 'wpautop');
remove_filter( 'the_excerpt', 'wpautop' );

これだと、全ての記事で、Pタグとbrダグが削除されるので、NG。

テンプレートにコードを書く物もあった。single.phpの「the_content();」の前にコードを書くらしい。

<?php remove_filter('the_content', 'wpautop'); ?>
<?php the_content(); ?>

「Single Post Template」プラグインを使用してPタグとbrダグが削除されるテンプレートを作る。

目的はコードを書く記事でPタグとbrダグを削除する事なので、投稿でテンプレートが選べるプラグイン「Single Post Template」でPタグとbrダグが削除されるテンプレートを作って、コードを書く時に、そのテンプレートを設定すればOK。

single.phpをコピーしてsingle-web.phpを作って、先ほどの「the_content();」の前に書くコードを足す。

</div><!-- grid__item  one-whole  lap-and-up-one-half -->
 </div><!-- grid  article__meta-footer -->
<hr class="separator separator--dark" />
<?php remove_filter('the_content', 'wpautop'); ?>
<?php the_content(); ?>

毎回テンプレートを設定するのは少々面倒だな。

条件分岐でテンプレートを選べる模様。試してみたが、エラーが出て上手くいかなかった。残念。

参考サイト

条件分岐でテンプレートを選べた!

色々、調べてみると上記サイトに載っていたコードは子テーマを使用しているとダメみたい。

参考サイト

single.phpにカテゴリーの条件分岐を指定する。

子テーマを使用してない場合(親テーマのみ)

<?php
/*
Template Name: single
*/
if ( in_category('v-web') ) {
include(TEMPLATEPATH . '/single-web.php');//v-webの記事にはsingle-web.php
} else if ( in_category('site-info') ) {  
include(TEMPLATEPATH . '/single-event.php');//site-infoの記事にはsingle-nodata.php
}else {
include(TEMPLATEPATH . '/single-default.php');//それ以外の記事にはsingle-default.php
}
?>

子テーマ使用の場合。

<?php
/*
Template Name: single
*/
if ( in_category('v-web') ) {
include(STYLESHEETPATH . '/single-web.php');//v-webの記事にはsingle-web.php
} else if ( in_category('site-info') ) {  
include(STYLESHEETPATH . '/single-nodata.php');//site-infoの記事にはsingle-nodata.php
}else {
include(STYLESHEETPATH . '/single-default.php');//それ以外の記事にはsingle-default.php
}
?>

「TEMPLATEPATH」は親テーマのパスなので、子テーマを使っていて、single.phpを切り替えたい時は、
「TEMPLATEPATH」→「STYLESHEETPATH」にするとの事。

何とか「特定のカテゴリーで、Pタグとbrダグを削除する」と言う目的達成。ついでに他のカテゴリーでもテンプレート指定しておいた。