如何使META_QUERY成为可选项?

时间:2018-05-24 作者:Wagner Moreira

我将这段代码添加到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 是其自定义字段之一

我在这里遇到的问题是,在此之后,我无法请求/wp-json/wp/v2/gallery 没有book_id 不管怎样,我真的需要能够做到这一点,我怎样才能摆脱这种状况?我正在寻找一种方法使这个参数成为可选的,但我还没有找到任何东西

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

这并不难。您只需添加一个条件并检查book_id 参数已传递。您甚至可以检查此参数是否正确(例如,如果book\\u 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;
} );

结束

相关推荐

从Archive.php中排除子页面

我创建了一个称为“服务”的分层自定义帖子类型。以下是我在自定义帖子类型中添加的页面:服务1服务子(服务1为父)服务子(服务1为父)服务子(服务1为父)服务子(服务3为父)服务子(服务3为父)服务子(服务3为父)服务子级(服务4是父级)服务子级(服务4是父级)是否可以从存档服务中排除子页。php?我希望通过使用pre_get_posts, 但这似乎不可能。