Christoph Bratschi
Forum Replies Created
-
Forum: Plugins
In reply to: [Public Post Preview] Yet Another Expiration Issue ThreadWithout the nonce check you would lose all security, the _ppp parameter being used uses a hash for the lifetime interval which cannot easily be guessed. You would have to create a random secret per post and store it in the database.
I reviewed the nonce tick calculation and here are definitely some issues with the expire times, they are not equal and the lifetimes are not obeyed. Like in wp_nonce_tick() (https://developer.ww.wp.xz.cn/reference/functions/wp_nonce_tick/) the guaranteed lifetime is half the used lifetime in the calculation. This fact is not mentioned in the documentation. Therefore if you define a lifetime of 60 days, it might expire already after 30 days. In practice this should not be an issue but you have to use a higher lifetime in practice or users will complain.
PS: the comments in verify_nonce() still mention the old 24h limit but it uses the given lifetime.
Forum: Plugins
In reply to: [APCu Manager] Network activate caused fatal errorI have the same issue. In my case the following composer package uses Psr\Log\LoggerInterface:
“google/analytics-data”: “^0.22.0”
Which defines:
interface LoggerInterface
{
/**
* System is unusable.
*
* @param mixed[] $context
*/
public function emergency(string|\Stringable $message, array $context = []): void;
...Decalog uses this interface but defines a different signature:
https://github.com/Pierre-Lannoy/wp-decalog-sdk/blob/main/src/EventsLogger.php#L76
https://github.com/Pierre-Lannoy/wp-decalog-sdk/blob/main/src/EventsLogger.php#L333public function emergency( string|\Stringable $message, array $context = [] ): void
public function emergency( $message, $context = [] )On line 333 the definition is different (types are missing) which causes the error.
Getting the same PHP error. Stack trace is:
wp-content/plugins/wordpress-seo/src/generated/container.php:3367
Yoast\W\S\G\Cached_Container->getRequestHelperService()
wp-content/plugins/wordpress-seo/vendor_prefixed/symfony/dependency-injection/Container.php:271
YoastSEO_Vendor\S\C\D\Container->get()
wp-content/plugins/wordpress-seo/lib/dependency-injection/container-registry.php:53
Yoast\W\L\D\Container_Registry::get()
wp-content/plugins/wordpress-seo-premium/src/generated/container.php:691
Yoast\W\S\P\G\Cached_Container->getRequestHelperService()
wp-content/plugins/wordpress-seo-premium/src/generated/container.php:1375
Yoast\W\S\P\G\Cached_Container->getIndexNowPingService()
wp-content/plugins/wordpress-seo/vendor_prefixed/symfony/dependency-injection/Container.php:271
YoastSEO_Vendor\S\C\D\Container->get()
wp-content/plugins/wordpress-seo/src/loader.php:289
Yoast\W\S\Loader->get_class()
wp-content/plugins/wordpress-seo/src/loader.php:212
Yoast\W\S\Loader->load_integrations()
wp-includes/class-wp-hook.php:324
do_action('init')
wp-settings.php:700Forum: Plugins
In reply to: [User Switching] user_switching::get_old_user() returns falseWe use user_switching::get_old_user() to display our own switch back button in a navbar. But now this function always returns false and therefore we won’t render any switch back button.
Root cause looks like a not set olduser cookie.
Forum: Plugins
In reply to: [User Switching] user_switching::get_old_user() returns falsewordpress_user_sw_olduser_* ist not set.
Set cookies are:
- wordpress_user_sw_secure_…
- wordpress_logged_in_…
Forum: Plugins
In reply to: [WooCommerce] Uninstall fails with Class “WC_Plugin_Updates” not foundThe website had an online store which is no longer required. This is the reason why we have to remove WooCommerce. All shop and user data is no longer needed.
The remaining stack trace is from WooCommerce only we do not see any other plugin being involved here. Is there a way to debug the uninstall process? We could check which steps keeps failing.
Forum: Plugins
In reply to: [WooCommerce] Uninstall fails with Class “WC_Plugin_Updates” not foundDeactivated Yoast SEO but it is still failing:
[28-Jun-2023 17:21:50 UTC] PHP Fatal error: Uncaught Error: Failed opening required '/.../wp-content/plugins/woocommerce/src/Internal/Admin/Analytics.php' (include_path='.:/usr/local/share/pear') in /.../wp-content/plugins/woocommerce/vendor/jetpack-autoloader/class-php-autoloader.php:87 Stack trace: #0 /.../wp-content/plugins/woocommerce/src/Internal/Features/FeaturesController.php(469): Automattic\Jetpack\Autoloader\jp741993bb9566fe1702f83908718d3a93\PHP_Autoloader::load_class('Automattic\\WooC...') #1 /.../wp-content/plugins/woocommerce/src/Internal/Features/FeaturesController.php(453): Automattic\WooCommerce\Internal\Features\FeaturesController->process_updated_option('_transient_time...', false, 1687973810) #2 [internal function]: Automattic\WooCommerce\Internal\Features\FeaturesController->process_added_option('_transient_time...', 1687973810) #3 /.../wp-content/plugins/woocommerce/src/Internal/Traits/AccessiblePrivateMethods.php(158): call_user_func_array(Array, Array) #4 /.../wp-includes/class-wp-hook.php(308): Automattic\WooCommerce\Internal\Features\FeaturesController->__call('process_added_o...', Array) #5 /.../wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters(NULL, Array) #6 /.../wp-includes/plugin.php(517): WP_Hook->do_action(Array) #7 /.../wp-includes/option.php(724): do_action('added_option', '_transient_time...', 1687973810) #8 /.../wp-includes/option.php(986): add_option('_transient_time...', 1687973810, '', 'no') #9 /.../wp-content/plugins/woocommerce/includes/admin/helper/class-wc-helper.php(1297): set_transient('_woocommerce_he...', Array, 900) #10 /.../wp-content/plugins/woocommerce/includes/admin/helper/class-wc-helper-updater.php(171): WC_Helper::get_subscriptions() #11 /.../wp-content/plugins/woocommerce/includes/admin/helper/class-wc-helper-updater.php(40): WC_Helper_Updater::get_update_data() #12 /.../wp-includes/class-wp-hook.php(310): WC_Helper_Updater::transient_update_plugins(Object(stdClass)) #13 /.../wp-includes/plugin.php(205): WP_Hook->apply_filters(Object(stdClass), Array) #14 /.../wp-includes/option.php(2036): apply_filters('pre_set_site_tr...', Object(stdClass), 'update_plugins') #15 /.../wp-admin/includes/plugin.php(1027): set_site_transient('update_plugins', Object(stdClass)) #16 /.../wp-admin/includes/ajax-actions.php(4705): delete_plugins(Array) #17 /.../wp-includes/class-wp-hook.php(308): wp_ajax_delete_plugin('') #18 /.../wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters('', Array) #19 /.../wp-includes/plugin.php(517): WP_Hook->do_action(Array) #20 /.../wp-admin/admin-ajax.php(188): do_action('wp_ajax_delete-...') #21 {main} thrown in /.../wp-content/plugins/woocommerce/vendor/jetpack-autoloader/class-php-autoloader.php on line 87 [28-Jun-2023 17:21:50 UTC] PHP Warning: require(/.../wp-content/plugins/woocommerce/src/Internal/Admin/Analytics.php) [<a href='https://secure.php.net/manual/en/function.require.php'>function.require.php</a>]: Failed to open stream: No such file or directory in /.../wp-content/plugins/woocommerce/vendor/jetpack-autoloader/class-php-autoloader.php on line 87This appears twice in the log. This time happens only in WooCommerce code.
Other plugins cannot be removed because they are required by our theme.
- This reply was modified 2 years, 11 months ago by Christoph Bratschi.
Forum: Plugins
In reply to: [Search Exclude] v2 release notes?The 1.3.1 version was a very simple plugin. I added the code to a private git repository and checked the differences to 2.0.0. The new version contains now build folders and several other inlined plugins (e.g. widget news and table links). That’s all unnecessary code which probably adds some nag screens to the WordPress dashboard.
Don’t need this. Feel free to create your forks.
Forum: Plugins
In reply to: [Query Monitor] Allowed memory size exhaustedThanks, I increased the limits to 768 MB and it works so far. Perhaps this was related to the ACFML plugin which updated translations. This was only executed once.
Looking forward to the next release. Thanks a lot for this great plugin.
Sorry, saw the plugin with similar name was removed by LittleBizzy. Thanks for the clarification.
Forum: Plugins
In reply to: [APCu Manager] Multiple WordPress Instances on Same ServerThey are using separate keys by default or do we have to configure something?
Thanks for the quick reply,
ChristophForum: Plugins
In reply to: [Index WP MySQL For Speed] Taxonomy OptimizationWell, I uploaded the saved monitor.
Forum: Plugins
In reply to: [Index WP MySQL For Speed] Taxonomy OptimizationI will collect some data later today on the production system. We are monitoring all queries in our theme and report everything above 10 s. If there are any problems we know them. These queries are > 90 % of all slow queries and this happens a few times per day. The backend runs 20 parallel PHP instances and push notifications can cause some spikes (we have lots of push subscribers). On the other end LiteSpeed Cache delivers stale data if possible to reduce such situations but they can still occur.
The taxonomy query matches a lot of posts: in case of the categories I would guess > 90 % and the region about 70 %. Before the region data was stored in post_meta fields. Switching to taxonomies only doubled the performance, we expected more. There are enough performance guides available but they often only apply to average instances. If you run into special conditions it’s much harder to optimize the whole environment. I was also looking into clustered databases (Percona XtraDB cluster) which sustained higher loads but queries perform equally if not a little bit slower due to the cluster management. Also tried NDB but long texts are not compatible.
Forum: Plugins
In reply to: [Index WP MySQL For Speed] wp_dropdown_users() OptimizationThanks a lot for your effort this will help a lot of users running large WordPress instances.
For our case we extended the ElasticPress integration to get the query time down to 120 ms. For text searches nothing can easily beat Elasticsearch.
Forum: Plugins
In reply to: [Index WP MySQL For Speed] wp_dropdown_users() OptimizationThe new capability fields were added in WordPress 5.9:
This is the reason why we did not observe those slow database calls before. Normally we are using ElasticPress which uses an external ElasticSearch instance. However, the capability fields are not yet supported by ElasticPress:
https://github.com/10up/ElasticPress/issues/2619
I am now looking for a workaround to cache those quick edit dropdowns. Our users with edit rights are not changing often. Unfortunately the WordPress 5.9 changes do not use the Object Cache at all, this would have been the best caching solution.