Wordpress按标题问题查询帖子


Wordpress query posts by title issue

我使用下面的代码按标题获取帖子。

protected function get_post_by_title($post_title, $output = OBJECT, $post_type = 'post' ) 
{
    global $wpdb;
    $post = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type= %s", $post_title, $post_type ));
    if ( $post )
        return get_page($post, $output);
    return null;
}

一切都很好,除了它不会找到在标题中有单引号的帖子。考虑下面的$post_title

This is a test's post

$wpdb->prepare将返回如下查询:

This is a test''''s post

将不返回结果。有谁能帮我一下吗?

Thanks in advance

你不应该和真正的标题比较。Wordpress为您提供了创建鼻涕虫的可能性,而不需要像"或"’"这样的奇怪字符。然后你可以比较它们:

使用sanitize_title()从你的标题创建一个段,然后你可以比较它们

我想这应该能解决这个问题,

文档:http://in1.php.net/manual/en/mysqli.real-escape-string.php

protected function get_post_by_title($post_title, $output = OBJECT, $post_type = 'post' ) 
{
    global $wpdb;
    $post_title = mysqli_real_escape_string($post_title);  //escape special meaning
    $post = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type= %s", $post_title, $post_type ));
    if ( $post )
        return get_page($post, $output);
    return null;
}
编辑:

那可能不行,试试这个,

$post_title = addslashes($post_title);

告诉我哪一个适合你。