添加 CSS class 作为 PHP 循环的变量

Adding CSS class as a variable for PHP loop

我有一个 PHP 函数,它接受一个使用重力流过滤的 table。此函数循环遍历 table 的每一行。我想更改此 table 的样式。我有一个特定的 CSS class 我想要 table 样式。这个class就是"tr-shadow"。我会将此 CSS class 应用于 table 的每一行。我有一个用于 CSS 的 $style 变量。如何将 CSS class 添加为 $style 变量的字符串,以便 table 可以从 class 中打印出 CSS?这是下面的代码。

'''

public function single_row_columns( $item ) {

list( $columns, $hidden ) = $this->get_column_info();

    foreach ( $columns as $column_name => $column_display_name ) {
        $class = "class='$column_name column-$column_name'";

        $style = "class='tr-shadow'";
        if ( in_array( $column_name, $hidden ) ) {
            $style = "class='tr-shadow'";
        }

        $data_label = ( ! empty( $column_display_name ) ) ? " data-label='$column_display_name'" : '';

        $attributes = "$class$style$data_label";

        if ( 'cb' == $column_name ) {
            echo '<th data-label="' . esc_html__( 'Select', 'gravityflow' ) . '" scope="row" class="check-column">';
            echo $this->column_cb( $item );
            echo '</th>';
        } elseif ( method_exists( $this, 'column_' . $column_name ) ) {
            echo "<td $attributes>";
            echo call_user_func( array( $this, 'column_' . $column_name ), $item );
            echo '</td>';
        } else {
            echo "<td $attributes>";
            echo $this->column_default( $item, $column_name );
            echo '</td>';
        }
    }
}

''' 如您所见,我已经尝试添加“$style="class='tr-shadow"。但是,这不会向 table 添加任何样式。我假设我没有正确格式化 $style 变量以 css class 可识别的方式。我如何使用 $style 变量成功地将 css class 输出到 table 的每一行.

在此代码片段中,您设置了 classes:

$class = "class='$column_name column-$column_name'";

$style = "class='tr-shadow'";

然后将其连接成一个字符串:

$attributes = "$class$style$data_label";

因此,我认为您的第二个 class 被忽略了。

您的 $style 变量再次包含属性 style,这将导致如下结果:

class="column_name column-bar class=' ... 

这是无效的。

我建议将您的代码更改为如下内容:

public function single_row_columns( $item ) {

list( $columns, $hidden ) = $this->get_column_info();

    foreach ( $columns as $column_name => $column_display_name ) {
        $class = "$column_name column-$column_name";

        $class .= " tr-shadow";
        if ( in_array( $column_name, $hidden ) ) {
            $class .= " tr-shadow";
        }

        $data_label = ( ! empty( $column_display_name ) ) ? " data-label='$column_display_name'" : '';

        $attributes = "$data_label";

        if ( 'cb' == $column_name ) {
            echo '<th data-label="' . esc_html__( 'Select', 'gravityflow' ) . '" scope="row" class="check-column">';
            echo $this->column_cb( $item );
            echo '</th>';
        } elseif ( method_exists( $this, 'column_' . $column_name ) ) {
            echo "<td class=\"$class\" $attributes>";
            echo call_user_func( array( $this, 'column_' . $column_name ), $item );
            echo '</td>';
        } else {
            echo "<td class=\"$class\" $attributes>";
            echo $this->column_default( $item, $column_name );
            echo '</td>';
        }
    }
}

此外,无论您做什么,看起来 class 总是 tr-shadow