我使用下面的代码按标题获取帖子。
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);
告诉我哪一个适合你。