#48491 closed task (blessed) (fixed)
[Theme compatibility] WP/PHP compatibility tests for single site theme updates/activation
Reported by: | afragen | Owned by: | SergeyBiryukov |
---|---|---|---|
Milestone: | 5.5 | Priority: | normal |
Severity: | normal | Version: | |
Component: | Site Health | Keywords: | has-patch needs-testing dev-feedback servehappy needs-copy-review has-screenshots has-dev-note |
Focuses: | administration | Cc: |
Description
As part of the WP/PHP version compatibility testing for themes, this ticket is directed towards theme updating and activation on a single site installation.
If the theme is not compatible with the currently running WP or PHP version, updating will be blocked. This also includes blocking theme activation for incompatible themes.
This addresses the themes.php and upgrade-core.php pages.
Attachments (17)
Change History (75)
#4
@
5 years ago
The screenshots screenshot_02.pngβ, screenshot_04.pngβ, and screenshot_01.pngβ show an incompatible update.
I manually set the PHP requirement so it would fail.
This ticket was mentioned in βSlack in #core-site-health by afragen. βView the logs.
5 years ago
#6
@
5 years ago
Hmm, I think I need to deactivate the Live Preview button as it can be used to activate.
#7
@
5 years ago
It is still possible, using the Customizer, to see updates and activate a non-compliant theme. I will need help with fixing this component.
#9
@
5 years ago
It is my plan to clean up this a bit. My intent is to remove the changes to WP_Theme
and put them in their own ticket/patch. This patch would be the first patch needed to be reviewed/committed as it will be required by all these subsequent tickets/patches.
That way this ticket doesn't need to be committed before any of the others. Hopefully this simplifies the testing.
#11
@
5 years ago
@afragen I am not able to apply the patch in my local environment. Could you please regenerate the patch?
#12
@
5 years ago
@sathyapulse it's likely because the patch was created against core.git.wordpress.org, not develop.git.wordpress.org.
#13
@
5 years ago
@sathyapulse I've tested the patch again and it is applies cleanly on trunk using npm run grunt patch:48491
It might depend upon how your local environment is set up.
This ticket was mentioned in βSlack in #core-site-health by afragen. βView the logs.
5 years ago
This ticket was mentioned in βSlack in #core-site-health by carike. βView the logs.
5 years ago
This ticket was mentioned in βSlack in #core-site-health by clorith. βView the logs.
5 years ago
This ticket was mentioned in βSlack in #core-site-health by afragen. βView the logs.
5 years ago
#19
@
5 years ago
Just noting this is on my list to commit today (along with #48507), more eyes definitely welcome though :)
#22
@
5 years ago
I think this is going to need the customizer piece in order to be complete and land in trunk.
Based on timing, I would suggest punting and work continuing so it can be ready for 5.5
#23
@
5 years ago
For the customizer stuff, it looks like this data can be added in the wp_ajax_query_themes()
PHP function. And adding a modification like this in the tmpl-theme-preview
template in wp-admin/theme-install.php
.
<# if ( data.installed ) { #> <a class="button button-primary activate" href="{{ data.activate_url }}"><?php _e( 'Activate' ); ?></a> <# } else if ( data.compatible_php ) { #> <a href="{{ data.install_url }}" class="button button-primary theme-install" data-name="{{ data.name }}" data-slug="{{ data.id }}"><?php _e( 'Install' ); ?></a> <# } else { #> <a href="{{ data.install_url }}" class="button button-primary theme-install disabled" data-name="{{ data.name }}" data-slug="{{ data.id }}"><?php _e( 'Install' ); ?></a> <# } #>
#24
@
5 years ago
- Milestone changed from 5.4 to 5.5
Moving this to the 5.5 milestone, as it's marked early
, and we are one day away from beta for 5.4
#25
@
5 years ago
Latest patch 48491.5.diffβ adds compatibility testing when in the Customizer.
To test simply change the Requires PHP
header of the style.css
of an installed theme. You can test the update part by also decrementing the version number too.
This ticket was mentioned in βSlack in #core-site-health by afragen. βView the logs.
5 years ago
This ticket was mentioned in βSlack in #core-site-health by afragen. βView the logs.
5 years ago
This ticket was mentioned in βSlack in #core by david.baumwald. βView the logs.
5 years ago
This ticket was mentioned in βSlack in #core-site-health by afragen. βView the logs.
4 years ago
This ticket was mentioned in βSlack in #core by david.baumwald. βView the logs.
4 years ago
#32
follow-up:
βΒ 36
@
4 years ago
This is great work, I'm sorry the review took so long. There really are a lot of different layers and parts of the themes UI, so testing that everything works as expected is non-trivial.
Some notes on the patch:
- No need to use
ReflectionObject
inwp-admin/customize.php
, theWP_Customize_Manager::theme()
method can be used to retrieve the theme object instead. - It seems like the update parts need some more work. Unless I've missed something in my testing, at least in a few places the messages state that the theme update is incompatible, but the compatibility checks are actually performed for the currently installed version, not for the update.
- The activation parts look good, commit incoming.
#36
in reply to:
βΒ 32
@
4 years ago
Replying to SergeyBiryukov:
There really are a lot of different layers and parts of the themes UI, so testing that everything works as expected is non-trivial.
For future reference:
wp-admin/customize.php
- Includes displaying the "Activate & Publish" button in Customizer side panel.
wp-admin/includes/ajax-actions.php
wp_ajax_query_themes()
provides data for the Add Themes screen.
wp-admin/includes/theme.php
customize_themes_print_templates()
is used for displaying the Theme Details modal in the Customizer theme browser.
wp-admin/theme-install.php
#tmpl-theme
is used for displaying the grid on the Add Themes screen.#tmpl-theme-preview
is used for displaying the Details & Preview modal on the Add Themes screen.
wp-admin/themes.php
has three different templates:- The first one (in PHP) is used for displaying the grid on the Themes screen when JS is turned off.
#tmpl-theme
is used for displaying the grid on the Themes screen.#tmpl-theme-single
is used for displaying the Theme Details modal on the Themes screen.
wp-includes/customize/class-wp-customize-theme-control.php
WP_Customize_Theme_Control::content_template()
is used for displaying the grid in the Customizer theme browser.
#37
@
4 years ago
To summarize: with the activation and live preview parts out of the way in [47816], it should hopefully be easier to focus on the update parts now.
This ticket was mentioned in βSlack in #core-site-health by afragen. βView the logs.
4 years ago
This ticket was mentioned in βSlack in #core by david.baumwald. βView the logs.
4 years ago
#43
@
4 years ago
Just wanted to circle back on this and make sure that the error messages were not omitted on accident. @SergeyBiryukov I believe that is what you mean in 48491#comment:36, but wanted to make sure.
Attached screenshots to document the current experience. The missing error messages are very apparent.
Also, #48245 was created to add some extra details to the error message displayed when a user attempts to activate a plugin without proper support. I think some of these points could be used to improve the messaging that will be added here. From @johnbillion in #48245:
Some helpful information should be added to this screen:
- The plugins' minimum required PHP version
- The current PHP version
- A link to the support documentation on how to update PHP
#44
@
4 years ago
I believe the error messages on these particular screens are omitted on purpose as thereβs no obvious location and error messages do exist in other locations. I havenβt looked at this recently however.
Still to do are tickets/patches for installing themes and multisite.