LLMS_Membership::get_associated_posts( string $post_type = null )
Retrieve a list of posts associated with the membership
Description Description
An associated post is:
- A post, page, or custom post type which supports
llms-membership-restrictions
and has restrictions enabled to this membership - A course that exists in the memberships list of auto-enroll courses
- A course that has at least one access plan with members-only availability linked to this membership
Parameters Parameters
- $post_type
-
(string) (Optional) If supplied, returns only associations of this post type, otherwise returns an associative array of all associations.
Default value: null
Return Return
(array[]|int[]) An array of arrays of post IDs. The array keys are the post type and the array values are arrays of integers. If $post_type
is supplied returns an array of associated post ids as integers.
Source Source
File: includes/models/model.llms.membership.php
public function get_associated_posts( $post_type = null ) { // If we're querying only posts, we can skip these associations entirely because courses don't support them. $post_types = 'course' !== $post_type ? get_post_types_by_support( 'llms-membership-restrictions' ) : array(); // If we're looking at a single post type we only have to query associations for that post type. $post_types = $post_type ? array_intersect( $post_types, array( $post_type ) ) : $post_types; // Our return array. $posts = array(); // Retrieve all posts that are restricted to a membership via a LifterLMS Membership Restriction setting. foreach ( $post_types as $type ) { $posts[ $type ] = $this->query_associated_posts( $type, '_llms_is_restricted', 'yes', '_llms_restricted_levels' ); } // Include courses if courses were requested or if no specific post type was requested. if ( ! $post_type || 'course' === $post_type ) { $posts['course'] = $this->query_associated_courses(); } /** * Filter the list of posts associated with the membership. * * @since 3.38.1 * * @param array[] $posts An array of arrays of post IDs. The array keys are the post type and the array values are arrays of integers. * @param string|null $post_type The requested post type if only a specific post type was requested, otherwise `null` to indicate all associated post types. * @param LLMS_Membership $this Membership object. */ $posts = apply_filters( 'llms_membership_get_associated_posts', $posts, $post_type, $this ); // If a single post type was requested, return only that. if ( $post_type ) { // Return the request post type array and fallback to an empty array if that post type doesn't exist. return isset( $posts[ $post_type ] ) ? $posts[ $post_type ] : array(); } // Remove empty arrays and return the rest. return array_filter( $posts ); }
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
Version | Description |
---|---|
4.15.0 | Minor restructuring to only query post type data when it's needed. |
3.38.1 | Introduced. |