如何设置posts_per_page以增加搜索显示结果?

时间:2015-06-02 23:59:29

标签: php mysql wordpress

首先,我正在研究由另一位开发人员创建的主题,我在解决主题如何工作或开发人员的工作方面遇到了一些问题。所以,我需要将搜索显示结果从10增加到25.使用DEBUG插件我能够看到从WP执行的查询:

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts 
WHERE 1=1 
AND (((wp_posts.post_title LIKE '%noticias%')
OR (wp_posts.post_content LIKE '%noticias%'))) 
AND wp_posts.post_type IN ('post', 'page', 'attachment', 'esp-publicitarios', 'opinion', 'especiales', 'portadadeldia', 'clasificados', 'anunciantes', 'logos')
AND (wp_posts.post_status = 'publish'
OR wp_posts.post_author = 4
AND wp_posts.post_status = 'private') 
ORDER BY wp_posts.post_date DESC
LIMIT 0, 10

我想要更改的是LIMIT从10到25,所以我尝试在最后添加functions.php文件:

function change_wp_search_size($query)
{
    if ($query->is_search)
        $query->query_vars['posts_per_page'] = 25; // Change 25 to the number of posts you would like to show
    return $query; // Return our modified query variables
}

add_filter('pre_get_posts', 'change_wp_search_size'); // Hook our custom function onto the request filter

但是因为我仍然得到10个结果,所以没有工作。我还尝试在posts_per_page文件中设置search.php,如下所示:

// Just below get_header() call
$wp_query->set('posts_per_page', 25);

而且,同样的结果只有10项显示。可以扩展搜索查询结果中显示的最大项目数量吗?任何线索或建议?

1 个答案:

答案 0 :(得分:0)

我不知道你问题的答案,但现在的查询对我来说似乎有点不合逻辑。

这样的事情似乎更合理......

SELECT SQL_CALC_FOUND_ROWS p.ID
                      FROM wp_posts p
                     WHERE 1=1 
                       AND (
                           p.post_title LIKE '%noticias%' 
                           OR  
                           p.post_content LIKE '%noticias%'
                           )
                       AND p.post_type IN ( 'post', 'page', 'attachment', 'esp-publicitarios'
                                          , 'opinion', 'especiales', 'portadadeldia'
                                          , 'clasificados', 'anunciantes', 'logos')
                       AND (
                           p.post_status = 'publish'
                           OR (
                              p.post_author = 4
                              AND 
                              p.post_status = 'private'
                              )
                           )
                       ORDER 
                          BY p.post_date DESC
                       LIMIT 0, 10