web-dev-qa-db-fra.com

Wordpress Custom Post Type Page Admin très prêt

(J'ai posté ceci sur la pile d'échange normale, mais il a été suggéré que je le mette ici aussi. Heureux de savoir que cet endroit existe ... :))

Donc, je suis allé partout sur Internet pour essayer de comprendre ce qui se passe avec quelques sites que je possède, et je pense que j'ai enfin été capable de le localiser ...

MAIS

Je veux d'abord m'assurer que je fais tout correctement avant d'aller à Wordpress et de suggérer qu'il existe un petit bug qui me cause toutes sortes d'ennuis et peut-être même un paquet d'autres.

Le noeud du problème est que j'ai plusieurs sites Wordpress (WP 3.5.1) qui ont un type de publication personnalisé "produits". J'ai défini le type de publication personnalisé comme suit:

/* 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

Le problème vient du fait que j'essaie d'accéder à la page de liste pour ce type de publication personnalisée. La page analogue pour les publications est "Publications" dans la barre latérale d'administration, à gauche de la page d'administration. Le nom de la page que j'ai pour ma liste de types de publication personnalisée est, de manière appropriée, "Produits". Lorsque vous accédez à cette page, il faut un AGE littéral à charger. Donc, il s’agit vraiment de quelque chose comme 8-12 secondes de chargement à chargement, où toute autre page du côté admin se chargera dans environ 1-2 secondes. En outre, la page expire souvent et génère l'erreur générique "Le service est momentanément indisponible". (Vous ne savez pas d'où vient cette erreur. Apache, Wordpress, etc.)

Ce comportement aberrant m'a amené à essayer de déboguer le côté administrateur de mon site. J'ai trouvé les plugins "Debug Bar" et "Debug Bar Extender". En utilisant ces plugins en tandem, et après avoir chargé la page appropriée, je peux voir la requête pour cette page, mais les arguments de la requête constituent la comparaison la plus importante dans ce cas:

- pour la page de liste des articles -

post_type = post & posts_per_page = 400


- pour la page de liste de produits -

order = asc & orderby = menu_order + titre & post_type = produits & posts_per_page = -1 & posts_per_archive_page = -1


Dans ce cas, le nombre de publications à afficher sur la page "Publications" (défini dans l'onglet Options d'écran en haut de la page) est défini sur 400. C'est beau.

Toutefois, le nombre de produits à afficher (défini de la même manière, mais sur la page Produits) a été défini à 25. Quoi qu'il en soit, l'argument de requête posts_per_page pour la page Produits (affiché ci-dessus) est défini sur -1. , ce qui signifie que Wordpress saisit TOUTES les publications avec mon type de publication personnalisé "produits", mais n’affiche alors que les 25 requises. Cela se produit de manière identique pour les multiples pages (pagination) associées à ma liste de produits.

Cela me semble faux. Ainsi ma question: Est-ce que j'ai mal enregistré le type de message personnalisé? Je constate le même comportement lorsque je désactive tous les autres plug-ins de mon site et que je n'utilise que la fonction register_post_type pour configurer ce type de publication personnalisée. Si quelque chose ne va pas ici (comme il me semble), je le signalerai à Wordpress. Si ce n'est pas le cas ... je ne voulais pas les "déranger" inutilement. :)

J'ai observé ce comportement sur plusieurs sites, mais la raison pour laquelle le temps de chargement de la page par l'administrateur m'est resté sur ce site est parce que j'ai 3 000 messages avec ce type de message personnalisé, alors que sur d'autres sites utilisant mon code d'enregistrement de type de message personnalisé seulement ~ 300-400 produits sur eux.

Merci à tous ceux qui veulent aider et/ou commenter.

4
Programmer Dan

La suppression du paramètre hierarchical de l'appel de fonction register_post_type a fonctionné comme le suggère le vancoder. En bout de ligne, regarder ce que fait l’option hiérarchique (définir le nouveau type de publication pour qu’il se comporte comme le type de publication page) me dit que cela n’aurait probablement pas dû être défini en premier lieu.

5
Programmer Dan