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

2013年11月11日

当サイトではアフィリエイトプログラムを利用して商品を紹介しています。
※バグ修正(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
こちらの記事を参考にさせていただきました。

PR

コメント

コメントを投稿する

*

The reCAPTCHA verification period has expired. Please reload the page.

    おすすめ記事

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

    • wordpress+nginxにしてみました。

    • wordpressで作ったサイトのドメイン変更をする方法

    • wordpressプラグイン WordPress SEO by Yoastの使い方

    • wordpressのテンプレートにソーシャルボタンを直書きする時のコード

    CATEGORY