Adicionar filtro não está funcionando com get_posts

Ao ajustar o plugin “Bryans Childpage Thumbnail Generator”, estou aplicando o filtro (com paginação) aos get_posts para WP Pages ( post_type=page ), mas não está filtrando. Aqui está o código:

 extract(shortcode_atts(array( 'order' => 'ASC', 'orderby' => 'title', 'id' => '', 'number' => -1, 'height' => '100', 'width' => '', 'size' => 'thumbnail', 'style' => '', 'include' => '', 'pagetitle' => false, 'selector' => 'h2', 'selector_height' => '30px', 'selector_width' => '100%', 'selector_padding' => '', 'showimages' => true, 'text_align' => 'left', 'text_margin' => '', 'exclude' => '', 'posts_per_page' => '5', 'page_number' => '1', 'filter_year' => '0' ), $attr)); if( $id == '') { $id = $post->ID; } $id = intval($id); if($width != null) { $width='width:' . $width . 'px'; } if ($order == 'RAND') { $orderby = 'none'; } if($text_margin == '') { $textmargin = ($height/2)-10; $textmargin .= "px 0 0 0"; } else { $textmargin = $text_margin; } $offsettext = ($height*3); $offset = ($page_number - 1) * $posts_per_page; $offset = $offset  0) $where .= " AND post_date >= '" . $filter_year . "-01-01' AND post_date = '2011-01-01' AND post_date  false, 'post_parent' => $id, 'post_type' => 'page', 'post_status' => 'publish', 'numberposts' => $number, 'exclude' => $exclude, 'orderby' => $orderby ))); $childpages = & get_posts(array( 'suppress_filters' => false, 'post_parent' => $id, 'post_type' => 'page', 'post_status' => 'publish', 'numberposts' => $number, 'exclude' => $exclude, 'orderby' => $orderby, 'order' => $order, 'posts_per_page' => $posts_per_page, 'offset' => $offset )); remove_filter( 'posts_where', 'filter_where' ); $totalpages = $countposts / $posts_per_page; $totalpages = intval($totalpages) + ($totalpages > intval($totalpages) ? 1 : 0); 

E aqui está o shortcode que chama este plugin:

  

A paginação está funcionando, mas o filtro não é …

Solutions Collecting From Web of "Adicionar filtro não está funcionando com get_posts"

De acordo com a documentação do WordPress, o filtro post_where não afetará a consulta gerada pela function get_posts() . Veja também o uso padrão de get_posts () onde você pode ver o argumento suppress_filters configurado como true por deafult. Para executar o filtro post_where na consulta gerada pela function get_posts() , você deve definir o argumento suppress_filters como falso:

 get_posts( array( 'suppress_filters' => FALSE ) ); 

Então, seu código pode ser algo como:

 $countposts = count(get_posts(array( 'suppress_filters' => false, 'post_parent => $id, 'post_type' => 'page', 'post_status' => 'publish', 'numberposts' => $number, 'exclude' => $exclude, 'orderby' => $orderby ))); 

Além disso, você possui muitas variables ​​não inicializadas, $ id, $ number, $ exclude, $ orderby ou $ filter_year.

Parece que esta condição nunca é preenchida:

 if($filter_year > 0) 

uma vez que você não definiu a variável $filter_year .