J'ai un statut de publication personnalisé qui devrait être visible par le public mais non affiché dans la liste "tous" de l'écran d'édition.
Voici comment enregistrer le statut de la publication:
register_post_status('my_custom_post_status', array(
'label' => __('The Label', 'domain'),
'public' => true,
'exclude_from_search' => true,
'show_in_admin_all_list' => false,
'label_count' => //blablabla
));
Le show_in_admin_all_list = false
devrait masquer le statut dans la liste complète, mais ce n'est pas le cas. Seulement si je mets le public à faux, ce n'est pas visible. Mais j'ai besoin de public = true
!
Des idées
Codex: http://codex.wordpress.org/Function_Reference/register_post_status
Cela résout mon problème:
register_post_status('my_custom_post_status', array(
'label' => __('The Label', 'domain'),
'public' => !is_admin(),
'exclude_from_search' => true,
'show_in_admin_all_list' => false,
'label_count' => //blablabla
));
!is_admin()
rend le statut uniquement public sur la page d'accueil.
Si vous trouvez une meilleure solution, postez-la ici!
Mon approche, inspirée par @revaxarts, est la suivante:
if (is_admin() && $_GET['post_type'] == 'post') {
$makepublic = true;
} else {
$makepublic = false;
}
register_post_status( 'suspended', array(
'label' => _x( 'suspended', 'Status General Name', 'myadvert' ),
'public' => $makepublic,
'exclude_from_search' => true,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop( 'Suspended <span class="count">(%s)</span>', 'Suspended <span class="count">(%s)</span>' )
) );
Parce que je ne veux pas voir ces publications sur le front-end alors que je suis connecté en tant qu'administrateur.
Si vous ne souhaitez pas modifier le paramètre public
, car vous souhaitez mieux contrôler vos publications, vous devez également associer l'action pre_get_posts
pour modifier la requête principale:
/**
* Display all posts on edit.php
* Bug fix: the 'show_in_admin_all_list' argument for the 'register_post_status' function is ignored when the argument 'public' is set to 'false'
* @link https://core.trac.wordpress.org/ticket/24415
*/
add_action('pre_get_posts', function($query) {
global $pagenow;
if (!is_admin() || $query->query['post_type'] != 'YOUR_CPT' || $pagenow != 'edit.php') {
return;
}
if (!isset($_GET['post_status']) || empty($_GET['post_status']) || (isset($_GET['post_status']) && $_GET['post_status'] == 'all')) {
$query->set( 'post_status', array('publish', 'draft', 'foo', 'bar'));
}
});