Raw phrases. */ public function get_keywords_for( int $post_id, string $post_type = 'post' ): array { global $wpdb; if ( ! isset( $wpdb ) || $post_id <= 0 ) { return array(); } // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching -- Caching is the manager's responsibility; this source is intentionally thin. $rows = $wpdb->get_results( $wpdb->prepare( 'SELECT phrase FROM %i WHERE post_id = %d AND post_type = %s AND source = %s', TableNames::target_keywords(), $post_id, $post_type, self::SOURCE_ID ) ); if ( ! is_array( $rows ) ) { return array(); } $out = array(); foreach ( $rows as $row ) { if ( ! is_object( $row ) || ! isset( $row->phrase ) ) { continue; } $phrase = trim( (string) $row->phrase ); if ( '' !== $phrase ) { $out[] = $phrase; } } return $out; } }