[wp-trac] [WordPress Trac] #49421: Cannot use conversion specifications in `theme mod` default values

WordPress Trac noreply at wordpress.org
Wed Feb 12 17:50:26 UTC 2020


#49421: Cannot use conversion specifications in `theme mod` default values
--------------------------+-----------------------------
 Reporter:  jqz           |      Owner:  (none)
     Type:  defect (bug)  |     Status:  new
 Priority:  normal        |  Milestone:  Awaiting Review
Component:  Customize     |    Version:  5.3.2
 Severity:  normal        |   Keywords:
  Focuses:                |
--------------------------+-----------------------------
 This is a follow-up to #34290.

 With the fix [46395] it is no longer possible to have a `theme_mod` which
 is itself a format string and has a default value which includes a
 conversion specification, e.g.

 {{{#!php
 \printf(
   \get_theme_mod('site_copyright', 'Copyright %%1$s; all rights
 reserved.'),
   \get_bloginfo('name', 'display')
 );
 }}}

 With a double `%%`, the default string is now unchanged, but with a single
 `%` it is replaced with the ‘template directory’ URL.  It is now no longer
 possible to achieve the desired `%1$s` in the default string.

 Also, where the default is something like `100%`, the code supplying the
 default value to `get_theme_mod` now needs to test the WordPress version
 to know whether it should pass `100%` or `100%%`.

 A fix might be for the `sprintf` code path also to be followed if the
 string contains a double `%%`.  Or revert the change (so that the
 behaviour of `get_theme_mod` is more clearly defined as it was before -
 i.e. the default value is a format string and literal `%` signs need
 escaping as `%%`) and find another solution to the initial problem.

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/49421>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list