web-dev-qa-db-fra.com

L'état de publication personnalisé ne s'affiche pas dans la vue Type de publication personnalisée TOUT

J'ai créé un simple plugin pour notre site WP afin de nous permettre d'entrer dans les produits que nous expédions.

Pour ce faire, j'ai créé un nouveau type de publication appelé 'order_packing' et, dans ce cas, deux nouveaux statuts de publication: 'En emballage', 'Envoyé'.

Le problème que j'ai est que la liste affiche correctement les listes de colisage dans le total ALL (2) - mais ne répertorie pas les listes de colisage. Si je clique sur le statut "Envoyé", les deux éléments apparaissent dans la liste. Donc, mon problème est que les données sont là, mais elles ne s'affichent pas sous l'onglet ALL.

Voici le code qui crée le type de message, cela fonctionne parfaitement

enter code here    register_post_type( 'order_packing',
    array(
        'labels'              => array(
        'name'                  => __( 'Order Packing', 'tgplugin' ),
        'singular_name'         => _x( 'Order Packing', 'order_packing post type singular name', 'tgplugin' ),
        'add_new'               => __( 'Add Packing List', 'tgplugin' ),
        'add_new_item'          => __( 'Add Packing List', 'tgplugin' ),
        'edit'                  => __( 'Edit', 'tgplugin' ),
        'edit_item'             => __( 'Edit Packing List', 'tgplugin' ),
        'new_item'              => __( 'New Packing List', 'tgplugin' ),
        'view'                  => __( 'View Packing List', 'tgplugin' ),
        'view_item'             => __( 'View Packing List', 'tgplugin' ),
        'search_items'          => __( 'Search Packing Lists', 'tgplugin' ),
        'not_found'             => __( 'No Packing Lists found', 'tgplugin' ),
        'not_found_in_trash'    => __( 'No Packing Lists found in trash', 'tgplugin' ),
        'parent'                => __( 'Parent Packing List', 'tgplugin' ),
        'menu_name'             => _x( 'Stock Packing List', 'Admin menu name', 'tgplugin' ),
        'filter_items_list'     => __( 'Filter Packing Lists', 'tgplugin' ),
        'items_list_navigation' => __( 'Packing List navigation', 'tgplugin' ),
        'items_list'            => __( 'Packing Lists', 'tgplugin' ),
    ),
        'description'         => __( 'This is where Packing Lists are stored.', 'tgplugin' ),
        'public'              => false,
        'show_ui'             => true,
        'capability_type'     => 'packing_list',
        'map_meta_cap'        => true,
        'publicly_queryable'  => false,
        'exclude_from_search' => true,
        'show_in_menu'        => true,
        'hierarchical'        => false,
        'show_in_nav_menus'   => false,
        'menu_position'       => 100,
        'rewrite'             => false,
        'query_var'           => false,
        'supports'            => array( 'title', 'comments', 'custom-fields' ),
        'has_archive'         => false,
    )
);

Voici les statuts personnalisés pour ce type de publication personnalisé.

 register_post_status( 'inpacking', array(
    'label'                     => _x( 'In Packing', 'Order packing' ),
    'public'                    => false,
    'exclude_from_search'       => false,
    'show_in_admin_all_list'    => true,
    'show_in_admin_status_list' => true,
    'label_count'               => _n_noop( 'In Packing <span class="count">(%s)</span>', 'In Packing <span class="count">(%s)</span>' ),
 ) );

 register_post_status( 'sent', array(
    'label'                     => _x( 'Sent', 'Order packing' ),
    'public'                    => false,
    'exclude_from_search'       => false,
    'show_in_admin_all_list'    => true,
    'show_in_admin_status_list' => true,
    'label_count'               => _n_noop( 'Sent <span class="count">(%s)</span>', 'Sent <span class="count">(%s)</span>' ),
 ) );

Enfin, voici deux images montrant le problème.

 All showing correct total but no posts  Posts shown correctly when Sent is clicked 

Je me suis gratté la tête et ai cherché et cherché, j'ai trouvé ce post mais il n'y a pas de réponse.

https://stackoverflow.com/questions/29434046/wordpress-posts-with-custom-status-need-tshow-in-all-view

J'espère que quelqu'un pourra m'aider à sauver ma santé mentale!

A bientôt Colin

2
Colin Richardson

Vous devez définir l’argument public sur true. De cette façon, le message avec 'inpacking' ou 'envoyé' post_status s'affichera également au total.

Donc, votre code devrait être comme ça:

register_post_status( 'inpacking', array(
    'label'                     => _x( 'In Packing', 'Order packing' ),
    'public'                    => true,
    'exclude_from_search'       => false,
    'show_in_admin_all_list'    => true,
    'show_in_admin_status_list' => true,
    'label_count'               => _n_noop( 'In Packing <span class="count">(%s)</span>', 'In Packing <span class="count">(%s)</span>' ),
 ) );

register_post_status( 'sent', array(
    'label'                     => _x( 'Sent', 'Order packing' ),
    'public'                    => true,
    'exclude_from_search'       => false,
    'show_in_admin_all_list'    => true,
    'show_in_admin_status_list' => true,
    'label_count'               => _n_noop( 'Sent <span class="count">(%s)</span>', 'Sent <span class="count">(%s)</span>' ),
) );
1
pck