WordPress: 编辑器中添加媒体为相对路径

相对路径更好一些

之前在做SSL的时候,会有个问题.文章中的图片或者视频链接全都是绝对路径(包含完整域名).如果要更换域名,或者从普通协议转到SSL的时候,需要替换全部非SSL的地址.

比如普通的是: http://www.bckf.cn ,如果文章中大量存在此类链接,会导致https访问时报错.

除了在数据库中直接替换之外,另外一个办法就是在编辑器里面做处理了(编辑器里面的设置仅对后续的文章有效,之前的文章只能通过数据库处理).

wordpress logo
image-3111

需要修改

修改之前,请先备份相关文件!

1. 博客主目录/wp-admin/includes/ajax-actions.php

1.1 wp_ajax_query_attachments()函数中

$posts = array_filter( $posts );

的下面,增加如下内容:

foreach($posts as &$el){
        $newurl=str_replace(home_url(),"",$el['url']);
        $el['url']=$newurl; //str_replace(home_url(),"",$el["url"]);
        $el['sizes']['full']['url']=$newurl;
        $el['sizes']['medium']['url']=str_replace(home_url(),"",$el['sizes']['medium']['url']);
        $el['sizes']['thumbnail']['url']=str_replace(home_url(),"",$el['sizes']['thumbnail']['url']);
        $el['sizes']['large']['url']=str_replace(home_url(),"",$el['sizes']['large']['url']);
}
unset($el); // 销毁$el的引用.

1.2 wp_ajax_send_attachment_to_editor()函数

 

$html = apply_filters( 'media_send_to_editor', $html, $id, $attachment );

 

的下面增加:

$html=str_replace(home_url(),"",$html);

 

2. 博客主目录/wp-admin/includes/media.php:

media_send_to_editor( $html )

 

函数的第一行,增加:

$html=str_replace(home_url(),"",$html);

WordPress: 定时更新Twenty Fifteen主题的颜色配置

避免手动修改颜色的麻烦

最近在用Twenty Fifteen主题,用了一下颜色功能.发现挺好用.有个想法,就是白天颜色自动变成亮色,晚上颜色自动变成暗色.

找了一下资料,发现颜色配置存储在wp_options表里面,用列option_name值为’theme_mods_twentyfifteen’的字段存储.

一下就好办多了.

wordpress logo
image-3028

定时任务和Python脚本

如果使用了Autoptimize或者其它缓存插件,在更新颜色的Shell脚本里面一定要先更新颜色,然后清除一次缓存.

Python脚本

Python版本: 需要使用Python3.6+.

首先需要安装Python连接MySQL的插件:

pip install mysql-connector-python

有的可能需要使用:

pip3 install mysql-connector-python

import mysql.connector
from mysql.connector import errorcode
import sys

'''

定时更新Wordpress的Twenty Fifteen主题的颜色配置.

安装: pip install mysql-connector-python


调用: python3 BckfCNUpdateTheme.py blueStyle
调用: python3 BckfCNUpdateTheme.py darkStyle
调用: python3 BckfCNUpdateTheme.py yellowStyle
调用: python3 BckfCNUpdateTheme.py pinkStyle
调用: python3 BckfCNUpdateTheme.py purpleStyle

'''


# 配色yellow 黄色
yellowStyle='a:7:{i:0;b:0;s:18:"custom_css_post_id";i:2941;s:16:"background_color";s:6:"f4ca16";s:12:"color_scheme";s:6:"yellow";s:17:"sidebar_textcolor";s:7:"#111111";s:23:"header_background_color";s:7:"#ffdf00";s:12:"header_image";s:13:"remove-header";}'

# 配色 粉色
pinkStyle='a:7:{i:0;b:0;s:18:"custom_css_post_id";i:2941;s:16:"background_color";s:6:"ffe5d1";s:12:"color_scheme";s:4:"pink";s:17:"sidebar_textcolor";s:7:"#ffffff";s:23:"header_background_color";s:7:"#e53b51";s:12:"header_image";s:13:"remove-header";}'

# 配色 purple 紫色
purpleStyle='a:7:{i:0;b:0;s:18:"custom_css_post_id";i:2941;s:16:"background_color";s:6:"674970";s:12:"color_scheme";s:6:"purple";s:17:"sidebar_textcolor";s:7:"#ffffff";s:23:"header_background_color";s:7:"#2e2256";s:12:"header_image";s:13:"remove-header";}'

# 配色blue 蓝色
blueStyle='a:7:{i:0;b:0;s:18:"custom_css_post_id";i:2941;s:16:"background_color";s:6:"e9f2f9";s:12:"color_scheme";s:4:"blue";s:17:"sidebar_textcolor";s:7:"#ffffff";s:23:"header_background_color";s:7:"#55c3dc";s:12:"header_image";s:13:"remove-header";}'

# 配色dark. 暗色
darkStyle='a:7:{i:0;b:0;s:18:"custom_css_post_id";i:2941;s:16:"background_color";s:6:"111111";s:12:"color_scheme";s:4:"dark";s:17:"sidebar_textcolor";s:7:"#bebebe";s:23:"header_background_color";s:7:"#202020";s:12:"header_image";s:13:"remove-header";}'

def updateStyle(style):
    try:
      cnx = mysql.connector.connect(user='root',
                                    database='wordpress',host='127.0.0.1',password='123')
      cursor = cnx.cursor()
      result=cursor.execute("""update wp_options set option_value='{0}' where option_name='theme_mods_twentyfifteen' """.format(style))
      print(result)
      cnx.commit()
    except mysql.connector.Error as err:
      if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
        print("Something is wrong with your user name or password")
      elif err.errno == errorcode.ER_BAD_DB_ERROR:
        print("Database does not exist")
      else:
        print(err)
    else:
        cursor.close()
        cnx.close()
    print("处理完成!~")

if __name__ == '__main__':
    if len(sys.argv)>1:
        styleStr=sys.argv[1]
        if styleStr=='blueStyle':
            updateStyle(blueStyle)
        elif styleStr=='darkStyle':
            updateStyle(darkStyle)
        elif styleStr=='yellowStyle':
            updateStyle(yellowStyle)
        elif styleStr=='pinkStyle':
            updateStyle(pinkStyle)
        elif styleStr=='purpleStyle':
            updateStyle(purpleStyle)












 

Shell脚本(在Shell脚本中写下面这段代码,并保存文件):

python3 BckfCNUpdateTheme.py blueStyle

定时任务(第一条每天晚上20点执行,第二条每天早上8点执行.):

0 20 * * * sh /opt/style01.sh
0 8 * * * sh /opt/style02.sh

如果没有使用缓存插件,也可以将调用Python程序的语句直接写在定时任务里面.