WooCommerce memory

WooCommerce 8.8.2 2024-04-17 時点の Server Requirements で 256MB 必要

https://ja.wordpress.org/plugins/woocommerce/#installation

WordPress version 6.3 or great.
PHP version 7.4 or greater.
MySQL version 5.67 or greater OR MariaDB version 10.4 or greater.
WordPress memory limit of 256 MB or greater.
HTTPS support.

https://woocommerce.com/document/server-requirements/

https://woocommerce.com/document/increasing-the-wordpress-memory-limit/

wp-cli widgets ウィジェット

確認

https://developer.wordpress.org/cli/commands/sidebar/list/

https://developer.wordpress.org/cli/commands/widget/list/

$ wp sidebar list

+----------------------------+-------------------------------+---------------------------------------------------------+
| name                       | id                            | description                                             |
+----------------------------+-------------------------------+---------------------------------------------------------+
| Main Sidebar               | sidebar-1                     | Add widgets for main sidebar.                           |
...

$ wp widget list sidebar-1 
...

mailpoet multisite

https://wordpress.org/support/topic/multisite-compatibility-116/

wordpress 6.1.5 mailpoet 4.5.2

https://kb.mailpoet.com/article/129-newsletter-task-scheduler-cron

(1) Newsletter task scheduler (cron) → Server side cron (Linux cron)
メインサイトがmailpoetプラグイン有効にしてないと

php /usr/local/www/apache24/data/wp-content/plugins/mailpoet/mailpoet-cron.php /usr/local/www/apache24/data/
実行でエラー
MailPoet plugin is not active

(2) Newsletter task scheduler (cron) → WordPress built-in cron (recommended)

action-schedulerを使う場合

mailpoetを使わないサイトがある場合に Network Activate してはいけない

wp_actionscheduler_actions, wp_actionscheduler_logs に

mailpoet/cron/daemon-run
action failed via WP Cron: Sender name and email are not configured.

が溜まる

Network Activate した後に Network Deactivate すると
wp_actionscheduler_actions, wp_actionscheduler_logs に

mailpoet/cron/daemon-run
action failed via WP Cron: Scheduled action for mailpoet/cron/daemon-trigger will not be executed as no callbacks are registered.

が溜まる場合がある?
サイト個別にActivate → Deactivate すると解消する

action-scheduler

wp-content/plugins/mailpoet/vendor/woocommerce/action-scheduler/

https://actionscheduler.org/admin/

The Scheduled Actions option is not found in the Tools menu.
https://wordpress.org/support/topic/the-scheduled-actions-option-is-not-found-in-the-tools-menu/

マルチサイトだと Tools メニューに Scheduled Actions が表示されない

→ tools.php?page=action-scheduler を直接入力

https://example.com/site2/wp-admin/tools.php?page=action-scheduler

wp-cli

https://actionscheduler.org/wp-cli/

wp_actionscheduler_actions, wp_actionscheduler_logs を削除

wp action-scheduler clean --batch-size=20 --status=complete,failed,canceled --before='7 days ago' --url=https://example.com/site2/
DELETE FROM `wp_actionscheduler_actions` WHERE `status` IN ('complete','failed','canceled')

https://wpxss.com/database/how-to-cleanup-wp_actionscheduler_actions-wp_actionscheduler_logs-tables-in-the-database/

https://www.mrkwp.com/2023/09/how-to-clear-scheduled-action-logs-in-wordpress/ 2023

wp_options autoload=yes

wp_options _transient_dirsize_cache autoload=yes

Hi there, folks. After months of perf issues on a fairly large site (10s of millions of monthly PVs), I finally dug in properly and discovered an absolutely massive _transient_dirsize_cache option which was set to autoload=yes... currently sitting at 207221 entries worth 20MB of data. That's 20MB every

SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'
loads each time. The query takes 1s+ on 32GB RAM 8-CPU db servers.

#54221 (_transient_dirsize_cache is set to autoload=yes and kills db performance if it grows (20MB in our case)) – WordPress Trac

3MB位になっていた

mysql> SELECT 'autoloaded data' as name, format_bytes(SUM(LENGTH(option_value))) as value FROM wp_options WHERE autoload='yes'
UNION
SELECT 'autoloaded data count', count(*) FROM wp_options WHERE autoload='yes'
UNION
(SELECT option_name, format_bytes(length(option_value)) FROM wp_options WHERE autoload='yes' ORDER BY length(option_value) DESC LIMIT 10);
+--------------------------------+-----------------------------------------+
| name                           | format_bytes(SUM(LENGTH(option_value))) |
+--------------------------------+-----------------------------------------+
| autoloaded data in KiB         | 3.26 MiB                                |
| autoloaded data count          | 654                                     |
| _transient_dirsize_cache       | 2.95 MiB                                |
| rewrite_rules                  | 57.98 KiB                               |
| fs_accounts                    | 39.88 KiB                               |
| disable_rest_api_options       | 28.71 KiB                               |
| aioseo_options_v3              | 13.62 KiB                               |
| aioseop_options                | 13.62 KiB                               |
| aioseo_options                 | 11.18 KiB                               |
| wp_user_roles                  | 9.84 KiB                                |
| aioseo_options_dynamic_network | 8.90 KiB                                |
| aioseo_options_network         | 8.81 KiB                                |
+--------------------------------+-----------------------------------------+
12 rows in set (0.02 sec)

autoload=noにする

mysql> UPDATE wp_options SET autoload='no' where option_name='_transient_dirsize_cache';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> SELECT option_name, autoload from wp_options where option_name='_transient_dirsize_cache';
+--------------------------+----------+
| option_name       | autoload |
+--------------------------+----------+
| _transient_dirsize_cache | no    |
+--------------------------+----------+
1 row in set (0.00 sec)

SQLは↓を参考にした
wp_optionsテーブルと自動読み込みデータの整理のやり方

wp_options wc_remote_inbox_notifications_specs autoload=yes

アンインストールしたwoocommerceのautoloadが残ってたのでautoload=noにする

mysql> SELECT 'autoloaded data' as name, format_bytes(SUM(LENGTH(option_value))) as value FROM wp_options WHERE autoload='yes' UNION SELECT 'autoloaded data count', count(*) FROM wp_options WHERE autoload='yes' UNION (SELECT option_name, format_bytes(length(option_value)) FROM wp_options WHERE autoload='yes' ORDER BY length(option_value) DESC LIMIT 10);
+-------------------------------------+------------+
| name                                | value      |
+-------------------------------------+------------+
| autoloaded data                     | 284.64 KiB |
| autoloaded data count               | 471        |
| wc_remote_inbox_notifications_specs | 90.08 KiB  |
| rewrite_rules                       | 27.26 KiB  |
| revslider-addons                    | 19.52 KiB  |
| otgs-installer-log                  | 9.52 KiB   |
| wp_user_roles                       | 9.36 KiB   |
| aioseo_options                      | 9.24 KiB   |
| wpmtst_fields                       | 9.10 KiB   |
| aioseo_options_network              | 8.69 KiB   |
| wpmtst_base_forms                   | 8.37 KiB   |
| layerslider_update_info             | 7.33 KiB   |
+-------------------------------------+------------+
12 rows in set (0.01 sec)

UPDATE wp_options SET autoload='no' where option_name='wc_remote_inbox_notifications_specs';

Why wc_remote_inbox_notifications_specs option is autoload enabled? · Issue #6781 · woocommerce/woocommerce-admin · GitHub 2021

wp_options fbrfg_favicon_non_interactive_api_request autoload=yes

Favicon by RealFaviconGenerator

https://wordpress.org/plugins/favicon-by-realfavicongenerator/

https://wordpress.org/support/topic/huge-entry-in-wp_options-2/

| fbrfg_favicon_non_interactive_api_request | 550.81 KiB |

WPScan ライセンス

価格
毎日25回までAPIリクエストを実行できる永久無料プランがあり(最大22のプラグインインストール)、平均的なWordPressサイトであればこれで十分です。有料プランでは、APIリクエストの数に応じて価格が上がっていきます。

以下が有料プランの価格です。
Start:5ドル/月
Professional:25ドル/月
Enterprise:要相談

サイトの脅威を排除する優れたWordPressセキュリティプラグイン 2023

https://wpscan.com/

2022 に Starter と Professional プランは廃止
Enterprise と Researcher (25 API) になった

Important changes to your WPScan subscription

The WPScan Starter and Professional plans are being deprecated. But don’t worry, your plan will still be valid until your current subscription ends.