'wpseo_bulk_description', 'plural' => 'wpseo_bulk_descriptions', 'ajax' => true, ]; /** * The field in the database where meta field is saved. * * @var string */ protected $target_db_field = 'metadesc'; /** * The columns shown on the table. * * @return array */ public function get_columns() { $columns = [ 'col_existing_yoast_seo_metadesc' => __( 'Existing Yoast Meta Description', 'wordpress-seo' ), 'col_new_yoast_seo_metadesc' => __( 'New Yoast Meta Description', 'wordpress-seo' ), ]; return $this->merge_columns( $columns ); } /** * Parse the metadescription. * * @param string $column_name Column name. * @param object $record Data object. * @param string $attributes HTML attributes. * * @return string */ protected function parse_page_specific_column( $column_name, $record, $attributes ) { switch ( $column_name ) { case 'col_new_yoast_seo_metadesc': return sprintf( '', esc_attr( 'wpseo-new-metadesc-' . $record->ID ), esc_attr( $record->ID ) ); case 'col_existing_yoast_seo_metadesc': // @todo Inconsistent return/echo behavior R. // I traced the escaping of the attributes to WPSEO_Bulk_List_Table::column_attributes. Alexander. // The output of WPSEO_Bulk_List_Table::parse_meta_data_field is properly escaped. // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo $this->parse_meta_data_field( $record->ID, $attributes ); break; } } }