有条件地更新edit.php上的css

时间:2015-06-19 作者:WPD_tobe

我想根据一些日期检查更改posts表中每一行的背景色。

我需要更改的css是tr#post nnnn{背景颜色:$myColor},其中nnnn是post编号,$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> 
}
这是一个可行的想法,还是我找错了地方来实现这一点?

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

您的代码已严重损坏,像您尝试的那样对样式进行黑客攻击将是一个非常棘手的过程。看起来您使用的是第三方代码,但假设该代码使用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,但您知道这些类是什么,因此不需要复杂的逻辑。

注意事项:

我不太清楚你的约会数学应该是什么样子,所以我不想写那部分iedit 类在列表的core中只出现一次,所以我用它来标识我们在该表中的存在。这有点像黑客

结束

相关推荐

Edit admin post page

我必须自定义管理页面,您可以在其中编辑其他页面“wp admin/post.php”。我必须添加很多东西,删除其他东西,更改颜色,并在顶部添加自定义菜单。我不知道如何开始搜索这个。在页面编辑器中是否有任何钩子或函数可以更改HTML?我知道如何添加CSS/JS文件。但我不知道如何添加HTML/PHP元素。function admin_css() { wp_enqueue_style( \'admin_css\', get_template_directory_uri() . \'/css/a