From 25314ec84b91ec8f8478bbed07443976de8012ae Mon Sep 17 00:00:00 2001 From: JoryHogeveen Date: Thu, 15 Oct 2020 15:58:00 +0200 Subject: [PATCH 1/3] Properly set post type, fixes issue with Polylang Polylang auto enables translation if the post type is `any`, this causes edge case issues for non-translatable post types. --- pods-beaver-themer.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pods-beaver-themer.php b/pods-beaver-themer.php index c7d8919..b286056 100644 --- a/pods-beaver-themer.php +++ b/pods-beaver-themer.php @@ -325,6 +325,9 @@ function pods_beaver_loop_before_query_settings( $settings ) { */ $field_params = apply_filters( 'pods_beaver_loop_settings_field_params', $field_params, $settings, $pod ); + // Use post type wildcard by default. + $settings->post_type = 'any'; + if ( $pod ) { if ( $find_params ) { // Optimized select only gets the ID @@ -344,6 +347,9 @@ function pods_beaver_loop_before_query_settings( $settings ) { $field_params['output'] = 'id'; $ids = $pod->field( $field_params ); } + + // Add pod name as the post type query. + $settings->post_type = $pod->pod; } if ( empty( $ids ) ) { @@ -351,9 +357,6 @@ function pods_beaver_loop_before_query_settings( $settings ) { add_filter( 'fl_builder_loop_query', 'pods_beaver_empty_query' ); } - // we have id's no need to specify the type - $settings->post_type = 'any'; - add_filter( 'fl_builder_loop_query_args', 'pods_beaver_uabb_blog_posts', 10, 1 ); $setting_post_type_ids_field_name = 'posts_' . $settings->post_type; From 1da1cc8e957386e3154fd0f8f6157339529bc870 Mon Sep 17 00:00:00 2001 From: JoryHogeveen Date: Thu, 15 Oct 2020 15:58:31 +0200 Subject: [PATCH 2/3] Add Pod context to settings + re-overwrite post type for UABB if possible. --- pods-beaver-themer.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pods-beaver-themer.php b/pods-beaver-themer.php index b286056..d3e9270 100644 --- a/pods-beaver-themer.php +++ b/pods-beaver-themer.php @@ -350,6 +350,8 @@ function pods_beaver_loop_before_query_settings( $settings ) { // Add pod name as the post type query. $settings->post_type = $pod->pod; + // Add pod context to the settings so other filters can make use of this. + $settings->pod = $pod; } if ( empty( $ids ) ) { @@ -428,6 +430,12 @@ function pods_beaver_uabb_blog_posts( $args ) { $args['post_type'] = 'any'; remove_filter( 'fl_builder_loop_query_args', 'pods_beaver_uabb_blog_posts' ); + // Set post type correctly if a Pod is found. + $pod = pods_v( 'pod', pods_v( 'settings', $args, array() ), null ); + if ( $pod ) { + $args['post_type'] = $pod->pod; + } + return $args; } From 03904bbccd20e034c28aaf1d19b42b41b272a635 Mon Sep 17 00:00:00 2001 From: Jory Hogeveen Date: Tue, 17 May 2022 17:43:54 +0200 Subject: [PATCH 3/3] Correct post type for field relationships Enhances Polylang compatibility --- pods-beaver-themer.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pods-beaver-themer.php b/pods-beaver-themer.php index d3e9270..8e58c9d 100644 --- a/pods-beaver-themer.php +++ b/pods-beaver-themer.php @@ -352,6 +352,14 @@ function pods_beaver_loop_before_query_settings( $settings ) { $settings->post_type = $pod->pod; // Add pod context to the settings so other filters can make use of this. $settings->pod = $pod; + // Add relationship context. + if ( 'pods_relation' === $settings->pods_source_type && ! empty( $settings->pods_source_relation ) ) { + $field = $pod->fields( $settings->pods_source_relation ); + if ( $field && ! empty( $field->pick_val ) ) { + $settings->post_type = $field->pick_val; + $settings->rel_pod = pods( $field->pick_val ); + } + } } if ( empty( $ids ) ) { @@ -431,7 +439,9 @@ function pods_beaver_uabb_blog_posts( $args ) { remove_filter( 'fl_builder_loop_query_args', 'pods_beaver_uabb_blog_posts' ); // Set post type correctly if a Pod is found. - $pod = pods_v( 'pod', pods_v( 'settings', $args, array() ), null ); + $settings = pods_v( 'settings', $args, array() ); + $pod = pods_v( 'pod', $settings, null ); + $pod = pods_v( 'rel_pod', $settings, $pod ); // Field relationship. if ( $pod ) { $args['post_type'] = $pod->pod; }