2014-05-12 2 views
0

제목 아래 게시물을 얻으려면 아래 코드를 사용하고 있습니다.제목 문제로 Wordpress 쿼리 게시물

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 

결과를 반환하지 않습니다. 아무도 이것에 나를 도울 수 있습니까? 사전에

덕분에 나는이 문제를 해결해야한다고 생각

+0

실제 제목 대신 슬러그를 가져와 슬러그가 xxx 슬러그와 같은지 확인하십시오. 슬러그 – Xatenev

+0

실제로 XML-RPC 호출을 사용하여 WordPress에 원격으로 추가하고 슬러그는 워드 프레스 자체로 계산됩니다. 모두 나는 게시물 제목입니다. – MUS

+1

하지만 주어진 wordpress title -> sanitize_title()에서 슬러그를 만들고 비교할 수 있습니다! – Xatenev

답변

3

실제 제목과 비교해서는 안됩니다. Wordpress에서는 ""또는 " '와 같은 이상한 문자가없는 슬러그를 만들 수 있습니다. 그런 다음 비교할 수 있습니다.

sanitize_title()을 사용하여 제목에서 슬러그를 만든 다음 비교할 수 있습니다.

0

,

DOC : 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); 

어느 것이 당신을 위해 작동하는지 알려주세요.

+0

이전에 시도한 적이 있지만 "mysqli_real_escape_string"함수를 호출 한 후 제목이 비어 있습니다. – MUS

+0

그래, 그게 내가 생각한거야, addslashes()를 대신 사용해 보셨습니까? – Rao

관련 문제