web-dev-qa-db-fra.com

register_post_status invisible mais consultable

J'ai besoin de "masquer" certains anciens messages du. J'ai décidé d'y aller avec un statut de message personnalisé pour les garder cachés mais disponibles plus tard (pour que l'administrateur soit plus propre ..) MAIS :)

J'aimerais que les articles avec ce statut soient consultables, mais non disponibles avec les autres liens de filtrage comme celui-ci ("Archivé (2)") ne devrait pas figurer dans cette liste ...

Tous (97) | Publié (95) | Brouillons (12) | Archivé (2) | Privé (2) | Corbeille (1) |

J'enregistre le statut de la publication avec ces paramètres ...

'public' => false,
'internal' =>true,
'exclude_from_search' => false,
'show_in_admin_all_list' => false,
'show_in_admin_status_list' => true,

Mais avec ces paramètres, l'élément de menu est visible, et si je le fais

'show_in_admin_status_list' => false,

Les articles avec le statut "archive" ne sont pas interrogeables.

J'utilise une version modifiée de cette réponse (voir "PostStatusExtender") (nom et type de message modifiés)

Nouveau statut de publication pour le type de publication personnalisé

Des idées comment résoudre celui-ci?

2
Leif S.

Vous pouvez filtrer votre requête d'administration avec le filtre pre_get_posts.

function wpse_306361_admin_search($query) {
    if(is_admin() && $query->is_main_query() && $query->is_search()) {
        $query->set('post_status', array('publish', 'draft', 'what-you-want', 'your_custom_status'));
    }
    return query;
}
add_action('pre_get_posts', 'wpse_306361_admin_search', 10, 1);

Il vérifiera si la requête est dans admin, si c'est la requête principale et s'il s'agit d'une requête de recherche.

S'il ne s'agit que d'un post_type, n'oubliez pas d'ajouter une condition dans votre instruction if.

pre_get_posts sur codex: https://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

1
Elex