Astra_Related_Posts_Markup::astra_get_related_posts_by_query( int $post_id )

Get related posts based on configurations.


Description


Parameters

$post_id

(int) (Required) Current Post ID.


Return

(WP_Query|bool)


Source

File: inc/modules/related-posts/class-astra-related-posts-markup.php

	public function astra_get_related_posts_by_query( $post_id ) {
		$term_ids                  = array();
		$current_post_type         = get_post_type( $post_id );
		$related_posts_total_count = absint( astra_get_option( 'related-posts-total-count', 2 ) );
		// Taking one post extra in loop because if current post excluded from while loop then this extra one post will cover total post count. Apperently avoided 'post__not_in' from WP_Query.
		$updated_total_posts_count = $related_posts_total_count + 1;
		$related_posts_order_by    = astra_get_option( 'related-posts-order-by', 'date' );
		$related_posts_order       = astra_get_option( 'related-posts-order', 'desc' );
		$related_posts_based_on    = astra_get_option( 'related-posts-based-on', 'categories' );

		$query_args = array(
			'update_post_meta_cache' => false,
			'posts_per_page'         => $updated_total_posts_count,
			'no_found_rows'          => true,
			'post_status'            => 'publish',
			'post_type'              => $current_post_type,
			'orderby'                => $related_posts_order_by,
			'fields'                 => 'ids',
			'order'                  => $related_posts_order,
		);

		if ( 'tags' === $related_posts_based_on ) {
			$terms = get_the_tags( $post_id );

			if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
				$term_ids = wp_list_pluck( $terms, 'term_id' );
			}

			$query_args['tag__in'] = $term_ids;

		} else {
			$terms = get_the_category( $post_id );

			if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
				$term_ids = wp_list_pluck( $terms, 'term_id' );
			}

			$query_args['category__in'] = $term_ids;
		}

		$query_args = apply_filters( 'astra_related_posts_query_args', $query_args );

		return new WP_Query( $query_args );
	}

Changelog

Changelog
Version Description
3.5.0 Introduced.


User Contributed Notes

You must log in before being able to contribute a note or feedback.