wp-cli / extension-command

Manages plugins and themes, including installs, activations, and updates.
MIT License
87 stars 82 forks source link

Add wp theme cache command #392

Open spacedmonkey opened 6 months ago

spacedmonkey commented 6 months ago

Feature Request

Describe your use case and the problem you are facing

Add the following commands

wp theme cache <theme> get <key> 
wp theme cache <theme> add <key> <data>
wp theme cache <theme> delete

Describe the solution you'd like

Add command would map to the method cache_add on WP_Theme class. Get command would map to the method cache_get on WP_Theme class. Delete command would map to the method cache_delete on WP_Theme class.

This would help manage and clear theme related caches.

spacedmonkey commented 6 months ago

This would be useful for cache invalidation of theme caches, related to current performance work.

CC @swissspidy @joemcgill @felixarntz

danielbachhuber commented 6 months ago

I amenable to this. Feel free to submit a pull request, if you'd like. Here is some guidance on our pull request best practices.

swissspidy commented 6 months ago

WP_Theme::cache_add() and WP_Theme::cache_get() are private, so we can't really use these.

The delete method is public, but maybe this could be used via wp cache delete and wp cache flush-group? The cache key property itself is also private though, so we can't really access it.

spacedmonkey commented 6 months ago

WP_Theme::cache_add() and WP_Theme::cache_get() are private, so we can't really use these.

It maybe possible to use a reflection or copy the logic from inside these methods.

The delete method is public, but maybe this could be used via wp cache delete and wp cache flush-group? The cache key property itself is also private though, so we can't really access it.

It is not possible, as the cache key is not predictable. See. Cache key have been salted with a cache hash. Not be mention the other cache clearing that happens in the cache_delete method.

mchirag2002 commented 1 month ago

Can we maybe try to replicate the exact functions being internally used in class-wp-theme.php for these functions? We can replicate the entire logic for the functions and along with it replicate the cache related dependencies for the CLI Command like cache_expiration and cache_hash as well.

spacedmonkey commented 1 month ago

Can we maybe try to replicate the exact functions being internally used in class-wp-theme.php for these functions? We can replicate the entire logic for the functions and along with it replicate the cache related dependencies for the CLI Command like cache_expiration and cache_hash as well.

What would the be the benefit of that?

mchirag2002 commented 1 month ago

What would the be the benefit of that?

The benefit would be that we shall be able to replicate the complete functionality of the private functions WP_Theme::cache_add() and WP_Theme::cache_get() directly for our CLI commands without creating any wrapper functions in the class-wp-theme.php