Documentation → Developer Resources

Hooks Reference

Filters and actions for extending Developer Sitemap.

On This Page

Filters

Filters allow you to modify data before it’s used.

developer_sitemap_urls

Filter the array of URLs before adding to sitemap.

add_filter('developer_sitemap_urls', function($urls, $type) {
    // Remove specific URL
    $urls = array_filter($urls, function($url) {
        return $url->getLoc() !== 'https://example.com/exclude-me/';
    });
    return $urls;
}, 10, 2);

// Parameters:
// $urls - Array of SitemapUrl objects
// $type - Content type (post, page, product, taxonomy, author)

developer_sitemap_url_entry

Filter individual URL entry attributes.

add_filter('developer_sitemap_url_entry', function($entry, $post_id) {
    // Increase priority for featured posts
    if (get_post_meta($post_id, 'featured', true)) {
        $entry['priority'] = 0.9;
    }
    return $entry;
}, 10, 2);

// Parameters:
// $entry - Array with loc, lastmod, changefreq, priority
// $post_id - Post ID (when applicable)

developer_sitemap_post_types

Filter supported post types.

add_filter('developer_sitemap_post_types', function($post_types) {
    // Add custom post type
    $post_types[] = 'portfolio';
    return $post_types;
});

// Parameters:
// $post_types - Array of post type slugs

developer_sitemap_taxonomies

Filter supported taxonomies.

add_filter('developer_sitemap_taxonomies', function($taxonomies) {
    // Add custom taxonomy
    $taxonomies[] = 'portfolio_category';
    return $taxonomies;
});

// Parameters:
// $taxonomies - Array of taxonomy slugs

developer_sitemap_exclude_post

Filter whether to exclude a specific post.

add_filter('developer_sitemap_exclude_post', function($exclude, $post_id) {
    // Exclude posts with noindex meta
    if (get_post_meta($post_id, '_noindex', true)) {
        return true;
    }
    return $exclude;
}, 10, 2);

// Parameters:
// $exclude - Boolean
// $post_id - Post ID

developer_sitemap_cache_duration

Filter cache expiration time.

add_filter('developer_sitemap_cache_duration', function($seconds) {
    // Set to 2 hours
    return 7200;
});

// Parameters:
// $seconds - Cache duration in seconds

Actions

Actions allow you to execute code at specific points.

developer_sitemap_generated

Triggered after sitemap generation.

add_action('developer_sitemap_generated', function($type, $url_count) {
    // Log sitemap generation
    error_log("Sitemap {$type} generated with {$url_count} URLs");
}, 10, 2);

// Parameters:
// $type - Sitemap type
// $url_count - Number of URLs in sitemap

developer_sitemap_cache_cleared

Triggered when cache is cleared.

add_action('developer_sitemap_cache_cleared', function($type) {
    // Notify external service
    wp_remote_post('https://api.example.com/sitemap-updated', [
        'body' => ['type' => $type]
    ]);
});

// Parameters:
// $type - Cache type cleared (or 'all')

developer_sitemap_settings_saved

Triggered when settings are saved.

add_action('developer_sitemap_settings_saved', function($settings) {
    // Perform action after settings change
});

// Parameters:
// $settings - Array of saved settings

Examples

Add Custom Post Type Support

// Add 'portfolio' post type to sitemap
add_filter('developer_sitemap_post_types', function($types) {
    $types[] = 'portfolio';
    return $types;
});

// Set custom priority for portfolio items
add_filter('developer_sitemap_url_entry', function($entry, $post_id) {
    if (get_post_type($post_id) === 'portfolio') {
        $entry['priority'] = 0.7;
        $entry['changefreq'] = 'monthly';
    }
    return $entry;
}, 10, 2);

Exclude Posts by Category

// Exclude all posts in 'internal' category
add_filter('developer_sitemap_exclude_post', function($exclude, $post_id) {
    if (has_category('internal', $post_id)) {
        return true;
    }
    return $exclude;
}, 10, 2);

Ping Search Engines on Update

// Ping Google when sitemap regenerates
add_action('developer_sitemap_generated', function($type, $count) {
    if ($type === 'index') {
        $sitemap_url = home_url('/sitemap.xml');
        $ping_url = 'https://www.google.com/ping?sitemap=' . 
                    urlencode($sitemap_url);
        wp_remote_get($ping_url);
    }
}, 10, 2);