프로그래밍 방식으로 직렬화 된 옵션을 업데이트하는 방법? option update blog_public 1 그러나

플러그인 옵션 업데이트를 자동화하고 싶습니다. 내가 많이 반복하는 것들이 있습니다.

wp-cli를 사용하면 다음과 같은 간단한 옵션을 업데이트 할 수 있습니다.

php wp-cli.phar option update blog_public 1

그러나 일부 플러그인 옵션은 옵션을 직렬화 된 문자열로 저장합니다.

wp_options에서 직렬화 된 option_value의 예 :

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:"";}

해당 옵션을 업데이트하는 방법은 무엇입니까?



답변

직접 해결하면 다음과 같습니다.

직렬화 된 옵션을 프로그래밍 방식으로 업데이트하려는 경우 :

wp-cli.org에서 wp-cli 다운로드

사용중인 옵션의 “키”가 무엇인지 확인하십시오. 이 예에서 키는 “wp_smtp_options”입니다.

키를 모르면 wp_options 테이블에서 검색하여 알아보십시오.

예: select * from wp_options where option_name like '%smtp%'

키를 알고 있으므로이 명령을 사용하여 구성을 json 파일에 저장하십시오.

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

해당 구성을 복원 할 때마다이 명령을 사용하십시오.

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

노트:

  • WAMPSERVER64에서 작동
  • ñ á é와 같은 유니 코드 문자로 작동
  • 가독성을 위해 패딩과 공백이있는 json 파일을 가질 수 있습니다

이 목적으로 중간 파일을 사용할 필요가 없습니다. 아무도 그것을하는 방법을 알고 있습니까?


답변

WP-CLI는 WordPress에서 직렬화 된 데이터에 액세스하기위한 pluckpatch 명령을 도입 한 1.4.0으로 업데이트 한 후 이에 대한 해답 입니다.

pluck 명령은 직렬화 된 값을 가져 오기 위해이 형식을 사용합니다.

wp option pluck <key> <key-name>

예를 들어 active_plugins 옵션에서 첫 번째 항목을 가져올 수 있습니다

wp option pluck active_plugins 0

patch 명령은 직렬화 된 값을 삽입, 업데이트 또는 제거하기 위해이 형식을 사용합니다 (작업).

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

첫 번째 active_plugin을 삭제하면 다음과 같습니다

wp option patch delete active_plugins 0

postmeta와 같은 다른 명령에도 동일한 pluck 및 패치가 추가되었습니다. 이제 WP-CLI를 사용하여 프로그래밍 방식으로 WordPress 직렬화 된 데이터 를 업데이트하기위한 멋진 루프를 수행 할 수 있습니다


답변

다음은 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


답변

WP-CLI의 명령을 option사용 워드 프레스 ‘수행 옵션 API 의 작업을 할 수 있습니다. 예를 들어, 부속 명령으로update , 올바른 입력,을 사용하면 arrayWP-CLI를 사용하여이를 수행 할 수 있어야합니다. --format여기 에서 매개 변수를 사용해야 합니다. 동일한 결과를 얻으려면 json일반적으로 update부속 명령에 적합합니다 . get옵션 API가 사용되기 때문에 하위 명령 은 직렬화되지 않은 옵션을 반환해야합니다. 옵션 API를 사용하면 다른 / 새 설치에서 저장, 수정 및 / 또는 전송 / 설정할 수 있습니다.


답변