Documentation → Developer Resources
Hooks Reference
Filters and actions for extending Developer Sitemap.
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);
