Làm thế nào để cập nhật các tùy chọn nối tiếp theo chương trình?


15

Tôi muốn tự động cập nhật các tùy chọn plugin. Có một số điều mà tôi lặp lại rất nhiều.

Với wp-cli tôi biết tôi có thể cập nhật các tùy chọn đơn giản như thế này:

php wp-cli.phar option update blog_public 1

Tuy nhiên, một số tùy chọn plugin lưu tùy chọn của họ trong chuỗi nối tiếp.

Ví dụ về tùy chọn nối tiếp_value trong wp_options:

a:9:{s:4:"from";s:21:"xx@xxx.com";s:8:"fromname";s:51:"xxx";s:4:"host";s:13:"smtp.xx.com";s:10:"smtpsecure";s:3:"ssl";s:4:"port";s:3:"465";s:8:"smtpauth";s:3:"yes";s:8:"username";s:21:"xx@xxx.com";s:8:"password";s:13:"xxx";s:10:"deactivate";s:0:"";}

Làm thế nào để cập nhật những lựa chọn đó?

Câu trả lời:


14

Tự giải quyết nó, đây là cách để làm điều đó:

Nếu bạn muốn cập nhật theo chương trình các tùy chọn nối tiếp:

tải wp-cli từ wp-cli.org

Tìm hiểu "chìa khóa" cho các tùy chọn bạn đang sử dụng là gì. Trong ví dụ này, khóa là "wp_smtp_options"

Nếu bạn không biết khóa, hãy tìm kiếm trong bảng wp_options và cố gắng tìm ra nó.

Thí dụ: select * from wp_options where option_name like '%smtp%'

Bây giờ bạn đã biết khóa của mình, hãy sử dụng lệnh này để lưu cấu hình của bạn vào tệp json:

php wp-cli.phar option get wp_smtp_options --format=json > my_saved_config.txt

Bất cứ khi nào bạn muốn khôi phục cấu hình đó, hãy sử dụng lệnh này

php wp-cli.phar option update wp_smtp_options --format=json < my_saved_config.txt

Ghi chú:

  • hoạt động trong WAMPSERVER64
  • hoạt động với các ký tự unicode như ñ á é
  • bạn có thể có tệp json của mình với phần đệm và khoảng trắng, để dễ đọc

Sẽ thật tuyệt khi không phải sử dụng một tệp trung gian cho mục đích này. Có ai biết làm thế nào để làm điều đó?


1
Cảm ơn - công việc tuyệt vời. Nếu bất cứ ai đang cố gắng viết một tập lệnh mà không yêu cầu các tập tin bên ngoài, bạn chỉ có thể đặt json trong option updatedòng trong dấu ngoặc đơn. Xem triển khai của tôi trên dòng 61 tại đây: gist.github.com/squarecandy/cfdead55ca1d84496044
squarecandy

xem câu trả lời của tôi cho "một lót"
Laurent

13

WP-CLI chắc chắn là câu trả lời cho vấn đề này sau khi cập nhật lên bản 1.4.0, đã giới thiệu các lệnh nhổ để truy cập dữ liệu tuần tự trong WordPress.

Lệnh pluck lấy định dạng này để lấy các giá trị nối tiếp

wp option pluck <key> <key-name>

Ví dụ: trong tùy chọn active_plugins, bạn có thể lấy mục đầu tiên

wp option pluck active_plugins 0

Lệnh patch lấy định dạng này để chèn, cập nhật hoặc xóa các giá trị nối tiếp (hành động)

wp option patch <action> <key> <key-name> <value>

Xóa active_plugin đầu tiên sẽ như thế này

wp option patch delete active_plugins 0

Tương tự gảy và vá cũng được thêm vào cho các lệnh khác như postmeta, giờ đây bạn có thể sử dụng WP-CLI để thực hiện một số vòng lặp thú vị để cập nhật dữ liệu tuần tự hóa WordPress theo chương trình


2
Đây phải là câu trả lời được chấp nhận.
Evan Mattson

6

Đây là cách tôi thực hiện trong tập lệnh bash:

wp option get wp_smtp_options --format=json | php -r '
$var = json_decode( fgets(STDIN) );
$var->from = "email@email.com";
$var->fromname = "me";
print json_encode($var);
' | wp option set wp_smtp_options --format=json

0

Các WP-CLI lệnh optionkhông sử dụng WordPress' Tùy chọn API để làm công việc của mình. Được đưa ra, ví dụ với tiểu ban update, một đầu vào chính xác, một array, bạn sẽ có thể làm điều này với WP-CLI. Bạn nên sử dụng --formattham số ở đây, để đảm bảo bạn nhận được cùng, jsonhoạt động tốt cho updatetiểu ban. Lưu ý, tiểu ban getsẽ trả lại cho bạn tùy chọn chưa được xác thực, bởi vì API tùy chọn được sử dụng, sau đó bạn có thể lưu, sửa đổi và / hoặc chuyển / thiết lập trên các cài đặt khác / mới.


Điều này không hoạt động: wp option get wp_smtp_options > savedconfiguration.txt wp option update wp_smtp_options < savedconfiguration.txt Lệnh đầu tiên lưu dưới dạng mảng, nhưng lệnh thứ hai không chấp nhận một mảng. Tôi đoán tôi nên tuần tự hóa nó trước, bạn có biết làm thế nào không?
lalo

Bạn đã thử tận dụng formattham số? @lalo chỉnh sửa: chỉ cần nhìn thấy bạn đã tìm ra nó ..
Nicolai

trong wp-cli.org không cho biết các tùy chọn có sẵn cho formattham số là gì. Tôi tự hỏi nếu nó có thể có thể mà không cần phải sử dụng một tập tin trung gian như tôi đã viết trong câu trả lời của tôi.
lalo

Bạn phải nhìn vào nguồn để có được một cái nhìn tổng quan hoàn chỉnh về formattham số, đôi khi khác với lệnh (sub-) so với lệnh (sub-). Nó chắc chắn là có thể, ví dụ bằng cách viết một tập lệnh bash và lưu trữ dữ liệu vào một biến. @lalo
Nicolai

đây là mã nguồn, nhưng không hiểu --formatcác tùy chọn có sẵn ở đâu : github.com/wp-cli/wp-cli/blob/master/php/commands/ Lỗi
lalo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.