is_tax() ) add_filter('posts_where', array('QueryInterceptorFront_NonAdmin_RS', 'flt_p2_where'), 1 ); class QueryInterceptorFront_NonAdmin_RS { // force scoping filter to process the query a second time, to handle the p2 clause imposed by WP core for custom taxonomy requirements function flt_p2_where( $where ) { if ( strpos( $where, 'p2.post_status' ) ) $where = apply_filters( 'objects_where_rs', $where, 'post', '', array( 'source_alias' => 'p2' ) ); return $where; } // Strips comments from teased posts/pages function flt_comments_results($results) { global $scoper; if ( $results && ! empty($scoper->teaser_ids) ) { foreach ( $results as $key => $row ) if ( isset($row->comment_post_ID) && isset($scoper->teaser_ids['post'][$row->comment_post_ID]) ) unset( $results[$key] ); } return $results; } function flt_nav_menu_items( $items, $menu_name, $args ) { global $wpdb; $item_types = array(); foreach ( $items as $key => $item ) { if ( ! isset( $item_types[ $item->type ] ) ) $item_types[ "{$item->type}" ] = array(); if ( ! isset( $item_types[ $item->type ][$item->object ] ) ) $item_types[ $item->type ][ $item->object ] = array( $key => $item->object_id ); else $item_types[ $item->type ][ $item->object ] [$key] = $item->object_id; } $teaser_enabled = scoper_get_otype_option( 'do_teaser', 'post' ); // remove unreadable terms if ( isset( $item_types['taxonomy'] ) ) { foreach( $item_types['taxonomy'] as $taxonomy => $item_ids ) { if ( $teaser_enabled ) { if ( $taxonomy_obj = get_taxonomy( $taxonomy ) ) { foreach( $taxonomy_obj->object_type as $post_type ) { // don't remove a term if it is associated with a post type that's being teased if ( scoper_get_otype_option( 'use_teaser', 'post', $post_type ) ) continue 2; } } } /* $query_base = "SELECT t.term_id FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE 1=1 AND tt.taxonomy = '$taxonomy'"; $query = apply_filters( 'terms_request_rs', $query_base, $taxonomy ); //, array( 'skip_teaser' => true ) ); $okay_ids = scoper_get_col($query); */ $hide_empty = isset( $args['hide_empty'] ) ? $args['hide_empty'] : 0; $okay_ids = get_terms( $taxonomy, "fields=ids&hierarchical=0&hide_empty=$hide_empty" ); if ( $remove_ids = array_diff( $item_ids, $okay_ids ) ) $items = array_diff_key( $items, $remove_ids ); } } // remove unreadable posts if ( isset( $item_types['post_type'] ) ) { foreach( $item_types['post_type'] as $post_type => $item_ids ) { $where = apply_filters( 'objects_where_rs', '', 'post', $post_type, array( 'skip_teaser' => true ) ); $okay_ids = scoper_get_col( "SELECT ID FROM $wpdb->posts WHERE post_type = '$post_type' $where AND ID IN ('" . implode("','", $item_ids ) . "')" ); if ( $remove_ids = array_diff( $item_ids, $okay_ids ) ) { if ( $teaser_enabled && scoper_get_otype_option( 'use_teaser', 'post', $post_type ) ) { require_once( dirname(__FILE__).'/teaser_rs.php' ); $teaser_prepend = ScoperTeaser::get_teaser_text( 'prepend', 'name', 'post', $post_type ); $teaser_append = ScoperTeaser::get_teaser_text( 'append', 'name', 'post', $post_type ); foreach( array_keys($remove_ids) as $key ) $items[$key]->title = $teaser_prepend . $items[$key]->title . $teaser_append; } else $items = array_diff_key( $items, $remove_ids ); } } } return $items; } } ?>