我使用插件高级自定义字段在侧栏中显示推荐帖子(作者使用单选按钮(是或否)选择推荐帖子)。一切都很顺利。
现在,我需要通过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侧边栏的最新帖子:是
非常感谢谢谢你!