WordPress的get_posts标题如

时间:2014-08-03 10:50:53

标签: wordpress get title posts

我正在尝试为WordPress创建一个小型搜索功能。 AJAX调用应该获得标题为%quote%的所有帖子。

是否有可能在get_posts()函数中发生这种情况?

不要误会我的意思。 ajax运行正常。我的functions.php中有ajax函数,我收到帖子。它只是"标题如"我无法找到解决方案的部分。

3 个答案:

答案 0 :(得分:8)

您也可以进行自定义搜索查询。

$search_query = 'SELECT ID FROM wp_posts
                         WHERE post_type = "post" 
                         AND post_title LIKE %s';

$like = '%'.quote.'%';
$results = $wpdb->get_results($wpdb->prepare($search_query, $like), ARRAY_N);
foreach($results as $key => $array){
     $quote_ids[] = $array['ID'];
}

$quotes = get_posts(array('post_type'=>'post', 'orderby'=>'title', 'order'=>'ASC', 'post__in' => $quote_ids));

答案 1 :(得分:6)

不,但您可以创建自定义循环。

Check this.

编辑:

$args = array('s' => 'keyword');

$the_query = new WP_Query( $args );

// The Loop
if ( $the_query->have_posts() ) {

    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        //whatever you want to do with each post
    }
} else {
     // no posts found
}   

答案 2 :(得分:1)

或者您可以像这样使用过滤器posts_where

$options = array(
    'posts_per_page' => -1,
    'suppress_filters' => false, // important!
    'post_type' => 'post',
    'post_status' => 'publish',
);
$keyword = 'quote';

add_filter( 'posts_where', 'my_filter_post_where' );
$posts = get_posts( $options );
remove_filter( 'posts_where', 'my_filter_post_where' );

function my_filter_post_where( $where) {
    global $wpdb;
    global $keyword;

    $where .= ' AND ' . $wpdb->posts . '.post_title LIKE \'%' . esc_sql( like_escape( $keyword ) ) . '%\'';

    return $where;
}