refining statuses colors and layout

This commit is contained in:
Antoine M 2024-11-25 15:38:32 +01:00
parent fbb2cf142a
commit 9e6b782005
2 changed files with 189 additions and 34 deletions

View File

@ -35,10 +35,10 @@ add_action('admin_init', 'metiers_remove_meta_boxes');
CUSTOM POST STATUS CUSTOM POST STATUS
---------------------------*/ ---------------------------*/
function metiers_patrimoine_custom_post_status() function custom_post_status()
{ {
register_post_status('offline', array( register_post_status('offline', array(
'label' => _x('Offline', 'post'), 'label' => _x('offline', 'post'),
'public' => true, 'public' => true,
'exclude_from_search' => false, 'exclude_from_search' => false,
'show_in_admin_all_list' => true, 'show_in_admin_all_list' => true,
@ -46,31 +46,94 @@ function metiers_patrimoine_custom_post_status()
'label_count' => _n_noop('Unread (%s)', 'Unread (%s)'), 'label_count' => _n_noop('Unread (%s)', 'Unread (%s)'),
)); ));
} }
add_action('init', 'metiers_patrimoine_custom_post_status'); add_action('init', 'custom_post_status');
function metiers_patrimoine_add_to_post_status_dropdown()
function add_to_post_status_dropdown()
{ {
global $post; global $post;
// if ($post->post_type != 'pdf_order')
// return false; // Ajoute une option 'offline' au menu déroulant des statuts
$status = ($post->post_statu == 'offline') ? "jQuery( '#post-status-display' ).text( 'Offline' ); jQuery(
'select[name=\"post_status\"]' ).val('completed');" : '';
echo "<script> echo "<script>
jQuery(document).ready( function() { jQuery(document).ready(function() {
jQuery( 'select[name=\"post_status\"]' ).append( '<option value=\"completed\">Completed</option>' ); jQuery('select[name=\"post_status\"]').append('<option value=\"offline\">offline</option>');
" . $status . " ";
// Vérifie si le statut du post actuel est 'offline' et le pré-sélectionne
if ($post->post_status === 'offline') {
echo "jQuery('#post-status-display').text('offline');
jQuery('select[name=\"post_status\"]').val('offline');";
}
echo "
}); });
</script>"; </script>";
} }
add_action('post_submitbox_misc_actions', 'metiers_patrimoine_add_to_post_status_dropdown'); add_action('post_submitbox_misc_actions', 'add_to_post_status_dropdown');
add_action('edit_form_after_title', function () { add_action('edit_form_after_title', function () {
// Vérifie si on est sur le bon post type // Vérifie si on est sur le bon post type
$screen = get_current_screen(); $screen = get_current_screen();
if ($screen && $screen->post_type === 'artisans') { // Remplacez 'votre_cpt' par le slug de votre CPT if ($screen && $screen->post_type === 'artisans') {
echo '<h1 class="admin-artisan-title">' . get_the_title() . '</h1>'; echo '<h1 class="admin-artisan-title">' . get_the_title() . '</h1>';
} }
}); });
// 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(
'<a href="edit.php?post_type=%s&post_status=%s" class="%s">%s <span class="count">(%d)</span></a>',
$post_type,
$status,
$class,
__('Offline', 'text-domain'),
$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é', 'text-domain'); // Affiche "Publié"
}
// Ajouter votre statut personnalisé (ex : "offline") si c'est le cas
if ('offline' === get_post_status($post->ID)) {
$post_states[] = __('Offline', 'text-domain'); // Affiche "En attente"
}
}
}
return $post_states;
}
add_filter('display_post_states', 'add_custom_post_status', 10, 2);

View File

@ -5,32 +5,34 @@ body.post-type-artisans {
} }
} }
.iedit.type-artisans.status-pending.hentry { .iedit.type-artisans.hentry {
/* @apply bg-rose-50; */ .column-title:has(strong > a) {
.column-title {
color: transparent; color: transparent;
a {
/* @apply text-red-900; */
}
.post-state { .post-state {
/* @apply text-white bg-rose-700 px-3 py-1 rounded-2xl font-medium text-sm; */ @apply px-3 py-1 rounded-2xl font-medium text-xs border border-solid;
@apply text-rose-700 px-3 py-1 rounded-2xl font-medium text-sm border-2 border-rose-700 border-solid;
} }
} }
} }
.iedit.type-artisans.status-draft.hentry {
/* @apply bg-rose-50; */
.column-title { .iedit.type-artisans.status-pending.hentry {
color: transparent; .column-title .post-state {
a { @apply text-amber-700 border-amber-700;
/* @apply text-red-900; */
} }
.post-state { }
/* @apply text-white bg-rose-700 px-3 py-1 rounded-2xl font-medium text-sm; */ .iedit.type-artisans.status-draft.hentry {
@apply text-sky-700 px-3 py-1 rounded-2xl font-medium text-sm border-2 border-sky-700 border-solid; .column-title .post-state {
@apply text-sky-700 border-sky-700;
} }
}
.iedit.type-artisans.status-offline.hentry {
.column-title .post-state {
@apply text-neutral-700 border-neutral-700;
}
}
.iedit.type-artisans.status-publish.hentry {
.column-title .post-state {
@apply text-green-700 border-green-700;
} }
} }
#acf-group_672358433051b, #acf-group_672358433051b,
@ -42,6 +44,96 @@ body.post-type-artisans {
} }
} }
.subsubsub {
.all,
.publish,
.pending,
.trash,
.offline {
@apply text-transparent border-solid border rounded-full pl-2;
}
.all {
@apply border-violet-700;
transition: all 0.6s;
a,
span {
@apply !text-violet-700;
}
&:hover,
&:has(a[aria-current='page']) {
@apply bg-violet-700;
a,
span {
@apply !text-white;
}
}
}
.offline {
@apply border-neutral-700;
transition: all 0.6s;
a,
span {
@apply !text-neutral-700;
}
&:hover,
&:has(a[aria-current='page']) {
@apply bg-neutral-700;
a,
span {
@apply !text-white;
}
}
}
.pending {
@apply border-amber-700;
transition: all 0.6s;
a,
span {
@apply !text-amber-700;
}
&:hover,
&:has(a[aria-current='page']) {
@apply bg-amber-700;
a,
span {
@apply !text-white;
}
}
}
.trash {
@apply border-rose-700;
transition: all 0.6s;
a,
span {
@apply !text-rose-700;
}
&:hover,
&:has(a[aria-current='page']) {
@apply bg-rose-700;
a,
span {
@apply !text-white;
}
}
}
.publish {
@apply border-green-700;
transition: all 0.6s;
a,
span {
@apply !text-green-700;
}
&:hover,
&:has(a[aria-current='page']) {
@apply bg-green-700;
a,
span {
@apply !text-white;
}
}
}
}
.admin-artisan-title { .admin-artisan-title {
@apply text-patrimoine-sante-securite !font-semibold !text-2xl; @apply text-patrimoine-sante-securite !font-semibold !text-2xl;
} }