\n <\/td>\n | <?php<\/span><\/td>\n <\/tr>\n \n <\/td>\n | /**<\/span><\/td>\n <\/tr>\n \n <\/td>\n | * Cache WordPress posts for post types that are specified in the<\/span><\/td>\n <\/tr>\n \n <\/td>\n | * plugin setting to be included in the custom search.<\/span><\/td>\n <\/tr>\n \n <\/td>\n | */<\/span><\/td>\n <\/tr>\n \n <\/td>\n | public<\/span> function<\/span> cache_posts_in_post_types<\/span>() {<\/td>\n <\/tr>\n \n <\/td>\n | \$<\/span>transient_name<\/span> = \$<\/span>this<\/span><\/span>->plugin_transients<\/span>['autosuggest_transient'<\/span>];<\/td>\n <\/tr>\n \n <\/td>\n | \$<\/span>transient_expiration<\/span> = \$<\/span>this<\/span><\/span>->plugin_transients<\/span>['autosuggest_transient_expiration'<\/span>];<\/td>\n <\/tr>\n \n <\/td>\n | \n<\/td>\n <\/tr>\n | \n <\/td>\n | // retrieve the selected post types from the plugin settings to include in the custom search.<\/span><\/td>\n <\/tr>\n \n <\/td>\n | \$<\/span>plugin_options<\/span> = get_option( \$<\/span>this<\/span><\/span>->plugin_name<\/span> );<\/td>\n <\/tr>\n \n <\/td>\n | \$<\/span>post_types<\/span> = array_keys( \$<\/span>plugin_options<\/span>, 1<\/span>, true<\/span> );<\/td>\n <\/tr>\n \n <\/td>\n | \n<\/td>\n <\/tr>\n | \n <\/td>\n | // check the transient for existing cached data.<\/span><\/td>\n <\/tr>\n \n <\/td>\n | \$<\/span>cached_posts<\/span> = get_transient( \$<\/span>transient_name<\/span> );<\/td>\n <\/tr>\n \n <\/td>\n | if<\/span> ( false<\/span> === \$<\/span>cached_posts<\/span> ) {<\/td>\n <\/tr>\n \n <\/td>\n | \$<\/span>args<\/span> = array<\/span>(<\/td>\n <\/tr>\n \n <\/td>\n | 'post_type'<\/span> => \$<\/span>post_types<\/span>,<\/td>\n <\/tr>\n \n <\/td>\n | 'post_status'<\/span> => 'publish'<\/span>,<\/td>\n <\/tr>\n \n <\/td>\n | 'posts_per_page'<\/span> => -1<\/span>,<\/td>\n <\/tr>\n \n <\/td>\n | 'no_found_rows'<\/span> => true<\/span>, // true by default.<\/span><\/td>\n <\/tr>\n \n <\/td>\n | 'suppress_filters'<\/span> => false<\/span>, // true by default.<\/span><\/td>\n <\/tr>\n \n <\/td>\n | 'ignore_sticky_posts'<\/span> => true<\/span>, // true by default.<\/span><\/td>\n <\/tr>\n \n <\/td>\n | );<\/td>\n <\/tr>\n | \n <\/td>\n | \n<\/td>\n <\/tr>\n | \n <\/td>\n | // get_posts() to retrieve posts belonging to the required post types.<\/span><\/td>\n <\/tr>\n \n <\/td>\n | \$<\/span>posts_in_required_post_types<\/span> = get_posts( \$<\/span>args<\/span> );<\/td>\n <\/tr>\n \n <\/td>\n | \n<\/td>\n <\/tr>\n | \n <\/td>\n | // Check if posts were found.<\/span><\/td>\n <\/tr>\n \n <\/td>\n | if<\/span> ( \$<\/span>posts_in_required_post_types<\/span> ) {<\/td>\n <\/tr>\n \n <\/td>\n | foreach<\/span> ( \$<\/span>posts_in_required_post_types<\/span> as<\/span> \$<\/span>key<\/span> => \$<\/span>post<\/span> ) {<\/td>\n <\/tr>\n \n <\/td>\n | \n<\/td>\n <\/tr>\n | \n <\/td>\n | // cache the post titles and post ids.<\/span><\/td>\n <\/tr>\n \n <\/td>\n | \$<\/span>cached_post<\/span> = array<\/span>(<\/td>\n <\/tr>\n \n <\/td>\n | 'id'<\/span> => \$<\/span>post<\/span>->ID<\/span>,<\/td>\n <\/tr>\n \n <\/td>\n | 'title'<\/span> => esc_html( \$<\/span>post<\/span>->post_title<\/span> ),<\/td>\n <\/tr>\n \n <\/td>\n | );<\/td>\n <\/tr>\n | \n <\/td>\n | \$<\/span>cached_posts<\/span>[] = \$<\/span>cached_post<\/span>;<\/td>\n <\/tr>\n \n <\/td>\n | }<\/td>\n <\/tr>\n | \n <\/td>\n | \n<\/td>\n <\/tr>\n | \n <\/td>\n | /**<\/span><\/td>\n <\/tr>\n \n <\/td>\n | * Save the post data in a transient. <\/span><\/td>\n <\/tr>\n \n <\/td>\n | * Cache only the post ids, titles instead of the entire WP Query object.<\/span><\/td>\n <\/tr>\n \n <\/td>\n | */<\/span><\/td>\n <\/tr>\n \n <\/td>\n | set_transient( \$<\/span>transient_name<\/span>, \$<\/span>cached_posts<\/span>, \$<\/span>transient_expiration<\/span> );<\/td>\n <\/tr>\n \n <\/td>\n | }<\/td>\n <\/tr>\n | \n <\/td>\n | }<\/td>\n <\/tr>\n | \n <\/td>\n | return<\/span> \$<\/span>cached_posts<\/span>;<\/td>\n <\/tr>\n \n <\/td>\n | }<\/td>\n <\/tr>\n <\/table>\n<\/div>\n\n\n <\/div>\n\n <\/div>\n<\/div>\n\n <\/div>\n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |