web-dev-qa-db-ja.com

Meta_queryをオプションにする方法

私はこの投稿コードを私のfunctions.phpに追加して、カスタム投稿タイプへのリクエストを作成し、book_idでフィルタリングできるようにしました。

add_filter( 'rest_gallery_query', function( $args ) {
  $args['meta_query'] = array(
    array(
      'key'   => 'book_id',
      'value' => esc_sql( $_GET['book_id'] ),
    )
  );

  return $args;
} );

それで私は ' http:// localhost:port/wp-json/wp/v2/gallery?book_id = 9780061992254 'へのリクエストをすることができますgalleryは習慣です投稿タイプでbookd_idはそのカスタムフィールドの1つです

私がここで抱えている問題は、この後、私は/wp-json/wp/v2/galleryがなければbook_idへのリクエストを行うことができず、本当にそれを行うことができる必要がある、どうすればその状況を取り除くことができますか?このパラメータをオプションにする方法を探していましたが、まだ何も見つかりませんでした。

3
Wagner Moreira

それほど難しくありません。あなたがしなければならないのは、条件を追加してbook_idパラメータが渡されたかどうかをチェックすることだけです。このパラメータが正しいかどうかをチェックすることもできます(たとえば、book_idが数字である必要がある場合は、正しいかどうかをチェックできます)。

add_filter( 'rest_gallery_query', function( $args ) {
    if ( trim($_GET['book_id']) ) {  // check if book_id is passed and is not empty, but you can modify this condition
        $args['meta_query'] = array(
            array(
                'key'   => 'book_id',
                'value' => trim( $_GET['book_id'] ),  // <- you don't need to esc_sql this
            )
        );
    }

    return $args;
} );
2