Страница администратора пользовательского типа Wordpress очень медленная


(Я разместил это на обычном обмене стеками, но было предложено, чтобы я тоже разместил это здесь. Рад узнать, что это место существует...:))

Итак, я обшарил весь Интернет, пытаясь выяснить, что происходит с парой сайтов, которые у меня есть, и я думаю, что наконец-то смог это отследить...

НО

Я хочу сначала убедиться, что я все делаю правильно, прежде чем перейти на Wordpress и предположить, что есть небольшая ошибка, которая вызывая всевозможное раздражение у меня и, вполне возможно, у многих других.

Суть проблемы в том, что у меня есть несколько сайтов Wordpress (WP 3.5.1), на которых есть пользовательский тип публикации "продукты". Я определил пользовательский тип записи следующим образом:

/* Create custom Products taxonomy */
function create_custom_products_taxonomies() {
register_post_type( 'products',
    array(
        'labels' => array(
            'name' => __( 'Products' ),
            'singular_name' => __( 'Product' ),
            'add_new' => __( 'Add New' ),
            'add_new_item' => __( 'Add New Product' ),
            'edit' => __( 'Edit' ),
            'edit_item' => __( 'Edit Product' ),
            'new_item' => __( 'New Product' ),
            'view' => __( 'View Product' ),
            'view_item' => __( 'View Product' ),
            'search_items' => __( 'Search Products' ),
            'not_found' => __( 'No products found' ),
            'not_found_in_trash' => __( 'No products found in Trash' ),
            'parent' => __( 'Parent Product' )
        ),
        'public' => true,
        'hierarchical' => true,
        'menu_position' => 20,
        'publicly_queryable' => true,
        'query_var' => true,
        'rewrite' => array("slug" => "/products", "with_front" => false),
        'supports' => array('title', 'author', 'thumbnail', 'editor', 'excerpt', 'comments', 'page-attributes', 'common', 'custom-fields', 'revisions'),
        'register_meta_box_cb' => 'products_meta_box',
        'taxonomies' => array('products')
    )
);
register_taxonomy(
    'products',
    'products',
    array(
        'hierarchical' => true,
        'label' => __(ucfirst('products')),
        'show_in_nav_menus' => true,
        'rewrite' => array('slug' => 'categories')
    )
);
}
add_action('init', 'create_custom_products_taxonomies'); // Create the necessary custom taxonomies for products

Проблема возникает там, где я пытаюсь получить доступ к странице со списком для этого пользовательского типа записи. Аналогичная страница для сообщений - "Сообщения" на боковой панели администратора в левой части страницы администратора. Название страницы, которая у меня есть для моего пользовательского списка типов сообщений, достаточно подходящего, "Продукты". При доступе к этой странице для загрузки требуется буквальный ВОЗРАСТ. Хорошо, так что на самом деле это что-то вроде 8-12 секунд от загрузки до загрузки, где любая другая страница на стороне администратора загрузится примерно за 1-2 секунды. Кроме того, на странице часто заканчивается время ожидания и появляется общая ошибка "Служба временно недоступна". (Не уверен, откуда берется эта ошибка. Apache, Wordpress и т.д.)

Это отклоняющееся поведение привело к мне нужно попытаться отладить административную часть моего сайта. Я нашел плагины "Панель отладки" и "Расширитель панели отладки". Используя эти плагины в тандеме, и после загрузки соответствующей страницы, я могу просмотреть запрос для этой страницы, но аргументы запроса в данном случае являются более важным сравнением:

-- для страницы со списком сообщений --

Post_type=сообщение и posts_per_page=400


-- для страницы со списком продуктов --

Order=asc&orderby=menu_order+title&post_type=products&posts_per_page=-1&posts_per_archive_page=-1


В этом случае количество сообщений, отображаемых на странице "Сообщения" (задается на вкладке "Параметры экрана" в верхней части страницы), равно 400. Выглядит хорошо.

Однако количество отображаемых товаров (заданное таким же образом, но на странице Товаров) было установлено равным 25. Независимо от этого факта, аргумент запроса posts_per_page для страницы продуктов (показано выше) имеет значение -1, что означает, что Wordpress захватывает ВСЕ сообщения с моим пользовательским типом записи "продукты", но затем отображает только необходимые 25. Это происходит идентичным образом для нескольких страниц (разбивка на страницы), связанных с моим списком товаров.

Мне это кажется фальшивым. Таким образом, мой вопрос: Я неправильно настроил (зарегистрировал) пользовательский тип записи? Я наблюдаю такое же поведение, когда отключаю все другие плагины на своем сайте, и я использую только функция register_post_type для настройки этого пользовательского типа записи. Если здесь происходит что-то неправильное, (как мне кажется) Я сообщу об этом в Wordpress. Если бы не это...Я не хотел "доставать" их без необходимости. :)

Я видел такое поведение на нескольких сайтах, но причина, по которой время загрузки страницы администратора для меня на этом сайте, заключается в том, что у меня более 3 тысяч сообщений с этим пользовательским типом сообщений, в то время как на других сайтах, использующих мой регистрационный код пользовательского типа сообщений, только ~300-400 продукты на них.

Спасибо всем, кто готов помочь и/или прокомментировать.

Author: Programmer Dan, 2013-04-16

1 answers

Удаление параметра hierarchical из вызова функции register_post_type сделало свое дело, согласно предложению ванкодера. В конце концов, глядя на то, что делает иерархический параметр (установите новый тип записи так, чтобы он вел себя как тип записи page), я понимаю, что, вероятно, его не следовало устанавливать в первую очередь.

 5
Author: Programmer Dan, 2013-04-29 17:45:18