zzlatev
  • 0
Новичок

Получить сразу несколько сообщений пользовательского типа в запросе edit.Php?Post_type

  • 0

Я планирую функциональность пользовательского типа сообщений для своей темы, и мне нужно иметь возможность отображать более одного post_type в обзорной таблице администратора. Я думаю, что этот запрос может выглядеть как edit.php?post_type[]=theme_slide_nivo&post_type[]=theme_slide_other . На самом деле не пробовал, но я уверен, что это не сработает. Ребят, можно ли добиться такого результата без взлома ядра?

Share
  1. Вам никогда не придется взламывать ядро. Чего именно вы пытаетесь достичь, редактируя 2 пользовательских типа сообщений одновременно?

    • 0
  2. Я попробовал это, чтобы получить представление о проблемах, с которыми вы столкнетесь. Следующий код позволяет указать несколько типов записей с помощью multi_post_type параметра:

    add_action( 'pre_get_posts', 'wpse12970_pre_get_posts' );
    function wpse12970_pre_get_posts( &$wp_query )
    {
        if ( is_admin() && array_key_exists( 'multi_post_type', $_GET ) ) {
            $wp_query->set( 'post_type', $_GET['multi_post_type'] );
            add_filter( 'the_posts', 'wpse12970_the_posts', 10, 2 );
        }
    }
    
    function wpse12970_the_posts( $posts, &$wp_query )
    {
        $wp_query->set( 'post_type', $GLOBALS['post_type'] );
        return $posts;
    }
    

    Первая проблема заключалась в том, что глобал $post_type должен быть одного типа, иначе другие функции не работают. Таким образом, мы «переносим» несколько типов сообщений под другим именем и снова удаляем их после выполнения запроса.

    Счетчик в верхней части списка и настраиваемые столбцы основаны только на одном типе сообщений. Если результатов много, пейджинг, вероятно, прервется.

    Если вы хотите сделать это, вы должны создать свой собственный класс списка, дочерний элемент WP_List_Table, например, WP_Posts_List_Table но затем для нескольких типов сообщений. Поскольку edit.php эта таблица загружается по умолчанию, и я не вижу возможности ее перехватить, вам следует создать собственную замену edit.php в своем плагине и использовать ее. Я думаю, что это выполнимо, и, вероятно, интересно, но много работы.

    • 0

Оставить ответ

You must login to add an answer.