shell查询更新wordpress数据库

当前的部分主要是查询wordpress插件所在的数据库表wp_options, 查询结束后将需要禁用的插件从对应的字符串中删掉,然后更新表即可;

1.设置需要删除掉的插件名称

##数据库更新操作
DEL_PLU='w3-total-cache'

 

2.使用shell查询数据表

NEW_DB_NAME='wwwtestdbcom'
CHECK_SQL="select option_value from wp_options where option_name = 'active_plugins' ";
OPTSQL="use $NEW_DB_NAME;"$CHECK_SQL';'
mysql -uuser -ppasswd -s -e "${OPTSQL}" > tmpsql #将查询出来的数据直接存储到文件
TXT=$(cat /data/createwebsiteshell/tmpsql) #查询出来的数据赋值给变量

 

3.将查询出来的数据做处理, 把需要禁用的插件删掉,重新组成一个新的数据中

查询出来数据
===========
TXT='a:4:{i:0;s:27:"autoptimize/autoptimize.php";i:1;s:36:"contact-form-7/wp-contact-form-7.php";i:2;s:26:"wordpress-seo/wp-seo.php";i:3;s:29:"wp-mail-smtp/wp_mail_smtp.php";}'
==========

DR_TXT=${TXT#*\{} #删除 { 左边的字符 DL_TXT=${DR_TXT%\}} #删除 } 右边的字符 TXT=(${DL_TXT//;/ }) #按照 ; 分割成数组 NEWARR=() for((i=0;i<${#TXT[@]};i++)) do b=$(( $i % 2 )) if [ $b = 1 ]; then ARRKEY=${TXT[$i]} ARRKEY_L=${ARRKEY#*\"} ARRKEY_R=${ARRKEY_L%/*} if [[ ! "${DEL_PLU[@]}" =~ $ARRKEY_R ]] || [[ $ARRKEY_R = 'woocommerce' ]]; then #判断当前的不在要删除的数组中的话,写入新的数组中 NEWARR+=("$ARRKEY") fi fi done

 

4.重新组合成相同格式的串, 然后更新到数据库中

ARR_LEN=${#NEWARR[*]}
UPDATE_STR='a:'$ARR_LEN':{'
for((i=0;i<${#NEWARR[@]};i++))
do
        str='i:'$i';'${NEWARR[$i]}';'
        UPDATE_STR=$UPDATE_STR${str}
done
UPDAE_SQL="'"$UPDATE_STR"}'"
UPDATQ_RUN="use $NEW_DB_NAME; update wp_options set option_value=$UPDAE_SQL where option_name = 'active_plugins'"
mysql -uuser -ppasswd -e "${UPDATQ_RUN}"

 

上一篇:wordpress文章页H标签美化修改记录(以dux主题为例)


下一篇:阿里云(Ubuntu20.04)搭建wordpress全流程——附图超详细版