Fonts API Hooks

Filters

font_dir

Filters the fonts directory data.

apply_filters( 'font_dir', array $font_dir ): array

Since: 6.5.0

Parameters:

Name Type Description
$font_dir array Font directory information

$font_dir Structure:

[
    'path'    => '/var/www/html/wp-content/uploads/fonts',
    'url'     => 'https://example.com/wp-content/uploads/fonts',
    'subdir'  => '',
    'basedir' => '/var/www/html/wp-content/uploads/fonts',
    'baseurl' => 'https://example.com/wp-content/uploads/fonts',
    'error'   => false,
]

Example – Custom Font Directory:

add_filter( 'font_dir', function( $font_dir ) {
    // Store fonts in a custom location
    $font_dir['path']    = '/var/www/html/fonts';
    $font_dir['url']     = 'https://example.com/fonts';
    $font_dir['basedir'] = '/var/www/html/fonts';
    $font_dir['baseurl'] = 'https://example.com/fonts';
    
    return $font_dir;
});

Example – CDN URL:

add_filter( 'font_dir', function( $font_dir ) {
    // Serve fonts from CDN
    $font_dir['url']     = 'https://cdn.example.com/fonts';
    $font_dir['baseurl'] = 'https://cdn.example.com/fonts';
    
    return $font_dir;
});

Example – Subdirectory Per Site (Multisite):

add_filter( 'font_dir', function( $font_dir ) {
    $site_id = get_current_blog_id();
    
    $font_dir['path']    .= '/site-' . $site_id;
    $font_dir['url']     .= '/site-' . $site_id;
    $font_dir['basedir'] .= '/site-' . $site_id;
    $font_dir['baseurl'] .= '/site-' . $site_id;
    $font_dir['subdir']   = '/site-' . $site_id;
    
    return $font_dir;
});

Internal Hooks

These hooks are used internally for font management:

after_delete_post

Used by _wp_after_delete_font_family() to clean up child font faces when a wp_font_family post is deleted.

before_delete_post

Used by _wp_before_delete_font_face() to delete font files when a wp_font_face post is deleted.


Related Hooks

upload_dir

The upload_dir filter is temporarily used internally by wp_font_dir() to redirect uploads to the fonts directory. The internal callback _wp_filter_font_directory() handles this.

Note: Do not use upload_dir to modify font paths. Use font_dir instead.