(Photo by dok1 )BY

wordpressの自動整形を切らずに回避する技

※バグ修正(2013/11/11)
※バグ発見したのでコードを修正しました。(2013/10/15)

htmlを書くととっても邪魔なwordpressの自動整形。

連続改行が反映されなかったり、空タグが消されたり、改行でタグがコピーされたり、なかなかの厄介者です。

しかし、ブログを書くだけの時や、htmlが書けない人にはそこそこ便利。
プラグインで自動整形を無効にすることもできるが、切ってしまうといちいち<p>や<br>を書かないといけないので面倒だ!!ということで、同居する方法をご紹介。

/*管理画面が開いたときに実行*/
add_action('admin_menu', 'add_htmls_box');
add_action('save_post', 'save_custom_field_postdata');

/* カスタムフィールドを投稿画面に追加 */
function add_htmls_box() {
    add_meta_box('htmls', 'html欄', 'htmls_source_for_box', 'page', 'normal', 'high'); //固定ページに追加
    add_meta_box('htmls', 'html欄', 'htmls_source_for_box', 'post', 'normal', 'high'); //投稿に追加
}

/* 投稿画面に表示するフォームのHTMLソース */
function htmls_source_for_box() {
echo '<p>ショートコード[htmls]で任意の場所に下欄のhtmlを挿入。スクリプトも可能!!</p> ';
    if(isset($_GET['post'])){$page_layout = get_post_meta( $_GET['post'], 'htmls' );
echo '<textarea name="htmls" style="width:100%" rows="15">'.$page_layout[0].'</textarea>';
    }else{
echo '<textarea name="htmls" style="width:100%" rows="15"></textarea>';
}
}

/* 設定したカスタムフィールドの値をDBに書き込む記述 */
function save_custom_field_postdata( $post_id  ) {
    if(isset($_POST['htmls'])){$mydata = $_POST['htmls'];
    if ( "" == get_post_meta( $post_id, 'htmls' )) {
        add_post_meta( $post_id, 'htmls', $mydata, true ) ;
    } else if ( $mydata != get_post_meta( $post_id, 'htmls' )) {
        update_post_meta( $post_id, 'htmls', $mydata ) ;
    } else if ( "" == $mydata ) {
        delete_post_meta( $post_id, 'htmls' ) ;
    }}
}
//ショートコード
function html_set() {
return post_custom('htmls');
}
add_shortcode('htmls', 'html_set');

これをfunctions.phpにコピペ!

そうすると、投稿や固定ページのメインテキストエリアの下に「html欄」というテキストエリアが出現!!
html欄

ここにメモ帳ごとくhtmlを書きます。
そしてメインテキストエリアの任意のところに[htmls]と記載。
htmlwo

そうすると、[htmls]の場所にhtml欄のコードがそのまま載ります。
javascriptもiframeもOKです。

例えば、会社概要ページなどにマイクロデータを付加してコーディングした時などwordpressの自動整形で崩れやすいので、ぜひご利用ください。
ここだけはhtmlが崩れたら困る!っという時に!!

http://vinypara.s236.xrea.com/archives/147
こちらの記事を参考にさせていただきました。

おすすめ

  • Yoast SEO プラグインの設定画面がコンパクトになってる

    「Yoast SEOプラグイン」は多機能なSEOプラグインですが、多機能ゆえに設定項目も多いのです。 制作者もそれを分かっているのか、設定項目数を減らしてコンパクトにしようとしているようです。 ただ、いままで使っていた身 […]
  • wordpress3.8でダッシュボードの4つのエリアを2つにする

    wordpress3.8以降ダッシュボードがウィンドウサイズが1500px以上の場合、4つ区切りになりました。 ここにクライアント様に、ガイドなどを乗せたりしていたのですが、4区切りになり幅が狭くなって見にくい!という意 […]
  • wordpress+nginxにしてみました。

    そこら中でnginxを見るようになったので、そんなに凄いのかよ!ということでwordpress+nginxにしてました。 YSlowやPageRank Status(共にchrome拡張)ではあんまり数字が良くなってない […]
123...5

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Time limit is exhausted. Please reload the CAPTCHA.