`). * * @since 1.0.0 * * @return string Lower-case slug (e.g. `manual`, `yoast`, `rankmath`). */ public function get_id(): string; /** * Returns a human-readable label for this source. * * Surfaced in admin UI to tell owners which plugin contributed which * keywords. Should be translatable. * * @since 1.0.0 * * @return string */ public function get_label(): string; /** * Returns whether this source can produce keywords right now. * * For SEO-plugin adapters, this means "is the host plugin active?". * For the manual source, always true. * * @since 1.0.0 * * @return bool */ public function is_available(): bool; /** * Returns the raw target-keyword phrases for a post or term. * * Returns an empty array when the source has no keywords for the * given identifier. Phrases are returned as user-entered strings — * stemming and normalisation are the manager's responsibility. * * @since 1.0.0 * * @param int $post_id Post or term identifier. * @param string $post_type Item type. `post` for posts/CPTs, `term` * for taxonomy terms. * * @return array Raw phrases. */ public function get_keywords_for( int $post_id, string $post_type = 'post' ): array; }