From 9d86825159d2ff5b0ddf6129c43ebf169ef68911 Mon Sep 17 00:00:00 2001 From: epiqueras Date: Thu, 23 Apr 2020 18:38:06 -0700 Subject: [PATCH 1/2] Template Parts: Support REST API meta queries. --- lib/template-parts.php | 36 +++++++++++++++++++ .../edit/use-template-part-post.js | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/lib/template-parts.php b/lib/template-parts.php index 8ab2d745b193e6..703a6023c5478e 100644 --- a/lib/template-parts.php +++ b/lib/template-parts.php @@ -138,3 +138,39 @@ function gutenberg_render_template_part_list_table_column( $column_name, $post_i echo esc_html( $post->post_name ); } add_action( 'manage_wp_template_part_posts_custom_column', 'gutenberg_render_template_part_list_table_column', 10, 2 ); + + +/** + * Filter for adding a `theme` parameter to `wp_template_part` queries. + * + * @param array $query_params The query parameters. + * @return array Filtered $query_params. + */ +function filter_rest_wp_template_part_collection_params( $query_params ) { + $query_params += array( + 'theme' => array( + 'description' => __( 'The theme slug for the theme that created the template part.', 'gutenberg' ), + 'type' => 'string', + ), + ); + return $query_params; +} +apply_filters( 'rest_wp_template_part_collection_params', 'filter_rest_wp_template_part_collection_params', 99, 1 ); + +/** + * Filter for supporting the `theme` parameter in `wp_template_part` queries. + * + * @param array $args The query arguments. + * @param WP_REST_Request $request The request object. + * @return array Filtered $args. + */ +function filter_rest_wp_template_part_query( $args, $request ) { + if ( $request['theme'] ) { + $args += array( + 'meta_key' => 'theme', + 'meta_value' => $request['theme'], + ); + } + return $args; +} +add_filter( 'rest_wp_template_part_query', 'filter_rest_wp_template_part_query', 99, 2 ); diff --git a/packages/block-library/src/template-part/edit/use-template-part-post.js b/packages/block-library/src/template-part/edit/use-template-part-post.js index 23b034b7224625..7ef0f705da2dc9 100644 --- a/packages/block-library/src/template-part/edit/use-template-part-post.js +++ b/packages/block-library/src/template-part/edit/use-template-part-post.js @@ -28,7 +28,7 @@ export default function useTemplatePartPost( postId, slug, theme ) { { status: [ 'publish', 'auto-draft' ], slug, - meta: { theme }, + theme, } ); const foundPosts = posts?.filter( From 62f1701a4125a4c8e504be0a4853c15ec59dff42 Mon Sep 17 00:00:00 2001 From: epiqueras Date: Mon, 27 Apr 2020 09:59:10 -0700 Subject: [PATCH 2/2] Template Parts: Don't overwrite existing meta queries. --- lib/template-parts.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/template-parts.php b/lib/template-parts.php index 703a6023c5478e..7edf730bcaacd0 100644 --- a/lib/template-parts.php +++ b/lib/template-parts.php @@ -166,10 +166,13 @@ function filter_rest_wp_template_part_collection_params( $query_params ) { */ function filter_rest_wp_template_part_query( $args, $request ) { if ( $request['theme'] ) { - $args += array( - 'meta_key' => 'theme', - 'meta_value' => $request['theme'], + $meta_query = isset( $args['meta_query'] ) ? $args['meta_query'] : array(); + $meta_query[] = array( + 'key' => 'theme', + 'value' => $request['theme'], ); + + $args['meta_query'] = $meta_query; } return $args; }