/** * @param WP_Query $query */ function first_post_full_length_enable($query) { if (!is_admin() && $query->is_main_query() && !$query->is_feed()) { // set is_feed to true, so that the post content will be used in full length $query->is_feed = true; // add a filter that sets is_feed to false again, as soon as the content from the first post was set add_filter('the_post', 'first_post_full_length_disable'); } }
/** * Anywhere that a feed is displaying posts, show comics too. * * @param WP_Query $query */ public function include_in_feeds( $query ) { if ( ! $query->is_feed() ) return; // Don't modify the query if the post type isn't public. if ( ! get_post_type_object( 'jetpack-comic' )->public ) return; $query_post_types = $query->get( 'post_type' ); if ( empty( $query_post_types ) ) $query_post_types = 'post'; if ( ! is_array( $query_post_types ) ) $query_post_types = array( $query_post_types ); if ( in_array( 'post', $query_post_types ) ) { $query_post_types[] = self::POST_TYPE; $query->set( 'post_type', $query_post_types ); } }
/** * Checks whether a given query is for events * @package event-query-functions * @param WP_Query $query The query to test * @param bool $exclusive Whether to test if the query is *exclusively* for events, or can include other post types * @return bool True if the query is an event query. False otherwise. */ function eventorganiser_is_event_query($query, $exclusive = false) { $post_types = $query->get('post_type'); if ('any' == $post_types) { $post_types = get_post_types(array('exclude_from_search' => false)); } if ($post_types == 'event' || array('event') == $post_types) { $bool = true; } elseif ($query && $query->is_feed('eo-events') || is_feed('eo-events')) { $bool = true; } elseif (empty($post_types) && eo_is_event_taxonomy($query)) { //Querying by taxonomy - check if 'event' is the only post type $post_types = array(); $taxonomies = wp_list_pluck($query->tax_query->queries, 'taxonomy'); foreach (get_post_types() as $pt) { if (version_compare('3.4', get_bloginfo('version')) <= 0) { $object_taxonomies = $pt === 'attachment' ? get_taxonomies_for_attachments() : get_object_taxonomies($pt); } else { //Backwards compat for 3.3 $object_taxonomies = $pt === 'attachment' ? array() : get_object_taxonomies($pt); } if (array_intersect($taxonomies, $object_taxonomies)) { $post_types[] = $pt; } } if (in_array('event', $post_types)) { if ($exclusive && 1 == count($post_types)) { $query->set('post_type', 'event'); $bool = true; } elseif (!$exclusive) { $bool = true; } else { $bool = false; } } else { $bool = false; } } elseif ($exclusive) { $bool = false; } elseif (is_array($post_types) && in_array('event', $post_types)) { $bool = true; } else { $bool = false; } return apply_filters('eventorganiser_is_event_query', $bool, $query, $exclusive); }
/** * Filter the SQL query to not include posts with empty content -- FB will complain. * * @since 0.1 * @param string $where The original where part of the SQL statement. * @param WP_Query $query The WP_Query instance. * @return string The modified where part of the SQL statement. */ function instant_articles_query_where($where, $query) { // Don’t modify the SQL query with a potentially expensive WHERE clause if we’re OK with fewer posts than 100 and are OK with filtering in the loop. if (defined('INSTANT_ARTICLES_LIMIT_POSTS') && INSTANT_ARTICLES_LIMIT_POSTS) { return $where; } if ($query->is_main_query() && $query->is_feed(INSTANT_ARTICLES_SLUG)) { global $wpdb; $where .= " AND {$wpdb->posts}.post_content NOT LIKE ''"; } return $where; }
/** * Checks whether a given query is for events * @package event-query-functions * @param WP_Query $query The query to test * @param bool $exclusive Whether to test if the query is *exclusively* for events, or can include other post types * @return bool True if the query is an event query. False otherwise. */ function eventorganiser_is_event_query($query, $exclusive = false) { $post_types = $query->get('post_type'); if ('any' == $post_types) { $post_types = get_post_types(array('exclude_from_search' => false)); } if ($post_types == 'event' || array('event') == $post_types) { $bool = true; } elseif ($query && $query->is_feed('eo-events') || is_feed('eo-events')) { $bool = true; } elseif (empty($post_types) && eo_is_event_taxonomy($query)) { //Querying by taxonomy - check if 'event' is the only post type $post_types = array(); $taxonomies = wp_list_pluck($query->tax_query->queries, 'taxonomy'); foreach (get_post_types() as $pt) { if (version_compare('3.4', get_bloginfo('version')) <= 0) { $object_taxonomies = $pt === 'attachment' ? get_taxonomies_for_attachments() : get_object_taxonomies($pt); } else { //Backwards compat for 3.3 $object_taxonomies = $pt === 'attachment' ? array() : get_object_taxonomies($pt); } if (array_intersect($taxonomies, $object_taxonomies)) { $post_types[] = $pt; } } if (in_array('event', $post_types)) { if ($exclusive && 1 == count($post_types)) { $query->set('post_type', 'event'); $bool = true; } elseif (!$exclusive) { $bool = true; } else { $bool = false; } } else { $bool = false; } } elseif ($exclusive) { $bool = false; } elseif (is_array($post_types) && in_array('event', $post_types)) { $bool = true; } else { $bool = false; } /** * Filters whether the query is an event query. * * This should be `true` if the query is for events, `false` otherwise. The * third parameter, `$exclusive` qualifies if this means 'query exclusively * for events' or not. If `true` then this filter should return `true` only * if the query is exclusively for events. * * @param bool $bool Whether the query is an event query. * @param WP_Query $query The WP_Query instance to check. * @param bool $exclusive Whether the check if for queries exclusively for events. */ return apply_filters('eventorganiser_is_event_query', $bool, $query, $exclusive); }
/** * Modify the query before getting any posts. * * @param WP_Query $query WP Query object * * @return void */ public function pre_get_posts(WP_Query $query) { $feed_slug = apply_filters('simple_fb_feed_slug', $this->token); if ($query->is_main_query() && $query->is_feed($feed_slug)) { $query->set('posts_per_rss', intval(apply_filters('simple_fb_posts_per_rss', get_option('posts_per_rss', 10)))); // Allow easy access to modify query args for the FB IA feed. do_action('simple_fb_pre_get_posts', $query); } }