[wp-trac] [WordPress Trac] #60652: font_dir filter enters an infinite loop if wp_get_upload_dir() is used in the filter callback

WordPress Trac noreply at wordpress.org
Fri Mar 22 22:59:17 UTC 2024


#60652: font_dir filter enters an infinite loop if wp_get_upload_dir() is used in
the filter callback
--------------------------------------+----------------------------
 Reporter:  mmaattiiaass              |       Owner:  peterwilsoncc
     Type:  defect (bug)              |      Status:  closed
 Priority:  normal                    |   Milestone:  6.5
Component:  General                   |     Version:  trunk
 Severity:  normal                    |  Resolution:  fixed
 Keywords:  has-patch has-unit-tests  |     Focuses:
--------------------------------------+----------------------------
Changes (by peterwilsoncc):

 * status:  assigned => closed
 * resolution:   => fixed


Comment:

 In [changeset:"57868" 57868]:
 {{{
 #!CommitTicketReference repository="" revision="57868"
 Editor: Prevent font folder naive filtering causing infinite loops.

 This modifies the font directory API to more closely reflect the upload
 directory API to help account for naive filtering when uploading fonts.

 This moves the protection of infinite loops to the new function
 `_wp_filter_font_directory()` to allow developers extending and
 maintaining the font library to apply the filter without the need for a
 closure.

 These changes also ensure both the `upload_dir` and `font_dir` filter are
 applied consistently when both creating and deleting fonts faces. Prior to
 this commit the `upload_dir` filter was only fired when creating fonts
 faces via the REST API.

 Applying the font directory filter to the `upload_dir` filter is now done
 by adding the `_wp_filter_font_directory` function rather than
 `wp_get_font_dir()`. Developers who have previously modified the font
 upload directory using the `font_dir` filter will NOT need to upload their
 code.

 Extenders wishing to upload files to the font directory can do so via the
 code:

 {{{#!php
 <?php
 add_filter( 'upload_dir', '_wp_filter_font_directory' );
 // Your code to upload or sideload a font file.
 remove_filter( 'upload_dir', '_wp_filter_font_directory' );
 }}}

 Introduces:

 * `wp_font_dir()`: Attempt to create and retrieve the font upload
 directory. The equivalent to `wp_upload_dir()`.
 * `_wp_filter_font_directory()`: To run on the `upload_dir` filter, this
 sets the default destination of the fonts directory and fires the
 `font_dir` filter.

 `wp_get_font_dir()` has been modified to be a lightweight getter for the
 font directory. It returns the location without attempting to create it.
 The equivalent to `wp_get_upload_dir()`.

 Follow up to [57740].

 Props peterwilsoncc, mukesh27, mikachan, costdev, mmaattiiaass,
 swissspidy, youknowriad, dd32, grantmkin.
 Fixes #60652.
 }}}

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/60652#comment:30>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list