JSON-为高级定制字段创建REST API端点

时间:2021-03-05 作者:Dragnet Pro

我使用插件高级自定义字段在侧栏中显示推荐帖子(作者使用单选按钮(是或否)选择推荐帖子)。一切都很顺利。

现在,我需要通过json在我的移动应用程序中显示相同的推荐帖子。

我发现了这个惊人的插件:https://wordpress.org/plugins/acf-to-rest-api/

现在,当我在/wp-json/wp/v2/posts打开json时,我可以看到字段ACF

在那里,我可以看到字段recommended\\u提要栏:yes或recommended\\u提要栏:no

但这个JSON将显示所有帖子(最新帖子)。是否可以为帖子制作一些过滤器?我只想显示推荐了侧边栏的帖子:是吗?类似于:https://www.domain.com/wp-json/wp/v2/posts?filter[recommended_sidebar]=yes

如果无法通过url创建过滤器,则唯一的选项是创建自定义端点。所以我创建了这个:

add_action( \'rest_api_init\', \'api_hooks\' );
function api_hooks() {

   register_rest_route( \'get-post-sidebar/v1\', \'/go\', array(
       \'methods\'  => \'GET\',
       \'callback\' => \'get_post_sidebar\',
   ) );

}
function get_post_sidebar($request_data){
 // $data = $request_data->get_params();


 $data = array();

 $args = array(
 \'post_type\'   => \'post\',
 \'post_status\' => \'publish\',
 \'orderby\'   => \'id\',
 \'order\'     => \'DESC\',
 \'meta_query\' => array(
   \'relation\' => \'OR\',
     array(
         \'key\'       => \'recommended_sidebar\',
         \'value\'     => \'yes\', 
         \'compare\'   => \'=\',
     ),
 ),


 \'paged\' => 1,
 \'posts_per_page\' => 2,
 );

 $the_query = new WP_Query( $args );

 while ( $the_query->have_posts() ) {
     $the_query->the_post();
     array_push($data,
         array(
             \'title\' => get_the_title(),
             \'content\' => get_the_content(),
             \'date\' => get_the_date(),
             \'number_of_comments\' => get_comments_number(),
             \'thumbnail\' => get_the_post_thumbnail_url()
         )
     );
 }

 wp_reset_postdata();


 $response = new \\WP_REST_Response( $data );
 $response->set_status( 200 );

 return $response;
}
此端点将仅显示粘性帖子。此外,它还设置为:

 \'paged\' => 1,
  \'posts_per_page\' => 2,
但所有粘性帖子都会显示在端点中。

如果我将此值更改为:

 \'paged\' => 2,
  \'posts_per_page\' => 2,
然后将显示2个帖子,但这2个帖子是粘性帖子:(

如果我将此值更改为:

 \'paged\' => 2,
  \'posts_per_page\' => 8,
然后它会显示8个不推荐的\\u侧边栏:是的,但也没有粘性,这很奇怪。

我只想显示8篇推荐了\\u侧边栏的最新帖子:是

非常感谢谢谢你!

2 个回复
SO网友:polevaultweb

TL;DR-ACF现在支持WP REST API

大家好,我是高级定制领域的产品经理

作为ACF 5.11 版本我们在WordPress REST API中添加了对ACF字段的本机支持。了解更多信息here.

SO网友:Stevo

也许可以尝试将查询修改为这样的内容(我还没有测试过,但不妨尝试一下),也许可以去掉元查询本身,只需添加

\'meta_key\' => \'recommended_sidebar\',
\'meta_value\' => \'yes\'
进入查询本身