Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Import/Export options as (pretty-printed) JSON #512

Open
vadimkantorov opened this issue Oct 10, 2024 · 4 comments
Open

Import/Export options as (pretty-printed) JSON #512

vadimkantorov opened this issue Oct 10, 2024 · 4 comments

Comments

@vadimkantorov
Copy link

vadimkantorov commented Oct 10, 2024

Currently we can import options, but have to iterate wp option update command invocation for each option.

A convenience command would be helpful which would import all options from a JSON file (e.g. produced with wp option list --format=json).

Currently wp option list --format=json does produce all options in JSON, but unfortunately it's not prettified in any way and dumped in one very-long line. So some prettification options would also be very helpful (and placing default options in the top of the file)


This is useful in setups where WordPress is used as a static-site-generator engine. For this usecase, it's nice to store all options in a plain JSON (or YAML) file and import them into a fresh-new WordPress installation during build.

@vadimkantorov vadimkantorov changed the title [feature request] An explicit way for importing options from a JSON file for wp option update [feature request] An explicit way for importing options from a JSON file for wp option update and indented/pretty way of exporting JSON from wp option list --format=json Oct 10, 2024
@swissspidy swissspidy transferred this issue from wp-cli/wp-cli Oct 10, 2024
@swissspidy
Copy link
Member

The true powers of WP-CLI come to shine when combined with other shell commands and things like pipes.

This way you can easily call wp option update for a list of items, or pretty-print output using something like jq, i.e. wp option list --format=json | jq '.'. No need to reinvent the wheel :-)

@vadimkantorov
Copy link
Author

vadimkantorov commented Oct 10, 2024

wp option list --format=json | jq '.' - yes, that's what I'm using now, but it adds one more Ubuntu package dependency... I think, for the usecase of wp option list --format=json, prettified output should be the default, then it's immediately viewable and editable with any text editor without figuring out jq '.', and prettified output is usually natively supported by all underlying JSON serialization libraries (so likely only a matter of passing down the right switch to the JSON serialization function)...

wp export --filename_format=exportWXR.xml produces a prettified XML by default, so would be nice having the same functionality for options/JSON by default as well

@swissspidy swissspidy changed the title [feature request] An explicit way for importing options from a JSON file for wp option update and indented/pretty way of exporting JSON from wp option list --format=json Import/Export options as (pretty-printed) JSON Oct 10, 2024
@wp-cli wp-cli deleted a comment Oct 25, 2024
@vadimkantorov
Copy link
Author

vadimkantorov commented Nov 6, 2024

Doing the batch import is more unwieldy :(

An attempt to export all options as JSON and then import them back:

wp option list --format=json | jq '.' > exportOPTIONS.json
jq -r '.[] | [ .option_name, (.option_value | @json) ] | @tsv' exportOPTIONS.json | tr '\t' '\0' | tr '\n' '\0' | xargs -0 -n2 wp option update --format=json

Unfortunately this fails with some JSON parsing errors. (replacing wp option update --format=json with python -c 'import sys,json;print(json.loads(sys.argv[2]))' also fails - I think the problem is that jq -r produces double backspaces when escaping double-quotes inside the string values)

In the correct functioning, it should print Success: Value passed for '...' option is unchanged. for all options.

What also fails (also unsure why Success: Updated 'cron' option. - I did not change any option values, so likely again some parsing/escaping/xargs issues):

wp option list --format=json | jq '.' > exportOPTIONS.json
jq -r '.[] | [ .option_name, .option_value ] | @tsv' exportOPTIONS.json | tr '\t' '\0' | tr '\n' '\0' | xargs -0 -n2 wp option update

(full command printout below in the flyout)

Here is the tsv file for this attempt: wpoptions.txt

And here is its first line:

cron    a:8:{i:1728758144;a:2:{s:32:"recovery_mode_clean_expired_keys";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:0:{}s:8:"interval";i:86400;}}s:34:"wp_privacy_delete_old_export_files";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:6:"hourly";s:4:"args";a:0:{}s:8:"interval";i:3600;}}}i:1728758145;a:1:{s:30:"wp_delete_temp_updater_backups";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:6:"weekly";s:4:"args";a:0:{}s:8:"interval";i:604800;}}}i:1728758159;a:1:{s:8:"do_pings";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:2:{s:8:"schedule";b:0;s:4:"args";a:0:{}}}}i:1728761744;a:1:{s:16:"wp_version_check";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}}i:1728763544;a:1:{s:17:"wp_update_plugins";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}}i:1728765344;a:1:{s:16:"wp_update_themes";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}}i:1728844544;a:1:{s:30:"wp_site_health_scheduled_check";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:6:"weekly";s:4:"args";a:0:{}s:8:"interval";i:604800;}}}s:7:"version";i:2;}    
full command printout
Success: Updated 'cron' option.
Success: Value passed for 'siteurl' option is unchanged.
Success: Value passed for 'home' option is unchanged.
Success: Value passed for 'blogname' option is unchanged.
Success: Value passed for 'blogdescription' option is unchanged.
Success: Value passed for 'users_can_register' option is unchanged.
Success: Value passed for 'admin_email' option is unchanged.
Success: Value passed for 'start_of_week' option is unchanged.
Success: Value passed for 'use_balanceTags' option is unchanged.
Success: Value passed for 'use_smilies' option is unchanged.
Success: Value passed for 'require_name_email' option is unchanged.
Success: Value passed for 'comments_notify' option is unchanged.
Success: Value passed for 'posts_per_rss' option is unchanged.
Success: Value passed for 'rss_use_excerpt' option is unchanged.
Success: Value passed for 'mailserver_url' option is unchanged.
Success: Value passed for 'mailserver_login' option is unchanged.
Success: Value passed for 'mailserver_pass' option is unchanged.
Success: Value passed for 'mailserver_port' option is unchanged.
Success: Value passed for 'default_category' option is unchanged.
Success: Value passed for 'default_comment_status' option is unchanged.
Success: Value passed for 'default_ping_status' option is unchanged.
Success: Value passed for 'default_pingback_flag' option is unchanged.
Success: Value passed for 'posts_per_page' option is unchanged.
Success: Value passed for 'date_format' option is unchanged.
Success: Value passed for 'time_format' option is unchanged.
Success: Value passed for 'links_updated_date_format' option is unchanged.
Success: Value passed for 'comment_moderation' option is unchanged.
Success: Value passed for 'moderation_notify' option is unchanged.
Success: Value passed for 'permalink_structure' option is unchanged.
Success: Updated 'rewrite_rules' option.
Success: Value passed for 'hack_file' option is unchanged.
Success: Value passed for 'blog_charset' option is unchanged.
Success: Value passed for 'moderation_keys' option is unchanged.
Success: Updated 'active_plugins' option.
Success: Value passed for 'category_base' option is unchanged.
Success: Value passed for 'ping_sites' option is unchanged.
Success: Value passed for 'comment_max_links' option is unchanged.
Success: Value passed for 'gmt_offset' option is unchanged.
Success: Value passed for 'default_email_category' option is unchanged.
Success: Value passed for 'recently_edited' option is unchanged.
Success: Value passed for 'template' option is unchanged.
Success: Value passed for 'stylesheet' option is unchanged.
Success: Value passed for 'comment_registration' option is unchanged.
Success: Value passed for 'html_type' option is unchanged.
Success: Value passed for 'use_trackback' option is unchanged.
Success: Value passed for 'default_role' option is unchanged.
Success: Value passed for 'db_version' option is unchanged.
Success: Value passed for 'uploads_use_yearmonth_folders' option is unchanged.
Success: Value passed for 'upload_path' option is unchanged.
Success: Value passed for 'blog_public' option is unchanged.
Success: Value passed for 'default_link_category' option is unchanged.
Success: Value passed for 'show_on_front' option is unchanged.
Success: Value passed for 'tag_base' option is unchanged.
Success: Value passed for 'show_avatars' option is unchanged.
Success: Value passed for 'avatar_rating' option is unchanged.
Success: Value passed for 'upload_url_path' option is unchanged.
Success: Value passed for 'thumbnail_size_w' option is unchanged.
Success: Value passed for 'thumbnail_size_h' option is unchanged.
Success: Value passed for 'thumbnail_crop' option is unchanged.
Success: Value passed for 'medium_size_w' option is unchanged.
Success: Value passed for 'medium_size_h' option is unchanged.
Success: Value passed for 'avatar_default' option is unchanged.
Success: Value passed for 'large_size_w' option is unchanged.
Success: Value passed for 'large_size_h' option is unchanged.
Success: Value passed for 'image_default_link_type' option is unchanged.
Success: Value passed for 'image_default_size' option is unchanged.
Success: Value passed for 'image_default_align' option is unchanged.
Success: Value passed for 'close_comments_for_old_posts' option is unchanged.
Success: Value passed for 'close_comments_days_old' option is unchanged.
Success: Value passed for 'thread_comments' option is unchanged.
Success: Value passed for 'thread_comments_depth' option is unchanged.
Success: Value passed for 'page_comments' option is unchanged.
Success: Value passed for 'comments_per_page' option is unchanged.
Success: Value passed for 'default_comments_page' option is unchanged.
Success: Value passed for 'comment_order' option is unchanged.
Success: Updated 'sticky_posts' option.
Success: Updated 'widget_categories' option.
Success: Updated 'widget_text' option.
Success: Updated 'widget_rss' option.
Success: Updated 'uninstall_plugins' option.
Success: Value passed for 'timezone_string' option is unchanged.
Success: Value passed for 'page_for_posts' option is unchanged.
Success: Value passed for 'page_on_front' option is unchanged.
Success: Value passed for 'default_post_format' option is unchanged.
Success: Value passed for 'link_manager_enabled' option is unchanged.
Success: Value passed for 'finished_splitting_shared_terms' option is unchanged.
Success: Value passed for 'site_icon' option is unchanged.
Success: Value passed for 'medium_large_size_w' option is unchanged.
Success: Value passed for 'medium_large_size_h' option is unchanged.
Success: Value passed for 'wp_page_for_privacy_policy' option is unchanged.
Success: Value passed for 'show_comments_cookies_opt_in' option is unchanged.
Success: Value passed for 'admin_email_lifespan' option is unchanged.
Success: Value passed for 'disallowed_keys' option is unchanged.
Success: Value passed for 'comment_previously_approved' option is unchanged.
Success: Updated 'auto_plugin_theme_update_emails' option.
Success: Value passed for 'auto_update_core_dev' option is unchanged.
Success: Value passed for 'auto_update_core_minor' option is unchanged.
Success: Value passed for 'auto_update_core_major' option is unchanged.
Success: Updated 'wp_force_deactivated_plugins' option.
Success: Value passed for 'wp_attachment_pages_enabled' option is unchanged.
Success: Value passed for 'initial_db_version' option is unchanged.
Success: Updated 'wp_user_roles' option.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php([20](https://github.com/vadimkantorov/wpssg/actions/runs/11705752933/job/32601209772#step:7:21)): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(6[23](https://github.com/vadimkantorov/wpssg/actions/runs/11705752933/job/32601209772#step:7:24)): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php([28](https://github.com/vadimkantorov/wpssg/actions/runs/11705752933/job/32601209772#step:7:29)): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line [29](https://github.com/vadimkantorov/wpssg/actions/runs/11705752933/job/32601209772#step:7:30)1
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(3[32](https://github.com/vadimkantorov/wpssg/actions/runs/11705752933/job/32601209772#step:7:33)): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php([33](https://github.com/vadimkantorov/wpssg/actions/runs/11705752933/job/32601209772#step:7:34)2): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1[37](https://github.com/vadimkantorov/wpssg/actions/runs/11705752933/job/32601209772#step:7:38)5): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php([62](https://github.com/vadimkantorov/wpssg/actions/runs/11705752933/job/32601209772#step:7:63)3): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(13[75](https://github.com/vadimkantorov/wpssg/actions/runs/11705752933/job/32601209772#step:7:76)): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php([83](https://github.com/vadimkantorov/wpssg/actions/runs/11705752933/job/32601209772#step:7:84)): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:2[91](https://github.com/vadimkantorov/wpssg/actions/runs/11705752933/job/32601209772#step:7:92)
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(12[94](https://github.com/vadimkantorov/wpssg/actions/runs/11705752933/job/32601209772#step:7:95)): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php([129](https://github.com/vadimkantorov/wpssg/actions/runs/11705752933/job/32601209772#step:7:130)4): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php([137](https://github.com/vadimkantorov/wpssg/actions/runs/11705752933/job/32601209772#step:7:138)5): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:[291](https://github.com/vadimkantorov/wpssg/actions/runs/11705752933/job/32601209772#step:7:292)
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1[294](https://github.com/vadimkantorov/wpssg/actions/runs/11705752933/job/32601209772#step:7:295)): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.
PHP Fatal error:  Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php:291
Stack trace:
#0 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(291): array_keys()
#1 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php(91): WP_Roles->for_site()
#3 /home/runner/work/wpssg/wpssg/wp-settings.php(623): WP_Roles->__construct()
#4 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1375): require('...')
#5 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1294): WP_CLI\Runner->load_wordpress()
#6 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#7 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process()
#8 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
#9 phar:///home/runner/work/wpssg/wpssg/wp-cli.phar/php/boot-phar.php(20): include('...')
#10 /home/runner/work/wpssg/wpssg/wp-cli.phar(4): include('...')
#11 {main}
  thrown in /home/runner/work/wpssg/wpssg/wp-includes/class-wp-roles.php on line 291
Error: There has been a critical error on this website.Learn more about troubleshooting WordPress. There has been a critical error on this website.

Any ideas for a workaround for batch-importing options from a JSON file for the time being?

Thanks!

@vadimkantorov
Copy link
Author

vadimkantorov commented Nov 6, 2024

Also, neither

cat exportOPTIONS.json | python -c 'import json,sys,subprocess;[subprocess.run(["wp","option","update",el["option_name"],el["option_value"]]) for el in json.load(sys.stdin)]'

nor

cat exportOPTIONS.json | python -c 'import json,sys,subprocess;[subprocess.run(["wp","option","update","--format=json",el["option_name"],json.dumps(el["option_value"])]) for el in json.load(sys.stdin)]'

work - and fail with the same problems as the xargs variants

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants
@swissspidy @vadimkantorov and others