Hooks

SleekRank provides PHP hooks and filters that allow developers to customize and extend its behavior.

Filters

sleekRank/data/item

Filter a resolved data item before it is used for replacements. Receives the item data array and page group object.

functions.php
        add_filter('sleekRank/data/item', function ($item, $pageGroup) {
    // Modify data before replacements are applied
    $item['name'] = strtoupper($item['name']);
    return $item;
}, 10, 2);
  
                    
Copy

You can also target a specific page group by slug:

functions.php
        add_filter('sleekRank/data/item/city-pages', function ($item) {
    // Only applies to the "city-pages" page group
    $item['description'] = wp_trim_words($item['description'], 30);
    return $item;
});
  
                    
Copy

sleekRank/replacement/value

Filter the value produced by any replacement before it is injected into the HTML.

functions.php
        add_filter('sleekRank/replacement/value', function ($value, $mapping, $data) {
    // Modify any replacement value
    return $value;
}, 10, 3);
  
                    
Copy

You can also filter by replacement type:

functions.php
        add_filter('sleekRank/replacement/value/tag', function ($value, $mapping, $data) {
    // Only applies to tag replacements
    return $value;
}, 10, 3);
  
                    
Copy

sleekRank/replacements/before

Filter the HTML content before the replacement engine processes it.

functions.php
        add_filter('sleekRank/replacements/before', function ($html, $data, $mappings) {
    // Pre-process HTML before replacements
    return $html;
}, 10, 3);
  
                    
Copy

sleekRank/replacements/after

Filter the HTML content after all replacements have been applied.

functions.php
        add_filter('sleekRank/replacements/after', function ($html, $data, $mappings) {
    // Post-process HTML after all replacements
    return $html;
}, 10, 3);
  
                    
Copy

sleekRank/output/before & sleekRank/output/after

Filter the final page output before and after the output buffer is processed.

functions.php
        add_filter('sleekRank/output/after', function ($html) {
    // Add a custom banner to all generated pages
    $banner = '<div class="generated-page-banner">Auto-generated</div>';
    return str_replace('<body', $banner . '<body', $html);
});
  
                    
Copy

Actions

sleekRank/data/resolved

Fires after data has been successfully resolved for a page group item.

functions.php
        add_action('sleekRank/data/resolved', function ($data, $pageGroup) {
    // Log or track page resolution
    error_log("SleekRank resolved: " . $data['slug']);
}, 10, 2);
  
                    
Copy

sleekRank/register/dataSources

Register custom data source types.

functions.php
        add_action('sleekRank/register/dataSources', function ($registry) {
    $registry->register('my_custom_source', MyCustomDataSource::class);
});
  
                    
Copy

sleekRank/register/replacements

Register custom replacement types.

functions.php
        add_action('sleekRank/register/replacements', function ($engine) {
    $engine->register('custom', MyCustomReplacement::class);
});
  
                    
Copy

sleekRank/register/sitemapIntegrations

Register custom sitemap integrations.

functions.php
        add_action('sleekRank/register/sitemapIntegrations', function ($registry) {
    $registry->register(MyCustomSitemapIntegration::class);
});
  
                    
Copy

Lifecycle actions

These actions fire during SleekRank's initialization and can be used for logging or extending behavior:

  • sleekRank/dataSource/registered — Fires when a data source type is registered
  • sleekRank/pageGroup/registered — Fires when a page group is registered during init
  • sleekRank/rewrites/registered — Fires after all rewrite rules have been registered
  • sleekRank/activated — Fires on plugin activation
  • sleekRank/deactivated — Fires on plugin deactivation