id ) { $hidden[] = self::COLUMN; } return $hidden; } /** * Подключает стили плагина в списке товаров — в них ширина колонки. * * @param string $hook_suffix Какая страница админки открыта. * @return void */ public function enqueue_styles( string $hook_suffix ): void { if ( 'edit.php' !== $hook_suffix || ! current_user_can( 'edit_products' ) ) { return; } $screen = get_current_screen(); if ( null === $screen || self::SCREEN !== $screen->id ) { return; } Assets::enqueue_style(); } /** * Добавляет колонку перед датой — или в конец, если колонки даты нет. * * @param array $columns Колонки списка товаров. * @return array */ public function add_column( array $columns ): array { if ( ! current_user_can( 'edit_products' ) ) { return $columns; } $title = __( 'aiModelka', 'aimodelka' ); $result = array(); foreach ( $columns as $key => $label ) { if ( 'date' === $key ) { $result[ self::COLUMN ] = $title; } $result[ $key ] = $label; } if ( ! isset( $result[ self::COLUMN ] ) ) { $result[ self::COLUMN ] = $title; } return $result; } /** * Выводит ячейку колонки для товара. * * @param string $column Какая колонка выводится. * @param int $product_id Id товара. * @return void */ public function render_cell( string $column, int $product_id ): void { if ( self::COLUMN !== $column ) { return; } if ( '' !== get_post_meta( $product_id, Meta::PENDING_SAVE, true ) ) { echo esc_html__( 'Saving…', 'aimodelka' ); return; } $text = Saved_Photos::column_text( $product_id ); if ( '' === $text ) { echo '' . esc_html__( 'No aiModelka photos yet', 'aimodelka' ) . ''; return; } echo esc_html( $text ); } }