web-dev-qa-db-ja.com

検索語句と一緒にwp_get_recent_postsを使用する

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
Jason

wp_get_recent_posts()'s'引数(または単に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 );

しかし、コメントで説明したように、この方法で検索結果を表示することはお勧めしません。 search.phpを正しく使用している場合は、メインのクエリ/ループにはすでに検索結果が含まれています。

もっと良い質問は、メインのクエリからあなたのレイアウト関数にどのように投稿を入れるかということでしょう。それ以外の場合は、不必要に検索を2回実行するだけで、ループとテンプレートの階層を適切に使用できなくなるため、ページ付けに関する問題が発生します。

2
Jacob Peattie