WP_QUERY不使用撇号搜索

时间:2018-02-15 作者:go_cuc

我试图在WP\\U查询中搜索包含短语“道尔顿定律”的数据meta_query. 这是一个AJAX 搜索,下面是我正在做的:

//in this case $_POST[\'query\'] is the phrase "Dalton\'s Law"

$query = apply_filters( \'get_search_query\', $_POST[\'query\'] );
$query = esc_html( $query );

$guide_meta_args   = array(
    \'post_type\'           => array( \'guide\' ),
    \'post_status\'         => \'publish\',
    \'ignore_sticky_posts\' => true,
    \'posts_per_page\'      => 4,
    \'meta_query\' => array(
        array(
            \'key\'     => \'guide_raw_data\',
            \'value\'   => $query,
            \'compare\' => \'LIKE\',
        ),
    )

);
我可以成功地键入“道尔顿”,但一旦找到撇号,搜索就失败了。当我从javascript中获取代码时,我可以console.log 搜索字符串,它是dalton\\'s 因此,似乎编码工作正常,但是WP_Query 不喜欢撇号。。。有人有什么建议吗?非常感谢!

1 个回复
最合适的回答,由SO网友:phatskat 整理而成

尝试使用sanitize_text_field 而不是esc_html

wp> $search_query = "Dalton\'s Law <br/>";
string(18) "Dalton\'s Law <br/>"
wp> $query = apply_filters( \'get_search_query\', $search_query );
string(18) "Dalton\'s Law <br/>"
wp> $esc_html = esc_html( $query );
string(29) "Dalton&#039;s Law &lt;br/&gt;"
wp> $sanitized = sanitize_text_field( $query );
string(12) "Dalton\'s Law"
esc_html 应用于在输出转换为HTML之前转义输出。

结束

相关推荐

使用AJAX/JSON发送复选框状态并保存

我相信这项任务其实很简单。我想查询复选框的状态,用$传递它。将和JSON发布到函数,然后保存值。my-html (relevant part)<input type=\"checkbox\" id=\"<?php echo $category->column_handle; ?>\" name=\"<?php echo $category->column_handle; ?>\" class=\"checkbox\" <?php if($my_notific

WP_QUERY不使用撇号搜索 - 小码农CODE - 行之有效找到问题解决它

WP_QUERY不使用撇号搜索

时间:2018-02-15 作者:go_cuc

我试图在WP\\U查询中搜索包含短语“道尔顿定律”的数据meta_query. 这是一个AJAX 搜索,下面是我正在做的:

//in this case $_POST[\'query\'] is the phrase "Dalton\'s Law"

$query = apply_filters( \'get_search_query\', $_POST[\'query\'] );
$query = esc_html( $query );

$guide_meta_args   = array(
    \'post_type\'           => array( \'guide\' ),
    \'post_status\'         => \'publish\',
    \'ignore_sticky_posts\' => true,
    \'posts_per_page\'      => 4,
    \'meta_query\' => array(
        array(
            \'key\'     => \'guide_raw_data\',
            \'value\'   => $query,
            \'compare\' => \'LIKE\',
        ),
    )

);
我可以成功地键入“道尔顿”,但一旦找到撇号,搜索就失败了。当我从javascript中获取代码时,我可以console.log 搜索字符串,它是dalton\\&#039;s 因此,似乎编码工作正常,但是WP_Query 不喜欢撇号。。。有人有什么建议吗?非常感谢!

1 个回复
最合适的回答,由SO网友:phatskat 整理而成

尝试使用sanitize_text_field 而不是esc_html

wp> $search_query = "Dalton\'s Law <br/>";
string(18) "Dalton\'s Law <br/>"
wp> $query = apply_filters( \'get_search_query\', $search_query );
string(18) "Dalton\'s Law <br/>"
wp> $esc_html = esc_html( $query );
string(29) "Dalton&#039;s Law &lt;br/&gt;"
wp> $sanitized = sanitize_text_field( $query );
string(12) "Dalton\'s Law"
esc_html 应用于在输出转换为HTML之前转义输出。

相关推荐

WordPress AJAX错误400向远程站点发送数据的错误请求

我正在使用发件人。net获取电子邮件订阅列表。这个网站给了我一些信息,可以将用户的电子邮件添加到订阅列表中。我想使用WordPress ajax来实现这一点。但它返回错误400错误请求。我的代码是:文件ajax新闻脚本。js公司: jQuery(document).ready(function($){ // Perform AJAX send news on form submit $(\'form#fnews\').on(\'submit\', funct