sanitize_post()


WordPress関数sanitize_post()は、投稿オブジェクトを適切にサニタイズするために使用されます。特に出力時のセキュリティ対策として重要です。

シンタックス

sanitize_post( object $post, string $context = 'display' );

引数の説明:

  • $post (object) — サニタイズする投稿オブジェクト。
  • $context (string) — サニタイズのコンテキスト。通常は'display'がデフォルト。

例1: 投稿オブジェクトをサニタイズする

以下は、sanitize_post()を使って投稿オブジェクトをサニタイズする例です。

<?php
$post = get_post();
$sanitized_post = sanitize_post( $post );
echo $sanitized_post->post_title;
?>

例2: 投稿データのカスタムフィールドをサニタイズする

カスタムフィールドデータもサニタイズできます。

<?php
$post = get_post();
$sanitized_post = sanitize_post( $post );
$custom_field = get_post_meta( $sanitized_post->ID, 'custom_field_key', true );
echo esc_html( $custom_field );
?>

例3: 特定のコンテキストでサニタイズする

コンテキストに応じて異なるサニタイズを適用できます。

<?php
$post = get_post();
$sanitized_post = sanitize_post( $post, 'raw' );
echo wp_kses_post( $sanitized_post->post_content );
?>

例4: 複数の投稿をサニタイズする

複数の投稿データを一括でサニタイズする場合の例です。

<?php
$posts = get_posts();
foreach ( $posts as $post ) {
    $sanitized_post = sanitize_post( $post );
    echo esc_html( $sanitized_post->post_title );
}
?>

例5: 投稿データの一部をサニタイズする

特定の要素のみサニタイズする場合のコードです。

<?php
$post = get_post();
$sanitized_post = sanitize_post( $post );
echo esc_html( $sanitized_post->post_excerpt );
?>

注意事項

  • sanitize_post()は出力前に必ず呼び出すことで、不正なデータの混入を防ぎます。
  • サニタイズ後は、HTMLやスクリプトが削除される場合があるため、適切にesc_html()wp_kses()と併用してください。

関連機能: