LLMS_Membership::query_associated_posts( string $post_type, string $enabled_key, string $enabled_value, string $list_key )
Performs a WPDB query to retrieve posts associated with the membership
Contents
Description Description
See also See also
Parameters Parameters
- $post_type
-
(string) (Required) Post type to query for an association with.
- $enabled_key
-
(string) (Required) A meta key name, used to check if the association is enabled for the associated post. For example: "_llms_is_restricted"
- $enabled_value
-
(string) (Required) The meta value of the
$enabled_keywhen the association is enabled. For example "yes" when checking "_llms_is_restricted".. - $list_key
-
(string) (Required) The meta key name where associations are stored as a serialized array of WP_Post IDs. For example "_llms_restricted_levels".
Return Return
(int[])
Source Source
File: includes/models/model.llms.membership.php
protected function query_associated_posts( $post_type, $enabled_key, $enabled_value, $list_key ) {
global $wpdb;
// See if we have a cached result first.
$cache = sprintf( 'membership_%1$d_associated_%2$s', $this->get( 'id' ), $post_type );
$found = null;
$ids = wp_cache_get( $cache, '', false, $found );
// We don't, perform a query.
if ( ! $found ) {
$ids = $wpdb->get_col( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery
$wpdb->prepare(
"SELECT metas.post_id
FROM {$wpdb->postmeta} AS metas
JOIN {$wpdb->postmeta} AS metas2 ON metas2.post_id = metas.post_id
JOIN {$wpdb->posts} AS posts ON posts.ID = metas.post_id
WHERE 1
AND posts.post_status = 'publish'
AND posts.post_type = %s
AND metas2.meta_key = %s
AND metas2.meta_value = %s
AND metas.meta_key = %s
AND metas.meta_value REGEXP %s;",
$post_type,
$enabled_key,
$enabled_value,
$list_key,
'a:[0-9][0-9]*:\{(i:[0-9][0-9]*;(i|s:[0-9][0-9]*):"?[0-9][0-9]*"?;)*(i:[0-9][0-9]*;(i|s:[0-9][0-9]*):"?' . $this->get( 'id' ) . '"?;)'
)
);
// Only return ints.
$ids = array_map( 'absint', $ids );
// Cache the result.
wp_cache_set( $cache, $ids );
}
return $ids;
}
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 4.0.0 | Escape { character in SQL query to add MySQL 8.0 support. |
| 3.38.1 | Introduced. |