将wp_get_recent_post与搜索词一起使用

时间:2018-10-16 作者:Jason

我有一个函数wp_get_recent_posts() 我需要在搜索页面上使用相同的功能,但在将搜索参数添加到$args 大堆

是否有人知道这是否可行,如果可行,如何实施?

这是我的功能

function recent_articles_grid( $atts ) {

    extract( shortcode_atts( array (
        \'numberposts\'   => 6,
        \'offset\'        => 0,
        \'featured\'      => null,
        \'trending\'      => null,
        \'showdate\'      => null,
        \'category\'      => null,
        \'showauthor\'    => null,
        \'init\'          => 1,
        \'searchterm\'    => null
    ), $atts ) );

$args = array(
        \'numberposts\' => $numberposts,
        \'offset\' => $offset,
        \'category__not_in\' => array(391),
        \'category\' => $category,
        \'orderby\' => \'post_date\',
        \'order\' => \'DESC\',
        \'post_type\' => \'post\',
        \'post_status\' => \'publish\'
    );

    $recent_posts = wp_get_recent_posts( $args, ARRAY_A );

... additional code ...

}

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

这应该只是设置\'s\' 的参数wp_get_recent_posts() (或只是get_posts()) 至搜索词:

$args = array(
    \'numberposts\' => $numberposts,
    \'offset\' => $offset,
    \'category__not_in\' => array(391),
    \'category\' => $category,
    \'orderby\' => \'post_date\',
    \'order\' => \'DESC\',
    \'post_type\' => \'post\',
    \'post_status\' => \'publish\',
    \'s\' => $searchterm,
);

$recent_posts = wp_get_recent_posts( $args, ARRAY_A );
但是,是的,正如评论中所讨论的,我不建议使用这种显示搜索结果的方法。如果您正在使用搜索。正确地说,主查询/循环将已经包含搜索结果。

更好的问题可能是如何将帖子从主查询中获取到布局函数中。否则,只需执行两次不必要的搜索,就会遇到分页问题,因为无法正确使用循环和模板层次结构。

结束

相关推荐

加载只在一个主题模板中使用的PHP函数的最快方法是什么?

我已经为我的网站开发了很多PHP代码片段,我不确定为了减少网站加载时间,把它们放在哪里最合适。如果它们进入函数。php或专用插件,然后默认情况下,它们将加载到站点的每个页面,而不仅仅是需要它们的页面。这是否会对加载时间产生有意义的影响,或者如果从未实际调用函数,这是否无关紧要?似乎使用条件like更好一步if(is_page_template()) { include_once(\'this-function.php\'); } 并且只在实际使用它们的页面上加载函数。我还可以从模板文件本身的代码中包含一个