условно обновить css на edit.php

Я хочу изменить фоновый цвет каждой строки в таблице сообщений на основе некоторых проверок даты.

Css, который мне нужно изменить, это tr # post-nnnn {background-color: $ myColor}, где nnnn – это номер сообщения, а $ myColor – это массив из 5 предопределенных цветов.

Я подумал о том, как это сделать, и придумал следующее в качестве наброска, но был бы признателен за некоторые советы о том, идет ли я в правильном направлении и каков должен быть стандартный процесс решения этой проблемы.

Вот общая псевдо-идея …

add_action( 'admin_print_styles-edit.php', 'my_order_highlighter' ); // After some searching I decided this would be the place to attach my function... function my_order_highlighter() { $order_n = get Order number $date_o = get order date $date_r = get requested date $date_t = get todays date $order_status = get order status (shipped/processing) h_color = 1:red, 2:pink, 3:orange, 4:light-orange, 5:green For each order displayed on the page… If ($order_status == 'shipped') { // style the background colour for the current order row as '5' - "Completed" <style> tr.$order_n {background-color:#get_h_color(5)}</style> } // order is NOT shipped so check if there is a 'requested date' entered… if ($date_r is set) { // If due date is less than or equal to 3days away… If ($date_t - $date_r <= 3days) { // style the background colour for the current order row as '3' - "Needs attention" <style> tr.$order_n {background-color:get_h_color(3)}</style> } // Due date is more than 3days away so style row as '4' "Upcoming" <style> tr.$order_n {background-color:#get_h_color(4)}</style> } // No requested date entered so check if it is 5 days or more since order… If ($date_t - $date_o >= 5days) { // style the background colour for the current order row as '1' - "Needs URGENT attention" <style> tr.$order_n {background-color:#get_h_color(1)}</style> } //otherwise, style row as '4' "Upcoming" <style> tr.$order_n {background-color:#get_h_color(4)}</style> } 

Является ли это полезной идеей или я ищу не в том месте, чтобы это сделать?

Solutions Collecting From Web of "условно обновить css на edit.php"

Ваш код сильно сломан, и будет неудобным процесс взлома стилей, как вы пытаетесь сделать. Похоже, что вы используете код третьей части, но WP_List_Table что этот код использует WP_List_Table поскольку, вероятно, вам нужно изменить CSS строк по мере их создания:

 function alter_list_table_css_wpse_192010($classes) { if (is_admin() && in_array('iedit',$classes)) { // define your colors $colors = array( 'red', 'pink', 'orange', 'light-orange', 'green' ); // pull in the post data global $post; // var_dump($classes,$post->post_date); // do your date math // and add your classes $classes[] = 'date-bg-'.$colors[0]; } return $classes; } add_action( 'post_class', 'alter_list_table_css_wpse_192010', 10,3 ); 

Затем все, что вам нужно сделать, это добавить CSS для пяти разных фонов, но вы знаете, что такое классы, поэтому нет сложной логики.

Предостережения :

  1. Я не совсем понимаю, как должна выглядеть ваша математика на дату, поэтому я не пытался написать эту часть.
  2. Я точно не знаю, какую дату вы пытаетесь использовать. Он выглядит неосновным.
  3. Я выполнил мою установку, и класс iedit появляется только один раз в Core в таблице списка, поэтому я использую его для определения нашего присутствия в этой таблице. Это немного взломать.