ページにソースを貼りたい時、文字のエスケープは必須ですよね。
前回、自由にお使い頂ける【 エンティティ変換ツール 】を投稿したのですが、
「もっと使いやすくしたい !」
「違う文字もエンコードしたい !」
なんて事もあるかも??
という事で、コードもアップしておきます^^
こちらのコードは投稿に置けるよう、
エンティティ用のテンプレートを作り、
「 投稿に、ショートコードでテンプレートを呼び出す 」事を想定しています。
もし、お使いになりたい方は自己責任でどうぞm(__)m
自作用コード(コピペOK)
PHPコードとテンプレートの準備
以下のコードで entity.php というテンプレートを作り、style.css と同階層にアップロードしておきます。(同階層にtemplate-parts などのディレクトリを作ってもOK ^^)
<?php
$page_flag = 0;
$entitycode = $_POST['entitycode'];
if( isset( $_POST[ 'btn_entity' ] )) { $page_flag = 1; }
if( $page_flag === 1 ){
$newcode = str_replace( '&', '&', $entitycode );
$letter = array( '<', '>', ' ', '', '&' );
$replace = array( '<', '>', '	', '', '&' );
$newcode = nl2br( str_replace( $letter, $replace, $newcode ));
} ?>
<div class="entity">
<form method="post">
<?php if( $page_flag === 0 ){ ?>
<label for="entitycode">CODE</label>
<textarea id="entitycode" name="entitycode" rows="15" cols="40" placeholder="code を記入します" required autocomplete='off'><?php if( $page_flag > 0 ){ if( !empty($entitycode)){ echo str_replace( '', '', $entitycode ); }} ?></textarea>
<input type="submit" name="btn_entity" value="Entity開始">
<input type="submit" name="btn_reset" value="Reset" class="btn_reset">
<?php } elseif( $page_flag === 1 ){ ?>
<label for="newcode">エンティティ済CODE</label>
<textarea id="newcode" name="newcode" rows="15" cols="40" autocomplete='off'><?php echo strip_tags($newcode); ?></textarea>
<input type="submit" name="btn_copy" value="Copy" class="btn_copy">
<input type="submit" name="btn_reset" value="Reset" class="btn_reset">
<p class="copy_alert">コピー完了</p>
<?php } ?>
</form>
</div>
jQuery(function($) {
$('.copy_alert').hide();
$('.btn_copy').on('click', function(){
$('#newcode').select();
document.execCommand('copy');
$('.copy_alert').show().delay(1000).fadeOut(1000);
});
});
style.css で、textarea、submit、などのスタイルを作っておきます。(テーマ規定値のままでも問題ない場合が多いと思います^^)
p.copy_alert (コピー完了後のコメント)だけは
設置後に様子を見ながらスタイルを当てて下さいね
テンプレートを投稿で使う準備(ショートコード)
entity.php を投稿で呼び出せるようにします。
テンプレートはそのままでは、投稿に呼び出せませんが、shortcode としてなら載せる事が可能になります^^v
そこで、テンプレートを shortcode にするコードを functions.php に書き足します。
function Include_my_php($params = array()) {
extract(shortcode_atts(array( 'file' => 'default' ), $params));
ob_start();
include(get_theme_root() . '/' . get_template() . "/$file.php");
return ob_get_clean();
}
add_shortcode('myphp', 'Include_my_php');
テンプレートのショートコード化は、ググれば沢山出てきます。詳しくはお調べ下さいねm(__)m
投稿に呼び出す
最後に、投稿の載せたい位置に[myphp file=’entity’] (.phpは不要) と書けばOK^^
投稿を見ると、エンティティ用の枠が出来ていると思います。
※template-parts などのディレクトリを作った場合は [myphp file=’template-parts/entity’]とします。
※表示の都合で[]を全角にしています。ご利用時は半角大括弧に変更してくださいm(__)m
コメント