Фильтр отображения постов только 1 уровня в админке WordPress

Иногда, например для сортировки, бывает полезно отображать страницы только 1 уровня, не выводя дочерние элементы. Особенно если страниц, или записей пользовательского типа несколько сотен. Вот код, который добавляет нужный фильтр в админку WordPress:

function in_child_filter() {
    global $typenow;
    $check = 'post_parent';
    $checked = '';

    if( $typenow == 'page' ){ // для каких типов постов отображать

        if(isset( $_GET[$check])){
            $checked = 'checked';
        }
        echo '<label><input name="post_parent" value="0" type="checkbox" '.$checked.'/>1 уровень </label>';
    }
}

add_action( 'restrict_manage_posts', 'in_child_filter' );

function exclude_children_posts( $query ) {
    if ( is_admin() && $query->is_main_query() && isset($_GET['post_parent']) &&  $_GET['post_parent'] == 0) {
        $query->set( 'post_parent', 0 );
    }
}

add_action( 'pre_get_posts', 'exclude_children_posts' );

Обновлено: 08.04.2018

Вам помогла эта статья? Оцените!
(2 оценок, среднее: 5,00 из 5)
Загрузка...

Комментариев: 2

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *