Задать вопрос

Фильтр дочерних постов по родительскому в админке wordpress и стандартный поиск?

Добрый день!
Делаю фильтр по родительскому посту в админке - в выпадающем списке все родительские посты, при выборе родительского поста фильрую все дочерние (код ниже) - проблема в том что при подключении этого фильтра ломается стандартный поиск. что я делаю не так ?
add_action('restrict_manage_posts','custom_filter_for_mfo_html');
function custom_filter_for_mfo_html(){
	global $typenow;
    if ($typenow=='mfo') {
        $args = array(
    		'numberposts' => -1,
    		'orderby'     => 'title',
    		'order'       => 'ASC',
    		'post_type'   => 'mfo',
    		'post_status' => 'publish',
            'post_parent' => 0,
    	);
    ?>
        	<select name="mfo_filter" id="filter-by-parent">
    	<?php

    	$posts = get_posts( $args );
    	foreach($posts as $post){ setup_postdata($post);
        	$is_child_page = $post->post_parent;
        	if (!$is_child_page) {
                $child_args = array(
                    'post_parent'   => $post->ID,
                    'post_type'     => 'mfo',
                    'post_status'   => 'publish',
                    'numberposts'   => -1,
                    );
                $chid_posts = get_children($child_args);
                if ($chid_posts) {
            		?>
            		      <option value="<?php echo $post->ID; ?>"><?php echo $post->post_title; ?></option>
            		<?php
                }
        	}
    	}
    	?>
    		</select>
    	<?php
    	wp_reset_postdata();
    }
}

add_filter('request','custom_filter_for_mfo');
function custom_filter_for_mfo($vars){    
 
    if (is_admin() && $GLOBALS['PHP_SELF'] == '/wp-admin/edit.php' && isset($vars['post_type']) && $vars['post_type'] == 'mfo') {
        
        if (!empty($_GET['mfo_filter'])){
            
            $vars['post_parent'] = intval($_GET['mfo_filter']);
        }
 
    }
    
    return $vars;
}
  • Вопрос задан
  • 221 просмотр
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы