__('offline', 'metiers-patrimoine-theme'),
'public' => true,
'exclude_from_search' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop('Unread (%s)', 'Unread (%s)'),
));
}
add_action('init', 'custom_post_status');
function add_to_post_status_dropdown()
{
global $post;
// Ajoute une option 'offline' au menu déroulant des statuts
echo "";
}
add_action('post_submitbox_misc_actions', 'add_to_post_status_dropdown');
// Ajouter un filtre pour afficher les posts avec le statut 'offline'
add_filter('views_edit-artisans', function ($views) {
global $wpdb;
$post_type = 'artisans';
$status = 'offline';
// Compte le nombre de posts avec le statut 'offline'
$count = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM $wpdb->posts WHERE post_type = %s AND post_status = %s",
$post_type,
$status
));
if ($count > 0) {
$class = (isset($_GET['post_status']) && $_GET['post_status'] === $status) ? 'current' : '';
$views[$status] = sprintf(
'%s (%d)',
$post_type,
$status,
$class,
__('Offline', 'metiers-patrimoine-theme'),
$count
);
}
return $views;
});
// Ajouter un statut personnalisé dans la colonne des statuts, uniquement dans la vue "Tous"
function add_custom_post_status($post_states, $post)
{
// Vérifier si on est dans l'admin et si le post appartient au CPT 'artisans'
if ('artisans' === $post->post_type) {
global $pagenow;
// Vérifier si on est sur la page d'index des articles (Tous les articles)
if ('edit.php' === $pagenow && !isset($_GET['post_status'])) {
// Ajouter le statut "Publié" si l'article est publié
if ('publish' === $post->post_status) {
$post_states[] = __('Publié', 'metiers-patrimoine-theme'); // Affiche "Publié"
}
// Ajouter votre statut personnalisé (ex : "offline") si c'est le cas
if ('offline' === get_post_status($post->ID)) {
$post_states[] = __('Offline', 'metiers-patrimoine-theme'); // Affiche "En attente"
}
}
}
return $post_states;
}
add_filter('display_post_states', 'add_custom_post_status', 10, 2);
/* ----------------------------------------------------------------------
REORDER ADMIN MENU & POST TYPE ORDER ON MENU BAR
------------------------------------------------------------------------*/
/**
* Activates the 'menu_order' filter and then hooks into 'menu_order'
*/
/**
* Filters WordPress' default menu order
*/
function metiers_new_admin_menu_order($menu_order)
{
// define your new desired menu positions here
// for example, move 'upload.php' to position #9 and built-in pages to position #1
$new_positions = array(
'edit.php?post_type=artisans' => 3,
'edit.php?post_type=chantiers' => 4,
'edit.php?post_type=page' => 6,
'upload.php' => 7,
'export_datas' => 8,
'theme-general-settings' => 11,
'rank-math' => 20,
);
// helper function to move an element inside an array
function metiers_move_element(&$array, $a, $b)
{
$out = array_splice($array, $a, 1);
array_splice($array, $b, 0, $out);
}
// traverse through the new positions and move
// the items if found in the original menu_positions
foreach ($new_positions as $value => $new_index) {
// write_log($value);
if ($current_index = array_search($value, $menu_order)) {
metiers_move_element($menu_order, $current_index, $new_index);
}
}
return $menu_order;
};
add_action('admin_menu', function () {
add_filter('menu_order', 'metiers_new_admin_menu_order');
add_filter('custom_menu_order', '__return_true');
});