like_escape()


WordPress関数like_escape()は、SQLクエリで使用される文字列にエスケープを適用します。主にLIKE条件で使用される特殊文字を処理するために使用されます。

構文

like_escape( string $text );
  • $text (string) — エスケープ処理を適用する文字列。

例 1. 単純な文字列のエスケープ

文字列にエスケープを適用します。

<?php
$text = 'example%text_';
$escaped_text = like_escape( $text );
echo $escaped_text; // 出力: example\%text\_
?>

例 2. 動的な検索クエリでの使用

LIKE条件で安全に使用する例です。

<?php
$search = 'search%term_';
$escaped_search = like_escape( $search );
$query = $wpdb->prepare( "SELECT * FROM wp_posts WHERE post_title LIKE %s", '%' . $escaped_search . '%' );
$results = $wpdb->get_results( $query );
?>

例 3. プラグインでの利用

プラグインでエスケープ処理を適用する方法です。

<?php
function my_custom_search( $search_term ) {
    global $wpdb;
    $escaped_term = like_escape( $search_term );
    return $wpdb->get_results( "SELECT * FROM wp_posts WHERE post_content LIKE '%" . $escaped_term . "%'" );
}
$results = my_custom_search( 'test%' );
?>

例 4. 投稿タイトル検索のエスケープ

投稿タイトルの検索クエリで使用します。

<?php
$search_term = 'Title_with_%_wildcard';
$escaped_term = like_escape( $search_term );
$query = $wpdb->prepare( "SELECT ID FROM wp_posts WHERE post_title LIKE %s", '%' . $escaped_term . '%' );
$post_ids = $wpdb->get_col( $query );
?>

例 5. カスタムSQLクエリでのエスケープ

カスタムクエリを使用する際のエスケープ処理の例です。

<?php
$custom_filter = 'filter_value%_test';
$safe_filter = like_escape( $custom_filter );
$sql = "SELECT * FROM wp_usermeta WHERE meta_key LIKE '%" . $safe_filter . "%'";
$user_meta = $wpdb->get_results( $sql );
?>

注意事項

like_escape()は、特殊文字をエスケープしますが、SQLインジェクション対策には十分ではありません。常に$wpdb->prepare()と併用してください。

WordPress 5.0以降では非推奨となっています。他の代替方法を検討してください。


関連機能: