Hooks reference

Every action and filter in Siteryn SEO, GEO & AEO and Pro, with signatures checked against the code. Free hooks start with siteryn_seo_geo_aeo_.

FreeProAPI 1.0

Lifecycle

HookTypeArguments · when
…_loadedaction( Plugin $plugin ). Free booted.
…_register_servicesaction( Container $container ). Register services.
…_modulesfilter( ModuleInterface[] $modules ). Add at your plugin's top level.
…_module_bootedaction( string $id, ModuleInterface $module )
…_upgradeaction( string|false $old, string $new ). init (20).
…_migration_completedaction( string $step_id )
…_deactivateaction()

Content & capabilities

HookTypeArguments
…_map_capabilityfilter( string[] $caps, string $cap, int $user_id, array $args )
…_post_types · …_taxonomiesfilter( string[] $types ). Supported content.
…_post_contextfilter( array $context, WP_Post $post )
…_term_contextfilter( array $context, WP_Term $term )
…_request_contextfilter( array $context ). Front-end view descriptor.
…_site_identityfilter( array $identity )
…_stop_wordsfilter( string[] $words )
…_content_seo_savedaction( int $post_id, string[] $changed, array $submitted )
…_term_seo_savedaction( int $term_id, string[] $changed )
…_product_seo_savedaction( WC_Product $product, bool $changed )

Analysis

HookTypeArguments
…_analyzersfilter( AnalyzerInterface[] $analyzers )
…_pre_analyzefilter( ?array $result, int $post_id, array $overrides ). Short-circuit.
…_post_checks · …_term_checksfilter( array $checks, array $context, array $values )
…_product_checksfilter( array $checks, WC_Product $product, array $values )
…_geo_checksfilter( array $checks, array $context )
…_aeo_checksfilter( array $checks, array $context, array $questions )
…_scorefilter( int $score, array $checks, string $kind ). Clamped to 0–100.
…_geo_site_checks · …_health_checksfilter( array $results )
…_technical_check_groupfilter( string $key, array $result )
…_other_seo_pluginsfilter( string[] $names )
HookTypeArguments
…_head_output_enabledfilter( bool $enabled )
…_title_varsfilter( array $vars, string $template ). Placeholder keys [a-z_]+.
…_resolved_metafilter( array $meta, array $request ). title, description, canonical, robots, image, og, twitter, object_type.
…_default_robotsfilter( array $robots, array $request ). Saved values win.
…_robotsfilter( array $robots, array $request ). Final noindex/nofollow.
…_head_metafilter( array $args, array $data ). Arguments for head-meta.php.
…_ai_training_crawlersfilter( string[] $agents ). Blocked by the AI training opt-out.
…_template_pathfilter( string $path, string $name )
…_before_template · …_after_templateaction( string $name, array $args )

Structured data

HookTypeArguments
…_schema_enabledfilter( bool $enabled )
…_schema_piecesfilter( SchemaPieceInterface[] $pieces, array $request )
…_schema_graphfilter( array $graph, array $request )
…_faq_pairsfilter( array $pairs, string $html )
…_schema_templatesfilter( array $templates ). Schema Generator types.
…_schema_variablesfilter( array $variables ). Picker list.
…_schema_variablefilter( string $value, string $name, string $param, WP_Post $post )
…_schema_public_metafilter( string[] $keys ). Protected meta allowed in %meta:%.
…_schema_entry_itemsfilter( array $items, WP_Post $post )
…_schema_item_piecesfilter( array $result, array $item, WP_Post $post, array $context )
…_schema_sanitize_itemfilter( ?array $clean, array $raw_item )
…_schema_generator_configfilter( array $config )
…_schema_productfilter( array $piece, WC_Product $product )
HookTypeArguments
…_breadcrumbsfilter( array $trail, array $request )
…_breadcrumbs_htmlfilter( string $html, array $trail, array $args )
…_link_suggestionsfilter( array $suggestions, array $context )
…_generic_anchorsfilter( string[] $anchors )
…_audit_scanfilter( array $state, array $context, array $report ). Store under $state['ext'][id].
…_audit_completedaction( array $results )
…_audit_export_columnsfilter( array $columns )
…_audit_export_rowfilter( array $row, int $id, array $state )

Settings & admin UI

HookTypeArguments
…_settings_sections · …_settings_fieldsfilter( array $items )
…_settings_get_allfilter( array $settings ). Runtime only.
…_render_field_{$type}action( array $field, mixed $value, string $name, string $id )
…_sanitize_field_{$type}filter( mixed $default, mixed $raw, array $field )
…_settings_save_redirectfilter( false|array $redirect, string $option_name )
…_settings_reset_actionsfilter( array $actions )
…_settings_nav_groupsfilter( array $groups )
…_settings_nav_group · _nav_parent · _nav_parent_label · _nav_sublabel · _nav_icon · _nav_badge · _settings_descriptionfilter( string $value, string $section )
…_settings_nav_visiblefilter( bool $visible, string $section )
…_settings_subtabsfilter( array $subtabs, string $section )
…_settings_panel_before · …_settings_main_after · …_settings_sidebaraction( string $section )
…_content_panel_main · …_content_panel_sideaction( WP_Post $post ). SEO box columns.
…_term_panel_mainaction( WP_Term $term )
…_overview_views · _overview_setup_steps · _overview_shortcutsfilter( array $items )
…_overview_afteraction( array $summary )
…_dashboard_cardsfilter( array $cards ). Catalog SEO.
…_dashboard_afteraction( int $page, string $filter )
…_system_status_cardsfilter( array $cards, bool $pro_active )
…_fix_guidesfilter( array $guides )
…_transfer_optionsfilter( string[] $options )
…_transfer_export · …_transfer_importfilter( array $value, string $name )

JavaScript: siteryn-sga:panel-ready (SEO box API in detail: getValues(), setField(), say()), siteryn-sga:analysis-updated and siteryn-sga:schema-ready, all on document.

Pro hooks Pro

Prefix siteryn_seo_geo_aeo_pro_.

HookTypeArguments · purpose
…pro_loadedaction( Plugin $plugin ). Licensed or not.
…pro_register_featuresaction( Plugin $plugin )
…pro_features_loadedaction( Plugin $plugin ). License active.
…pro_feature_bootedaction( string $id, FeatureInterface $feature )
…pro_featuresfilter( array $features )
…pro_upgrade · …pro_migratedaction( string|false $old, string $new ) · ( string[] $ran, string|false $from )
…pro_activated · …pro_deactivateaction()
…pro_license_activatedaction( ActivationOutcome $outcome ). After every attempt.
…pro_license_deactivatedaction( bool $done )
…pro_owner_capabilityfilter( string $cap = 'manage_options' )
…pro_audit_indexedaction( array $rows, array $results )
…pro_index_rowfilter( array $row, array $context, array $report )
…pro_seo_report · _geo_report · _aeo_reportfilter( array $report, array $rows, array $context )
…pro_seo_report_builtaction( array $report )
…pro_history_snapshotfilter( array $snapshot, array $rows )
…pro_history_recordedaction( array $snapshot )
…pro_intent_markersfilter( array $markers )
…pro_address_paramsfilter( string[] $params ). Parameters that never trigger noindex.
…pro_ai_crawlersfilter( array $crawlers )
…pro_llms_txt_linesfilter( string[] $lines )
…pro_answer_templatesfilter( array $templates, string $subject )
…pro_crawl_reportfilter( array $report, array $state )
…pro_crawl_completedaction( array $report )
…pro_catalog_reportfilter( array $report, array $rows )
…pro_brand_taxonomies · …pro_identifier_meta_keysfilter( string[] $values )
…pro_redirects_changedaction( array $rules )
…pro_bulk_meta_savedaction( int $post_id )
…pro_report_emailfilter( array $mail ). subject, body.
…pro_template_pathfilter( string $path, string $name )
…pro_tabsfilter( array $tabs )
…pro_admin_configfilter( array $config )
…pro_admin_screenfilter( bool $load, string $hook_suffix )
…pro_ai_providersfilter( array $providers ). Key must equal get_id().
…pro_ai_provider_configfilter( ProviderConfig $config )
…pro_ai_max_retriesfilter( int $retries = 1, string $provider_id ). 0–2.
…pro_ai_allow_insecure_local_endpointfilter( bool $allow = false, string $url )
…pro_ai_tasksfilter( array $tasks )
…pro_ai_promptfilter( array $prompt, string $template, array $data )
…pro_ai_entry_contextfilter( array $data, int $post_id ). What is sent for an entry.
…pro_ai_capabilityfilter( string $cap = 'edit_others_posts' )
…pro_ai_suggestedaction( array $result, array $args, int $user_id )