LLMS_Product::get_access_plans( bool $free_only = false, bool $visible_only = true )
Get all access plans for the product.
Parameters Parameters
- $free_only
-
(bool) (Optional) Only include free access plans if
true. DefaltfalseDefault value: false
- $visible_only
-
(bool) (Optional) Excludes hidden access plans from results. Default
true.Default value: true
Return Return
(array)
Source Source
File: includes/models/model.llms.product.php
public function get_access_plans( $free_only = false, $visible_only = true ) {
$args = array(
'meta_key' => '_llms_product_id', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
'meta_value' => $this->get( 'id' ), // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value
'order' => 'ASC',
'orderby' => 'menu_order',
'posts_per_page' => $this->get_access_plan_limit(),
'post_type' => 'llms_access_plan',
'post_status' => 'publish',
);
// Filter results to only free access plans.
if ( $free_only ) {
$args['meta_query'] = array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
array(
'key' => '_llms_is_free',
'value' => 'yes',
),
);
}
// Exclude hidden access plans from the results.
if ( $visible_only ) {
$args['tax_query'] = array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
array(
'field' => 'name',
'operator' => 'NOT IN',
'terms' => array( 'hidden' ),
'taxonomy' => 'llms_access_plan_visibility',
),
);
}
/**
* Filter the product's access plan query args.
*
* @since Unknown
*
* @param array $args Query args.
* @param LLMS_Product $product The LLMS_Product instance.
* @param bool $free_only Whether or not to include the free access plans only.
* @param bool $visbile_only Whether or not to exclude the hidden access plans.
*/
$query = new WP_Query( apply_filters( 'llms_get_product_access_plans_args', $args, $this, $free_only, $visible_only ) );
$plans = array();
// If we have plans, setup access plan instances.
if ( $query->have_posts() ) {
foreach ( $query->posts as $post ) {
$plans[] = new LLMS_Access_Plan( $post );
}
}
/**
* Filter the product's access plans.
*
* @since Unknown
*
* @param array $plans An array of LLMS_Access_Plan instances related to the product `$product`.
* @param LLMS_Product $product The LLMS_Product instance.
* @param bool $free_only Whether or not to include the free access plans only.
* @param bool $visbile_only Whether or not to exclude the hidden access plans.
*/
return apply_filters( 'llms_get_product_access_plans', $plans, $this, $free_only, $visible_only );
}
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 3.37.17 | Fixed a typo in the post_status query arg when retrieving access plans for this product. |
| 3.25.2 | Unknown. |
| 3.0.0 | Introduced. |